Update the connected ISO API to be more similar to the broadcast ISO API as well as the HCI spec. This updated API allows for more flexibility and will better support scenarios such as true wireless setup, as ISO channels and connections are more independent now. Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
358 lines
9.4 KiB
Plaintext
358 lines
9.4 KiB
Plaintext
# 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
|
|
|
|
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_LIM_ADV_TIMEOUT
|
|
int "Timeout for limited advertising in 1s units"
|
|
default 30
|
|
range 1 180
|
|
help
|
|
After this timeout is reached, advertisement with BT_LE_AD_LIMITED flag
|
|
set shall be terminated. As per BT Core Spec 5.2, Vol 3, Part C,
|
|
Appendix A (NORMATIVE): TIMERS AND CONSTANTS it's required to be no more
|
|
than 180s.
|
|
|
|
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
|
|
|
|
rsource "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_UNICAST
|
|
|
|
config BT_ISO_MAX_CIG
|
|
int "Maximum number of Connected Isochronous Groups (CIGs) to support"
|
|
default 1
|
|
help
|
|
Maximum number of CIGs that are supported by the host. A CIG can be
|
|
used for either transmitting or receiving.
|
|
|
|
endif # BT_ISO_UNICAST
|
|
|
|
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
|
|
|
|
rsource "common/Kconfig"
|
|
rsource "host/Kconfig"
|
|
rsource "controller/Kconfig"
|
|
rsource "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
|
|
|
|
rsource "mesh/Kconfig"
|
|
rsource "audio/Kconfig"
|
|
|
|
endif # BT
|