微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器重启后与End device通讯中断

协调器重启后与End device通讯中断

时间:10-02 整理:3721RD 点击:

         请教大家一个问题,zigbee网络里有一个协调器,一个路由,一个End device,路由和End device是协调器的子设备,协调器重启后,End device变成路由的子设备,这时协调器和End device之间的占对点通讯就中断了,请问有什么办法 可以解决这个问题?

可以编译NV_RESTORE

 加了nv_restore了,三个设备都加了

有没有抓包看过重启后是不是连接还在?

抓了,重启后连接改变了,end device加到路由下面了,抓包发现,协调器广播时能收到路由和end device的数据,协调器点对点发数据给end device时就抓不到协调器发的数据,协调器重启后,end device是不是也要重启一下?

协调器应该直接发数据给子设备,这个数据放在协调器的底层buffer里面,因为协调器认为是自己的子设备,所以等待子设备来data request把数据取回去。

正常情况下节点重新入网以后会,会发Device Annce出来,当协调器收到这个Device Annce的时候会从自己的Association List里面把这个设备删除掉,因为该子设备选择了新的父设备。

现在由于Coordinator掉电导致没有收到节点发出来的Device Annce,所以信息还留在Association List里面。

 

当协调器给end device发数据不成功的时候,可以判断该节点是否是子设备byte AssocIsRFChild( uint16 shortAddr ),

然后把这个子设备删除掉byte AssocRemove( byte *extAddr )

发送数据不成功,可以通过在调用AF_DataRequest以后,在case AF_DATA_CONFIRM_CMD:下查看是否成功

谢谢!case AF_DATA_CONFIRM_CMD:  跑步进去

您说的是ZDApp_ProcessOSALMsg函数下的case AF_DATA_CONFIRM_CMD吧?怎么执行不到这个地方?您试过吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top