TI中文支持网
TI专业的中文技术问题搜集分享网站

协调器断电的过程中,原先加入协调节点的终端设备重新加入到路由器节点,导致协调器不能发送命令给终端设备

本人在开发CC2530 ZigBee程序的时候,遇到这样的问题:
路由设备和终端设备加入到协调器,然后协调器断电了,终端设备掉线并且重新加入到路由器。
协调器重新上电后,不能发送命令给终端。
分析原因是:因为终端从路由器节点重新加入网络,终端设备就不再向协调器发送data request,而是向路由器发送data request, 由于协调器认为终端设备还是它的子节点,并且接收不到终端设备的data request,所以就导致协调器不能给终端设备发送命令了。
我做了实验,把协调器的AssociatedDevList的终端设备的那一项清除,协调器就可以向终端发出命令了。
现在有一个难题,协调器重启后不知道原先加入到它节点的终端设备是否已经掉线并且重新加入到路由器下面了,如果终端设备还没掉线并加入到路由器下面,贸然删除协调器的AssociatedDevList的项也会导致协调器的命令发送不出去。
请问各位大神,出现这种情况的时候,如何正确更新AssociatedDevList表和路由表?

user4555588:

大神们,请指点一下迷津吧!

user4555588:

回复 Aries Lord:

感谢Aries Lord的热心解答,我做了实验,按照此方法是能解决问题的。

但是我这边的终端设备对功耗比较敏感,定时Annce的方式虽能能解决问题,但是功耗提高上去了。

我现在的解决思路是,终端接收到beacon request 应答的时候做一下判断,如果以前此终端节点是从协调器加入网络的话,则只从协调器rejoin网络,保持网络的拓扑结构不变,这样协调器就不用更新AssocList了。

赞(0)
未经允许不得转载:TI中文支持网 » 协调器断电的过程中,原先加入协调节点的终端设备重新加入到路由器节点,导致协调器不能发送命令给终端设备
分享到: 更多 (0)