网络环境中有一个协调器,多个路由器,终端节点的父节点为路由器。终端节点向协调器发送数据,路由器均成功转发,且终端节点有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的结果?
VV:
aries
返回oxc2的原因是,_NIB.nwkstate 一直是end device
user4024521:
回复 VV:
VV,我也发生了这个问题,返回值一直都NWK_ENDDEVICE,这个该如何解决呢?在线等啊!
user4024521:
这个问题解决了吗?我也发生了这样的问题了!有什么好办法能够解决吗?