Просмотр исходного кода

component/bt : add osi_is_in_isr && fix vhci delay

Tian Hao 8 лет назад
Родитель
Сommit
b500d6558a
2 измененных файлов с 8 добавлено и 1 удалено
  1. 7 0
      components/bt/bt.c
  2. 1 1
      components/bt/lib

+ 7 - 0
components/bt/bt.c

@@ -100,6 +100,7 @@ struct osi_funcs_t {
     int32_t (* _queue_recv_from_isr)(void *queue, void *item, void *hptw);
     int32_t (* _task_create)(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle, uint32_t core_id);
     void (* _task_delete)(void *task_handle);
+    bool (* _is_in_isr)(void);
     void *(* _malloc)(uint32_t size);
     void (* _free)(void *p);
     int32_t (* _read_efuse_mac)(uint8_t mac[6]);
@@ -230,6 +231,11 @@ static void IRAM_ATTR task_delete_wrapper(void *task_handle)
     vTaskDelete(task_handle);
 }
 
+static bool IRAM_ATTR is_in_isr_wrapper(void)
+{
+    return (bool)xPortInIsrContext();
+}
+
 static int32_t IRAM_ATTR read_mac_wrapper(uint8_t mac[6])
 {
     return esp_read_mac(mac, ESP_MAC_BT);
@@ -270,6 +276,7 @@ static struct osi_funcs_t osi_funcs = {
     ._queue_recv_from_isr = queue_recv_from_isr_wrapper,
     ._task_create = task_create_wrapper,
     ._task_delete = task_delete_wrapper,
+    ._is_in_isr = is_in_isr_wrapper,
     ._malloc = malloc,
     ._free = free,
     ._read_efuse_mac = read_mac_wrapper,

+ 1 - 1
components/bt/lib

@@ -1 +1 @@
-Subproject commit 11c13cfe5f0fcf68c4b08662f4bf1ae5cab3a2b0
+Subproject commit 10942b2ff00f7db473c1917f76be93e59730e73f