Hi,
We have a project based on Collector/Sensor example code. The collector node receives data from multiple sensor nodes, and periodically sends application layer heart heat data packets to all connected sensor nodes. When testing, we found that those application layer heart-beat will be delayed by 1 or 2 polling interval occasionally. The delay is eventually tracked down to:
ApiMac_status_t ApiMac_mcpsDataReq(ApiMac_mcpsDataReq_t *pData) { return (ApiMac_status_t) MAC_McpsDataReq(pData); }
When data traffic is higher than usual, that when all/many of sensor nodes start to send at 1 data packet per minute instead of 1/minute, ~ 20% of those heart-beat packets will fail to send at 1st attempt.
My question is, how can we know the cause of failure to send data by collector? I can see two reasons: 1) the out going message queue in collector is full; 2) Collector cannot take control of airwave because many sensor nodes are also trying to send data.
Update: I tend to think the cause is that out going message queue is full, because there is no failure to send data in sensor nodes around the same time. So the question becomes how we can increase the outgoing message queue in collector nodes.
Please advise. Thanks.