mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
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:
parent
f5ebeb4c4d
commit
95d691afdb
@ -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"
|
||||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user