From 4167fc3438254a7118c46f24b143a9e716079ae0 Mon Sep 17 00:00:00 2001 From: weitianhua Date: Mon, 1 Jun 2020 21:44:48 +0800 Subject: [PATCH 1/2] Enable pcm config --- components/bt/Kconfig | 21 +++++++++++++++++++++ components/bt/controller/bt.c | 10 ++++++++++ components/bt/include/esp_bt.h | 31 ++++++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/components/bt/Kconfig b/components/bt/Kconfig index 358451324d..bf3ec9c0a4 100644 --- a/components/bt/Kconfig +++ b/components/bt/Kconfig @@ -79,6 +79,27 @@ menu "Bluetooth" 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 + + config BTDM_CTRL_PCM_ROLE_CONFIG + int "PCM Role (0- PCM Master, 1 - PCM Slave)" + default 0 + depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG + range 0 1 + help + 0-Master Role, 1-Slave Role + + config BTDM_CTRL_PCM_POLAR_CONFIG + int "PCM Polar (0 - Falling Edge, 1 - Rising Edge)" + default 0 + depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG + range 0 1 + help + 0-Falling CLK Edge Trig, 1-Rising CLK Edge Trig + config BTDM_CTRL_AUTO_LATENCY bool "Auto latency" depends on BTDM_CTRL_MODE_BTDM diff --git a/components/bt/controller/bt.c b/components/bt/controller/bt.c index afe994fd3e..e86d5079c1 100644 --- a/components/bt/controller/bt.c +++ b/components/bt/controller/bt.c @@ -1173,6 +1173,16 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg) //overwrite some parameters cfg->bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF; + +#if CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF + //Customized PCM Configuration, specified in menuconfig + cfg->pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_CONFIG; + cfg->pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_CONFIG; +#else + //Use Default PCM Configuration + cfg->pcm_role = 0; + cfg->pcm_polar = 0; +#endif cfg->magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL; if (((cfg->mode & ESP_BT_MODE_BLE) && (cfg->ble_max_conn <= 0 || cfg->ble_max_conn > BTDM_CONTROLLER_BLE_MAX_CONN_LIMIT)) diff --git a/components/bt/include/esp_bt.h b/components/bt/include/esp_bt.h index 9d034272bd..06c0787eec 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 0x20200611 +#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL 0x20200622 /** * @brief Bluetooth mode for controller enable/disable @@ -130,6 +130,7 @@ the adv packet will be discarded until the memory is restored. */ #define BTDM_CONTROLLER_SCO_DATA_PATH_HCI 0 // SCO data is routed to HCI #define BTDM_CONTROLLER_SCO_DATA_PATH_PCM 1 // SCO data path is PCM +#if CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF #define BT_CONTROLLER_INIT_CONFIG_DEFAULT() { \ .controller_task_stack_size = ESP_TASK_BT_CONTROLLER_STACK, \ .controller_task_prio = ESP_TASK_BT_CONTROLLER_PRIO, \ @@ -149,8 +150,34 @@ the adv packet will be discarded until the memory is restored. */ .bt_legacy_auth_vs_evt = BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF, \ .bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF, \ .ble_sca = CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF, \ + .pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_CONFIG, \ + .pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_CONFIG, \ .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \ }; +#else +#define BT_CONTROLLER_INIT_CONFIG_DEFAULT() { \ + .controller_task_stack_size = ESP_TASK_BT_CONTROLLER_STACK, \ + .controller_task_prio = ESP_TASK_BT_CONTROLLER_PRIO, \ + .hci_uart_no = BT_HCI_UART_NO_DEFAULT, \ + .hci_uart_baudrate = BT_HCI_UART_BAUDRATE_DEFAULT, \ + .scan_duplicate_mode = SCAN_DUPLICATE_MODE, \ + .scan_duplicate_type = SCAN_DUPLICATE_TYPE_VALUE, \ + .normal_adv_size = NORMAL_SCAN_DUPLICATE_CACHE_SIZE, \ + .mesh_adv_size = MESH_DUPLICATE_SCAN_CACHE_SIZE, \ + .send_adv_reserved_size = SCAN_SEND_ADV_RESERVED_SIZE, \ + .controller_debug_flag = CONTROLLER_ADV_LOST_DEBUG_BIT, \ + .mode = BTDM_CONTROLLER_MODE_EFF, \ + .ble_max_conn = CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF, \ + .bt_max_acl_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF, \ + .bt_sco_datapath = CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF, \ + .auto_latency = BTDM_CTRL_AUTO_LATENCY_EFF, \ + .bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF, \ + .ble_sca = CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF, \ + .pcm_role = 0, \ + .pcm_polar = 0, \ + .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \ +}; +#endif #else #define BT_CONTROLLER_INIT_CONFIG_DEFAULT() {0}; _Static_assert(0, "please enable bluetooth in menuconfig to use bt.h"); @@ -188,6 +215,8 @@ typedef struct { */ uint8_t bt_max_sync_conn; /*!< BR/EDR maximum ACL connection numbers. Effective in menuconfig */ uint8_t ble_sca; /*!< BLE low power crystal accuracy index */ + uint8_t pcm_role; /*!< PCM role (master & slave)*/ + uint8_t pcm_polar; /*!< PCM polar trig (falling clk edge & rising clk edge) */ uint32_t magic; /*!< Magic number */ } esp_bt_controller_config_t; From 8f84930c5c4d8fe4d817cf8ab653191d982e4674 Mon Sep 17 00:00:00 2001 From: weitianhua Date: Tue, 30 Jun 2020 20:06:51 +0800 Subject: [PATCH 2/2] Redesign Kconfig.in BT components --- components/bt/Kconfig | 40 +++++++++++++++++++++++++--------- components/bt/controller/bt.c | 10 --------- components/bt/controller/lib | 2 +- components/bt/include/esp_bt.h | 29 ++---------------------- 4 files changed, 33 insertions(+), 48 deletions(-) diff --git a/components/bt/Kconfig b/components/bt/Kconfig index bf3ec9c0a4..b8a52aa1ac 100644 --- a/components/bt/Kconfig +++ b/components/bt/Kconfig @@ -84,21 +84,41 @@ menu "Bluetooth" depends on BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM default y - config BTDM_CTRL_PCM_ROLE_CONFIG - int "PCM Role (0- PCM Master, 1 - PCM Slave)" - default 0 + choice BTDM_CTRL_PCM_ROLE + prompt "PCM Role" depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG - range 0 1 help - 0-Master Role, 1-Slave Role + PCM role can be configured as PCM master or PCM slave - config BTDM_CTRL_PCM_POLAR_CONFIG - int "PCM Polar (0 - Falling Edge, 1 - Rising Edge)" - default 0 + 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 - range 0 1 help - 0-Falling CLK Edge Trig, 1-Rising CLK Edge Trig + 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" diff --git a/components/bt/controller/bt.c b/components/bt/controller/bt.c index e86d5079c1..afe994fd3e 100644 --- a/components/bt/controller/bt.c +++ b/components/bt/controller/bt.c @@ -1173,16 +1173,6 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg) //overwrite some parameters cfg->bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF; - -#if CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF - //Customized PCM Configuration, specified in menuconfig - cfg->pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_CONFIG; - cfg->pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_CONFIG; -#else - //Use Default PCM Configuration - cfg->pcm_role = 0; - cfg->pcm_polar = 0; -#endif cfg->magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL; if (((cfg->mode & ESP_BT_MODE_BLE) && (cfg->ble_max_conn <= 0 || cfg->ble_max_conn > BTDM_CONTROLLER_BLE_MAX_CONN_LIMIT)) diff --git a/components/bt/controller/lib b/components/bt/controller/lib index 6b694f06c8..3e21b1b7ae 160000 --- a/components/bt/controller/lib +++ b/components/bt/controller/lib @@ -1 +1 @@ -Subproject commit 6b694f06c8df6215e0f158267447c61f487a6596 +Subproject commit 3e21b1b7ae27480e3d6891a3bec206de8a6ec65a diff --git a/components/bt/include/esp_bt.h b/components/bt/include/esp_bt.h index 06c0787eec..de8b04239f 100644 --- a/components/bt/include/esp_bt.h +++ b/components/bt/include/esp_bt.h @@ -130,7 +130,6 @@ the adv packet will be discarded until the memory is restored. */ #define BTDM_CONTROLLER_SCO_DATA_PATH_HCI 0 // SCO data is routed to HCI #define BTDM_CONTROLLER_SCO_DATA_PATH_PCM 1 // SCO data path is PCM -#if CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF #define BT_CONTROLLER_INIT_CONFIG_DEFAULT() { \ .controller_task_stack_size = ESP_TASK_BT_CONTROLLER_STACK, \ .controller_task_prio = ESP_TASK_BT_CONTROLLER_PRIO, \ @@ -150,34 +149,10 @@ the adv packet will be discarded until the memory is restored. */ .bt_legacy_auth_vs_evt = BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF, \ .bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF, \ .ble_sca = CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF, \ - .pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_CONFIG, \ - .pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_CONFIG, \ + .pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_EFF, \ + .pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_EFF, \ .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \ }; -#else -#define BT_CONTROLLER_INIT_CONFIG_DEFAULT() { \ - .controller_task_stack_size = ESP_TASK_BT_CONTROLLER_STACK, \ - .controller_task_prio = ESP_TASK_BT_CONTROLLER_PRIO, \ - .hci_uart_no = BT_HCI_UART_NO_DEFAULT, \ - .hci_uart_baudrate = BT_HCI_UART_BAUDRATE_DEFAULT, \ - .scan_duplicate_mode = SCAN_DUPLICATE_MODE, \ - .scan_duplicate_type = SCAN_DUPLICATE_TYPE_VALUE, \ - .normal_adv_size = NORMAL_SCAN_DUPLICATE_CACHE_SIZE, \ - .mesh_adv_size = MESH_DUPLICATE_SCAN_CACHE_SIZE, \ - .send_adv_reserved_size = SCAN_SEND_ADV_RESERVED_SIZE, \ - .controller_debug_flag = CONTROLLER_ADV_LOST_DEBUG_BIT, \ - .mode = BTDM_CONTROLLER_MODE_EFF, \ - .ble_max_conn = CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF, \ - .bt_max_acl_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF, \ - .bt_sco_datapath = CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF, \ - .auto_latency = BTDM_CTRL_AUTO_LATENCY_EFF, \ - .bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF, \ - .ble_sca = CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF, \ - .pcm_role = 0, \ - .pcm_polar = 0, \ - .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \ -}; -#endif #else #define BT_CONTROLLER_INIT_CONFIG_DEFAULT() {0}; _Static_assert(0, "please enable bluetooth in menuconfig to use bt.h");