NLME_LeaveReq问题
协调器在接收到device发的join后,在函数ZDSecMgrDeviceJoin中拒绝加网,调用了ZDSecMgrDeviceRemove->NLME_LeaveReq. 但协调器NLME_LeaveReq这个动作,并没有触法发送任何消息给device, 而造成device 一直在等network key,最后超时MAX_DEVICE_UNAUTH_TIMEOUT。 在等待network key的时间里,如果device能够收到NLME_LeaveReq的消息,就不再等待,那么作为节电device可以省很多,求解,多谢。
这个时候都没有入网成功,怎么可能能发送数据过去呢,都没有入网为什么要发送leave?
你们想要实现什么功能?
device已经join成功, 已经收到了ZDO_JoinConfirmCB,并获得的地址, 此时正在等待ZDSecMgrAuthNwkKey。
"都没有入网为什么要发送leave?" --你看看TI代码为什么会调用NLME_LeaveReq, ZDO_NEW_DEVICE->ZDSecMgrNewDeviceEvent->ZDSecMgrDeviceNew->ZDSecMgrDeviceJoinDirect->ZDSecMgrDeviceJoin->ZDSecMgrDeviceRemove->NLME_LeaveReq.
因为我们的设备是移动设备,应尽可能省电,如果能收到NLME_LeaveReq的消息,就可以减少MAX_DEVICE_UNAUTH_TIMEOUT等待时间。
NLME_LeaveReq只有在transport key不成功的情况下才会发出来的。
现在你的设被ZDO join confirm都有了,父设备肯定要发transport key给加网设备了。
建议可以把MAX_DEVICE_UNAUTH_TIMEOUT时间调小一点。