# Bluetooth Classic configuration options

# Copyright (c) 2016-2020 Nordic Semiconductor ASA
# Copyright (c) 2015-2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menu "Bluetooth Classic Options"

config BT_CLASSIC
	bool "Bluetooth BR/EDR support [EXPERIMENTAL]"
	depends on BT_HCI_HOST
	select BT_PERIPHERAL
	select BT_CENTRAL
	select BT_SMP
	select BT_L2CAP_DYNAMIC_CHANNEL
	select CRC
	select EXPERIMENTAL
	help
	  This option enables Bluetooth BR/EDR support

if BT_CLASSIC
config BT_LIMITED_DISCOVERABLE_DURATION
	int "Maximum duration that a device is in limited discoverable mode in seconds"
	default 60
	range 31 60
	help
	  This option sets the maximum duration that a device is in limited discoverable mode in
	  seconds.

config BT_BR_MIN_ENC_KEY_SIZE
	int
	prompt "Minimum encryption key size accepted in octets" if !BT_SMP_SC_ONLY
	default BT_SMP_MIN_ENC_KEY_SIZE
	range 7 16
	help
	  This option sets the minimum encryption key size accepted during pairing
	  for classic.

config BT_MAX_SCO_CONN
	int "Maximum number of simultaneous SCO connections"
	default 1
	range 1 3
	help
	  Maximum number of simultaneous Bluetooth synchronous connections
	  supported. The minimum (and default) number is 1.

config BT_L2CAP_RX_FLUSH_TO
	hex "Minimum Bluetooth L2CAP RX flush Timeout accepted in milliseconds"
	default 0x0001 if BT_A2DP_SINK
	default 0xFFFF
	range 0x0001 0xFFFF
	help
	  This option configures minimum Bluetooth L2CAP RX flush timeout accepted during
	  processing peer's l2cap flush timeout configuration.
	  The flush timeout applies to all channels on the same ACL logical transport but
	  may be overridden on a packet by packet basis by marking individual L2CAP packets
	  as non-automatically-flushable via the Packet_Boundary_Flag in the HCI ACL Data packet.

config BT_L2CAP_CONNLESS
	bool "Bluetooth L2CAP connectionless data reception [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth L2CAP connectionless data reception

config BT_L2CAP_RET
	bool "Bluetooth L2CAP retransmission mode [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth L2CAP retransmission mode

config BT_L2CAP_FC
	bool "Bluetooth L2CAP flow control mode [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth L2CAP flow control mode

config BT_L2CAP_ENH_RET
	bool "Bluetooth L2CAP enhance retransmission [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth L2CAP enhance retransmission

config BT_L2CAP_STREAM
	bool "Bluetooth L2CAP streaming mode [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth L2CAP streaming mode

config BT_L2CAP_RET_FC
	def_bool BT_L2CAP_RET || BT_L2CAP_FC || BT_L2CAP_ENH_RET || BT_L2CAP_STREAM

if BT_L2CAP_RET_FC
config BT_L2CAP_FCS
	bool "Bluetooth L2CAP FCS Option [EXPERIMENTAL]"
	select EXPERIMENTAL
	depends on BT_L2CAP_STREAM || BT_L2CAP_ENH_RET
	help
	  This option enables Bluetooth L2CAP FCS Option

config BT_L2CAP_EXT_WIN_SIZE
	bool "Bluetooth L2CAP Extended window size Option [EXPERIMENTAL]"
	select EXPERIMENTAL
	depends on BT_L2CAP_STREAM || BT_L2CAP_ENH_RET
	help
	  This option enables Bluetooth L2CAP Extended window size Option

config BT_L2CAP_MPS
	int "Bluetooth L2CAP MPS for retransmission and Flow control"
	default 48
	range 48 BT_L2CAP_TX_MTU
	help
	  Bluetooth L2CAP MPS for retransmission and Flow control

config BT_L2CAP_MAX_WINDOW_SIZE
	int "Maximum Windows Size of Retransmission and Flow Control"
	default 1
	range 1 32
	help
	  Maximum Windows Size of Retransmission and Flow Control.
	  The minimum (and default) number is 1.

config BT_L2CAP_BR_RET_TIMEOUT
	int "Retransmission timeout (milliseconds)"
	default 2000
	range 1000 2000
	help
	  The Retransmission timeout shall be three times the value of flush timeout,
	  subject to a minimum of 1000 milliseconds and maximum of 2000 milliseconds.

