1 概述
本文将分析z-stack协议栈设备加入安全使能网络时的相关代码,采用集中式安全的网络,从mac连接成功到密匙分配或收到密匙的过程,包含父节点和子节点(加网设备)。设备搜网过程不在本文讨论范围内,这方面的可参阅TI 中文社区的一篇分享贴:
该分析基于z-stack home 1.2.2a 协议栈,也适用于较早的协议版本与z-stack3.0,但是在z-stack3.0中增加一层对新设备Link key验证的机制,未进行验证的新设备默认会在15秒后被移除。验证link key的目的在于,防止link key不一致导致的新设备收到无法解析的网络密匙后离网,而信任中心确认为新设备已经入网的现象出现。这块内容本文不详细阐述,相关函数为bdb_TCAddJoiningDevice、bdb_TCProcessJoiningList、bdb_TCjoiningDeviceComplete、APSME_ConfirmKeyReq、APSME_VerifyKeyReq,读者可自行分析。
2 父节点处理过程
在一个新设备在mac连接成功并获得地址后,父节点网络层会回调ZDO_JoinIndicationCB告诉zdo新设备的短地址、mac地址与设备类型(全功能设备or半功能设备),回调前新设备信息已经添加到关联表AssociatedDevList与地址管理表(地址映射表)。
2.1 ZDO_JoinIndicationCB 中