From 95d691afdb092382f683c70cf83099fe39591780 Mon Sep 17 00:00:00 2001 From: Tian Hao Date: Fri, 24 Mar 2017 14:57:07 +0800 Subject: [PATCH] component/bt : support UART HCI and fix some bugs 1. support UART HCI, devolper need not to make a bridge between VHCI and UART. 2. fix bug of rand/srand called in ISR. 3. fix bug of BLE rx packets may cause assert. --- components/bt/Kconfig | 12 ++++++------ components/bt/bt.c | 22 +++++++++++++++++++++- components/bt/lib | 2 +- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/components/bt/Kconfig b/components/bt/Kconfig index 92d060999c..5490ba99b3 100644 --- a/components/bt/Kconfig +++ b/components/bt/Kconfig @@ -33,12 +33,12 @@ config BT_DRAM_RELEASE Open this option will release about 30K DRAM from Classic BT. The released DRAM will be used as system heap memory. -#config BTDM_CONTROLLER_RUN_APP_CPU -# bool "Run controller on APP CPU" -# depends on BT_ENABLED -# default n -# help -# Run controller on APP CPU. +config BTDM_CONTROLLER_RUN_APP_CPU + bool "Run controller on APP CPU" + depends on BT_ENABLED && !FREERTOS_UNICORE && 0 + default n + help + Run controller on APP CPU. menuconfig HCI_UART bool "HCI use UART as IO" diff --git a/components/bt/bt.c b/components/bt/bt.c index 6182c5eb5f..f1676107c5 100644 --- a/components/bt/bt.c +++ b/components/bt/bt.c @@ -87,6 +87,8 @@ struct osi_funcs_t { int32_t (*_mutex_lock)(void *mutex); int32_t (*_mutex_unlock)(void *mutex); int32_t (* _read_efuse_mac)(uint8_t mac[6]); + void (* _srand)(unsigned int seed); + int (* _rand)(void); }; /* Static variable declare */ @@ -142,6 +144,16 @@ static int32_t IRAM_ATTR read_mac_wrapper(uint8_t mac[6]) return esp_read_mac(mac, ESP_MAC_BT); } +static void IRAM_ATTR srand_wrapper(unsigned int seed) +{ + /* empty function */ +} + +static int IRAM_ATTR rand_wrapper(void) +{ + return (int)esp_random(); +} + static struct osi_funcs_t osi_funcs = { ._set_isr = xt_set_interrupt_handler, ._ints_on = xt_ints_on, @@ -154,7 +166,9 @@ static struct osi_funcs_t osi_funcs = { ._mutex_create = mutex_create_wrapper, ._mutex_lock = mutex_lock_wrapper, ._mutex_unlock = mutex_unlock_wrapper, - ._read_efuse_mac = read_mac_wrapper + ._read_efuse_mac = read_mac_wrapper, + ._srand = srand_wrapper, + ._rand = rand_wrapper, }; bool esp_vhci_host_check_send_available(void) @@ -223,9 +237,15 @@ void esp_bt_controller_init() return; } +#ifdef CONFIG_BTDM_CONTROLLER_RUN_APP_CPU + xTaskCreatePinnedToCore(bt_controller_task, "btController", + ESP_TASK_BT_CONTROLLER_STACK, NULL, + ESP_TASK_BT_CONTROLLER_PRIO, &btControllerTaskHandle, 1); +#else xTaskCreatePinnedToCore(bt_controller_task, "btController", ESP_TASK_BT_CONTROLLER_STACK, NULL, ESP_TASK_BT_CONTROLLER_PRIO, &btControllerTaskHandle, 0); +#endif } void esp_bt_controller_deinit(void) diff --git a/components/bt/lib b/components/bt/lib index f1c0c65171..0986936c6d 160000 --- a/components/bt/lib +++ b/components/bt/lib @@ -1 +1 @@ -Subproject commit f1c0c65171e5bd02e1d63137b3582af3bcbb85a4 +Subproject commit 0986936c6d21a009d7d4249cbae8a23b0f3bd20b