Просмотр исходного кода

component/bt: [esp32c3] modify Bluetooth coexistence options

wangmengyang 5 лет назад
Родитель
Сommit
2dd730d35c

+ 25 - 13
components/bt/controller/esp32c3/Kconfig.in

@@ -73,13 +73,6 @@ config BT_CTRL_HW_CCA_EFF
         If other devices are sending packets in the air and the signal is strong,
         the packet hw to be sent this time is cancelled.
 
-config BT_CTRL_COEX_PARAMETERS_ENABLE
-    bool "Allow Bluetooth preemption in the use of RF to support coexistence with Wi-Fi"
-    default n
-    help
-        Use pre-determined parameter set to control the use of RF by Bluetooth,
-        so that Bluetooth can compete for RF with Wi-fi to support coexistence.
-
 choice BT_CTRL_CE_LENGTH_TYPE
     prompt "Connection event length determination method"
     help
@@ -167,12 +160,6 @@ config BT_CTRL_DFT_TX_POWER_LEVEL_EFF
     default 7 if BT_CTRL_DFT_TX_POWER_LEVEL_P9
     default 0
 
-config BT_CTRL_COEX_USE_HOOKS
-    bool "Communicate Bluetooth working status with Wi-Fi to support coexistence"
-    default n
-    help
-        Send notifications of Bluetooth working status to support coexistence with Wi-Fi.
-
 config BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP
     bool "BLE adv report flow control supported"
     default y
@@ -277,6 +264,31 @@ config BT_CTRL_MESH_DUPL_SCAN_CACHE_SIZE
         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
 

+ 1 - 1
components/bt/controller/lib

@@ -1 +1 @@
-Subproject commit 272aaca1f859f87c9694cd441ae68cb3d7829664
+Subproject commit 77eb1e91662fe4a5e9c783d25c5c9ae208c1af4b

+ 13 - 18
components/bt/include/esp32c3/include/esp_bt.h

