mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
9fce08c5d2
- fix(bt/controller): Fixed PHY enable and disable - feat(bt/controller): Support DAA and LBT mode for BLE CCA
471 lines
17 KiB
Plaintext
471 lines
17 KiB
Plaintext
config BT_CTRL_MODE_EFF
|
||
int
|
||
default 1
|
||
|
||
config BT_CTRL_BLE_MAX_ACT
|
||
int "BLE Max Instances"
|
||
default 6
|
||
range 1 10
|
||
help
|
||
BLE maximum activities of bluetooth controller,both of connections,
|
||
scan , sync and adv(periodic adv, multi-adv). Each instance needs to
|
||
consume 828 bytes, you can save RAM by modifying the instance value
|
||
according to actual needs.
|
||
|
||
config BT_CTRL_BLE_MAX_ACT_EFF
|
||
int
|
||
default BT_CTRL_BLE_MAX_ACT
|
||
default 0
|
||
|
||
config BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB
|
||
int "BLE static ACL TX buffer numbers"
|
||
range 0 12
|
||
default 0
|
||
help
|
||
BLE ACL buffer have two methods to be allocated. One is persistent allocating
|
||
(alloate when controller initialise, never free until controller de-initialise)
|
||
another is dynamically allocating (allocate before TX and free after TX).
|
||
|
||
choice BT_CTRL_PINNED_TO_CORE_CHOICE
|
||
prompt "The cpu core which bluetooth controller run"
|
||
depends on !FREERTOS_UNICORE
|
||
help
|
||
Specify the cpu core to run bluetooth controller.
|
||
Can not specify no-affinity.
|
||
|
||
config BT_CTRL_PINNED_TO_CORE_0
|
||
bool "Core 0 (PRO CPU)"
|
||
config BT_CTRL_PINNED_TO_CORE_1
|
||
bool "Core 1 (APP CPU)"
|
||
depends on !FREERTOS_UNICORE
|
||
endchoice
|
||
|
||
config BT_CTRL_PINNED_TO_CORE
|
||
int
|
||
default 0 if BT_CTRL_PINNED_TO_CORE_0
|
||
default 1 if BT_CTRL_PINNED_TO_CORE_1
|
||
default 0
|
||
|
||
choice BT_CTRL_HCI_MODE_CHOICE
|
||
prompt "HCI mode"
|
||
help
|
||
Specify HCI mode as VHCI or UART(H4)
|
||
|
||
config BT_CTRL_HCI_MODE_VHCI
|
||
bool "VHCI"
|
||
help
|
||
Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32S3 or ESP32C3.
|
||
|
||
config BT_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
|
||
|
||
config BT_CTRL_HCI_TL
|
||
int
|
||
default 0 if BT_CTRL_HCI_MODE_UART_H4
|
||
default 1 if BT_CTRL_HCI_M0DE_VHCI
|
||
default 1
|
||
help
|
||
HCI mode as VHCI or UART(H4)
|
||
|
||
config BT_CTRL_ADV_DUP_FILT_MAX
|
||
int "The maxinum number of 5.0 extend duplicate scan filter"
|
||
range 1 500
|
||
default 30
|
||
help
|
||
The maxinum number of suplicate scan filter
|
||
|
||
choice BT_BLE_CCA_MODE
|
||
prompt "BLE CCA mode"
|
||
default BT_BLE_CCA_MODE_NONE
|
||
help
|
||
Define BT BLE CCA mode
|
||
|
||
config BT_BLE_CCA_MODE_NONE
|
||
bool "NONE"
|
||
config BT_BLE_CCA_MODE_HW
|
||
bool "Hardware"
|
||
config BT_BLE_CCA_MODE_SW
|
||
bool "Software"
|
||
endchoice
|
||
|
||
config BT_BLE_CCA_MODE
|
||
int
|
||
default 0 if BT_BLE_CCA_MODE_NONE
|
||
default 1 if BT_BLE_CCA_MODE_HW
|
||
default 2 if BT_BLE_CCA_MODE_SW
|
||
|
||
config BT_CTRL_HW_CCA_VAL
|
||
int "CCA threshold value"
|
||
range 20 100
|
||
default 20
|
||
help
|
||
It is the threshold value of HW CCA, if the value is 30, it means CCA threshold is -30 dBm.
|
||
|
||
config BT_CTRL_HW_CCA_EFF
|
||
int
|
||
default 1 if BT_CTRL_HW_CCA
|
||
default 0
|
||
help
|
||
If other devices are sending packets in the air and the signal is strong,
|
||
the packet hw to be sent this time is cancelled.
|
||
|
||
choice BT_CTRL_CE_LENGTH_TYPE
|
||
prompt "Connection event length determination method"
|
||
help
|
||
Specify connection event length determination
|
||
|
||
config BT_CTRL_CE_LENGTH_TYPE_ORIG
|
||
bool "ORIGINAL"
|
||
config BT_CTRL_CE_LENGTH_TYPE_CE
|
||
bool "Use CE parameter for HCI command"
|
||
config BT_CTRL_CE_LENGTH_TYPE_SD
|
||
bool "Use Espressif self-defined method"
|
||
endchoice
|
||
|
||
config BT_CTRL_CE_LENGTH_TYPE_EFF
|
||
int
|
||
default 0 if BT_CTRL_CE_LENGTH_TYPE_ORIG
|
||
default 1 if BT_CTRL_CE_LENGTH_TYPE_CE
|
||
default 2 if BT_CTRL_CE_LENGTH_TYPE_SD
|
||
|
||
choice BT_CTRL_TX_ANTENNA_INDEX
|
||
prompt "default Tx anntena used"
|
||
help
|
||
Specify default Tx antenna used for bluetooth
|
||
|
||
config BT_CTRL_TX_ANTENNA_INDEX_0
|
||
bool "Antenna 0"
|
||
config BT_CTRL_TX_ANTENNA_INDEX_1
|
||
bool "Antenna 1"
|
||
endchoice
|
||
|
||
config BT_CTRL_TX_ANTENNA_INDEX_EFF
|
||
int
|
||
default 0 if BT_CTRL_TX_ANTENNA_INDEX_0
|
||
default 1 if BT_CTRL_TX_ANTENNA_INDEX_1
|
||
|
||
choice BT_CTRL_RX_ANTENNA_INDEX
|
||
prompt "default Rx anntena used"
|
||
help
|
||
Specify default Rx antenna used for bluetooth
|
||
|
||
config BT_CTRL_RX_ANTENNA_INDEX_0
|
||
bool "Antenna 0"
|
||
config BT_CTRL_RX_ANTENNA_INDEX_1
|
||
bool "Antenna 1"
|
||
endchoice
|
||
|
||
config BT_CTRL_RX_ANTENNA_INDEX_EFF
|
||
int
|
||
default 0 if BT_CTRL_RX_ANTENNA_INDEX_0
|
||
default 1 if BT_CTRL_RX_ANTENNA_INDEX_1
|
||
|
||
choice BT_CTRL_DFT_TX_POWER_LEVEL
|
||
prompt "BLE default Tx power level"
|
||
default BT_CTRL_DFT_TX_POWER_LEVEL_P9
|
||
help
|
||
Specify default Tx power level
|
||
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N24
|
||
bool "-24dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N21
|
||
bool "-21dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N18
|
||
bool "-18dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N15
|
||
bool "-15dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N12
|
||
bool "-12dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N9
|
||
bool "-9dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N6
|
||
bool "-6dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N3
|
||
bool "-3dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_N0
|
||
bool "0dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P3
|
||
bool "+3dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P6
|
||
bool "+6dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P9
|
||
bool "+9dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P12
|
||
bool "+12dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P15
|
||
bool "+15dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P18
|
||
bool "+18dBm"
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_P21
|
||
bool "+21dBm"
|
||
endchoice
|
||
|
||
config BT_CTRL_DFT_TX_POWER_LEVEL_EFF
|
||
int
|
||
default 0 if BT_CTRL_DFT_TX_POWER_LEVEL_N24
|
||
default 1 if BT_CTRL_DFT_TX_POWER_LEVEL_N21
|
||
default 2 if BT_CTRL_DFT_TX_POWER_LEVEL_N18
|
||
default 3 if BT_CTRL_DFT_TX_POWER_LEVEL_N15
|
||
default 4 if BT_CTRL_DFT_TX_POWER_LEVEL_N12
|
||
default 5 if BT_CTRL_DFT_TX_POWER_LEVEL_N9
|
||
default 6 if BT_CTRL_DFT_TX_POWER_LEVEL_N6
|
||
default 7 if BT_CTRL_DFT_TX_POWER_LEVEL_N3
|
||
default 8 if BT_CTRL_DFT_TX_POWER_LEVEL_N0
|
||
default 9 if BT_CTRL_DFT_TX_POWER_LEVEL_P3
|
||
default 10 if BT_CTRL_DFT_TX_POWER_LEVEL_P6
|
||
default 11 if BT_CTRL_DFT_TX_POWER_LEVEL_P9
|
||
default 12 if BT_CTRL_DFT_TX_POWER_LEVEL_P12
|
||
default 13 if BT_CTRL_DFT_TX_POWER_LEVEL_P15
|
||
default 14 if BT_CTRL_DFT_TX_POWER_LEVEL_P18
|
||
default 15 if BT_CTRL_DFT_TX_POWER_LEVEL_P21
|
||
default 0
|
||
|
||
config BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP
|
||
bool "BLE adv report flow control supported"
|
||
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 BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM
|
||
int "BLE adv report flow control number"
|
||
depends on BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP
|
||
range 50 1000
|
||
default 100
|
||
help
|
||
The number of unprocessed advertising report that bluetooth host can save.If you set
|
||
`BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM` to a small value, this may cause adv packets lost.
|
||
If you set `BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM` to a large value, bluetooth host 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
|
||
`BT_CTRL_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 BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD
|
||
int "BLE adv lost event threshold value"
|
||
depends on BT_CTRL_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 `BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD` to a small value or printf every adv lost event, it
|
||
may cause adv packets lost more.
|
||
|
||
config BT_CTRL_BLE_SCAN_DUPL
|
||
bool "BLE Scan Duplicate Options"
|
||
default y
|
||
help
|
||
This select enables parameters setting of BLE scan duplicate.
|
||
|
||
choice BT_CTRL_SCAN_DUPL_TYPE
|
||
prompt "Scan Duplicate Type"
|
||
default BT_CTRL_SCAN_DUPL_TYPE_DEVICE
|
||
depends on BT_CTRL_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 BT_CTRL_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 BT_CTRL_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 BT_CTRL_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 BT_CTRL_SCAN_DUPL_TYPE
|
||
int
|
||
depends on BT_CTRL_BLE_SCAN_DUPL
|
||
default 0 if BT_CTRL_SCAN_DUPL_TYPE_DEVICE
|
||
default 1 if BT_CTRL_SCAN_DUPL_TYPE_DATA
|
||
default 2 if BT_CTRL_SCAN_DUPL_TYPE_DATA_DEVICE
|
||
default 0
|
||
|
||
config BT_CTRL_SCAN_DUPL_CACHE_SIZE
|
||
int "Maximum number of devices in scan duplicate filter"
|
||
depends on BT_CTRL_BLE_SCAN_DUPL
|
||
range 10 1000
|
||
default 100
|
||
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 BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD
|
||
int "Duplicate scan list refresh period (seconds)"
|
||
depends on BT_CTRL_BLE_SCAN_DUPL
|
||
range 0 1000
|
||
default 0
|
||
help
|
||
If the period value is non-zero, the controller will periodically clear the device information
|
||
stored in the scan duuplicate filter. If it is 0, the scan duuplicate filter will not be cleared
|
||
until the scanning is disabled. Duplicate advertisements for this period should not be sent to the
|
||
Host in advertising report events.
|
||
There are two scenarios where the ADV packet will be repeatedly reported:
|
||
1. The duplicate scan cache is full, the controller will delete the oldest device information and
|
||
add new device information.
|
||
2. When the refresh period is up, the controller will clear all device information and start filtering
|
||
again.
|
||
|
||
config BT_CTRL_BLE_MESH_SCAN_DUPL_EN
|
||
bool "Special duplicate scan mechanism for BLE Mesh scan"
|
||
depends on BT_CTRL_BLE_SCAN_DUPL
|
||
default n
|
||
help
|
||
This enables the BLE scan duplicate for special BLE Mesh scan.
|
||
|
||
config BT_CTRL_MESH_DUPL_SCAN_CACHE_SIZE
|
||
int "Maximum number of Mesh adv packets in scan duplicate filter"
|
||
depends on BT_CTRL_BLE_MESH_SCAN_DUPL_EN
|
||
range 10 1000
|
||
default 100
|
||
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.
|
||
|
||
choice BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM
|
||
prompt "Coexistence: limit on MAX Tx/Rx time for coded-PHY connection"
|
||
default BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS
|
||
depends on ESP32_WIFI_SW_COEXIST_ENABLE
|
||
help
|
||
When using PHY-Coded in BLE connection, limitation on max tx/rx time can be applied to
|
||
better avoid dramatic performance deterioration of Wi-Fi.
|
||
|
||
config BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN
|
||
bool "Force Enable"
|
||
help
|
||
Always enable the limitation on max tx/rx time for Coded-PHY connection
|
||
|
||
config BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS
|
||
bool "Force Disable"
|
||
help
|
||
Disable the limitation on max tx/rx time for Coded-PHY connection
|
||
endchoice
|
||
|
||
config BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
||
int
|
||
default 0 if (!ESP32_WIFI_SW_COEXIST_ENABLE)
|
||
default 1 if BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN
|
||
default 0 if BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS
|
||
|
||
menu "MODEM SLEEP Options"
|
||
visible if BT_ENABLED
|
||
|
||
config BT_CTRL_MODEM_SLEEP
|
||
bool "Bluetooth modem sleep"
|
||
depends on !BT_CTRL_HCI_MODE_UART_H4
|
||
default n
|
||
help
|
||
Enable/disable bluetooth controller low power mode.
|
||
Modem sleep is not supported to be used with UART HCI.
|
||
|
||
config BT_CTRL_MODEM_SLEEP_MODE_1
|
||
bool "Bluetooth Modem sleep Mode 1"
|
||
depends on BT_CTRL_MODEM_SLEEP
|
||
default y
|
||
help
|
||
Mode 1 is the currently supported sleep mode. In this mode,
|
||
bluetooth controller sleeps between and BLE events. A low
|
||
power clock is used to maintain bluetooth reference clock.
|
||
|
||
choice BT_CTRL_LOW_POWER_CLOCK
|
||
prompt "Bluetooth low power clock"
|
||
depends on BT_CTRL_MODEM_SLEEP_MODE_1
|
||
help
|
||
Select the low power clock source for bluetooth controller
|
||
|
||
config BT_CTRL_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, and
|
||
bluetooth can work under light sleep enabled. Main crystal has a relatively better performance
|
||
than other bluetooth low power clock sources.
|
||
config BT_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
||
bool "External 32kHz crystal"
|
||
depends on 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.
|
||
|
||
config BT_CTRL_LPCLK_SEL_RTC_SLOW
|
||
bool "Internal 150kHz RC oscillator"
|
||
depends on RTC_CLK_SRC_INT_RC
|
||
help
|
||
Internal 150kHz RC oscillator. The accuracy of this clock is a lot larger than 500ppm which is required
|
||
in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.
|
||
endchoice
|
||
|
||
config BT_CTRL_MAIN_XTAL_PU_DURING_LIGHT_SLEEP
|
||
bool "power up main XTAL during light sleep"
|
||
depends on (BT_CTRL_LPCLK_SEL_MAIN_XTAL || BT_CTRL_LPCLK_SEL_EXT_32K_XTAL) && FREERTOS_USE_TICKLESS_IDLE
|
||
default n
|
||
help
|
||
If this option is selected, the main crystal will power up during light sleep when the low power clock
|
||
selects an external 32kHz crystal but the external 32kHz crystal does not exist or the low power clock
|
||
selects the main crystal.
|
||
|
||
endmenu
|
||
|
||
config BT_CTRL_SLEEP_MODE_EFF
|
||
int
|
||
default 1 if BT_CTRL_MODEM_SLEEP_MODE_1
|
||
default 0
|
||
|
||
config BT_CTRL_SLEEP_CLOCK_EFF
|
||
int
|
||
default 1 if BT_CTRL_LPCLK_SEL_MAIN_XTAL
|
||
default 2 if BT_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
||
default 3 if BT_CTRL_LPCLK_SEL_RTC_SLOW
|
||
|
||
default 0
|
||
|
||
config BT_CTRL_HCI_TL_EFF
|
||
int
|
||
default 0 if BT_CTRL_HCI_MODE_UART_H4
|
||
default 1 if BT_CTRL_HCI_M0DE_VHCI
|
||
default 1
|
||
|
||
config BT_CTRL_AGC_RECORRECT_EN
|
||
bool "Enable HW AGC recorrect"
|
||
default n
|
||
help
|
||
Enable uncoded phy AGC recorrect
|
||
|
||
config BT_CTRL_CODED_AGC_RECORRECT_EN
|
||
bool "Enable coded phy AGC recorrect"
|
||
depends on BT_CTRL_AGC_RECORRECT_EN
|
||
default n
|
||
help
|
||
Enable coded phy AGC recorrect
|
||
|
||
config BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX
|
||
bool "Disable active scan backoff"
|
||
default n
|
||
help
|
||
Disable active scan backoff. The bluetooth spec requires that scanners should run a backoff procedure to
|
||
minimize collision of scan request PDUs from nultiple scanners. If scan backoff is disabled, in active
|
||
scanning, scan request PDU will be sent every time when HW receives scannable ADV PDU.
|