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.
This commit is contained in:
Tian Hao 2017-03-24 14:57:07 +08:00
parent f5ebeb4c4d
commit 95d691afdb
3 changed files with 28 additions and 8 deletions

View file

@ -33,12 +33,12 @@ config BT_DRAM_RELEASE
Open this option will release about 30K DRAM from Classic BT. Open this option will release about 30K DRAM from Classic BT.
The released DRAM will be used as system heap memory. The released DRAM will be used as system heap memory.
#config BTDM_CONTROLLER_RUN_APP_CPU config BTDM_CONTROLLER_RUN_APP_CPU
# bool "Run controller on APP CPU" bool "Run controller on APP CPU"
# depends on BT_ENABLED depends on BT_ENABLED && !FREERTOS_UNICORE && 0
# default n default n
# help help
# Run controller on APP CPU. Run controller on APP CPU.
menuconfig HCI_UART menuconfig HCI_UART
bool "HCI use UART as IO" bool "HCI use UART as IO"

View file

@ -87,6 +87,8 @@ struct osi_funcs_t {
int32_t (*_mutex_lock)(void *mutex); int32_t (*_mutex_lock)(void *mutex);
int32_t (*_mutex_unlock)(void *mutex); int32_t (*_mutex_unlock)(void *mutex);
int32_t (* _read_efuse_mac)(uint8_t mac[6]); int32_t (* _read_efuse_mac)(uint8_t mac[6]);
void (* _srand)(unsigned int seed);
int (* _rand)(void);
}; };
/* Static variable declare */ /* 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); 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 = { static struct osi_funcs_t osi_funcs = {
._set_isr = xt_set_interrupt_handler, ._set_isr = xt_set_interrupt_handler,
._ints_on = xt_ints_on, ._ints_on = xt_ints_on,
@ -154,7 +166,9 @@ static struct osi_funcs_t osi_funcs = {
._mutex_create = mutex_create_wrapper, ._mutex_create = mutex_create_wrapper,
._mutex_lock = mutex_lock_wrapper, ._mutex_lock = mutex_lock_wrapper,
._mutex_unlock = mutex_unlock_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) bool esp_vhci_host_check_send_available(void)
@ -223,9 +237,15 @@ void esp_bt_controller_init()
return; 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", xTaskCreatePinnedToCore(bt_controller_task, "btController",
ESP_TASK_BT_CONTROLLER_STACK, NULL, ESP_TASK_BT_CONTROLLER_STACK, NULL,
ESP_TASK_BT_CONTROLLER_PRIO, &btControllerTaskHandle, 0); ESP_TASK_BT_CONTROLLER_PRIO, &btControllerTaskHandle, 0);
#endif
} }
void esp_bt_controller_deinit(void) void esp_bt_controller_deinit(void)

@ -1 +1 @@
Subproject commit f1c0c65171e5bd02e1d63137b3582af3bcbb85a4 Subproject commit 0986936c6d21a009d7d4249cbae8a23b0f3bd20b