1. Improve WiFi throughput in some Classic BT scienarios(idle, inquire scan, connected, sniff, a2dp pause, etc). 2. Support WiFi + Classic BT + BLE mesh coexistence scienario. 3. Improve WiFi scan and connect succeed ratio in coexistence scienario. 4. Do not support to choose software coexistence preference anymore for it is determined according to coexistence scienario automatically. components/lwip: increase TCP send buffer and receive window limitation when TCP window scale is enabled components/ble_mesh: Fix some bugs about ble mesh 1. fix send acl pkt after ble have sent terminate ind modify min adv interval to 10ms.
440 lines
19 KiB
Text
440 lines
19 KiB
Text
menu "Bluetooth"
|
|
|
|
config BT_ENABLED
|
|
bool "Bluetooth"
|
|
depends on IDF_TARGET_ESP32
|
|
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
|
|
|
|
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_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_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_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.
|
|
|
|
menuconfig BTDM_COEX_BT_OPTIONS
|
|
bool "Coexistence Bluetooth Side Options"
|
|
depends on ESP32_WIFI_SW_COEXIST_ENABLE
|
|
default n
|
|
help
|
|
Options of Bluetooth Side of WiFi and bluetooth coexistence.
|
|
|
|
config BTDM_COEX_BLE_ADV_HIGH_PRIORITY
|
|
bool "Improve BLE ADV priority for WiFi & BLE coexistence"
|
|
depends on BTDM_COEX_BT_OPTIONS
|
|
default n
|
|
help
|
|
Improve BLE ADV coexistence priority to make it better performance.
|
|
For example, BLE mesh need to enable this option to improve BLE adv performance.
|
|
|
|
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"
|