终端设备无法重入协调器的网络 使用 (zstack1.2.2a)
时间:10-02
整理:3721RD
点击:
参照http://www.kaleidscope.cn:1020/archives/992修改自己的网关代码后,终端设备还是无法重新入网,附加是我的抓包log,紧急求助!
void ZDApp_NetworkInit( uint16 delay ) { + if ( devStartMode == MODE_REJOIN ) + { + _tmpRejoinState = true; + } if ( delay ) { // Wait awhile before starting the device osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, delay ); } else { osal_set_event( ZDAppTaskID, ZDO_NETWORK_INIT ); } } ******************************************************* if ( prevDevState == DEV_NWK_SEC_REJOIN_ALL_CHANNEL) { // Set the flag that will ask the device to do trust center network layer rejoin. // 网络密钥无需擦除,避免强干扰状态下, // 长时间没有收到新的网络密钥,进而复位到未入网状态 // 造成无法重新入网情况 //_NIB.nwkKeyLoaded = FALSE; //ZDApp_ResetNwkKey(); // Clear up the old network key. #ifdef DEBUG_REJOIN
楼主你好,感谢你访问我的博客,我贴的那篇帖子Susan Yang之前给我的一个解决方法,当时我试验后确实是没有再出现一只beacon的情况了。是有的网友反映在Mesh 1.0.0都没有这样的问题,Mesh1.0.0的内核是2.6.2,你用的1.2.2是2.6.3的core。要不尝试下别的方法,你的抓包文件我没法打开,我用的Sniffer。
当时我出现这个问题还没有按照上面的方法修改的时候是通过打开PermitDuration来解决的,具体原因因为后面一只没有出现这样的问题,就没有继续分析了,你能上传一份sniffer的抓包文件吗?
@我要把牛头上交国家
谢谢您的回复,我用的是ztack home 1.2.2a的(ZHA),目前的话出现的现象就是带离探头(超出通信距离)后,探头无法自动重入网,网关也有rejion response发出,之后就是终端设备发出leave,一直无法重入网,清除key的那段代码已经被我屏蔽,对比PermitDuration的话少了一个transport key动作,我的问题直接到开PermitDuration也是有效果的,但是这会不会对安全有什么影响呢?因为这样的话就要根据心跳包来打开入网窗口,经常打开的话,不知会不会有什么影响呢?
我重新抓包了一份sniffer的包,还有我自己抓包工具的截图