Skip to content

Commit 42ccd0b

Browse files
committed
Ensure IPC is not used from ISR context.
1 parent 594df7a commit 42ccd0b

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/esp-hci/src/esp_nimble_hci.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ int ble_hci_trans_hs_cmd_tx(uint8_t *cmd)
110110
if (xSemaphoreTake(vhci_send_sem, NIMBLE_VHCI_TIMEOUT_MS / portTICK_PERIOD_MS) == pdTRUE) {
111111
/* esp_ipc_call_blocking does not exist for solo */
112112
#ifndef CONFIG_FREERTOS_UNICORE
113-
if (xPortGetCoreID() != CONFIG_BT_NIMBLE_PINNED_TO_CORE) {
113+
if (xPortGetCoreID() != CONFIG_BT_NIMBLE_PINNED_TO_CORE && !xPortInIsrContext()) {
114114
esp_ipc_call_blocking(CONFIG_BT_NIMBLE_PINNED_TO_CORE,
115115
ble_hci_trans_hs_cmd_tx_on_core, cmd);
116116
} else {
@@ -166,7 +166,7 @@ int ble_hci_trans_hs_acl_tx(struct os_mbuf *om)
166166
/* Don't check core ID if unicore */
167167
#ifndef CONFIG_FREERTOS_UNICORE
168168
tx_using_nimble_core = xPortGetCoreID() != CONFIG_BT_NIMBLE_PINNED_TO_CORE;
169-
if (tx_using_nimble_core) {
169+
if (tx_using_nimble_core && !xPortInIsrContext()) {
170170
data[0] = len;
171171
data[1] = (len >> 8);
172172
data[2] = BLE_HCI_UART_H4_ACL;
@@ -183,7 +183,7 @@ int ble_hci_trans_hs_acl_tx(struct os_mbuf *om)
183183
if (xSemaphoreTake(vhci_send_sem, NIMBLE_VHCI_TIMEOUT_MS / portTICK_PERIOD_MS) == pdTRUE) {
184184
/* esp_ipc_call_blocking does not exist for solo */
185185
#ifndef CONFIG_FREERTOS_UNICORE
186-
if (tx_using_nimble_core) {
186+
if (tx_using_nimble_core && !xPortInIsrContext()) {
187187
esp_ipc_call_blocking(CONFIG_BT_NIMBLE_PINNED_TO_CORE,
188188
ble_hci_trans_hs_acl_tx_on_core, data);
189189
} else {

0 commit comments

Comments
 (0)