config BT_L2CAP_BR_MONITOR_TIMEOUT
	int "Monitor timeout (milliseconds)"
	default 12000 if BT_L2CAP_ENH_RET
	default BT_L2CAP_BR_RET_TIMEOUT
	range BT_L2CAP_BR_RET_TIMEOUT 12000
	help
	  If a flush timeout exists on the link for Enhanced Retransmission mode and
	  both sides of the link are configured to the same flush timeout value then the
	  monitor timeout shall be set to a value at least as large as the Retransmission
	  timeout otherwise the value of the Monitor timeout shall be six times the value
	  of flush timeout, subject to a minimum of the retransmission timeout value and
	  a maximum of 12000 milliseconds.
endif # BT_L2CAP_RET_FC

config BT_RFCOMM
	bool "Bluetooth RFCOMM protocol support [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth RFCOMM support

config BT_RFCOMM_L2CAP_MTU
	int "L2CAP MTU for RFCOMM frames"
	depends on BT_RFCOMM
	default BT_BUF_ACL_RX_SIZE
	range 23 $(INT16_MAX)
	help
	  Maximum size of L2CAP PDU for RFCOMM frames.
	  RX MTU will be truncated to account for the L2CAP PDU header.

config BT_RFCOMM_TX_MAX
	int "Maximum number of pending TX buffers for RFCOMM"
	default BT_BUF_ACL_TX_COUNT
	range BT_BUF_ACL_TX_COUNT $(UINT8_MAX)
	help
	  Maximum number of pending TX buffers that have an associated
	  sending buf. Normally this can be left to the default value, which
	  is equal to the number of session in the stack-internal pool.

config BT_HFP_HF
	bool "Bluetooth Handsfree profile HF Role support [EXPERIMENTAL]"
	depends on PRINTK
	select BT_RFCOMM
	select EXPERIMENTAL
	help
	  This option enables Bluetooth HF support

config BT_HFP_AG
	bool "Bluetooth Handsfree profile AG Role support [EXPERIMENTAL]"
	depends on PRINTK
	select BT_RFCOMM
	select EXPERIMENTAL
	help
	  This option enables Bluetooth AG support

if BT_HFP_HF
config BT_HFP_HF_CLI
	bool "CLI presentation capability for HFP HF [EXPERIMENTAL]"
	default y
	help
	  This option enables CLI presentation capability for HFP HF

config BT_HFP_HF_VOLUME
	bool "Remote audio volume control for HFP HF [EXPERIMENTAL]"
	default y
	help
	  This option enables Remote audio volume control for HFP HF

config BT_HFP_HF_CODEC_NEG
	bool "Codec Negotiation for HFP HF [EXPERIMENTAL]"
	help
	  This option enables Codec Negotiation for HFP HF

config BT_HFP_HF_ECNR
	bool "EC and/or NR function for HFP HF [EXPERIMENTAL]"
	help
	  This option enables EC and/or NR function for HFP HF

if BT_HFP_HF_CODEC_NEG
config BT_HFP_HF_CODEC_MSBC
	bool "Support Codec mSBC for HFP HF [EXPERIMENTAL]"
	help
	  This option enables Codec mSBC for HFP HF

config BT_HFP_HF_CODEC_LC3_SWB
	bool "Support Codec LC3 SWB for HFP HF [EXPERIMENTAL]"
	help
	  This option enables Codec LC3 SWB for HFP HF
endif # BT_HFP_HF_CODEC_NEG

config BT_HFP_HF_3WAY_CALL
	bool "Three-way calling for HFP HF [EXPERIMENTAL]"
	help
	  This option enables Three-way calling for HFP HF

config BT_HFP_HF_ECS
	bool "Enhanced Call Status for HFP HF [EXPERIMENTAL]"
	default y if BT_HFP_HF_3WAY_CALL
	help
	  This option enables Enhanced Call Status for HFP HF

config BT_HFP_HF_ECC
	bool "Enhanced Call Control for HFP HF [EXPERIMENTAL]"
	default y if BT_HFP_HF_3WAY_CALL
	help
	  This option enables Enhanced Call Control for HFP HF

