# Bluetooth configuration options

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig BT
	bool "Bluetooth"
	# Some BT threads use co-op priorities to implement critical sections,
	# will need some refactoring to work on SMP systems.
	depends on !SMP
	select NET_BUF
	help
	  This option enables Bluetooth support.

if BT

module = BT
module-str = bt
source "subsys/logging/Kconfig.template.log_config"

choice
	prompt "Bluetooth Stack Selection"
	default BT_HCI
	help
	  Select the Bluetooth stack to compile.

config BT_HCI
	bool "HCI-based"
	help
	  HCI-based stack with optional host & controller parts and an
	  HCI driver in between.

config BT_CUSTOM
	bool "Custom"
	help
	  Select a custom, non-HCI based stack. If you're not sure what
	  this is, you probably want the HCI-based stack instead.

endchoice

# The Bluetooth subsystem requires the system workqueue to execute at
# a cooperative priority.
config SYSTEM_WORKQUEUE_PRIORITY
	range -256 -1

if BT_HCI

config BT_HCI_RAW
	bool "RAW HCI access"
	help
	  This option allows to access Bluetooth controller
	  from the application with the RAW HCI protocol.

config BT_HCI_RAW_H4
	bool "RAW HCI H:4 transport"
	help
	  This option enables HCI RAW access to work over an H:4
	  transport, note that it still need to be selected at runtime.

config BT_HCI_RAW_H4_ENABLE
	bool "RAW HCI H:4 transport enable"
	depends on BT_HCI_RAW_H4
	help
	  This option enables use of H:4 transport for HCI RAW access at
	  build time.

config BT_HCI_RAW_RESERVE
	int "Buffer headroom needed for HCI transport"
	depends on BT_HCI_RAW
	default 1 if BT_HCI_RAW_H4
	default 0
	help
	  This option is used by the HCI raw transport implementation to
	  declare how much headroom it needs for any HCI transport headers.

config BT_HCI_RAW_CMD_EXT
	bool "RAW HCI Command Extension"
	help
	  This option enables HCI RAW command extension so the driver can
	  register it own command table extension.

config BT_PERIPHERAL
	bool "Peripheral Role support"
	select BT_BROADCASTER
	select BT_CONN
	default y if BT_HCI_RAW
	help
	  Select this for LE Peripheral role support.

config BT_CENTRAL
	bool "Central Role support"
	select BT_OBSERVER
	select BT_CONN
	default y if BT_HCI_RAW
	help
	  Select this for LE Central role support.

menu "Broadcaster"
	visible if !BT_PERIPHERAL

config BT_BROADCASTER
	bool "Broadcaster Role support"
	default y if !BT_OBSERVER
	help
	  Select this for LE Broadcaster role support.

endmenu

config BT_EXT_ADV
	bool "Extended Advertising and Scanning support [EXPERIMENTAL]"
	help
	  Select this to enable Extended Advertising API support.
	  This enables support for advertising with multiple advertising sets,
	  extended advertising data, and advertising on LE Coded PHY.
	  It enables support for receiving extended advertising data as a
	  scanner, including support for advertising data over the LE coded PHY.
	  It enables establishing connections over LE Coded PHY.

if BT_EXT_ADV
config BT_EXT_ADV_LEGACY_SUPPORT
	bool "Support starting advertising through legacy commands"
	help
	  Select this to enable the use of the Legacy Advertising HCI commands.
	  This option should be used where the capabilities of the controller
	  is not known.
	  If this option is not enabled the controller must support the extended
	  advertising feature.

config BT_EXT_ADV_MAX_ADV_SET
	int "Maximum number of simultaneous advertising sets"
	range 1 64
	default 1
	help
	  Maximum number of simultaneous Bluetooth advertising sets
	  supported.

config BT_PER_ADV
	bool "Periodic Advertising and Scanning support [EXPERIMENTAL]"
	help
	  Select this to enable Periodic Advertising API support. This allows
	  the device to send advertising data periodically at deterministic
	  intervals. Scanners can synchronize to the periodic advertisements
	  to periodically get the data.

config BT_PER_ADV_SYNC
	bool "Periodic advertising sync support [EXPERIMENTAL]"
	depends on BT_OBSERVER
	help
	  Select this to enable Periodic Advertising Sync API support.
	  Syncing with a periodic advertiser allows the device to periodically
	  and deterministic receive data from that device in a connectionless
	  manner.

if BT_PER_ADV_SYNC
config BT_PER_ADV_SYNC_MAX
	int "Maximum number of simultaneous periodic advertising syncs"
	range 1 64
	default 1
	help
	  Maximum number of simultaneous periodic advertising syncs supported.
endif # BT_PER_ADV_SYNC

endif # BT_EXT_ADV

menu "Observer"
	visible if !BT_CENTRAL

config BT_OBSERVER
	bool "Observer Role support"
	help
	  Select this for LE Observer role support.

endmenu

source "subsys/bluetooth/services/Kconfig"

config BT_CONN
	bool

