From 125e21c3e0f584c4ca24c2a0f7ee298c91308319 Mon Sep 17 00:00:00 2001 From: baohongde Date: Wed, 19 Feb 2020 14:48:58 +0800 Subject: [PATCH] add auto latency to avoid bt stuck when ble connection use small interval 1. Fix A2DP stuck when BLE's interval is too small --- components/bt/Kconfig | 14 ++++++++++++++ components/bt/include/esp_bt.h | 10 +++++++++- components/bt/lib | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/components/bt/Kconfig b/components/bt/Kconfig index 0f61ba352f..793196ae1d 100644 --- a/components/bt/Kconfig +++ b/components/bt/Kconfig @@ -76,6 +76,20 @@ menu Bluetooth default 1 if BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM default 0 + config BTDM_CTRL_AUTO_LATENCY + bool "Auto latency" + depends on BTDM_CONTROLLER_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_CONTROLLER_MODE_BTDM + default n + + config BTDM_CONTROLLER_BLE_MAX_CONN_EFF int default BTDM_CONTROLLER_BLE_MAX_CONN if BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM diff --git a/components/bt/include/esp_bt.h b/components/bt/include/esp_bt.h index 1ee7edf952..c119e98b2a 100644 --- a/components/bt/include/esp_bt.h +++ b/components/bt/include/esp_bt.h @@ -25,7 +25,7 @@ extern "C" { #endif -#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL 0x20190506 +#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL 0x20200106 /** * @brief Bluetooth mode for controller enable/disable @@ -96,6 +96,12 @@ the adv packet will be discarded until the memory is restored. */ #define BTDM_CONTROLLER_MODE_EFF ESP_BT_MODE_BTDM #endif +#ifdef CONFIG_BTDM_CTRL_AUTO_LATENCY_EFF +#define BTDM_CTRL_AUTO_LATENCY_EFF CONFIG_BTDM_CTRL_AUTO_LATENCY_EFF +#else +#define BTDM_CTRL_AUTO_LATENCY_EFF false +#endif + #define BTDM_CONTROLLER_BLE_MAX_CONN_LIMIT 9 //Maximum BLE connection limitation #define BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_LIMIT 7 //Maximum ACL connection limitation #define BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_LIMIT 3 //Maximum SCO/eSCO connection limitation @@ -119,6 +125,7 @@ the adv packet will be discarded until the memory is restored. */ .bt_max_acl_conn = CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF, \ .bt_sco_datapath = CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF, \ .bt_max_sync_conn = CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF, \ + .auto_latency = BTDM_CTRL_AUTO_LATENCY_EFF, \ .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \ }; @@ -149,6 +156,7 @@ typedef struct { uint8_t ble_max_conn; /*!< BLE maximum connection numbers */ uint8_t bt_max_acl_conn; /*!< BR/EDR maximum ACL connection numbers */ uint8_t bt_sco_datapath; /*!< SCO data path, i.e. HCI or PCM module */ + bool auto_latency; /*!< BLE auto latency, used to enhance classic BT performance */ /* * Following parameters can not be configured runtime when call esp_bt_controller_init() * It will be overwrite with a constant value which in menuconfig or from a macro. diff --git a/components/bt/lib b/components/bt/lib index 2ce31a70c3..32792b42f6 160000 --- a/components/bt/lib +++ b/components/bt/lib @@ -1 +1 @@ -Subproject commit 2ce31a70c39a520d581fa08e7d13b57d36b4b2ee +Subproject commit 32792b42f6c92006ef8ed6728cbf58d49746bb10