config BT_HFP_HF_MAX_CALLS
	int "Maximum supported calls for HFP HF [EXPERIMENTAL]"
	default 2 if BT_HFP_HF_3WAY_CALL
	default 1
	range 1 2
	help
	  This option sets maximum supported calls for HFP HF

config BT_HFP_HF_VOICE_RECG
	bool "Voice recognition activation for HFP HF [EXPERIMENTAL]"
	help
	  This option enables Voice recognition activation for HFP HF

config BT_HFP_HF_ENH_VOICE_RECG
	bool "Enhanced Voice Recognition Status for HFP HF [EXPERIMENTAL]"
	select BT_HFP_HF_VOICE_RECG
	help
	  This option enables Enhanced Voice Recognition Status for HFP HF

config BT_HFP_HF_VOICE_RECG_TEXT
	bool "Voice Recognition Text for HFP HF [EXPERIMENTAL]"
	select BT_HFP_HF_ENH_VOICE_RECG
	help
	  This option enables Voice Recognition Text for HFP HF

config BT_HFP_HF_HF_INDICATORS
	bool "HF Indicators for HFP HF [EXPERIMENTAL]"
	help
	  This option enables HF Indicators for HFP HF

config BT_HFP_HF_HF_INDICATOR_ENH_SAFETY
	bool "HF Indicator Enhanced Safety for HFP HF [EXPERIMENTAL]"
	select BT_HFP_HF_HF_INDICATORS
	help
	  This option enables HF Indicator Enhanced Safety for HFP HF

config BT_HFP_HF_HF_INDICATOR_BATTERY
	bool "HF Indicator Battery level for HFP HF [EXPERIMENTAL]"
	select BT_HFP_HF_HF_INDICATORS
	help
	  This option enables HF Indicator Battery level for HFP HF

endif # BT_HFP_HF

if BT_HFP_AG
config BT_HFP_AG_EXT_ERR
	bool "Extended Error Result Codes for HFP AG [EXPERIMENTAL]"
	default y
	help
	  This option enables Extended Error Result Codes for HFP AG

config BT_HFP_AG_CODEC_NEG
	bool "Codec Negotiation for HFP AG [EXPERIMENTAL]"
	help
	  This option enables Codec Negotiation for HFP AG

config BT_HFP_AG_ECNR
	bool "EC and/or NR function for HFP AG [EXPERIMENTAL]"
	help
	  This option enables EC and/or NR function for HFP AG

config BT_HFP_AG_3WAY_CALL
	bool "Three-way calling for HFP AG [EXPERIMENTAL]"
	help
	  This option enables Three-way calling for HFP AG

config BT_HFP_AG_MAX_CALLS
	int "Maximum supported calls for HFP AG [EXPERIMENTAL]"
	default 2 if BT_HFP_AG_3WAY_CALL
	default 1
	range 1 2
	help
	  This option sets maximum supported calls for HFP AG

config BT_HFP_AG_ECS
	bool "Enhanced call status for HFP AG [EXPERIMENTAL]"
	default y if BT_HFP_AG_3WAY_CALL
	help
	  This option enables Enhanced call status for HFP AG

config BT_HFP_AG_ECC
	bool "Enhanced call control for HFP AG [EXPERIMENTAL]"
	default y if BT_HFP_AG_3WAY_CALL
	help
	  This option enables Enhanced call control for HFP AG

config BT_HFP_AG_TX_BUF_COUNT
	int "Maximum number of TX buffers for HFP AG [EXPERIMENTAL]"
	default BT_RFCOMM_TX_MAX
	range BT_RFCOMM_TX_MAX $(UINT8_MAX)
	help
	  Maximum number of pending TX buffers that have an associated
	  sending buf. Normally this can be left to the default value, which
	  is equal to the number of session in the stack-internal pool.

config BT_HFP_AG_OUTGOING_TIMEOUT
	int "Call outgoing timeout value for HFP AG [EXPERIMENTAL]"
	default 3
	range 1 10
	help
	  The option sets the timeout of call outgoing. If the call does
	  not switch to alerting state before timeout, it will be
	  stopped by the HFP AG. The unit is seconds.

config BT_HFP_AG_INCOMING_TIMEOUT
	int "Incoming call timeout value for HFP AG [EXPERIMENTAL]"
	default 3
	range 1 10
	help
	  The option sets the timeout of incoming call. If the call does
	  not switch to ringing state before timeout, it will be
	  stopped by the HFP AG. The unit is seconds.