config BT_MAX_CONN
	int "Maximum number of simultaneous connections"
	depends on BT_CONN
	range 1 64
	default 1
	help
	  Maximum number of simultaneous Bluetooth connections
	  supported.

if BT_CONN
config BT_HCI_ACL_FLOW_CONTROL
	bool "Controller to Host ACL flow control support"
	# Enable if building a Host-only build
	default y if !BT_CTLR && !BT_STM32_IPM && !BT_ESP32
	# Enable if building a Controller-only build
	default y if BT_HCI_RAW
	select POLL
	help
	  Enable support for throttling ACL buffers from the controller
	  to the host. This is particularly useful when the host and
	  controller are on separate cores since it ensures that we do
	  not run out of incoming ACL buffers.

config BT_REMOTE_VERSION
	bool "Enable fetching of remote version"
	# Enable if building a Controller-only build
	default y if BT_HCI_RAW
	help
	  Enable this to get access to the remote version in the Controller and
	  in the Host through bt_conn_get_info(). The fields in question can
	  be then found in the bt_conn_info struct.

config BT_PHY_UPDATE
	bool "PHY Update"
	default y
	help
	  Enable support for Bluetooth 5.0 PHY Update Procedure.

config BT_DATA_LEN_UPDATE
	bool "Data Length Update"
	default y
	help
	  Enable support for Bluetooth v4.2 LE Data Length Update procedure.
endif # BT_CONN


config BT_ISO
	bool # hidden

config BT_ISO_UNICAST
	bool "Bluetooth Isochronous Channel Unicast Support [EXPERIMENTAL]"
	depends on BT_CONN
	select BT_ISO
	help
	  This option enables support for Bluetooth Broadcast
	  Isochronous channels.

# TODO: Split between broadcaster and observer for optimization
config BT_ISO_BROADCAST
	bool "Bluetooth Isochronous Channel Broadcast Support [EXPERIMENTAL]"
	select BT_ISO
	select BT_EXT_ADV
	select BT_PER_ADV
	select BT_PER_ADV_SYNC
	help
	  This option enables support for Bluetooth Broadcast
	  Isochronous channels.

if BT_ISO

config BT_ISO_MAX_CHAN
	int "Maximum number of simultaneous ISO channels"
	depends on BT_ISO
	default BT_MAX_CONN if BT_CONN
	default 1
	range 1 64
	help
	  Maximum number of simultaneous Bluetooth isochronous channels
	  supported.

config BT_ISO_TX_BUF_COUNT
	int "Number of Isochronous TX buffers"
	default 1
	range 1 255
	help
	  Number of buffers available for outgoing Isochronous channel SDUs.

config BT_ISO_TX_FRAG_COUNT
	int "Number of ISO TX fragment buffers"
	default 2
	range 0 255
	help
	  Number of buffers available for fragments of TX buffers. Warning:
	  setting this to 0 means that the application must ensure that
	  queued TX buffers never need to be fragmented, i.e. that the
	  controller's buffer size is large enough. If this is not ensured,
	  and there are no dedicated fragment buffers, a deadlock may occur.
	  In most cases the default value of 2 is a safe bet.

config BT_ISO_TX_MTU
	int "Maximum supported MTU for Isochronous TX buffers"
	default 251
	range 23 4095
	help
	  Maximum MTU for Isochronous channels TX buffers.

config BT_ISO_RX_BUF_COUNT
	int "Number of Isochronous RX buffers"
	default 1
	range 1 255
	help
	  Number of buffers available for incoming Isochronous channel SDUs.

config BT_ISO_RX_MTU
	int "Maximum supported MTU for Isochronous RX buffers"
	default 251
	range 23 4095
	help
	  Maximum MTU for Isochronous channels RX buffers.

if BT_ISO_BROADCAST

config BT_ISO_MAX_BIG
	int "Maximum number of Broadcast Isochronous Groups (BIGs) to support"
	default 1
	help
	  Maximmum number of BIGs that are supported by the host. A BIG can be
	  used for either transmitting or receiving, but not at the same time.

endif # BT_ISO_BROADCAST
endif # BT_ISO

source "subsys/bluetooth/common/Kconfig"
source "subsys/bluetooth/host/Kconfig"
source "subsys/bluetooth/controller/Kconfig"
source "subsys/bluetooth/shell/Kconfig"

endif # BT_HCI

config BT_COMPANY_ID
	hex "Company Id"
	default 0x05F1
	range 0x0000 0xFFFF
	help
	  Set the Bluetooth Company Identifier for this device. The Linux
	  Foundation's Company Identifier (0x05F1) is the default value for
	  this option although silicon vendors and hardware manufacturers
	  can set their own. Note that the controller's Company Identifier is
	  controlled by BT_CTLR_COMPANY_ID. The full list of Bluetooth
	  Company Identifiers can be found here:
	  https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers

source "subsys/bluetooth/mesh/Kconfig"
source "subsys/bluetooth/audio/Kconfig"

endif # BT
