我碰到下面这样的情况,请教一下各位大佬:
有一个协调器,一个低功耗的终端节点,两个路由节点A,B,组成一个网络,终端节点的父节点是A,路由节点的父节点都是协调器,
将路由节点A断电,这是终端节点会在寻找一个新的节点作为父节点,如果这个新的父节点是协调器,
这时候将路由节点A再次上电,重新回到网络中,如果这个时候终端节点再次更换父节点,父节点又变成了路由节点A,
在这之前都是正常的,接下来,如果再次将路由节点A断电,或者从网络中删除,发现终端节点不会再次寻找新的父节点了…….
还有一个问题就是,终端节点断电再次上电有时候不能回到原来的网络中,已经开启了NV_RESTORE
请问有没有人碰到过这种情况,请帮忙答疑解惑,感谢!
YiKai Chen:
請問你用的協議棧版本,還有有沒有抓包檔可以分析?
user5355203:
回复 YiKai Chen:
协议栈版本是1.2.2a的,我这边没有抓包数据,
YiKai Chen:
回复 user5355203:
建議你先抓包分析看看
user5355203:
回复 YiKai Chen:
我大概找了一下原因,发现了大概的方向,但是还有一点问题:else{if ( continueJoining ){
#if defined ( MANAGED_SCAN )ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS );
#elsezdoDiscCounter++;ZDApp_NetworkInit( (uint16)(BEACON_REQUEST_DELAY+ ((uint16)(osal_rand()& BEACON_REQ_DELAY_MASK))) );
#endif}}
之前我们为了做低功耗,不让设备上电自动搜寻网络,这里的两个ZDApp_NetworkInit函数,我都把他屏蔽了,当我把他打开的时候,我上面描述的现象就会有所改善,基本不会出现问题,可是我还不太理解原理,能不能详细说明一下
YiKai Chen:
回复 user5355203:
把ZDApp_NetworkInit函数屏蔽了,當然就不會搜寻网络了,這個還能详细说明什麼?
user5355203:
回复 YiKai Chen:
我想问的是,终端节点在父节点丢失,寻找新的父节点的时候,会运行这部分代码吗?先行感谢!!
YiKai Chen:
回复 user5355203:
函数屏蔽了就不會搜寻网络就是用到啊