config BT_HFP_AG_ALERTING_TIMEOUT
	int "Call alerting/ringing timeout value for HFP AG [EXPERIMENTAL]"
	default 60
	range 10 60
	help
	  The option sets the timeout of call alerting/ringing. If the
	  call is not active before timeout, it will be stopped
	  by the HFP AG. The unit is seconds.

config BT_HFP_AG_PHONE_NUMBER_MAX_LEN
	int "Supported max length of phone number for HFP AG [EXPERIMENTAL]"
	default 32
	range 1 $(UINT8_MAX)
	help
	  Supported max length of phone number for HFP AG.

config BT_HFP_AG_RING_NOTIFY_INTERVAL
	int "Ring notification interval [EXPERIMENTAL]"
	default 3
	help
	  Ring notification interval if the call is in alert state.
	  The unit is seconds.

config BT_HFP_AG_VOICE_RECG
	bool "Voice recognition activation for HFP AG [EXPERIMENTAL]"
	help
	  This option enables Voice recognition activation for HFP AG

config BT_HFP_AG_ENH_VOICE_RECG
	bool "Enhanced Voice Recognition Status for HFP AG [EXPERIMENTAL]"
	select BT_HFP_AG_VOICE_RECG
	help
	  This option enables Enhanced Voice Recognition Status for HFP AG

config BT_HFP_AG_VOICE_RECG_TEXT
	bool "Voice Recognition Text for HFP AG [EXPERIMENTAL]"
	select BT_HFP_AG_ENH_VOICE_RECG
	help
	  This option enables Voice Recognition Text for HFP AG

config BT_HFP_AG_VOICE_TAG
	bool "Attach a phone number for a voice tag for HFP AG [EXPERIMENTAL]"
	select BT_HFP_AG_VOICE_RECG
	help
	  This option enables Attach a phone number for a voice tag for HFP AG

config BT_HFP_AG_HF_INDICATORS
	bool "HF Indicators for HFP AG [EXPERIMENTAL]"
	help
	  This option enables HF Indicators for HFP AG

config BT_HFP_AG_HF_INDICATOR_ENH_SAFETY
	bool "HF Indicator Enhanced Safety for HFP AG [EXPERIMENTAL]"
	select BT_HFP_AG_HF_INDICATORS
	help
	  This option enables HF Indicator Enhanced Safety for HFP AG

config BT_HFP_AG_HF_INDICATOR_BATTERY
	bool "HF Indicator Battery level for HFP AG [EXPERIMENTAL]"
	select BT_HFP_AG_HF_INDICATORS
	help
	  This option enables HF Indicator Battery level for HFP AG

config BT_HFP_AG_REJECT_CALL
	bool "Ability to reject a call for HFP AG [EXPERIMENTAL]"
	default y
	help
	  This option enables ability to reject a call for HFP AG

config BT_HFP_AG_GET_ONGOING_CALL_TIMEOUT
	int "Timeout after the get ongoing calls callback notified (milliseconds) [EXPERIMENTAL]"
	default 10000
	range 1000 10000
	help
	  This option sets the timeout after the get ongoing calls callback notified

endif # BT_HFP_AG

config BT_AVDTP
	bool "Bluetooth AVDTP protocol support [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth AVDTP support

config BT_A2DP
	bool "Bluetooth A2DP Profile [EXPERIMENTAL]"
	select BT_AVDTP
	select EXPERIMENTAL
	help
	  This option enables the A2DP profile

if BT_AVDTP

config BT_AVDTP_RTP_VERSION
	int "Bluetooth AVDTP RTP version"
	default 2
	help
	  This option sets the AVDTP RTP protocol version

config BT_AVDTP_SIGNAL_SDU_MAX
	int "Maximum size of AVDTP signaling SDU"
	default 512
	range 48 $(UINT16_MAX)
	help
	  This option sets the maximum size of AVDTP signaling SDU.
	  The default value is 512 bytes.

endif # BT_AVDTP

if BT_A2DP

config BT_A2DP_SOURCE
	bool "Bluetooth A2DP Profile Source Function"
	help
	  This option enables the A2DP profile source function

config BT_A2DP_SINK
	bool "Bluetooth A2DP Profile Sink Function"
	help
	  This option enables the A2DP profile sink function

endif # BT_A2DP

config BT_AVCTP
	bool "Bluetooth AVCTP protocol support [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth AVCTP support

