blob: 2bd29855e5558331307ab12a1cdf597e74ad4544 [file] [log] [blame]
# Bluetooth configuration options
# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2021 Nordic Semiconductor ASA
# 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
choice BT_STACK_SELECTION
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.
config BT_BROADCASTER
bool "Broadcaster Role support"
default y if !BT_OBSERVER
help
Select this for LE Broadcaster role support.
config BT_OBSERVER
bool "Observer Role support"
help
Select this for LE Observer role support.
rsource "Kconfig.adv"
config BT_CONN
bool
config BT_MAX_CONN
int "Maximum number of simultaneous connections"
depends on BT_CONN
range 1 250
default 2 if BT_MESH_GATT_CLIENT
default 1
help
Maximum number of simultaneous Bluetooth connections
supported.
config BT_CONN_TX
bool
default BT_CONN || BT_ISO_TX
help
Hidden configuration that is true if ACL or broadcast ISO is enabled
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 && !BT_STM32WBA
# 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 "Allow 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_remote_info(). The fields in question
can then be found in the bt_conn_remote_info struct.
config BT_PHY_UPDATE
bool "PHY Update"
default y
depends on !BT_CTLR || BT_CTLR_PHY_UPDATE_SUPPORT
help
Enable support for Bluetooth 5.0 PHY Update Procedure.
config BT_DATA_LEN_UPDATE
bool "Data Length Update"
default y
depends on !BT_CTLR || BT_CTLR_DATA_LEN_UPDATE_SUPPORT
help
Enable support for Bluetooth v4.2 LE Data Length Update procedure.
config BT_PER_ADV_SYNC_TRANSFER_RECEIVER
bool "Periodic Advertising Sync Transfer receiver"
depends on BT_PER_ADV_SYNC && (!BT_CTLR || BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT)
config BT_PER_ADV_SYNC_TRANSFER_SENDER
bool "Periodic Advertising Sync Transfer sender"
depends on (BT_PER_ADV_SYNC || BT_PER_ADV) && (!BT_CTLR || BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT)
config BT_SCA_UPDATE
bool "Sleep Clock Accuracy Update"
default y if BT_ISO_PERIPHERAL || BT_ISO_CENTRAL
depends on !BT_CTLR || BT_CTLR_SCA_UPDATE_SUPPORT
help
Enable support for Bluetooth 5.1 Sleep Clock Accuracy Update Procedure
config BT_TRANSMIT_POWER_CONTROL
bool "LE Power Control"
depends on !BT_CTLR || BT_CTLR_LE_POWER_CONTROL_SUPPORT
help
Enable support for LE Power Control Request feature that is defined in the
Bluetooth Core specification, Version 5.4 | Vol 6, Part B, Section 4.6.31.
endif # BT_CONN
rsource "Kconfig.iso"
rsource "common/Kconfig"
rsource "host/Kconfig"
rsource "controller/Kconfig"
rsource "shell/Kconfig"
rsource "crypto/Kconfig"
rsource "lib/Kconfig"
rsource "Kconfig.logging"
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
endif # BT