@@ -26,7 +26,7 @@ extern "C" {
 #endif
 
 #define ESP_BT_CTRL_CONFIG_MAGIC_VAL    0x5A5AA5A5
-#define ESP_BT_CTRL_CONFIG_VERSION      0x02004260
+#define ESP_BT_CTRL_CONFIG_VERSION      0x02101290
 
 #define ESP_BT_HCI_TL_MAGIC_VALUE   0xfadebead
 #define ESP_BT_HCI_TL_VERSION       0x00010000
@@ -85,23 +85,18 @@ enum {
     ESP_BT_ANT_IDX_1 = 1,               /*!< anntena NO 1 */
 };
 
-#ifdef CONFIG_BT_ENABLED
-
-#ifdef CONFIG_BT_CTRL_COEX_PARAMETERS_ENABLE
-#define BT_CTRL_COEX_PARAMETERS_ENABLE true
-#else
-#define BT_CTRL_COEX_PARAMETERS_ENABLE false
-#endif
+/**
+ * @brief Maximum Tx/Rx time limit on Coded-PHY connection
+ */
+enum {
+    ESP_BT_COEX_PHY_CODED_TX_RX_TIME_LIMIT_FORCE_DISABLE = 0,    /*!< Disable the limit */
+    ESP_BT_COEX_PHY_CODED_TX_RX_TIME_LIMIT_FORCE_ENABLE,         /*!< Always Enable the limit */
+};
 
-#ifdef CONFIG_BT_CTRL_COEX_USE_HOOKS
-#define BT_CTRL_COEX_USE_HOOKS true
-#else
-#define BT_CTRL_COEX_USE_HOOKS false
-#endif
+#ifdef CONFIG_BT_ENABLED
 
 #define BT_CTRL_BLE_MAX_ACT_LIMIT           10  //Maximum BLE activity limitation
 
-
 #ifdef CONFIG_BT_CTRL_SCAN_DUPL_TYPE
 #define SCAN_DUPLICATE_TYPE_VALUE  CONFIG_BT_CTRL_SCAN_DUPL_TYPE
 #else
@@ -151,9 +146,7 @@ enum {
     .ble_st_acl_tx_buf_nb = CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB,       \
     .ble_hw_cca_check = CONFIG_BT_CTRL_HW_CCA_EFF,                         \
     .ble_adv_dup_filt_max = CONFIG_BT_CTRL_ADV_DUP_FILT_MAX,               \
-    .coex_param_en = BT_CTRL_COEX_PARAMETERS_ENABLE,                       \
     .ce_len_type = CONFIG_BT_CTRL_CE_LENGTH_TYPE_EFF,                      \
-    .coex_use_hooks = BT_CTRL_COEX_USE_HOOKS,                              \
     .hci_tl_type = CONFIG_BT_CTRL_HCI_TL_EFF,                              \
     .hci_tl_funcs = NULL,                                                  \
     .txant_dft = CONFIG_BT_CTRL_TX_ANTENNA_INDEX_EFF,                      \
@@ -164,6 +157,7 @@ enum {
     .scan_duplicate_type = SCAN_DUPLICATE_TYPE_VALUE,                      \
     .normal_adv_size = NORMAL_SCAN_DUPLICATE_CACHE_SIZE,                   \
     .mesh_adv_size = MESH_DUPLICATE_SCAN_CACHE_SIZE,                       \
+    .coex_phy_coded_tx_rx_time_limit = CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF, \
 };
 
 #else
@@ -213,9 +207,9 @@ typedef struct {
     uint8_t ble_st_acl_tx_buf_nb;           /*!< controller static ACL TX BUFFER number */
     uint8_t ble_hw_cca_check;               /*!< controller hardware triggered CCA check */
     uint16_t ble_adv_dup_filt_max;          /*!< maxinum number of duplicate scan filter */
-    bool coex_param_en;                     /*!< init coex parameters*/
+    bool coex_param_en;                     /*!< deprecated */
     uint8_t ce_len_type;                    /*!< connection event length computation method */
-    bool coex_use_hooks;                    /*!< use hooks in bluetooth to assist WiFi behavouir determination */
+    bool coex_use_hooks;                    /*!< deprecated */
     uint8_t hci_tl_type;                    /*!< HCI transport layer, UART, VHCI, etc */
     esp_bt_hci_tl_t *hci_tl_funcs;          /*!< hci transport functions used, must be set when hci_tl_type is UART */
     uint8_t txant_dft;                      /*!< default Tx antenna */
@@ -226,6 +220,7 @@ typedef struct {
     uint8_t scan_duplicate_type;            /*!< scan duplicate type */
     uint16_t normal_adv_size;               /*!< Normal adv size for scan duplicate */
     uint16_t mesh_adv_size;                 /*!< Mesh adv size for scan duplicate */
+    uint8_t coex_phy_coded_tx_rx_time_limit;  /*!< limit on max tx/rx time in case of connection using CODED-PHY with Wi-Fi coexistence */
 } esp_bt_controller_config_t;
 
 /**

+ 0 - 2
examples/bluetooth/bluedroid/ble/blufi/sdkconfig.defaults.esp32c3

@@ -395,7 +395,6 @@ CONFIG_BT_CTRL_HCI_TL=1
 CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
 # CONFIG_BT_CTRL_HW_CCA is not set
 CONFIG_BT_CTRL_HW_CCA_EFF=0
-CONFIG_BT_CTRL_COEX_PARAMETERS_ENABLE=y
 CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG=y
 # CONFIG_BT_CTRL_CE_LENGTH_TYPE_CE is not set
 # CONFIG_BT_CTRL_CE_LENGTH_TYPE_SD is not set
@@ -415,7 +414,6 @@ CONFIG_BT_CTRL_RX_ANTENNA_INDEX_EFF=0
 # CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P6 is not set
 CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P9=y
 CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=7
-CONFIG_BT_CTRL_COEX_USE_HOOKS=y
 
 #
 # MODEM SLEEP Options