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

Mesh assert in core_tx.c

Hi,

After sending a few textmessages from the client to a server (8 bytes long approx. 10 messages/sec) i get a mesh assert on the client sometimes:

 0> <t:     205648>, app_error_weak.c,   95, Mesh assert at 0x0002EFAA (:0)

With addr2line I found this line to trigger the assert:

core_tx.c line 105 (discriminator 1).

Line 105 is the red line in core_tx_complete_cb_set:

void core_tx_complete_cb_set(core_tx_complete_cb_t tx_complete_callback)
{
m_tx_complete_callback = tx_complete_callback;
}

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));

I use the SDK 2.0.1 at the moment.

How can this be avoided?

Regards Gerry

Parents Reply Children
  • Hi, 

    The calls are made from the mainloop. The function read_uart() reads commands and then sends them to the mesh network.

    while (true)
    {
      read_uart();
      (void)sd_app_evt_wait();

    }

    I'm ignoring the NO_MEMORY cases at the moment so I don't retry at all. It seems to me, that in SDK 2.0.1 things are slower than before. With the same code in SDK 1.0.0 I was able to transmit 20-30 messages per second without an assert. With SDK 2.0.1 this NO_MEMORY status and the assert occurs regulary and I can only transmit 5-10 messages per second to a server.

    Regards

    Gerry

Related