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.

终端节点切换父节点,Rejoin失败,一直停留在ZDO_NETWORK_INIT事件中反复循环

网络环境中有一个协调器,多个路由器,终端节点的父节点为路由器。终端节点向协调器发送数据,路由器均成功转发,且终端节点有Data Poll包发给路由器。

当路由器切断电源后,终端节点重新搜索父节点,然后反复进入ZDApp_event_loop的ZDO_NETWORK_INIT事件。通过跟踪函数ZDO_StartDevice发现当执行到ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration )时,ret的值为0xC2。

出现这种情况有一定的概率性,当终端节点发送数据的密度越高,出错越高。因此怀疑AF_DataRequest函数以及NLME_SetPollRate与NLME_NetworkDiscoveryRequest存在互斥条件(执行NLME_NetworkDiscoveryRequest前已经执行过nwkNeighborInitTable和NLME_NwkDiscTerm),因为RESPONSE_POLL_RATE的值为100,所以我在调度AF_DataRequest后1000ms(1s)后又补发了一次NLME_SetPollRate,这是否会影响NLME_NetworkDiscoveryRequest的结果?