mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
479 lines
20 KiB
Plaintext
479 lines
20 KiB
Plaintext
menu "Bluetooth"
|
|
|
|
config BT_ENABLED
|
|
bool "Bluetooth"
|
|
help
|
|
Select this option to enable Bluetooth and show the submenu with Bluetooth configuration choices.
|
|
|
|
menu "Bluetooth controller"
|
|
visible if BT_ENABLED
|
|
|
|
choice BTDM_CTRL_MODE
|
|
prompt "Bluetooth controller mode (BR/EDR/BLE/DUALMODE)"
|
|
depends on BT_ENABLED
|
|
help
|
|
Specify the bluetooth controller mode (BR/EDR, BLE or dual mode).
|
|
|
|
config BTDM_CTRL_MODE_BLE_ONLY
|
|
bool "BLE Only"
|
|
|
|
config BTDM_CTRL_MODE_BR_EDR_ONLY
|
|
bool "BR/EDR Only"
|
|
|
|
config BTDM_CTRL_MODE_BTDM
|
|
bool "Bluetooth Dual Mode"
|
|
|
|
endchoice
|
|
|
|
config BTDM_CTRL_BLE_MAX_CONN
|
|
int "BLE Max Connections"
|
|
depends on BTDM_CTRL_MODE_BLE_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 3
|
|
range 1 9
|
|
help
|
|
BLE maximum connections of bluetooth controller.
|
|
Each connection uses 1KB static DRAM whenever the BT controller is enabled.
|
|
|
|
config BTDM_CTRL_BR_EDR_MAX_ACL_CONN
|
|
int "BR/EDR ACL Max Connections"
|
|
depends on BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 2
|
|
range 1 7
|
|
help
|
|
BR/EDR ACL maximum connections of bluetooth controller.
|
|
Each connection uses 1.2KB static DRAM whenever the BT controller is enabled.
|
|
|
|
config BTDM_CTRL_BR_EDR_MAX_SYNC_CONN
|
|
int "BR/EDR Sync(SCO/eSCO) Max Connections"
|
|
depends on BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 0
|
|
range 0 3
|
|
help
|
|
BR/EDR Synchronize maximum connections of bluetooth controller.
|
|
Each connection uses 2KB static DRAM whenever the BT controller is enabled.
|
|
|
|
|
|
|
|
choice BTDM_CTRL_BR_EDR_SCO_DATA_PATH
|
|
prompt "BR/EDR Sync(SCO/eSCO) default data path"
|
|
depends on BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
|
|
help
|
|
SCO data path, i.e. HCI or PCM.
|
|
SCO data can be sent/received through HCI synchronous packets, or the data
|
|
can be routed to on-chip PCM module on ESP32. PCM input/output signals can
|
|
be "matrixed" to GPIOs. The default data path can also be set using API
|
|
"esp_bredr_sco_datapath_set"
|
|
|
|
config BTDM_CTRL_BR_EDR_SCO_DATA_PATH_HCI
|
|
bool "HCI"
|
|
config BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
|
|
bool "PCM"
|
|
endchoice
|
|
|
|
config BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF
|
|
int
|
|
default 0 if BTDM_CTRL_BR_EDR_SCO_DATA_PATH_HCI
|
|
default 1 if BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
|
|
default 0
|
|
|
|
menuconfig BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
|
|
bool "PCM Signal Config (Role and Polar)"
|
|
depends on BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
|
|
default y
|
|
|
|
choice BTDM_CTRL_PCM_ROLE
|
|
prompt "PCM Role"
|
|
depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
|
|
help
|
|
PCM role can be configured as PCM master or PCM slave
|
|
|
|
config BTDM_CTRL_PCM_ROLE_MASTER
|
|
bool "PCM Master"
|
|
config BTDM_CTRL_PCM_ROLE_SLAVE
|
|
bool "PCM Slave"
|
|
endchoice
|
|
|
|
choice BTDM_CTRL_PCM_POLAR
|
|
prompt "PCM Polar"
|
|
depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
|
|
help
|
|
PCM polarity can be configured as Falling Edge or Rising Edge
|
|
|
|
config BTDM_CTRL_PCM_POLAR_FALLING_EDGE
|
|
bool "Falling Edge"
|
|
config BTDM_CTRL_PCM_POLAR_RISING_EDGE
|
|
bool "Rising Edge"
|
|
endchoice
|
|
|
|
config BTDM_CTRL_PCM_ROLE_EFF
|
|
int
|
|
default 0 if BTDM_CTRL_PCM_ROLE_MASTER
|
|
default 1 if BTDM_CTRL_PCM_ROLE_SLAVE
|
|
default 0
|
|
|
|
config BTDM_CTRL_PCM_POLAR_EFF
|
|
int
|
|
default 0 if BTDM_CTRL_PCM_POLAR_FALLING_EDGE
|
|
default 1 if BTDM_CTRL_PCM_POLAR_RISING_EDGE
|
|
default 0
|
|
|
|
config BTDM_CTRL_AUTO_LATENCY
|
|
bool "Auto latency"
|
|
depends on BTDM_CTRL_MODE_BTDM
|
|
default n
|
|
help
|
|
BLE auto latency, used to enhance classic BT performance
|
|
while classic BT and BLE are enabled at the same time.
|
|
|
|
config BTDM_CTRL_AUTO_LATENCY_EFF
|
|
bool
|
|
default BTDM_CTRL_AUTO_LATENCY if BTDM_CTRL_MODE_BTDM
|
|
default n
|
|
|
|
config BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT
|
|
bool "Legacy Authentication Vendor Specific Event Enable"
|
|
depends on BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default y
|
|
help
|
|
To protect from BIAS attack during Legacy authentication,
|
|
Legacy authentication Vendor specific event should be enabled
|
|
|
|
config BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF
|
|
bool
|
|
default BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT if BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 0
|
|
|
|
|
|
config BTDM_CTRL_BLE_MAX_CONN_EFF
|
|
int
|
|
default BTDM_CTRL_BLE_MAX_CONN if BTDM_CTRL_MODE_BLE_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 0
|
|
|
|
config BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF
|
|
int
|
|
default BTDM_CTRL_BR_EDR_MAX_ACL_CONN if BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 0
|
|
|
|
config BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF
|
|
int
|
|
default BTDM_CTRL_BR_EDR_MAX_SYNC_CONN if BTDM_CTRL_MODE_BR_EDR_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default 0
|
|
|
|
choice BTDM_CTRL_PINNED_TO_CORE_CHOICE
|
|
prompt "The cpu core which bluetooth controller run"
|
|
depends on BT_ENABLED && !FREERTOS_UNICORE
|
|
help
|
|
Specify the cpu core to run bluetooth controller.
|
|
Can not specify no-affinity.
|
|
|
|
config BTDM_CTRL_PINNED_TO_CORE_0
|
|
bool "Core 0 (PRO CPU)"
|
|
config BTDM_CTRL_PINNED_TO_CORE_1
|
|
bool "Core 1 (APP CPU)"
|
|
depends on !FREERTOS_UNICORE
|
|
endchoice
|
|
|
|
config BTDM_CTRL_PINNED_TO_CORE
|
|
int
|
|
default 0 if BTDM_CTRL_PINNED_TO_CORE_0
|
|
default 1 if BTDM_CTRL_PINNED_TO_CORE_1
|
|
default 0
|
|
|
|
choice BTDM_CTRL_HCI_MODE_CHOICE
|
|
prompt "HCI mode"
|
|
depends on BT_ENABLED
|
|
help
|
|
Speicify HCI mode as VHCI or UART(H4)
|
|
|
|
config BTDM_CTRL_HCI_MODE_VHCI
|
|
bool "VHCI"
|
|
help
|
|
Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32, too.
|
|
|
|
config BTDM_CTRL_HCI_MODE_UART_H4
|
|
bool "UART(H4)"
|
|
help
|
|
If use external bluetooth host which run on other hardware and use UART as the HCI interface,
|
|
choose this option.
|
|
endchoice
|
|
|
|
menu "HCI UART(H4) Options"
|
|
visible if BTDM_CTRL_HCI_MODE_UART_H4
|
|
|
|
config BT_HCI_UART_NO
|
|
int "UART Number for HCI"
|
|
depends on BTDM_CTRL_HCI_MODE_UART_H4
|
|
range 1 2
|
|
default 1
|
|
help
|
|
Uart number for HCI. The available uart is UART1 and UART2.
|
|
|
|
config BT_HCI_UART_BAUDRATE
|
|
int "UART Baudrate for HCI"
|
|
depends on BTDM_CTRL_HCI_MODE_UART_H4
|
|
range 115200 921600
|
|
default 921600
|
|
help
|
|
UART Baudrate for HCI. Please use standard baudrate.
|
|
|
|
endmenu
|
|
|
|
menu "MODEM SLEEP Options"
|
|
visible if BT_ENABLED
|
|
|
|
config BTDM_MODEM_SLEEP
|
|
bool "Bluetooth modem sleep"
|
|
depends on BT_ENABLED
|
|
default y
|
|
help
|
|
Enable/disable bluetooth controller low power mode.
|
|
|
|
choice BTDM_MODEM_SLEEP_MODE
|
|
prompt "Bluetooth Modem sleep mode"
|
|
depends on BTDM_MODEM_SLEEP
|
|
help
|
|
To select which strategy to use for modem sleep
|
|
|
|
config BTDM_MODEM_SLEEP_MODE_ORIG
|
|
bool "ORIG Mode(sleep with low power clock)"
|
|
help
|
|
ORIG mode is a bluetooth sleep mode that can be used for dual mode controller. In this mode,
|
|
bluetooth controller sleeps between BR/EDR frames and BLE events. A low power clock is used to
|
|
maintain bluetooth reference clock.
|
|
|
|
config BTDM_MODEM_SLEEP_MODE_EVED
|
|
bool "EVED Mode(For internal test only)"
|
|
help
|
|
EVED mode is for BLE only and is only for internal test. Do not use it for production. this
|
|
mode is not compatible with DFS nor light sleep
|
|
endchoice
|
|
|
|
choice BTDM_LOW_POWER_CLOCK
|
|
prompt "Bluetooth low power clock"
|
|
depends on BTDM_MODEM_SLEEP_MODE_ORIG
|
|
help
|
|
Select the low power clock source for bluetooth controller. Bluetooth low power clock is
|
|
the clock source to maintain time in sleep mode.
|
|
|
|
- "Main crystal" option provides good accuracy and can support Dynamic Frequency Scaling
|
|
to be used with Bluetooth modem sleep. Light sleep is not supported.
|
|
- "External 32kHz crystal" option allows user to use a 32.768kHz crystal as Bluetooth low
|
|
power clock. This option is allowed as long as External 32kHz crystal is configured as
|
|
the system RTC clock source. This option provides good accuracy and supports Bluetooth
|
|
modem sleep to be used alongside Dynamic Frequency Scaling or light sleep.
|
|
|
|
config BTDM_LPCLK_SEL_MAIN_XTAL
|
|
bool "Main crystal"
|
|
help
|
|
Main crystal can be used as low power clock for bluetooth modem sleep. If this option is
|
|
selected, bluetooth modem sleep can work under Dynamic Frequency Scaling(DFS) enabled, but
|
|
cannot work when light sleep is enabled. Main crystal has a good performance in accuracy as
|
|
the bluetooth low power clock source.
|
|
|
|
config BTDM_LPCLK_SEL_EXT_32K_XTAL
|
|
bool "External 32kHz crystal"
|
|
depends on ESP32_RTC_CLK_SRC_EXT_CRYS
|
|
help
|
|
External 32kHz crystal has a nominal frequency of 32.768kHz and provides good frequency
|
|
stability. If used as Bluetooth low power clock, External 32kHz can support Bluetooth
|
|
modem sleep to be used with both DFS and light sleep.
|
|
endchoice
|
|
|
|
endmenu
|
|
|
|
choice BTDM_BLE_SLEEP_CLOCK_ACCURACY
|
|
prompt "BLE Sleep Clock Accuracy"
|
|
depends on BTDM_CTRL_MODE_BLE_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default BTDM_BLE_DEFAULT_SCA_250PPM
|
|
help
|
|
BLE Sleep Clock Accuracy(SCA) for the local device is used to estimate window widening in BLE
|
|
connection events. With a lower level of clock accuracy(e.g. 500ppm over 250ppm), the slave
|
|
needs a larger RX window to synchronize with master in each anchor point, thus resulting in an
|
|
increase of power consumption but a higher level of robustness in keeping connected. According
|
|
to the requirements of Bluetooth Core specification 4.2, the worst-case accuracy of Classic
|
|
Bluetooth low power oscialltor(LPO) is +/-250ppm in STANDBY and in low power modes such as
|
|
sniff. For BLE the worst-case SCA is +/-500ppm.
|
|
|
|
- "151ppm to 250ppm" option is the default value for Bluetooth Dual mode
|
|
- "251ppm to 500ppm" option can be used in BLE only mode when using external 32kHz crystal as
|
|
low power clock. This option is provided in case that BLE sleep clock has a lower level of
|
|
accuracy, or other error sources contribute to the inaccurate timing during sleep.
|
|
|
|
config BTDM_BLE_DEFAULT_SCA_500PPM
|
|
bool "251ppm to 500ppm"
|
|
depends on BTDM_LPCLK_SEL_EXT_32K_XTAL && BTDM_CTRL_MODE_BLE_ONLY
|
|
config BTDM_BLE_DEFAULT_SCA_250PPM
|
|
bool "151ppm to 250ppm"
|
|
endchoice
|
|
config BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF
|
|
int
|
|
default 0 if BTDM_BLE_DEFAULT_SCA_500PPM
|
|
default 1 if BTDM_BLE_DEFAULT_SCA_250PPM
|
|
default 1
|
|
|
|
config BTDM_BLE_SCAN_DUPL
|
|
bool "BLE Scan Duplicate Options"
|
|
depends on (BTDM_CTRL_MODE_BTDM || BTDM_CTRL_MODE_BLE_ONLY)
|
|
default y
|
|
help
|
|
This select enables parameters setting of BLE scan duplicate.
|
|
|
|
choice BTDM_SCAN_DUPL_TYPE
|
|
prompt "Scan Duplicate Type"
|
|
default BTDM_SCAN_DUPL_TYPE_DEVICE
|
|
depends on BTDM_BLE_SCAN_DUPL
|
|
help
|
|
Scan duplicate have three ways. one is "Scan Duplicate By Device Address", This way is to use
|
|
advertiser address filtering. The adv packet of the same address is only allowed to be reported once.
|
|
Another way is "Scan Duplicate By Device Address And Advertising Data". This way is to use advertising
|
|
data and device address filtering. All different adv packets with the same address are allowed to be
|
|
reported. The last way is "Scan Duplicate By Advertising Data". This way is to use advertising data
|
|
filtering. All same advertising data only allow to be reported once even though they are from
|
|
different devices.
|
|
|
|
config BTDM_SCAN_DUPL_TYPE_DEVICE
|
|
bool "Scan Duplicate By Device Address"
|
|
help
|
|
This way is to use advertiser address filtering. The adv packet of the same address is only
|
|
allowed to be reported once
|
|
|
|
config BTDM_SCAN_DUPL_TYPE_DATA
|
|
bool "Scan Duplicate By Advertising Data"
|
|
help
|
|
This way is to use advertising data filtering. All same advertising data only allow to be reported
|
|
once even though they are from different devices.
|
|
|
|
config BTDM_SCAN_DUPL_TYPE_DATA_DEVICE
|
|
bool "Scan Duplicate By Device Address And Advertising Data"
|
|
help
|
|
This way is to use advertising data and device address filtering. All different adv packets with
|
|
the same address are allowed to be reported.
|
|
endchoice
|
|
|
|
config BTDM_SCAN_DUPL_TYPE
|
|
int
|
|
depends on BTDM_BLE_SCAN_DUPL
|
|
default 0 if BTDM_SCAN_DUPL_TYPE_DEVICE
|
|
default 1 if BTDM_SCAN_DUPL_TYPE_DATA
|
|
default 2 if BTDM_SCAN_DUPL_TYPE_DATA_DEVICE
|
|
default 0
|
|
|
|
config BTDM_SCAN_DUPL_CACHE_SIZE
|
|
int "Maximum number of devices in scan duplicate filter"
|
|
depends on BTDM_BLE_SCAN_DUPL
|
|
range 10 1000
|
|
default 200
|
|
help
|
|
Maximum number of devices which can be recorded in scan duplicate filter.
|
|
When the maximum amount of device in the filter is reached, the cache will be refreshed.
|
|
|
|
config BTDM_BLE_MESH_SCAN_DUPL_EN
|
|
bool "Special duplicate scan mechanism for BLE Mesh scan"
|
|
depends on BTDM_BLE_SCAN_DUPL
|
|
default n
|
|
help
|
|
This enables the BLE scan duplicate for special BLE Mesh scan.
|
|
|
|
config BTDM_MESH_DUPL_SCAN_CACHE_SIZE
|
|
int "Maximum number of Mesh adv packets in scan duplicate filter"
|
|
depends on BTDM_BLE_MESH_SCAN_DUPL_EN
|
|
range 10 1000
|
|
default 200
|
|
help
|
|
Maximum number of adv packets which can be recorded in duplicate scan cache for BLE Mesh.
|
|
When the maximum amount of device in the filter is reached, the cache will be refreshed.
|
|
|
|
config BTDM_CTRL_FULL_SCAN_SUPPORTED
|
|
bool "BLE full scan feature supported"
|
|
depends on BTDM_CTRL_MODE_BLE_ONLY || BTDM_CTRL_MODE_BTDM
|
|
default y
|
|
help
|
|
The full scan function is mainly used to provide BLE scan performance.
|
|
This is required for scenes with high scan performance requirements, such as BLE Mesh scenes.
|
|
|
|
config BTDM_BLE_ADV_REPORT_FLOW_CTRL_SUPP
|
|
bool "BLE adv report flow control supported"
|
|
depends on (BTDM_CTRL_MODE_BTDM || BTDM_CTRL_MODE_BLE_ONLY)
|
|
default y
|
|
help
|
|
The function is mainly used to enable flow control for advertising reports. When it is enabled,
|
|
advertising reports will be discarded by the controller if the number of unprocessed advertising
|
|
reports exceeds the size of BLE adv report flow control.
|
|
|
|
config BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM
|
|
int "BLE adv report flow control number"
|
|
depends on BTDM_BLE_ADV_REPORT_FLOW_CTRL_SUPP
|
|
range 50 1000
|
|
default 100
|
|
help
|
|
The number of unprocessed advertising report that Bluedroid can save.If you set
|
|
`BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM` to a small value, this may cause adv packets lost.
|
|
If you set `BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM` to a large value, Bluedroid may cache a
|
|
lot of adv packets and this may cause system memory run out. For example, if you set
|
|
it to 50, the maximum memory consumed by host is 35 * 50 bytes. Please set
|
|
`BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM` according to your system free memory and handle adv
|
|
packets as fast as possible, otherwise it will cause adv packets lost.
|
|
|
|
config BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD
|
|
int "BLE adv lost event threshold value"
|
|
depends on BTDM_BLE_ADV_REPORT_FLOW_CTRL_SUPP
|
|
range 1 1000
|
|
default 20
|
|
help
|
|
When adv report flow control is enabled, The ADV lost event will be generated when the number
|
|
of ADV packets lost in the controller reaches this threshold. It is better to set a larger value.
|
|
If you set `BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD` to a small value or printf every adv lost event, it
|
|
may cause adv packets lost more.
|
|
|
|
endmenu
|
|
|
|
choice BT_HOST
|
|
prompt "Bluetooth Host"
|
|
depends on BT_ENABLED && BTDM_CTRL_HCI_MODE_VHCI
|
|
default BT_BLUEDROID_ENABLED
|
|
help
|
|
This helps to choose Bluetooth host stack
|
|
|
|
config BT_BLUEDROID_ENABLED
|
|
bool "Bluedroid - Dual-mode"
|
|
help
|
|
This option is recommended for classic Bluetooth or for dual-mode
|
|
usecases
|
|
|
|
config BT_NIMBLE_ENABLED
|
|
bool "NimBLE - BLE only"
|
|
help
|
|
This option is recommended for BLE only usecases to save on memory
|
|
|
|
config BT_CONTROLLER_ONLY
|
|
bool "Controller Only"
|
|
help
|
|
This option is recommended when you want to communicate directly with the
|
|
controller (without any host) or when you are using any other host stack
|
|
not supported by Espressif (not mentioned here).
|
|
|
|
endchoice
|
|
|
|
menu "Bluedroid Options"
|
|
visible if BT_BLUEDROID_ENABLED
|
|
|
|
source "$IDF_PATH/components/bt/host/bluedroid/Kconfig.in"
|
|
endmenu
|
|
menu "NimBLE Options"
|
|
visible if BT_NIMBLE_ENABLED
|
|
|
|
source "$IDF_PATH/components/bt/host/nimble/Kconfig.in"
|
|
endmenu
|
|
|
|
endmenu
|
|
|
|
menuconfig BLE_MESH
|
|
bool "ESP BLE Mesh Support"
|
|
help
|
|
This option enables ESP BLE Mesh support. The specific features that are
|
|
available may depend on other features that have been enabled in the
|
|
stack, such as Bluetooth Support, Bluedroid Support & GATT support.
|
|
|
|
source "$IDF_PATH/components/bt/esp_ble_mesh/Kconfig.in"
|