esp_mesh_send(), how avoid ESP_ERR_MESH_NO_MEMORY

EricVs
Posts: 4
Joined: Thu Oct 13, 2022 4:30 pm

esp_mesh_send(), how avoid ESP_ERR_MESH_NO_MEMORY

Postby EricVs » Mon Dec 02, 2024 3:55 pm

My setup:
My code is derived from examples/mesh/internal_communication.
It is WIFI-MESH without router, I set fixed rootnode, all messages sent are with P2P.
The mesh connects OK, 3 nodes in chain, close together as test.

The scenario:
At some point, a node sends a message to the rootnode but its parent has rebooted.
From then on esp_mesh_send() returns ESP_ERR_MESH_TIMEOUT (as expected, temporary error).
My code is periodically retrying with esp_mesh_send() as long as there is no event that indicates a network change (like MESH_EVENT_PARENT_DISCONNECTED, MESH_EVENT_NETWORK_STATE)

The problem:
After multiple ESP_ERR_MESH_TIMEOUT errors, it becomes ESP_ERR_MESH_NO_MEMORY.
The earlier rebooted parent is connected fine again.
The node with the ESP_ERR_MESH_NO_MEMORY error never reconnects, never gets an event that anything is disconnected.
So essentially, it never recovers from temporary loss of parent.
The problem does not occur if the parent stays down (topology reorganizes to recover).

Question:
How to avoid this ESP_ERR_MESH_NO_MEMORY error?
I also check the transmit queues before sending more, with esp_mesh_get_tx_pending() but they are all still empty.

Who is online

Users browsing this forum: No registered users and 5 guests