在2.4版本中,sensor-collector:三个collector连接20个sensor,正常通讯30分钟左右,一个collector挂掉(此collector 上面的sensor全部变成孤节点,每五分钟发送一次Orphan notification),重启collector,只有一个sensor入网,其他sensor发送的Orphan notification,无ACK回复,然后找到此collector对应sensor,重启,正常入网。请问TI我应该如何解决此问题?
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.
在2.4版本中,sensor-collector:三个collector连接20个sensor,正常通讯30分钟左右,一个collector挂掉(此collector 上面的sensor全部变成孤节点,每五分钟发送一次Orphan notification),重启collector,只有一个sensor入网,其他sensor发送的Orphan notification,无ACK回复,然后找到此collector对应sensor,重启,正常入网。请问TI我应该如何解决此问题?
dllc_deviceStates_scanOrphan 会有Orphan scan 吗?正常会间隔发送Orphan notification
间隔为CONFIG_ORPHAN_BACKOFF_INTERVAL
在如下code中有体现:
/* Process scan backoff in case of orphan scan */ if(Jdllc_events & JDLLC_SCAN_BACKOFF) { switchState(devInfoBlock.prevDevState); if(devInfoBlock.prevDevState == Jdllc_deviceStates_scanOrphan) { ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle, true); } /* Clear the event */ Util_clearEvent(&Jdllc_events, JDLLC_SCAN_BACKOFF); }
有可能其他节点距离较远或者其他原因导致Orphan notification 没有送达collector
应该不是信道的问题,如果你不做修改只用sensor 和collector 例程呢?会不会出现你说的死机。我建议你排查一下你的内存的malloc 和free情况。
FN :factory new
Ssf_clearNetworkInfo();
else if(pData->scanType == ApiMac_scantype_orphan)
{
numSyncLoss = 0;
/* Coordinator realignment received, set event to process it */
Util_setEvent(&Jdllc_events, JDLLC_COORD_REALIGN);
}
这是找到了Coordinator要rejoin了
你可以在下面的没有success的里面去弄
else if(pData->scanType == ApiMac_scantype_active)
{
/* Reset previously found PAN Id match state */
panIdMatch = false;
devInfoBlock.prevDevState = devInfoBlock.currentDevState;
Ssf_setScanBackoffClock(CONFIG_SCAN_BACKOFF_INTERVAL);
}