This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC1310: Collector call ApiMac_mcpsDataReq(&dataReq) fails sometimes

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310

Hi,

I am using CC1310 TI15.4 Sensor-Collector with SDK 4_10_01_01, as non-beacon sleepy low power sensor.

My system uses the sensor interval to send requests to the collector, that in its turn sends back a response to the sensor.

I disabled the collector from sending any request to the sensor, so the collector will transmit only when receiving a sensor request.

Among the interval sensor transmission, each sensor can send a "burst" packet to the collector in response to an external interrupt.

Currently I'm using only 5 sensors transmitting with an interval of 20 seconds (final system should use 20-30 sensors).

I noticed that some time the collector didn't answer to a sensor interval request.

I can see that while calling function sendMsg (in collector.c file), the call to ApiMac_mcpsDataReq(&dataReq) returns 'false'

indicating a /* Transaction overflow occurred */:
}:

/* Send the message */
    if(ApiMac_mcpsDataReq(&dataReq) != ApiMac_status_success)
    {
        /*  Transaction overflow occurred */
        return (false);
    }
    else
    {
        return (true);
    }

I checked the specific returned value from ApiMac_mcpsDataReq(&dataReq), and it is 0x1A:

/*!
The operation could not be completed because no
memory resources were available
*/
ApiMac_status_noResources = 0x1A,

I changed the Tx and Rx queues (in mac_cfg.c of the collector code), but this error still occurs from time to time

(and it doesn't occur for a specific sensor):

/* maximum number of data frames in transmit queue */
#ifndef MAC_CFG_TX_DATA_MAX
#define MAC_CFG_TX_DATA_MAX 16
#endif

/* maximum number of frames of all types in transmit queue */
#ifndef MAC_CFG_TX_MAX
#define MAC_CFG_TX_MAX 16
#endif

/* maximum number of frames in receive queue */
#ifndef MAC_CFG_RX_MAX
#define MAC_CFG_RX_MAX 16
#endif

Increasing the queues size didn't solve the problem.

1. How can I overcome this error?

2. Can this happen because one of the sensors sends request to the the collector, while another sensor request was not answered yet by the collector?

Thanks for your help an guidance.

Dani