协调器经路由给端点发数据不成功
TI工程师们:
在使用zstack2.5.1a simple工程时发生如下情况:
1、协调器上电->路由器上电->端点上电,此时路由父节点为协调,端点父节点是路由,
这时协调可以通过短地址向端点发数据,通过抓包分析,数据经过路由到达端点
2、协调上电->端点上电->路由上电,此时路由和端点的父节点都是协调,
再将协调器断电,端点加到路由上(端点的父节点是路由了),
再把协调上电,此时端点的父节点仍然是路由,而路由的父节点是协调,
此时协调器再给端点发数据,端点就收不到了,通过抓包分析,协调器就没发出数据。
此问题怎么破解?该情况在实际用户使用过程中会经常发生,不能让用户把路由器关掉再上电吧。
在这种情况下端点向协调器发数据没问题。
目前我的分析是:此时协调器没有更新?表,不知道这条数据应该直接给路由,
而是等待端点的Data request,而端点的Data request是发给路由的,
因此协调数据就一直没有发送出去,分析不知对不?
拜托了,给点解决办法,谢谢了。此问题是以前发过的贴子,但一直没有解决,现在我也碰到了,升级到 2.6 此问题还是没有解决,请问有什么解决办法?
你分析的是对的,第2种情况是因为你的协调器还以为终端是自己的子节点,所以你通过协调器发数据,只会等待
终端来取,可是终端的父节点是路由器,无论怎么样也不回去取的,发不出去就对了,解决办法,你可以把协调器中的
非自己子节点的终端关联表信息清除掉,用这个函数AssocRemove(。。);
这个问题之前我也发过,其他人也问过,V大神给解决办法了,就是这个函数清除掉就可以了,我试验过没有问题。
你可以试验下。
协调器怎么知道子节点是非自己的?