I want to send packets using
afAddrInfo.txOptions = (gApsTxOptionNone_c | gApsTxOptionAckTx_c)
and
status = AF_DataRequest(&afAddrInfo, mypktPacket, pkt, &myconfirmId);
If status is gZbSuccess_c, I wait the confirmation.
_______
If I receive a gZbSuccess_c I will wait and then send a new pkt (frequency is 5 pkt per seconds)
If I receive a gApsNoAck_c i will resend the pkt if my circular data buffer is not full.
The problem is that after few minutes the confirmation status became gZbNoMem_c
What does it means? Who has not enough memory? The sender or the receiver node?
Solved! Go to Solution.
Hello Elisa,
The "AF_DataRequest" will return "gZbNoMem_c" if it failes to allocate the message. The message goes into the SAP that communicates to the lower layer and eventually becomes an OTA message.
This means you are not freeing correctly the messages your application is using.
I recommend you to turn on the message tracking for debugging what's going on: #define MsgTracking_d 1
Then, when you get the "No mem" error, you can check the "MsgTrackingArray" to see the type of messages that have nto been freed correclty.
Cheers,
Alan
Hello Elisa,
The "AF_DataRequest" will return "gZbNoMem_c" if it failes to allocate the message. The message goes into the SAP that communicates to the lower layer and eventually becomes an OTA message.
This means you are not freeing correctly the messages your application is using.
I recommend you to turn on the message tracking for debugging what's going on: #define MsgTracking_d 1
Then, when you get the "No mem" error, you can check the "MsgTrackingArray" to see the type of messages that have nto been freed correclty.
Cheers,
Alan