使用z-stack home 1.2.2a协议, 现已经在协调(ZDSecMgrDeviceJoin 中检测)上加入了白名单功能,用来限制未指定的MAC设备入网,所有路由中没有加入白名单检测功能。
环境:1个协调, 1个路由, 1个普通节点
编译选项: 协调:ZIGBEEPRO / SECURE=1 / ZG_SECURE_DYNAMIC=0 / TC_LINKKEY_JOIN / REFLECTOR/ NV_INIT /NV_RESTORE
zgPreConfigKeys=FALSE
路由、节点:ZIGBEEPRO / SECURE=1 / ZG_SECURE_DYNAMIC=0 / TC_LINKKEY_JOIN / REFLECTOR/ NV_INIT zgPreConfigKeys=FALSE
测试描述:
1:当协调在线时,所有设备入网均可以被检测到,可以成功根据白名单列表实现让指定设备入网,并通迅正常。
2:没有启用MTO功能
3: 当协调器人为断电后,新节点设备可以通过任何一个路由加入网络,不经协调器认证,并且能正常通迅。
4:协调白名单检测位于 ZDSecMgrDeviceJoin 开始位置 status = MCK_macCheckCMP(device->extAddr)?ZSuccess:ZNwkUnknownDevice; 注释了原先的代码
//if ( device->secure == FALSE )
//{
//status = ZDSecMgrDeviceValidate( device );
//}
需解决问题:
1:协调白名单检测函数放在 ZDSecMgrDeviceJoin 的开始位置是否合理。
2:如何解决上面第三点所提到的,当协调掉离线后,所有新入网的设备不允许入网,必须等待协调上线检测通过后才能入网。
3:协调离线后,在路由ZDSecMgrDeviceJoinFwd函数中断点调试时,发现有发送(APSME_UpdateDeviceReq( &req ) )新设备的信息到信任中心,但好像都是返回成功的,如何处理。
Viki Shi:
路由也需要加上白名单验证机制,具体实现请参考这边aries的分享:e2echina.ti.com/…/318139
zhu zhu:
回复 Viki Shi:
非常感谢你的回答,因路由资源有限,同步记录也是非常麻烦的事情,我想问一下,针对协调掉线后,路由有办法知道协调离线不。怎样判断,谢谢
zhu zhu:
高手们,出来支个招,谢谢
Viki Shi:
回复 zhu zhu:
路由没有 DEV_NWK_ORPHAN状态,不好判断协调器是否离线。不过没有协调器,路由也完全可以在网络中继续工作。如果你要实现“判断协调器是否离线”,可能要在应用层上增加功能,定时发送信息给协调器,假如收不到ACK,则判定协调器离线