This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Bearer bitmap assert in Mesh

I'm developing a Bluetooth mesh device on a Window 10 machine using Segger Embedded Studio v4.52c on a nRF52832 chip using SDK16.0.0, Mesh SDK 4.1.0 and FreeRTOS.

in the core_tx.c file I get an assert on line 105 if the m_packet.bearer_bitmap == 0. This seems to happen quite often but not all the time. I'm having a hard time figuring out what the cause is and how to fix it. This assert occurs when a provisioning device is updating parameters from the device. At first I thought that it was memory corruption because of RTOS stacks overlapping since the device was out of RAM. I have since freed up a lot of RAM and I think that eliminated that as a cause. I haven't determined that exact use for that bearer_bitmap and what controls it, so any help on how it works and what should clear it would help me out.

core_tx_bearer_bitmap_t core_tx_packet_alloc(const core_tx_alloc_params_t * p_params, uint8_t ** pp_packet)
{
    NRF_MESH_ASSERT(p_params != NULL);
    NRF_MESH_ASSERT(pp_packet != NULL);
    NRF_MESH_ASSERT(p_params->role < CORE_TX_ROLE_COUNT);
--> NRF_MESH_ASSERT(m_packet.bearer_bitmap == 0); <-------------------------------------------------
    NRF_MESH_ASSERT(p_params->net_packet_len <= sizeof(m_packet.buffer));

Parents Reply Children
No Data
Related