ZigBee 3.0 《Base-Device-Behavior-Specification》--Network steering(不在网)

来源:互联网 发布:3d网络渲染 编辑:程序博客网 时间:2024/06/18 10:16

8.3 Network steering procedure for a node not on a network

设备还没加网情况下执行Network steering:尝试寻找开放的网络,并选择一个合适的网络加入,然后设备已认证并且获取到了网络密钥,最后,如果是TC网络,通过TC更换自己预定义的link key。vDoPrimaryScan :扫描主要信道还是次要信道,vScanChannels :扫描的通道


1.设置bdbCommissioningStatus= IN_PROGRESS ,vDoPrimaryScan =TRUE,vScanChannels=bdbPrimaryChannelSet ,如果bdbPrimaryChannelSetis = 0x00000000执行第12步

2.节点执行NLME-NETWORK-DISCOVERY.request 原语(附带参数:ScanChannels ,vScanChannels ,ScanDuration ),当网络层收到NLME-NETWORK-DISCOVERY.confirm 原语,指示发现网络的请求状态

3.如果NLME-NETWORK-DISCOVERY.confirm 原语不等于SUCCESS,表明信道扫网不成功,应该跳到12步
4.节点在扫到网络中选出permijoining 标志位为TRUE的开放网络,并决定加入哪个网络
5.如果扫描信道没有发现合适的网络,应该跳到步骤12
6.节点通过MAC association 加入到已找到的网络中,调用NLME-JOIN.request 原语(附带已选择网络的ExtendedPANId ,RejoinNetwor=0x00,
ScanChannels =0x00000000,ScanDuration =0x00,SecurityEnable =FALSE),当收到网络层的NLME-JOIN.confirm  原语,指示了用MAC association 请求加网的的状态。
7.如果NLME-JOIN.confirmprimitive 原语不等于SUCCESS,节点必须跳到步骤6,尝试加入下一个合适网络,有可能再次尝试加入那个网络,但重试次数一定不能大于bdbcMaxSameNetworkRetryAttempts 的次数,如果没有合适网络加入则跳到12步
8.如果NLME-JOIN.confirm primitive 原语等于SUCCESS,表明设备入网成功,节点需要最多等待apsSecurityTimeOutPeriod 毫秒来认证和获取网络密钥,注意网络密钥可能来自TC网络中的TC,使用默认的全局默认的TC link密钥或者安装码生成的预配置密钥,或者分布式网络中的分布式预配置密钥,节点应该根据网络秘钥的加密方式设置bdbNodeJoinLinkKeyType 
9.如果节点在apsSecurityTimeOutPeriod期限内没有收到父节点发来的网络密钥,或在此期间内接收到了但不能解密,或者其他方式身份认证失败,节点必须复位网络参数并选择下一个合适的网络加入返回步骤6,可以重新尝试加入这个网络,但不能超过bdbcMaxSameNetworkRetryAttempts 次数,如果没有合适网络去加入了应该跳到12步
10.设置bdbNodeIsOnANetwork =TRUE并广播Device_annce ZDO 命令,如果apsTrustCenterAddress =0xffffffffffffffff ,跳到13步
11.设备需要执行请求新Link Key的流程,如果成功获取新的Link key,继续执行13步,否则设备发送leave request 并复位网络参数,然后设置setsbdbNodeIsOnANetwork=FALSE,bdbCommissioningStatus  = TCLK_EX_FAILURE 。设备的网络层执行NLME-LEAVE.request 原语(附带参数:DeviceAddress = NULL,RemoveChildren=FALSE,Rejoin =FALSE),收到NLME-LEAVE.confirm 原语,指示了请求退网的状态,节点必须终止Network steering(不在网)的流程
12.如果vDoPrimaryScan =FALSE或者bdbSecondaryChannelSet  =0x00000000 ,设备需要跳到16步,如果bdbSecondaryChannelSet不等于0x00000000 ,必须设置vDoPrimaryScan=FALSE,vScanChannels =bdbSecondaryChannelSet 并跳到步骤2
13.节点必须广播Mgmt_Permit_Joining_req ZDO命令(附带参数:PermitDuration =bdbcMinCommissioningTime ,TC_Significance =0x01),注意这将导致节点接收到这个命令后复位定时器,在此期间他们的permit joining 的标志位是有效的,从而延长时间进一步新节点的加入。
14.如果节点允许其他节点加入,必须将permit joining 的标志位置为有效的,调用NLME-PERMIT-JOINING.request 原语(附带参数:PermitDuration 
=bdbcMinCommissioningTime ),当接收到网路层
NLME-PERMIT- JOINING. confirm 原语,表明permit joining 有效状态
15.设置bdbCommissioningStatus =SUCCESS,如果节点支持touchlink,那么设置aplFreeNwkAddrRangeBegin,aplFreeNwkAddrRangeEnd,aplFreeGroupID-RangeBegin和aplFreeGroupIDRangeEnd 为0(表示节点已MAC association入网),节点必须终止Network steering(不在网)的流程
16.节点有可能重试使用厂商自定义的方式或者把bdbCommissioningStatus 设置为NO_NETWORK ,然后节点必须终止Network steering(不在网)的流程,如果还尝试使用厂商自定义的方式,那么bdbCommissioningStatus 和bdbNodeIsOnANetwork 在终止的时候做相应的更新


















1 0
原创粉丝点击