summaryrefslogtreecommitdiff
path: root/lib/bt/controller/esp32/Kconfig.in
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bt/controller/esp32/Kconfig.in')
-rw-r--r--lib/bt/controller/esp32/Kconfig.in446
1 files changed, 446 insertions, 0 deletions
diff --git a/lib/bt/controller/esp32/Kconfig.in b/lib/bt/controller/esp32/Kconfig.in
new file mode 100644
index 00000000..2d7cbf85
--- /dev/null
+++ b/lib/bt/controller/esp32/Kconfig.in
@@ -0,0 +1,446 @@
+choice BTDM_CTRL_MODE
+ prompt "Bluetooth controller mode (BR/EDR/BLE/DUALMODE)"
+ 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.2 KB 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 2 KB 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 !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"
+ 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 BTDM_CTRL_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 BTDM_CTRL_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.
+
+ config BTDM_CTRL_HCI_UART_FLOW_CTRL_EN
+ bool "Enable UART flow control"
+ depends on BTDM_CTRL_HCI_MODE_UART_H4
+ default y
+
+endmenu
+
+menu "MODEM SLEEP Options"
+ config BTDM_CTRL_MODEM_SLEEP
+ bool "Bluetooth modem sleep"
+ default y
+ help
+ Enable/disable bluetooth controller low power mode.
+
+ choice BTDM_CTRL_MODEM_SLEEP_MODE
+ prompt "Bluetooth Modem sleep mode"
+ depends on BTDM_CTRL_MODEM_SLEEP
+ help
+ To select which strategy to use for modem sleep
+
+ config BTDM_CTRL_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_CTRL_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_CTRL_LOW_POWER_CLOCK
+ prompt "Bluetooth low power clock"
+ depends on BTDM_CTRL_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_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, 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_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.
+ 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_CTRL_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 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 oldest device will be refreshed.
+
+config BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD
+ int "Duplicate scan list refresh period (seconds)"
+ depends on BTDM_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 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 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.
+
+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.
+
+
+config BTDM_RESERVE_DRAM
+ hex
+ default 0xdb5c if BT_ENABLED
+ default 0
+
+config BTDM_CTRL_HLI
+ bool "High level interrupt"
+ depends on BT_ENABLED
+ default y
+ help
+ Using Level 4 interrupt for Bluetooth.