请教大家一个问题,zigbee网络里有一个协调器,一个路由,一个End device,路由和End device是协调器的子设备,协调器重启后,End device变成路由的子设备,这时协调器和End device之间的占对点通讯就中断了,请问有什么办法 可以解决这个问题?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请教大家一个问题,zigbee网络里有一个协调器,一个路由,一个End device,路由和End device是协调器的子设备,协调器重启后,End device变成路由的子设备,这时协调器和End device之间的占对点通讯就中断了,请问有什么办法 可以解决这个问题?
抓了,重启后连接改变了,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:下查看是否成功