mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
Optimized the number of npl on ESP32C2
This commit is contained in:
@@ -139,6 +139,7 @@ extern int ble_sm_alg_gen_dhkey(const uint8_t *peer_pub_key_x,
|
|||||||
extern int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv);
|
extern int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv);
|
||||||
extern int ble_txpwr_set(esp_ble_enhanced_power_type_t power_type, uint16_t handle, int power_level);
|
extern int ble_txpwr_set(esp_ble_enhanced_power_type_t power_type, uint16_t handle, int power_level);
|
||||||
extern int ble_txpwr_get(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
|
extern int ble_txpwr_get(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
|
||||||
|
extern int ble_get_npl_element_info(esp_bt_controller_config_t *cfg, ble_npl_count_info_t * npl_info);
|
||||||
extern uint32_t _bt_bss_start;
|
extern uint32_t _bt_bss_start;
|
||||||
extern uint32_t _bt_bss_end;
|
extern uint32_t _bt_bss_end;
|
||||||
extern uint32_t _nimble_bss_start;
|
extern uint32_t _nimble_bss_start;
|
||||||
@@ -590,10 +591,11 @@ void ble_rtc_clk_init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
||||||
{
|
{
|
||||||
esp_err_t ret = ESP_OK;
|
esp_err_t ret = ESP_OK;
|
||||||
|
ble_npl_count_info_t npl_info;
|
||||||
|
memset(&npl_info, 0, sizeof(ble_npl_count_info_t));
|
||||||
|
|
||||||
if (ble_controller_status != ESP_BT_CONTROLLER_STATUS_IDLE) {
|
if (ble_controller_status != ESP_BT_CONTROLLER_STATUS_IDLE) {
|
||||||
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "invalid controller state");
|
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "invalid controller state");
|
||||||
@@ -627,7 +629,9 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
|||||||
goto free_mem;
|
goto free_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npl_freertos_mempool_init() != 0) {
|
ble_get_npl_element_info(cfg, &npl_info);
|
||||||
|
|
||||||
|
if (npl_freertos_mempool_init(&npl_info) != 0) {
|
||||||
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "npl mempool init failed");
|
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "npl mempool init failed");
|
||||||
ret = ESP_ERR_INVALID_ARG;
|
ret = ESP_ERR_INVALID_ARG;
|
||||||
goto free_mem;
|
goto free_mem;
|
||||||
|
Submodule components/bt/controller/lib_esp32c2/esp32c2-bt-lib updated: 37a95345db...2d0c9d0d5d
@@ -35,6 +35,14 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t evt_count;
|
||||||
|
uint16_t evtq_count;
|
||||||
|
uint16_t co_count;
|
||||||
|
uint16_t sem_count;
|
||||||
|
uint16_t mutex_count;
|
||||||
|
} ble_npl_count_info_t;
|
||||||
|
|
||||||
void nimble_port_init(void);
|
void nimble_port_init(void);
|
||||||
void nimble_port_deinit(void);
|
void nimble_port_deinit(void);
|
||||||
|
|
||||||
|
@@ -35,7 +35,7 @@ void nimble_port_freertos_init(TaskFunction_t host_task_fn);
|
|||||||
void nimble_port_freertos_deinit(void);
|
void nimble_port_freertos_deinit(void);
|
||||||
void npl_freertos_funcs_init(void);
|
void npl_freertos_funcs_init(void);
|
||||||
void npl_freertos_funcs_deinit(void);
|
void npl_freertos_funcs_deinit(void);
|
||||||
int npl_freertos_mempool_init(void);
|
int npl_freertos_mempool_init(ble_npl_count_info_t *npl_info);
|
||||||
struct npl_funcs_t * npl_freertos_funcs_get(void);
|
struct npl_funcs_t * npl_freertos_funcs_get(void);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "freertos/timers.h"
|
#include "freertos/timers.h"
|
||||||
#include "freertos/portable.h"
|
#include "freertos/portable.h"
|
||||||
#include "nimble/npl_freertos.h"
|
#include "nimble/npl_freertos.h"
|
||||||
|
#include "nimble/nimble_port.h"
|
||||||
|
|
||||||
#include "os/os_mempool.h"
|
#include "os/os_mempool.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
@@ -32,72 +33,15 @@ static const char *TAG = "Timer";
|
|||||||
|
|
||||||
#define OS_MEM_ALLOC (1)
|
#define OS_MEM_ALLOC (1)
|
||||||
|
|
||||||
#define BT_LE_HCI_EVT_HI_BUF_COUNT DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT
|
#if (!defined(SOC_ESP_NIMBLE_CONTROLLER) || !SOC_ESP_NIMBLE_CONTROLLER)
|
||||||
#define BT_LE_HCI_EVT_LO_BUF_COUNT DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT
|
#error "not defined SOC_ESP_NIMBLE_CONTROLLER or SOC_ESP_NIMBLE_CONTROLLER is zero"
|
||||||
#define BT_LE_MAX_EXT_ADV_INSTANCES DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES
|
|
||||||
#define BT_LE_MAX_CONNECTIONS DEFAULT_BT_LE_MAX_CONNECTIONS
|
|
||||||
|
|
||||||
#if CONFIG_BT_NIMBLE_ENABLED
|
|
||||||
#if MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_PING)
|
|
||||||
#define LL_CFG_FEAT_LE_PING_EVT (1)
|
|
||||||
#else
|
|
||||||
#define LL_CFG_FEAT_LE_PING_EVT (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if MYNEWT_VAL(BLE_LL_CFG_FEAT_CTRL_TO_HOST_FLOW_CONTROL)
|
|
||||||
#define LL_CTRL_TO_HOST_FLOW_CTRL_EVT (1)
|
|
||||||
#else
|
|
||||||
#define LL_CTRL_TO_HOST_FLOW_CTRL_EVT (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BT_LE_LL_EXT_ADV_AUX_PTR_CNT MYNEWT_VAL(BLE_LL_EXT_ADV_AUX_PTR_CNT)
|
|
||||||
|
|
||||||
#else
|
|
||||||
#define BT_LE_LL_EXT_ADV_AUX_PTR_CNT (5)
|
|
||||||
#define LL_CFG_FEAT_LE_PING_EVT (1)
|
|
||||||
#define LL_CTRL_TO_HOST_FLOW_CTRL_EVT (1)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BLE_HS_HCI_EVT_COUNT \
|
#define BLE_HOST_CO_COUNT (8)
|
||||||
(BT_LE_HCI_EVT_HI_BUF_COUNT + \
|
#define BLE_HOST_EV_COUNT (11 + BLE_HOST_CO_COUNT)
|
||||||
BT_LE_HCI_EVT_LO_BUF_COUNT)
|
#define BLE_HOST_EVQ_COUNT (3)
|
||||||
|
#define BLE_HOST_SEM_COUNT (1)
|
||||||
|
#define BLE_HOST_MUTEX_COUNT (4)
|
||||||
#define LL_NPL_BASE_EVENT_COUNT (11)
|
|
||||||
#define LL_SCAN_EXT_AUX_EVT_CNT (BT_LE_LL_EXT_ADV_AUX_PTR_CNT)
|
|
||||||
#define HCI_LL_NPL_EVENT_COUNT (1)
|
|
||||||
#define ADV_LL_NPL_EVENT_COUNT ((BT_LE_MAX_EXT_ADV_INSTANCES+1)*3)
|
|
||||||
#define SCAN_LL_NPL_EVENT_COUNT (2)
|
|
||||||
#define RL_LL_NPL_EVENT_COUNT (1)
|
|
||||||
#define SYNC_LL_NPL_EVENT_COUNT (7)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define CONN_MODULE_NPL_EVENT_COUNT (((LL_CFG_FEAT_LE_PING_EVT+2)*BT_LE_MAX_CONNECTIONS)+LL_CTRL_TO_HOST_FLOW_CTRL_EVT)
|
|
||||||
|
|
||||||
|
|
||||||
#define BLE_LL_EV_COUNT (LL_NPL_BASE_EVENT_COUNT + \
|
|
||||||
LL_SCAN_EXT_AUX_EVT_CNT + \
|
|
||||||
HCI_LL_NPL_EVENT_COUNT + \
|
|
||||||
ADV_LL_NPL_EVENT_COUNT + \
|
|
||||||
SCAN_LL_NPL_EVENT_COUNT + \
|
|
||||||
RL_LL_NPL_EVENT_COUNT + \
|
|
||||||
SYNC_LL_NPL_EVENT_COUNT + \
|
|
||||||
CONN_MODULE_NPL_EVENT_COUNT)
|
|
||||||
|
|
||||||
#define BLE_TOTAL_EV_COUNT (BLE_LL_EV_COUNT + BLE_HS_HCI_EVT_COUNT)
|
|
||||||
|
|
||||||
#define BLE_TOTAL_EVQ_COUNT (10)
|
|
||||||
|
|
||||||
#define BLE_TOTAL_CO_COUNT (40)
|
|
||||||
|
|
||||||
#define BLE_TOTAL_SEM_COUNT (10)
|
|
||||||
|
|
||||||
#define BLE_TOTAL_MUTEX_COUNT (10)
|
|
||||||
|
|
||||||
#if SOC_ESP_NIMBLE_CONTROLLER
|
|
||||||
|
|
||||||
struct os_mempool ble_freertos_ev_pool;
|
struct os_mempool ble_freertos_ev_pool;
|
||||||
static os_membuf_t *ble_freertos_ev_buf = NULL;
|
static os_membuf_t *ble_freertos_ev_buf = NULL;
|
||||||
@@ -114,34 +58,7 @@ static os_membuf_t *ble_freertos_sem_buf = NULL;
|
|||||||
struct os_mempool ble_freertos_mutex_pool;
|
struct os_mempool ble_freertos_mutex_pool;
|
||||||
static os_membuf_t *ble_freertos_mutex_buf = NULL;
|
static os_membuf_t *ble_freertos_mutex_buf = NULL;
|
||||||
|
|
||||||
#else
|
static uint16_t ble_freertos_total_event_cnt = 0;
|
||||||
|
|
||||||
struct os_mempool ble_freertos_ev_pool;
|
|
||||||
static os_membuf_t ble_freertos_ev_buf[
|
|
||||||
OS_MEMPOOL_SIZE(BLE_TOTAL_EV_COUNT, sizeof (struct ble_npl_event_freertos))
|
|
||||||
];
|
|
||||||
|
|
||||||
struct os_mempool ble_freertos_evq_pool;
|
|
||||||
static os_membuf_t ble_freertos_evq_buf[
|
|
||||||
OS_MEMPOOL_SIZE(BLE_TOTAL_EVQ_COUNT, sizeof (struct ble_npl_eventq_freertos))
|
|
||||||
];
|
|
||||||
|
|
||||||
struct os_mempool ble_freertos_co_pool;
|
|
||||||
static os_membuf_t ble_freertos_co_buf[
|
|
||||||
OS_MEMPOOL_SIZE(BLE_TOTAL_CO_COUNT, sizeof (struct ble_npl_callout_freertos))
|
|
||||||
];
|
|
||||||
|
|
||||||
struct os_mempool ble_freertos_sem_pool;
|
|
||||||
static os_membuf_t ble_freertos_sem_buf[
|
|
||||||
OS_MEMPOOL_SIZE(BLE_TOTAL_SEM_COUNT, sizeof (struct ble_npl_sem_freertos))
|
|
||||||
];
|
|
||||||
|
|
||||||
struct os_mempool ble_freertos_mutex_pool;
|
|
||||||
static os_membuf_t ble_freertos_mutex_buf[
|
|
||||||
OS_MEMPOOL_SIZE(BLE_TOTAL_MUTEX_COUNT, sizeof (struct ble_npl_mutex_freertos))
|
|
||||||
];
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
IRAM_ATTR npl_freertos_os_started(void)
|
IRAM_ATTR npl_freertos_os_started(void)
|
||||||
@@ -206,9 +123,8 @@ npl_freertos_eventq_init(struct ble_npl_eventq *evq)
|
|||||||
evq->eventq = os_memblock_get(&ble_freertos_evq_pool);
|
evq->eventq = os_memblock_get(&ble_freertos_evq_pool);
|
||||||
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
||||||
BLE_LL_ASSERT(eventq);
|
BLE_LL_ASSERT(eventq);
|
||||||
|
|
||||||
memset(eventq, 0, sizeof(*eventq));
|
memset(eventq, 0, sizeof(*eventq));
|
||||||
eventq->q = xQueueCreate(BLE_TOTAL_EV_COUNT, sizeof(struct ble_npl_eventq *));
|
eventq->q = xQueueCreate(ble_freertos_total_event_cnt, sizeof(struct ble_npl_eventq *));
|
||||||
BLE_LL_ASSERT(eventq->q);
|
BLE_LL_ASSERT(eventq->q);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -216,9 +132,8 @@ npl_freertos_eventq_init(struct ble_npl_eventq *evq)
|
|||||||
evq->eventq = malloc(sizeof(struct ble_npl_eventq_freertos));
|
evq->eventq = malloc(sizeof(struct ble_npl_eventq_freertos));
|
||||||
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
||||||
BLE_LL_ASSERT(eventq);
|
BLE_LL_ASSERT(eventq);
|
||||||
|
|
||||||
memset(eventq, 0, sizeof(*eventq));
|
memset(eventq, 0, sizeof(*eventq));
|
||||||
eventq->q = xQueueCreate(BLE_TOTAL_EV_COUNT, sizeof(struct ble_npl_eventq *));
|
eventq->q = xQueueCreate(ble_freertos_total_event_cnt, sizeof(struct ble_npl_eventq *));
|
||||||
BLE_LL_ASSERT(eventq->q);
|
BLE_LL_ASSERT(eventq->q);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1117,113 +1032,153 @@ void npl_freertos_funcs_init(void)
|
|||||||
memcpy(npl_funcs, &npl_funcs_ro, sizeof(struct npl_funcs_t));
|
memcpy(npl_funcs, &npl_funcs_ro, sizeof(struct npl_funcs_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
int npl_freertos_mempool_init(void)
|
|
||||||
|
int npl_freertos_mempool_init(ble_npl_count_info_t *npl_info)
|
||||||
{
|
{
|
||||||
int rc = -1;
|
int rc = -1;
|
||||||
|
uint16_t ble_total_evt_count = 0;
|
||||||
|
uint16_t ble_total_co_count = 0;
|
||||||
|
uint16_t ble_total_evtq_count = 0;
|
||||||
|
uint16_t ble_total_sem_count = 0;
|
||||||
|
uint16_t ble_total_mutex_count = 0;
|
||||||
|
|
||||||
#if SOC_ESP_NIMBLE_CONTROLLER
|
if (!npl_info) {
|
||||||
ble_freertos_ev_buf = malloc(OS_MEMPOOL_SIZE(BLE_TOTAL_EV_COUNT, sizeof (struct ble_npl_event_freertos)) * sizeof(os_membuf_t));
|
return -1;
|
||||||
if(!ble_freertos_ev_buf) {
|
|
||||||
goto _error;
|
|
||||||
}
|
|
||||||
ble_freertos_evq_buf = malloc(OS_MEMPOOL_SIZE(BLE_TOTAL_EVQ_COUNT, sizeof (struct ble_npl_eventq_freertos)) * sizeof(os_membuf_t));
|
|
||||||
if(!ble_freertos_evq_buf) {
|
|
||||||
goto _error;
|
|
||||||
}
|
|
||||||
ble_freertos_co_buf = malloc(OS_MEMPOOL_SIZE(BLE_TOTAL_CO_COUNT, sizeof (struct ble_npl_callout_freertos)) * sizeof(os_membuf_t));
|
|
||||||
if(!ble_freertos_co_buf) {
|
|
||||||
goto _error;
|
|
||||||
}
|
|
||||||
ble_freertos_sem_buf = malloc(OS_MEMPOOL_SIZE(BLE_TOTAL_SEM_COUNT, sizeof (struct ble_npl_sem_freertos)) * sizeof(os_membuf_t));
|
|
||||||
if(!ble_freertos_sem_buf) {
|
|
||||||
goto _error;
|
|
||||||
}
|
|
||||||
ble_freertos_mutex_buf = malloc( OS_MEMPOOL_SIZE(BLE_TOTAL_MUTEX_COUNT, sizeof (struct ble_npl_mutex_freertos)) * sizeof(os_membuf_t));
|
|
||||||
if(!ble_freertos_mutex_buf) {
|
|
||||||
goto _error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
ble_total_evt_count = npl_info->evt_count + BLE_HOST_EV_COUNT;
|
||||||
|
ble_total_evtq_count = npl_info->evtq_count + BLE_HOST_EVQ_COUNT;
|
||||||
|
ble_total_co_count = npl_info->co_count + BLE_HOST_CO_COUNT;
|
||||||
|
ble_total_sem_count = npl_info->sem_count + BLE_HOST_SEM_COUNT;
|
||||||
|
ble_total_mutex_count = npl_info->mutex_count + BLE_HOST_MUTEX_COUNT;
|
||||||
|
ble_freertos_total_event_cnt = ble_total_evt_count;
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_freertos_ev_pool, BLE_TOTAL_EV_COUNT,
|
if (ble_total_evt_count) {
|
||||||
sizeof (struct ble_npl_event_freertos), ble_freertos_ev_buf,
|
ble_freertos_ev_buf = malloc(OS_MEMPOOL_SIZE(ble_total_evt_count,
|
||||||
"ble_freertos_ev_pool");
|
sizeof (struct ble_npl_event_freertos)) *
|
||||||
if(rc != 0) {
|
sizeof(os_membuf_t));
|
||||||
goto _error;
|
if (!ble_freertos_ev_buf) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
rc = os_mempool_init(&ble_freertos_ev_pool, ble_total_evt_count,
|
||||||
|
sizeof (struct ble_npl_event_freertos), ble_freertos_ev_buf,
|
||||||
|
"ble_freertos_ev_pool");
|
||||||
|
if (rc) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_freertos_evq_pool, BLE_TOTAL_EVQ_COUNT,
|
if (ble_total_evtq_count) {
|
||||||
sizeof (struct ble_npl_eventq_freertos), ble_freertos_evq_buf,
|
ble_freertos_evq_buf = malloc(OS_MEMPOOL_SIZE(ble_total_evtq_count,
|
||||||
"ble_freertos_evq_pool");
|
sizeof (struct ble_npl_eventq_freertos)) *
|
||||||
if(rc != 0) {
|
sizeof(os_membuf_t));
|
||||||
goto _error;
|
if (!ble_freertos_evq_buf) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
rc = os_mempool_init(&ble_freertos_evq_pool, ble_total_evtq_count,
|
||||||
|
sizeof (struct ble_npl_eventq_freertos), ble_freertos_evq_buf,
|
||||||
|
"ble_freertos_evq_pool");
|
||||||
|
if (rc) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_freertos_co_pool, BLE_TOTAL_CO_COUNT,
|
if (ble_total_co_count) {
|
||||||
sizeof (struct ble_npl_callout_freertos), ble_freertos_co_buf,
|
ble_freertos_co_buf = malloc(OS_MEMPOOL_SIZE(ble_total_co_count,
|
||||||
"ble_freertos_co_pool");
|
sizeof (struct ble_npl_callout_freertos)) *
|
||||||
if(rc != 0) {
|
sizeof(os_membuf_t));
|
||||||
goto _error;
|
if (!ble_freertos_co_buf) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
rc = os_mempool_init(&ble_freertos_co_pool, ble_total_co_count,
|
||||||
|
sizeof (struct ble_npl_callout_freertos), ble_freertos_co_buf,
|
||||||
|
"ble_freertos_co_pool");
|
||||||
|
if (rc) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_freertos_sem_pool, BLE_TOTAL_SEM_COUNT,
|
if (ble_total_sem_count) {
|
||||||
sizeof (struct ble_npl_sem_freertos), ble_freertos_sem_buf,
|
ble_freertos_sem_buf = malloc(OS_MEMPOOL_SIZE(ble_total_sem_count,
|
||||||
"ble_freertos_sem_pool");
|
sizeof (struct ble_npl_sem_freertos)) *
|
||||||
if(rc != 0) {
|
sizeof(os_membuf_t));
|
||||||
goto _error;
|
if (!ble_freertos_sem_buf) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
rc = os_mempool_init(&ble_freertos_sem_pool, ble_total_sem_count,
|
||||||
|
sizeof (struct ble_npl_sem_freertos), ble_freertos_sem_buf,
|
||||||
|
"ble_freertos_sem_pool");
|
||||||
|
if (rc) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_freertos_mutex_pool, BLE_TOTAL_MUTEX_COUNT,
|
if (ble_total_mutex_count) {
|
||||||
sizeof (struct ble_npl_mutex_freertos), ble_freertos_mutex_buf,
|
ble_freertos_mutex_buf = malloc(OS_MEMPOOL_SIZE(ble_total_mutex_count,
|
||||||
"ble_freertos_mutex_pool");
|
sizeof (struct ble_npl_mutex_freertos)) *
|
||||||
if(rc == 0) {
|
sizeof(os_membuf_t));
|
||||||
return rc;
|
if (!ble_freertos_mutex_buf) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
rc = os_mempool_init(&ble_freertos_mutex_pool, ble_total_mutex_count,
|
||||||
|
sizeof (struct ble_npl_mutex_freertos), ble_freertos_mutex_buf,
|
||||||
|
"ble_freertos_mutex_pool");
|
||||||
|
if (rc) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
_error:
|
_error:
|
||||||
|
if (ble_freertos_ev_buf) {
|
||||||
#if SOC_ESP_NIMBLE_CONTROLLER
|
|
||||||
if(ble_freertos_ev_buf) {
|
|
||||||
free(ble_freertos_ev_buf);
|
free(ble_freertos_ev_buf);
|
||||||
|
ble_freertos_ev_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_evq_buf) {
|
|
||||||
|
if (ble_freertos_evq_buf) {
|
||||||
free(ble_freertos_evq_buf);
|
free(ble_freertos_evq_buf);
|
||||||
|
ble_freertos_evq_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_co_buf) {
|
|
||||||
|
if (ble_freertos_co_buf) {
|
||||||
free(ble_freertos_co_buf);
|
free(ble_freertos_co_buf);
|
||||||
|
ble_freertos_co_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_sem_buf) {
|
|
||||||
|
if (ble_freertos_sem_buf) {
|
||||||
free(ble_freertos_sem_buf);
|
free(ble_freertos_sem_buf);
|
||||||
|
ble_freertos_sem_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_mutex_buf) {
|
|
||||||
|
if (ble_freertos_mutex_buf) {
|
||||||
free(ble_freertos_mutex_buf);
|
free(ble_freertos_mutex_buf);
|
||||||
|
ble_freertos_mutex_buf = NULL;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
#else
|
|
||||||
|
|
||||||
BLE_LL_ASSERT(rc == 0);
|
|
||||||
return rc;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void npl_freertos_mempool_deinit(void)
|
void npl_freertos_mempool_deinit(void)
|
||||||
{
|
{
|
||||||
#if SOC_ESP_NIMBLE_CONTROLLER
|
if (ble_freertos_ev_buf) {
|
||||||
if(ble_freertos_ev_buf) {
|
|
||||||
free(ble_freertos_ev_buf);
|
free(ble_freertos_ev_buf);
|
||||||
|
ble_freertos_ev_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_evq_buf) {
|
if (ble_freertos_evq_buf) {
|
||||||
free(ble_freertos_evq_buf);
|
free(ble_freertos_evq_buf);
|
||||||
|
ble_freertos_evq_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_co_buf) {
|
if (ble_freertos_co_buf) {
|
||||||
free(ble_freertos_co_buf);
|
free(ble_freertos_co_buf);
|
||||||
|
ble_freertos_co_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_sem_buf) {
|
if (ble_freertos_sem_buf) {
|
||||||
free(ble_freertos_sem_buf);
|
free(ble_freertos_sem_buf);
|
||||||
|
ble_freertos_sem_buf = NULL;
|
||||||
}
|
}
|
||||||
if(ble_freertos_mutex_buf) {
|
if (ble_freertos_mutex_buf) {
|
||||||
free(ble_freertos_mutex_buf);
|
free(ble_freertos_mutex_buf);
|
||||||
|
ble_freertos_mutex_buf = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void npl_freertos_funcs_deinit(void)
|
void npl_freertos_funcs_deinit(void)
|
||||||
|
@@ -1138,7 +1138,6 @@ r_ble_lll_conn_get_next_sched_time = 0x40001524;
|
|||||||
r_ble_lll_conn_halt = 0x4000152c;
|
r_ble_lll_conn_halt = 0x4000152c;
|
||||||
r_ble_lll_conn_master_common_init = 0x40001530;
|
r_ble_lll_conn_master_common_init = 0x40001530;
|
||||||
r_ble_lll_conn_master_new = 0x40001534;
|
r_ble_lll_conn_master_new = 0x40001534;
|
||||||
r_ble_lll_conn_module_deinit = 0x40001538;
|
|
||||||
r_ble_lll_conn_module_reset = 0x40001540;
|
r_ble_lll_conn_module_reset = 0x40001540;
|
||||||
r_ble_lll_conn_pre_process = 0x40001548;
|
r_ble_lll_conn_pre_process = 0x40001548;
|
||||||
r_ble_lll_conn_process_acked_pdu = 0x4000154c;
|
r_ble_lll_conn_process_acked_pdu = 0x4000154c;
|
||||||
|
Reference in New Issue
Block a user