mesh: Prohibit initializing advertising multiple times

Calling os_task_init second time results in an asser.
This commit is contained in:
Michał Narajowski
2019-03-22 11:26:10 +01:00
parent 87f1d7c607
commit fe48d41468
+9
View File
@@ -53,6 +53,7 @@ struct os_task adv_task;
static struct ble_npl_eventq adv_queue;
extern u8_t g_mesh_addr_type;
static int adv_initialized = false;
static os_membuf_t adv_buf_mem[OS_MEMPOOL_SIZE(
MYNEWT_VAL(BLE_MESH_ADV_BUF_COUNT),
@@ -306,6 +307,12 @@ void bt_mesh_adv_init(void)
{
int rc;
/* Advertising should only be initialized once. Calling
* os_task init the second time will result in an assert. */
if (adv_initialized) {
return;
}
rc = os_mempool_init(&adv_buf_mempool, MYNEWT_VAL(BLE_MESH_ADV_BUF_COUNT),
BT_MESH_ADV_DATA_SIZE + BT_MESH_MBUF_HEADER_SIZE,
adv_buf_mem, "adv_buf_pool");
@@ -328,6 +335,8 @@ void bt_mesh_adv_init(void)
if (ble_hs_hci_get_hci_version() >= BLE_HCI_VER_BCS_5_0) {
adv_int_min = ADV_INT_FAST_MS;
}
adv_initialized = true;
}
int