mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-10-04 05:57:23 +00:00
fix(nimble): De-register host cb in stack deinit
This commit is contained in:
@@ -14,6 +14,13 @@
|
|||||||
#include "esp_hci_transport.h"
|
#include "esp_hci_transport.h"
|
||||||
#include "esp_hci_internal.h"
|
#include "esp_hci_internal.h"
|
||||||
|
|
||||||
|
static int
|
||||||
|
ble_transport_dummy_host_recv_cb(hci_trans_pkt_ind_t type, uint8_t *data, uint16_t len)
|
||||||
|
{
|
||||||
|
/* Dummy function */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ble_transport_host_recv_cb(hci_trans_pkt_ind_t type, uint8_t *data, uint16_t len)
|
ble_transport_host_recv_cb(hci_trans_pkt_ind_t type, uint8_t *data, uint16_t len)
|
||||||
{
|
{
|
||||||
@@ -45,6 +52,12 @@ ble_transport_ll_init(void)
|
|||||||
hci_transport_host_callback_register(ble_transport_host_recv_cb);
|
hci_transport_host_callback_register(ble_transport_host_recv_cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ble_transport_ll_deinit(void)
|
||||||
|
{
|
||||||
|
hci_transport_host_callback_register(ble_transport_dummy_host_recv_cb);
|
||||||
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
ble_transport_alloc_cmd(void)
|
ble_transport_alloc_cmd(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,3 +31,9 @@ ble_transport_ll_init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ble_transport_ll_deinit(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ extern "C" {
|
|||||||
extern void ble_transport_ll_init(void);
|
extern void ble_transport_ll_init(void);
|
||||||
extern void ble_transport_hs_init(void);
|
extern void ble_transport_hs_init(void);
|
||||||
|
|
||||||
|
extern void ble_transport_ll_deinit(void);
|
||||||
|
|
||||||
/* APIs to be implemented by HS/LL side of transports */
|
/* APIs to be implemented by HS/LL side of transports */
|
||||||
extern int ble_transport_to_ll_cmd_impl(void *buf);
|
extern int ble_transport_to_ll_cmd_impl(void *buf);
|
||||||
extern int ble_transport_to_ll_acl_impl(struct os_mbuf *om);
|
extern int ble_transport_to_ll_acl_impl(struct os_mbuf *om);
|
||||||
|
|||||||
@@ -243,3 +243,13 @@ ble_transport_ll_init(void)
|
|||||||
|
|
||||||
STAILQ_INIT(&tx_q);
|
STAILQ_INIT(&tx_q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ble_transport_ll_deinit(void)
|
||||||
|
{
|
||||||
|
memset(&hci_uart_h4sm, 0, sizeof(hci_uart_h4sm));
|
||||||
|
|
||||||
|
hal_uart_close(MYNEWT_VAL(BLE_TRANSPORT_UART_PORT));
|
||||||
|
|
||||||
|
hal_uart_deinit_cbs();
|
||||||
|
}
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ typedef int (*hal_uart_rx_char)(void *arg, uint8_t byte);
|
|||||||
int hal_uart_init_cbs(int uart, hal_uart_tx_char tx_func,
|
int hal_uart_init_cbs(int uart, hal_uart_tx_char tx_func,
|
||||||
hal_uart_tx_done tx_done, hal_uart_rx_char rx_func, void *arg);
|
hal_uart_tx_done tx_done, hal_uart_rx_char rx_func, void *arg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* De Initialize already registerd callbacks
|
||||||
|
*/
|
||||||
|
void hal_uart_deinit_cbs(void);
|
||||||
|
|
||||||
enum hal_uart_parity {
|
enum hal_uart_parity {
|
||||||
/** No Parity */
|
/** No Parity */
|
||||||
HAL_UART_PARITY_NONE = 0,
|
HAL_UART_PARITY_NONE = 0,
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ int hal_uart_init_cbs(int uart_no, hal_uart_tx_char tx_func,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hal_uart_deinit_cbs(void)
|
||||||
|
{
|
||||||
|
hci_uart.tx_char = NULL;
|
||||||
|
hci_uart.rx_char = NULL;
|
||||||
|
hci_uart.tx_done = NULL;
|
||||||
|
hci_uart.u_func_arg = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void IRAM_ATTR hci_uart_rx_task(void *pvParameters)
|
static void IRAM_ATTR hci_uart_rx_task(void *pvParameters)
|
||||||
{
|
{
|
||||||
uart_event_t event;
|
uart_event_t event;
|
||||||
|
|||||||
@@ -156,6 +156,8 @@ esp_err_t esp_nimble_deinit(void)
|
|||||||
#if !SOC_ESP_NIMBLE_CONTROLLER || !CONFIG_BT_CONTROLLER_ENABLED
|
#if !SOC_ESP_NIMBLE_CONTROLLER || !CONFIG_BT_CONTROLLER_ENABLED
|
||||||
npl_freertos_funcs_deinit();
|
npl_freertos_funcs_deinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ble_transport_ll_deinit();
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user