通过抓包,我们发现,CN 能够和 EPB 关联成功,但是无法分发密钥,原因是 Recovery 完成后,没有注册分发密钥的 Callback 函数。要解决该问题,需要修改 Coordinator 的代码,在 Recovery 完成软复位后,协议栈初始化完成后,调用下面的函数,注册 Trust Center 分发密钥的 Callback 函数。ZPS_vTCSetCallback(APP_bSendHATransportKey);
通过抓包,我们发现,Transport Key 报文中 Key Descriptor Payload 中的 Source Address 是 CO 的 MAC 地址,这个地址就是 Trust Center Address ;而在 ZigBee 协议中,分发密钥的必须是 Trust Center,然而这个 Transport Key 报文的源地址是 CN,造成了 TC Address 和密钥分发方不一致,子设备就会认为该次入网不安全,立即发起离网 : 要解决该问题,需要修改 Coordinator 的代码,在 Recovery 完成软复位后,协议栈初始化完成后,调用下面的函数,将 Trust Center 的地址改为本地。ZPS_eAplAibSetApsTrustCenterAddress ( ZPS_u64NwkNibGetExtAddr ( ZPS_pvAplZdoGetNwkHandle ( ) ) );
解决改问题,目前有两个方法:
修改 OTP Flash ,将 CN 的 MAC 地址修改为和 CO 一样 EPA 重新入网
欢迎光临 谷动谷力 (http://bbs.sunsili.com/) | Powered by Discuz! X3.2 |