我使用ZStack3.0.1开发SampleDoorLock开发EndDevice,发现节点第一次加入网络的时候正常,但退网操作后再次进行加入同一个网络操作,节点在发送完Association Request并得到Associate Response,然后协调器发送Transport Key给节点并有MAC ACK但节点不会触发Device Announce和Request Key操作。最后因为没有Key造成入网失败。
退网操作执行调用bdb_resetLocalAction函数,然后调用ZDApp_ResetTimerStart(500)进行重启操作。
附件中有整个过程的抓包文
rejoin after leave.zip
hongju wang:
是不是permit超时了
Viki Shi:
SampleDoorLock例程有修改吗?
yichao xie1:
回复 Viki Shi:
sampleDoorLock.c文件等有改动,但入网和退网等相关功能代码都没有变动。
yichao xie1:
回复 hongju wang:
不是的,permit设置的时间足够的。Association Request和Respone都正常,节点的短地址已经分配。
miffy:
回复 yichao xie1:
分析了你的ubiqua抓包文件,在第48个数据包的时候,0x0000给0x21B0发送了Confirm Key以后,就可以确定的确是入网成功了。这个没有任何疑问。
在第229数据包,0x21B0主动发起了Leave网络,目标地址是0xFFFD,是广播数据,请确认一下是什么问题 。
后面不清楚你的短地址为何从0x21B0变成了0xD953。
如果入网过程中,有某些节点一直在拼命发送数据包,导致网络相当拥塞,就很有可能导致入网失败,或者说入网成功率会降低到很低。
yichao xie1:
回复 miffy:
我是想测试重复入网是否正常,第一次入网后成功并分配地址0x21B0,在第229数据包的时候终端节点主动退出网络,过一会终端节点再次加入同一个网络(第231数据包),分配到地址0xD953,但不再请求trust center key造成无法正常通信,然后就一直退网-入网。
TI中文支持网