config BT_AVRCP
	bool "Bluetooth AVRCP Profile [EXPERIMENTAL]"
	select BT_AVCTP
	select EXPERIMENTAL
	help
	  This option enables the AVRCP profile

if BT_AVRCP

config BT_AVRCP_TARGET
	bool "Bluetooth AVRCP Profile Target Function"
	help
	  This option enables the AVRCP profile target function

config BT_AVRCP_CONTROLLER
	bool "Bluetooth AVRCP Profile Controller Function"
	help
	  This option enables the AVRCP profile controller function

config BT_AVRCP_BROWSING
	bool "Bluetooth AVRCP Browsing channel support [EXPERIMENTAL]"
	select EXPERIMENTAL
	select BT_L2CAP_ENH_RET
	help
	  This option enables support for the AVRCP Browsing channel
	  over Bluetooth BR/EDR.

endif # BT_AVRCP

config BT_DID
	bool "Bluetooth DID Profile [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables the DID profile

if BT_DID
config BT_DEVICE_VEDNOR_ID
	hex "Bluetooth Device Vendor ID"
	range 0x0000 $(UINT16_MAX)
	default 0x0000
	help
	  This option sets the device vendor id

config BT_DEVICE_PRODUCT_ID
	hex "Bluetooth Device Product ID"
	range 0x0000 $(UINT16_MAX)
	default 0x0000
	help
	  This option sets the device product id

config BT_DEVICE_VERSION
	hex "Bluetooth Device Version"
	range 0x0000 $(UINT16_MAX)
	default 0x0000
	help
	  This option sets the device version

endif # BT_DID

config BT_PAGE_TIMEOUT
	hex "Bluetooth Page Timeout"
	default 0x2000
	range 0x0001 0xffff
	help
	  This option sets the page timeout value. Value is selected as
	  (N * 0.625) ms.

config BT_COD
	hex "Bluetooth Class of Device(CoD)"
	default 0
	help
	  This option sets the class of device.For the list of possible values please
	  consult the following link:
	  https://www.bluetooth.com/specifications/assigned-numbers

config BT_DEFAULT_ROLE_SWITCH_ENABLE
	bool "Default Bluetooth Role Switch Enable/Disable State"
	help
	  This option sets the controller's default link policy to
	  enable/disable the role switch.

config BT_POWER_MODE_CONTROL
	bool "Bluetooth Power Mode Control(Active/Sniff)"
	help
	  This option enables the power mode control feature. This feature
	  allows the application to control the power mode of the Bluetooth
	  controller.

config BT_GOEP
	bool "Bluetooth GOEP Profile [EXPERIMENTAL]"
	select BT_RFCOMM
	select BT_L2CAP_ENH_RET
	select EXPERIMENTAL
	help
	  This option enables the GOEP profile

if BT_GOEP
config BT_GOEP_RFCOMM_MTU
	int "RFCOMM MTU for GOEP"
	default BT_RFCOMM_L2CAP_MTU
	# For GOEP over RFCOMM, including,
	# 255 bytes - the minimum MTU of GOEP,
	# 4 bytes - L2CAP Header,
	# 5 bytes - 4 bytes for RFCOMM header with extended length, 1 byte for FCS.
	range 264 BT_RFCOMM_L2CAP_MTU
	help
	  Maximum size of RFCOMM MTU for GOEP.
	  RX MTU will be truncated to account for ACL data and type overhead, the L2CAP PDU header,
	  and the RFCOMM header.

config BT_GOEP_L2CAP_MTU
	int "L2CAP MTU for GOEP"
	default BT_BUF_ACL_RX_SIZE
	# For GOEP over L2CAP, including,
	# 255 bytes - the minimum MTU of GOEP,
	# 4 bytes - L2CAP Header,
	range 259 BT_BUF_ACL_RX_SIZE
	help
	  Maximum size of L2CAP MTU for GOEP.
	  RX MTU will be truncated to account for ACL data and type overhead, and the L2CAP PDU
	  header.

config BT_OEBX_RSP_CODE_TO_STR
	bool "Print OBEX response code as strings"
	help
	  This configuration enables printing of OBEX response
	  codes represented as strings.
	  See bt_obex_rsp_code_to_str() for more details.

endif # BT_GOEP

endif # BT_CLASSIC

endmenu
