当节点不在网络上,在网络上但未绑定到另一台设备或在网络上并绑定到另一台设备时,可以调用调试。调试可以由用户交互触发,通过某种空中机制触发(例如在Identify集群中定义),也可以由应用软件直接调用(例如在初始化后自动调用)。本节中指定的调试过程定义了调用调试时的步骤和状态。

一个实现应提供一种通过网络控制来调用调试的机制(参见第8.2 和8.3节)。另外,一个简单的设备应提供一种通过查找和绑定来调用调试的机制(参见8.5 和8的小节。6)。同样,如果支持查找和绑定,则动态设备应提供一种机制来调用带有查找和绑定的调试。如果应用需要,则这些调试操作可能会过载。一个实现也可以为其他调试动作提供单独的或重载的机制。

调试过程是通过bdbCommissioningMode属性在每个端点上控制的,并且应该在调试开始之前在每个应用程序激励上适当地配置该调试过程。例如,这允许实现通过网络控制和查找与绑定来使应用程序激励过载。

1 顶层commissioning流程

本部分定义了在某些触发器上激活的顶级调试过程。

触发是通过某些应用程序定义的刺激,例如按下按钮或通过用户界面上的某些命令。刺激可以是每个端点,也可以是整个节点。发生这种情况的标准是特定于制造商的。

应用程序通过将所需端点上的bdbCommissioningMode 属性设置为适当的值(请参阅第 5.3.2节),然后按照此过程来配置所需的调试操作。

图2说明了此过程的简化版本,以供快速参考。

1,收到用于调试的应用程序激励后,设备首先将bdbCommissioningStatus设置为SUCCESS,然后通过检查bdbCommissioningMode来确定所需的调试步骤。

2,如果bdbCommissioningMode的位0 等于0(即不需要触摸链接),则设备应从步骤5 继续。

3,节点应作为发起方遵循触摸链接过程(请参见第 8.7节)。

4,如果bdbCommissioningStatus不等于NO_SCAN_RESPONSE(即

是来自发起方的对触摸链接扫描请求的响应,表明触摸链接成功),设备应继续执行步骤 13。

5,如果bdbCommissioningMode的位1 等于0(即,不需要网络控制),则设备应从步骤 7 继续。

6,如果bdbNodeIsOnANetwork 等于TRUE,则该节点应遵循网络上某个节点的网络控制程序(请参见 8.2节)。如果bdbNodeIsOnANetwork 等于FALSE,则该节点应针对不在网络上的节点遵循网络控制程序(请参见 8.3节)。

7,如果bdbCommissioningMode的位2 等于0(即,不需要形成网络),则设备应从步骤 10 继续。

8,如果bdbNodeIsOnANetwork 等于TRUE,则设备应从步骤10 继续。

9,如果该节点的节点描述符的逻辑类型字段等于0b000(ZigBee协调器)或0b001(ZigBee路由器),则该节点应遵循网络形成程序(请参见 8.4节)。

10,如果bdbCommissioningMode的位3 等于0(即,不需要查找和绑定),则设备应从步骤 13 继续。

11,如果bdbNodeIsOnANetwork等于FALSE,则设备应继续

从步骤13开始

12,如果bdbCommissioningMode的第 3位等于1,则节点应遵循查找和绑定过程,以适合在节点上定义的端点上实现的群集类。对于类型1的客户端或类型2的服务器群集,应用程序应执行查找和绑定作为发起方端点(请参见第8.6节)。相反,对于1型服务器或2型客户端集群,应用程序应执行查找和绑定作为目标端点(请参见 8.5节)。请注意,应用程序还有责任确定在调试多个设备端点时执行查找和绑定的顺序,以及是否可以并行处理某些端点。

13,设备应终止顶层调试程序。

2 网络上的节点的network steering 流程

本节定义了网络上已经存在的节点的网络控制过程。在此过程中,已经在网络上的节点会在有限的时间内打开网络,以允许其他节点加入。

图3说明了此过程的简化版本,以供快速参考。

1,节点首先将bdbCommissioningStatus设置为IN_PROGRESS。

2,节点应广播Mgmt_Permit_Joining_req ZDO命令,并将PermitDuration字段设置为至少bdbcMinCommissioningTime,并将TC_Significance字段设置为0x01。

3,如果节点的节点描述符的逻辑类型字段等于0b000(ZigBee协调器)或0b001(ZigBee路由器),则节点发出NLME-PERMIT-JOINING.request原语,其PermitDuration参数至少设置为bdbcMinCommissioningTime。在从NWK层接收到NLME-PERMIT-JOINING.confirm原语后,会向节点通知激活许可加入的请求状态。

4,然后,该节点将bdbCommissioningStatus设置为SUCCESS,并且它将终止网络上某个节点的网络控制过程。

3不在网络上的节点的network steering流程

本节定义了尚未在网络上的节点的网络控制过程。在此过程中,尚未在网络上的节点将扫描开放的网络,如果找到合适的节点,则尝试加入。加入后,对节点进行身份验证并接收网络密钥。最后,如果信任中心在网,该节点将其预配置的链接密钥交换为信任中心生成的密钥。

为此过程定义了两个变量:布尔值vDoPrimaryScan(用于控制节点是否要对主要或辅助通道集执行通道扫描),以及32位位图vScanChannels(用于定义当前通道集)扫描。

图4说明了此过程的简化版本,以供快速参考。

1,节点首先设置bdbCommissioningStatus到IN_PROGRESS,vDoPrimaryScan为TRUE,vScanChannels设置为bdbPrimaryChannelSet。如果bdbPrimaryChannelSet 等于0x00000000,则节点应从步骤12 继续。

2,节点应执行信道扫描,以便发现在一组信道上其无线电范围内可用的网络。为此,该节点

发出带有NLME-NETWORK-DISCOVERY.request原语的

将ScanChannels 参数设置为 vScanChannels 和 ScanDuration

参数设置为bdbScanDuration。收到NLME-NETWORK-

来自NWK层的 DISCOVERY.confirm 原语,通知节点

发现网络请求的状态。

3,如果来自NLME-NETWORK-DISCOVERY.confirm的Status参数

原语不等于SUCCESS,指示频道扫描不正确

成功后,节点将继续执行步骤12。

4,节点应确定是否有任何允许许可的合适网络

通过分析NetworkCount和

NetworkDescriptor 参数。关于什么构成

合适的网络是针对特定应用的。

5,如果在信道扫描中找不到合适的网络,则节点应

从步骤12继续。

6,节点应尝试加入使用MAC关联找到的网络。

为此,该节点将NLME-JOIN.request原语与

ExtendedPANId 参数设置为所选的扩展PAN标识符

网络,将RejoinNetwork参数设置为0x00,即ScanChannels

参数设置为0x00000000,ScanDuration参数设置为0x00,

为节点和 SecurityEnable 适当设置的 CapabilityInformation信息

参数设置为FALSE。收到NLME-JOIN.confirm原语后

从NWK层开始,通知节点加入请求的状态。

使用MAC关联的网络。

7,如果来自NLME-JOIN.confirm原语的Status参数不等于

SUCCESS ,指示联接不成功,节点应尝试

加入步骤6中的下一个合适的网络。请注意,尝试尝试

再次加入相同的网络,但尝试此操作的次数不得超过

bdbcMaxSameNetworkRetryAttempts 连续时间( bdbcRecSame-

建议使用 NetworkRetryAttempts 连续时间)。如果有

从步骤1 2开始,没有其他合适的网络可以加入节点。

8,如果来自NLME-JOIN.confirm原语的Status参数等于

SUCCESS ,指示连接成功,节点应在处等待

要验证和接收的大多数apsSecurityTimeOutPeriod毫秒

来自其父级的网络密钥。请注意,网络密钥可能是通过隧道传输的

从集中式安全网络中的信任中心获取,并使用

默认全局信任中心链接密钥或通过派生的安装代码

预配置的链接密钥,或直接从其父级中获得分布式安全性

网络,使用分布式安全全局链接密钥进行加密。节点

应相应地设置bdbNodeJoinLinkKeyType来指示链接的类型

用于解密接收到的网络密钥的密钥。

9,如果节点在以下时间内未从其父节点收到网络密钥

apsSecurityTimeOutPeriod 毫秒,网络密钥在

apsSecurityTimeOutPeriod 毫秒,但无法解密或身份验证以其他方式失败,该节点应重置其网络参数并选择下一个合适的网络以加入并返回到步骤6。请注意,允许再次尝试加入同一网络,但是尝试此操作的次数不应超过 bdbcMaxSameNetworkRetryAttempts 的连续时间(建议使用 bdbcRecSameNetworkRetryAttempts 的连续时间)。如果没有其他合适的网络要加入,则节点应从步骤12 继续。

10,节点将bdbNodeIsOnANetwork设置为TRUE,然后广播Device_annce ZDO命令。如果apsTrustCenterAddress 等于0xffffffffffffffffff,则节点应从步骤 13 继续。

11,节点应执行获取新的信任中心链接密钥的过程(参见第10.2.5节)。如果该过程成功,则该节点应从步骤 13 继续。如果该过程不成功,则该节点应在其旧网络上执行离开请求,并重置其网络参数。然后,该节点将bdbNodeIsOnANetwork设置为FALSE,并将bdbCommissioningStatus设置为TCLK_EX_FAILURE。为了执行离开请求,节点将DeviceAddress参数设置为NULL,RemoveChildren参数设置为FALSE和Rejoin参数设置为FALSE的情况下,向NWK层发布NLME-LEAVE.request原语。收到NLME-LEAVE.confirm原语,通知节点离开网络的请求状态。然后,该节点应终止不在网络上的节点的网络控制程序。

12,如果vDoPrimaryScan等于FALSE或bdbSecondaryChannelSet 等于0x00000000,则节点应从步骤16继续。如果bdbSecondaryChannelSet不等于0x00000000,则节点应将vDoPrimaryScan设置为FALSE,将vScanChannels设置为bdbSecondaryChannelSet 并从步骤2 继续。

13,节点应广播Mgmt_Permit_Joining_req ZDO命令,并将PermitDuration字段设置为至少bdbcMinCommissioningTime,并将TC_Significance字段设置为0x01。请注意,这将导致接收此命令的节点重置计时器,在此期间激活其许可加入标记,从而延长了更多新节点加入的时间。

14,如果该节点能够允许新节点加入,则它应激活其允许加入标志。为此,节点发出NLME-PERMIT-JOINING.request原语,其PermitDuration参数至少设置为bdbcMinCommissioningTime。在从NWK层接收到NLME-PERMIT-JOINING.confirm原语后,会向节点通知激活许可加入的请求状态。

15,然后,该节点将bdbCommissioningStatus设置为SUCCESS。如果节点支持触摸链接,则它设置aplFreeNwkAddrRangeBegin,aplFreeNwkAddrRangeEnd,aplFreeGroupID-RangeBegin和

aplFreeGroupIDRangeEnd 属性全部为0x0000(指示使用MAC关联已加入网络的节点)。然后,该节点应终止不在网络上的节点的网络控制程序。

16,该节点可以使用某些制造商特定的过程重试,或者将bdbCommissioningStatus 设置为NO_NETWORK,然后它将终止不在网络上的节点的网络控制过程。如果尝试了特定于制造商的过程,则bdbCommissioningStatus和bdbNodeIsOnANetwork属性将在终止时进行相应更新,以使调试过程保持一致。

4 网络形成流程

本节定义了节点的网络形成过程。在此过程中,ZigBee协调器节点形成集中式安全网络并激活其信任中心功能,而ZigBee路由器节点形成分布式安全网络。

为此过程定义了两个变量:布尔值vDoPrimaryScan(用于控制节点是否要对主要或辅助通道集执行通道扫描),以及32位位图vScanChannels(用于定义当前通道集)扫描。

图5显示了此过程的简化版本,以供快速参考。

1,节点首先将bdbCommissioningStatus设置为IN_PROGRESS,

将vDoPrimaryScan设置为TRUE,将 vScanChannels设置为 bdbPrimaryChannelSet 。如果

bdbPrimaryChannelSet 等于0x00000000,节点应继续

从第4步开始

2,节点应尝试在指定通道之一上形成网络。

为此,该节点发出NLME-NETWORK-FORMATION.request

原语与ScanChannels参数集vScanChannels,所述

ScanDuration 参数设置为 bbScanDuration , BeaconOrder 参数

设置为0x0f,SuperframeOrder设置为0x00,BatteryLifeExtension

参数设置为FALSE。收到NLME-NETWORK-

来自NWK层的 FORMATION.confirm 原语,通知节点

形成新网络的请求状态。

3,如果NLME-NETWORK-FORMATION.confirm的Status参数

原语等于SUCCESS,表示已经有新的网络

形成后,节点将继续执行步骤5。

4,如果vDoPrimaryScan等于FALSE或bdbSecondaryChannelSet等于

00000000中,节点将继续从步骤8如果

bdbSecondaryChannelSet 不等于0x00000000,节点应设置

将vDoPrimaryScan 设置为FALSE,将 vScanChannels 设置为 bdbSecondaryChannelSet

并从第2步继续。

5,  节点将bdbNodeIsOnANetwork设置为TRUE。如果逻辑类型字段为

节点的节点描述符不等于0b000(ZigBee协调器),

节点应从步骤7继续。

6,然后ZigBee协调器节点将启动其信任中心

功能根据[R1 ]的4.6.1。

7,然后,该节点将bdbCommissioningStatus设置为SUCCESS,并将其

终止网络形成过程。

8,节点将bdbCommissioningStatus设置为FORMATION_FAILURE,并且它

应终止网络形成程序。

5目标端点的查找和绑定流程

本节定义了目标端点的查找和绑定过程。在此过程中,目标端点将在一段有限的时间内标识自己,然后处理来自发起方端点的后续查找和绑定请求。

图6说明了此过程的简化版本,以供快速参考。

1,目标设备首先将bdbCommissioningStatus设置为IN_PROGRESS。

2,目标设备应将Identify群集的IdentifyTime属性设置为

至少bdbcMinCommissioningTime。目标设备还可以设置

识别群集,将 IdentifyTime 属性至少设置为 bdbcMinCommissioningTime

在任何其他识别端点上。

3,在IdentifyTime期间,目标设备应响应标识

查询。它们之后可能还有其他查找和绑定命令;那些

无论身份状态如何,均应进行处理。

4,当递减的IdentifyTime属性达到零时,目标设备

将bdbCommissioningStatus设置为SUCCESS,它将终止

查找和绑定目标端点的过程。

6 发起者端点的查找和绑定流程

本节定义了启动程序端点的查找和绑定过程。在此过程中,发起方端点首先搜索标识目标端点,如果找到目标端点,则请求其简单描述符。然后,启动器端点将搜索其自身与目标端点之间的任何匹配群集以及每个匹配项

找到后,它将在其绑定表中创建一个对应的条目。如果请求组绑定,则发起方端点配置目标端点的组成员身份。

图7说明了此过程的简化版本,以供快速参考。

1,启动器设备首先将bdbCommissioningStatus设置为IN_PROGRESS。

2,发起方设备应广播“ 识别集群”,“ 识别查询”

从发起方端点到所有节点的命令(即,使用广播

地址0xffff)。发起方设备可以通过以下方式广播该命令:

更多次。

3,如果未收到“ 识别集群”,“ 识别查询响应”命令,则

启动器设备将bdbCommissioningStatus设置为

NO_IDENTIFY_QUERY_RESPONSE,它将终止发现

&发起者端点的绑定过程。如果至少有一个识别群集,

确定收到查询响应命令后,启动器设备应

注意NWK地址,该地址包含在NWK的源地址字段中

标头和端点,包含在APS 的源端点字段中

标头,来自响应的目标设备的每个传入帧;这样的

该设备被称为“受访者”。

4,发起方设备应获得下一个响应的简单描述符

受访者的端点。为此,发起方设备应单播

将Simple_Desc_req ZDO命令发送给响应者

NWKAddrOfInterest 字段设置为响应者的NWK地址和

端点字段设置为要寻址的端点的标识符(找到

从受访者的“ 识别”集群的APS标头中,“ 识别查询”

响应命令)。

5,如果未从响应者或接收到一个Simple_Desc_rsp ZDO命令

收到“状态字段”不等于的 Simple_Desc_rsp ZDO命令

成功,启动器设备应从步骤 10 继续。

6,启动程序应检查列在列表中的下一个应用程序目标群集。

的“应用程序输入群集列表” 或“应用程序输出群集列表” 字段

响应者的简单描述符,以及发起方设备是否不支持

相应的客户端/服务器群集,启动器设备应继续

从步骤8开始

7,如果启动器是一个简单的设备,则它应为该集群创建绑定表条目

。相反,如果启动器不是简单的设备,则可以创建一个

该集群的绑定表条目。如果单播绑定表条目是

创建(即,如果bdbCommissioningGroupId等于0xffff)和IEEE

响应者的地址未知,发起者应使用

创建绑定之前,请先执行IEEE_addr_req ZDO命令。创建一个

绑定表条目后,发起方设备将发出APSME-BIND.request

SrcAddr参数设置为发起方的IEEE地址的原语

设备(aExtendedAddress),将SrcEndpoint参数设置为

启动器端点和ClusterId参数设置为

匹配集群。该DstAddrMode和DstAddr参数应设置

分别为0x01和bdbCommissioningGroupId,(如果

bdbCommissioningGroupId 不等于0xffff)或0x03,并且已知

响应者的IEEE地址,分别为(如果bdbCommissioningGroupId

等于0xffff)。该DstEndpoint参数应包括在内,集

到与之匹配的被调查者的端点标识符

仅当bdbCommissioningGroupId等于0xffff时,才找到群集。上

接收到来自APS子层的APSME-BIND.confirm原语,

向发起方设备通知创建绑定表的请求状态

条目。如果APSME-BIND.confirm原语的Status参数相等

为TABLE_FULL,设备将bdbCommissioningStatus设置为

BINDING_TABLE_FULL,它将终止查找和绑定

启动器端点的过程。

8,如果从简单描述符中发现了其他匹配的簇,

发起方设备应选择下一个,然后从步骤 6 继续。

9,如果bdbCommissioningGroupID不等于0xffff且至少有一个绑定

链接已创建,发起方设备应单播组集群,

向受访者添加组命令或广播组集群,添加

如果标识命令的“组ID” 字段设置为

bdbCommissioningGroupID 。

10,如果通过“ 标识查询”命令发现了其他端点,则

发起方设备应选择下一个端点,然后从步骤 4 继续。

没有其他端点可供选择,发起方设备集

bdbCommissioningStatus 转到SUCCESS,它将终止查找和

启动器端点的绑定过程。注意:如果需要

应用程序,发起者可以发送“ 识别集群,识别”命令

将IdentifyTime字段设置为0x0000(停止标识过程)

确定目标。

7 发起者的touchlink流程

本节定义启动程序的触摸链接过程。在此过程中,启动触摸链接操作的节点称为“启动器”,而做出响应的节点称为“目标”。发起方扫描还支持触摸链接的节点,如果找到,则与目标建立新网络(如果发起方不在网络上)或将目标添加到网络(如果发起方已经在网络上)。

为此过程定义了三个变量:布尔值vDoPrimaryScan(用于控制节点是否要对主要或辅助通道集执行通道扫描); 32位位图vScanChannels(用于定义当前通道集)扫描和一个布尔值vIsF​​irstChannel,该值控制是否使用第一个通道执行前五次touchlink调试扫描。

启动器的触摸链接过程可以执行“正常”通道扫描或“扩展”通道扫描;如果需要重置为出厂设置(请参阅第 9.2节),或者目标可以在bdbcTLPrimaryChannelSet中定义的通道之外的其他通道上运行,则使用后者。对于正常的频道扫描,bdbPrimaryChannelSet 和 bdbSecondaryChannelSet 应分别设置为 bdbcTLPrimaryChannelSet 和0x00000000。对于扩展通道扫描,应将bdbPrimaryChannelSet 和 bdbSecondaryChannelSet 分别设置为 bdbcTLPrimaryChannelSet 和 bdbcTLSecondaryChannelSet 。

图8显示了此过程的简化版本,以供快速参考

1.启动程序首先将bdbCommissioningStatus设置为IN_PROGRESS。

2,发起方应生成一个32位交易标识符,以用于

PAN中的PAN间事务标识符字段

触摸链接程序。交易标识符应为随机,非

零和非顺序。然后,启动程序将vDoPrimaryScan设置为

TRUE,vScanChannels设置为bdbPrimaryChannelSet和vIsF​​irstChannel

设置为TRUE。如果bdbPrimaryChannelSet等于0x00000000,则该节点

从第 4 步继续。

3,启动器应执行触摸链接设备发现。如果

vIsF​​irstChannel 等于TRUE,发起者应设置

vIsF​​irstChannel 为FALSE,切换到由定义的第一个通道

vScanChannels 并广播五个连续的 touchlink调试

群集扫描请求 PAN间命令帧。发起者应

然后切换到vScanChannels中指定的每个其余通道

依次广播单个扫描请求 PAN间命令帧

每个频道。每个扫描请求的PAN间命令帧应为

使用ZigBee信息和触摸链接的适当值进行广播

信息字段,标称输出功率为0dBm。每次之后

传输,发起方应等待bdbcTLScanTimeBaseDuration

秒以接收任何响应。如果在扫描过程中,带有

等于FALSE的 bdbNodeIsOnANetwork 属性收到另一个扫描

请求帧间PAN命令帧与工厂新的子场

touchlink信息字段等于1,将被忽略。反过来,

在其扫描过程中是否具有bdbNodeIsOnANetwork属性的启动器

等于FALSE接收另一个扫描请求 PAN间命令帧

触摸链接信息字段的出厂新子字段等于0,

它可以停止在PAN命令帧之间停止发送自己的扫描请求,并且

承担目标的角色(参见第 8、8条),并以

touchlink调试群集扫描响应PAN间命令帧

并保留在同一通道上以用于其他touchlink命令帧。

Touchlink设备发现可能随时中止。由于没有节点

网络设置等参数已更改,此步骤是非侵入性的

对于所涉及的节点。

4,如果vDoPrimaryScan等于TRUE而bdbSecondaryChannelSet不等于

等于0x00000000,节点将vDoPrimaryScan设置为FALSE,设置

vScanChannels 到 bdbSecondaryChannelSet ,它应从

第三步

5,如果没有touchlink调试群集扫描响应 inter-PAN命令

接收到帧或没有触摸链接调试群集扫描响应

PAN间命令帧与PAN间事务一起接收

标识符字段等于发起者在其扫描请求中使用的标识符字段

命令帧,该节点将bdbCommissioningStatus设置为

NO_SCAN_RESPONSE,它将终止触摸链接过程

对于发起者。

6,触摸链接设备发现可能导致多个触摸链接

调试群集扫描响应PAN间命令帧

应用程序通过某些产品从中潜在目标的列表

具体手段,选择一个目标进行进一步处理。如果触摸链接

优先级请求所述的位的TouchLink信息的场的TouchLink

调试集群扫描响应命令帧等于1,

发起者可以考虑对那些节点进行优先处理。

7,发起方可以以任何顺序从以下位置请求更多设备信息:

目标(如有必要),或请求所选目标按顺序标识自己

支持用户确认。向以下位置请求更多设备信息

目标,发起方应生成并发送触摸链接

调试集群设备信息请求inter-PAN命令

框到适当的已发现目标并等待相应的目标

touchlink调试集群设备信息响应跨PAN

命令框架(请注意,如果目标只有一个

子设备,因为其信息完全包含在扫描响应中

命令框)。为了请求目标标识自己,发起方应

生成并发送触摸链接调试集群标识请求

PAN间命令帧到适当的发现目标。的

发起方可以发送进一步的标识请求 PAN间命令帧到

选定的目标,例如,停止识别操作(前提是该操作)

可以在开始的bdbcTLInterPANTransIdLifetime秒内执行此操作

触摸链接交易。如果这不可能,则使用新的触摸链接设备

发现操作应被执行。

8,如果扫描响应命令帧的扩展PAN标识符字段

不等于nwkExtendedPANID(即目标不在同一位置

网络作为发起方),发起方应继续执行步骤10。

9,扫描响应命令帧的网络更新标识符字段是否

低于nwkUpdateId(即目标错过了频道更改),

启动器应生成并发送触摸链接调试

将群集网络更新请求命令帧发送给目标

网络更新标识符字段设置为 nwkUpdateId 和逻辑通道

字段设置为启动器的当前操作通道。如果网络

扫描响应命令帧的更新标识符字段高于

nwkUpdateId (即发起方错过了频道更改),发起方

应当设置nwkUpdateId和其当前操作信道的值

的网络更新标识符和逻辑信道字段,分别从

的扫描响应命令帧。启动器应从

第26步。

10,如果apsTrustCenterAddress 的值不等于0xffffffffffffffff(即发起者在集中式安全网络上),则发起者将bdbCommissioningStatus设置为NOT_PERMITTED,并且它将终止发起者的触摸链接过程。

11,如果启动器不支持触摸链接地址分配,则它将bdbCommissioningStatus设置为NOT_AA_CAPABLE,并且它将终止启动器的触摸链接过程。

12,如果bdbNodeIsOnANetwork 等于TRUE,则启动器应从步骤23 继续。,

13,如果发起方的节点描述符的逻辑类型字段等于0b001(ZigBee路由器),发起者应从步骤21 继续。

14,如果选定的目标不是ZigBee路由器,则发起方将bdbCommissioningStatus设置为NO_NETWORK,并且它将终止发起方的触摸链接过程。,

15,发起方应生成一个Touchlink调试群集网络开始请求 PAN间命令帧并将其单播到所选目标。启动程序应将逻辑通道字段设置为零(指示目标应选择通道),或者将其设置为bdbcTLPrimaryChannelSet中的通道(如果首选特定的主通道)。启动器应将扩展PAN标识符和PAN标识符字段都设置为零。启动器还应设置启动器IEEE地址和启动器网络地址字段分别指向其IEEE地址和将在新网络上使用的网络地址。所有其他字段应根据第8.7节规定。1。

16,然后,启动器将启用其接收器并等待最多bdbcRxWindowDuration秒,或者直到从预期目标接收到具有与启动器在其扫描中使用的相同的PAN间事务标识符字段匹配的相应网络启动响应 PAN间命令帧为止请求命令框架。如果一个对应的网络开始响应帧间PAN命令帧未被内接收bdbcRxWindowDuration秒,或者如果对应的网络开始响应帧间PAN命令帧被接收在bdbcRxWindowDuration秒,但与在一个非零值状态参数,启动程序将bdbCommissioningStatus设置为NO_NETWORK,它将终止启动程序的触摸链接过程。

17,在收到状态参数设置为SUCCESS 的网络启动响应间PAN命令帧时,发起方应将这些参数复制到其网络信息库中。启动器应确定apsDeviceKeyPairSet中是否存在带有与0xffffffffffffffffff相对应的DeviceAddress字段的条目。如果这样的条目不存在,则发起方应创建一个新条目,其中DeviceAddress字段设置为0xffffffffffffffffff,而apsLinkKeyType字段设置为

0x01,LinkKey字段设置为分布式安全全局链接密钥,并且OutgoingFrameCounter和IncomingFrameCounter字段均设置为0。

18,然后,启动程序应至少等待bdbcTLMinStartupDelayTime

秒以允许目标启动网络。

19,如果发起方的节点描述符的逻辑类型字段不等于0b010(ZigBee终端设备),或者未发送网络启动请求PAN间命令帧,则发起方应从步骤26 继续。

20,发起方应执行网络重新加入请求。为此,启动器发出NLME-JOIN.request原语,其ExtendedPANId参数设置为所选网络的扩展PAN标识符,RejoinNetwork参数设置为0x02(节点正在使用NWK重新加入过程加入网络),将ScanChannels参数设置为0x00000000,将ScanDuration参数设置为0x00,将CapabilityInformation适当地设置为该节点,并将SecurityEnable参数设置为TRUE。收到NLME-JOIN.confirm后从NWK层开始,如果启动器提供了原始网络请求,则会向启动器通知网络重新加入请求的状态。然后,启动器应从步骤26 继续。

21,发起方应执行网络发现以建立网络参数。为此,启动器将NLME-NETWORK-DISCOVERY.request原语发布到NWK层,将ScanChannels参数设置为bdbcTLPrimaryChannelSet并将ScanDuration参数设置为bdbScanDuration。从NWK层接收到NLME-NETWORK-DISCOVERY.confirm原语后,会将结果通知给发起方。基于这些结果,发起方应为网络选择合适的值用于逻辑信道,PAN标识符和扩展的PAN标识符。

22,然后,发起方应将新的网络参数复制到其网络信息库中,并开始在新网络上运行。为此,启动器将BeaconOrder参数设置为0x0f,SuperframeOrder设置为0x00,BatteryLifeExtension参数设置为FALSE ,向NWK层发出NLME-START-ROUTER.request原语。收到NLME-START-ROUTER.confirm原语后,启动器会收到启动请求状态的通知。

23,发起者应分别使用扩展PAN分别是目标ZigBee路由器还是ZigBee终端设备,将触摸链接调试群集网络连接路由器请求或网络连接终端设备间PAN命令帧生成并单播到所选目标。标识符,网络更新标识符,逻辑信道和PAN标识符字段设置为由网络使用的相应网络参数值。

启动器。所有其他字段应根据第8.7.1 节规定。

24,然后,启动器应启用其接收器,并等待最多bdbcRxWindowDuration秒,或者直到从预期目标接收到具有与启动器在其扫描请求命令中使用的相同的PAN间事务标识符字段匹配的对应响应PAN间命令帧为止帧。对网络加入路由器请求和网络加入终端设备请求命令帧的相应响应分别是触摸链接调试群集网络加入路由器响应和网络加入终端设备响应命令帧。如果在以下时间内未收到相应的PAN间响应命令帧bdbcRxWindowDuration秒,或者如果在bdbcRxWindowDuration秒内接收到相应的响应PAN间命令帧,但Status参数中的值非零,则启动程序将bdbCommissioningStatus设置为TARGET_FAILURE,并且它将终止启动程序的触摸链接过程。

25,然后,启动程序应至少等待bdbcTLMinStartupDelayTime秒,以允许目标启动网络或正确开始在网络上运行。

26,如果启动器是一个简单的设备,它将在绑定表中建立到目标的绑定链接。相反,如果启动器不是简单的设备,则它可以在绑定表中建立到目标的绑定链接。如果要建立绑定链接,则发起方应根据扫描响应和/或设备信息响应 PAN间命令帧中接收到的端点和设备标识符信息,在绑定表中建立绑定链接以匹配客户端/服务器启动器上的群集和目标上的相应服务器/客户端群集。启动器将bdbCommissioningStatus设置为SUCCESS,将bdbNodeIsOnANetwork设置为TRUE,它将终止启动程序的触摸链接过程。

7.1 网络启动或者加入命令的常规字段设置

7.1.1 Inter-PAN 事务识别字段

inter-PAN间事务标识符字段应当被设置为在所使用的相同的值扫描请求命令帧。

7.1.2 密钥索引和加密的网络密钥字段

密钥索引字段应当被设置为所述的TouchLink密钥索引(见[R2 ])对应于用于加密在ZigBee网络密钥的密钥加密的网络密钥字段(即,预先配置的TouchLink链路密钥)。在认证测试期间,该值应设置为0x04,在所有其他时间均应设置为0x0f。

所述加密的网络密钥字段必须包含加密的ZigBee网络密钥将被用于固定网络。ZigBee网络密钥应使用touchlink预先配置的链接密钥进行加密。

7.1.3 网络地址字段

网络地址字段应当被设置为与该目标是在网络上运行的网络地址。

如果aplFreeNwkAddrRangeBegin 属性的值(请参见[R2 ])等于0x0000(发起方使用MAC关联加入网络),则应根据经典ZigBee机制随机生成地址。如果aplFreeNwkAddrRangeBegin属性的值不等于0x0000,则地址应等于aplFreeNwkAddrRangeBegin,然后此值应递增。

7.1.4 组的识别号开始或者结束字段

该组标识符开始和组标识符结束字段应当被设置为分配给所述目标组标识符的可允许范围。

如果目标在其扫描响应命令帧中请求了一组组标识符,并且aplFreeGroupIDAddrRangeBegin 属性的值(请参见[R2 ])等于0x0000(发起方使用MAC关联加入网络),则组标识符开始,组标识符结束字段应设置为0x0000。如果目标在其扫描响应命令帧中请求了一组组标识符,并且aplFreeGroupIDAddrRangeBegin属性的值不等于0x0000,则应为目标分配一组组标识符,并且组标识符开始,组标识符结束字段进行相应设置。

7.1.5 空闲的网络或者组地址范围开始或者结束字段

空闲网络地址范围开始,免费网络地址范围端,自由组标识符范围开始和游离组标识符范围端字段应当被设置为分配给所述目标为未来的分配在加入设备的网络地址和组标识符的允许范围。

如果目标在其扫描响应命令帧中指示其具有地址分配能力,并且aplFreeNwkAddrRangeBegin 属性的值(请参见[R2 ])等于0x0000,则可用网络地址范围开始,可用网络地址范围结束,可用组标识符范围开始和自由组标识符范围结束字段应设置为0x0000。如果目标在其扫描响应命令帧和aplFreeNwkAddrRangeBegin的值中指示其具有地址分配的能力如果属性不等于0x0000,则应为目标分配网络地址和组标识符的范围以用于其自身目的,并且空闲网络地址范围begin,free网络地址范围end,free组标识符范围begin和空闲组标识符范围结束字段将进行相应设置。

8,目标的touchlink流程

本节定义了目标的触摸链接过程。在此过程中,目标响应来自发起方的触摸链接请求,并启动新网络或

加入发起者的网络。由于遵循此过程作为对启动器对触摸链接请求的响应,因此不会通过顶层调试过程来促使它执行。

除非目标离开网络并加入另一个网络,或者为了解决地址冲突而需要这样做,否则目标不得更改其给定的网络地址。

如果目标是处于休眠状态的ZigBee终端设备,则首先必须通过某种应用程序将其唤醒,以便它可以启用其接收器并响应来自启动器的扫描。

如果目标在当前事务完成之前收到一个附加的touchlink调试集群扫描请求命令帧,它可以从头开始重新启动该过程,或者丢弃该帧。

注意,仅接受touchlink调试群集网络开始请求和网络加入路由器/终端设备请求命令帧可能会导致应用程序出现不良行为,因为目标离开了它当前的网络并加入了另一个网络。这在touchlink中称为偷窃。因此,该过程允许目标不接受这些命令,并通过设置相应的touchlink调试群集网络开始响应或网络加入路由器/终端设备命令帧的“ 状态”字段来指示失败,从而对此进行指示。

在其下的条件的网络开始请求,网络加入路由器/端设备请求,并且还网络更新请求命令帧或不被接受为(制造商)的产品特定的。在这里,可以在安全性(例如,在集中式安全网络的一部分中不允许节点被盗)和用户友好性(例如始终允许节点被盗)之间取得平衡,因为专业和消费者应用程序都存在不同的要求。

为此过程定义了一个变量:32位无符号整数值vIPTransID,用于存储传入的触摸链接调试集群扫描请求 PAN间命令帧的PAN间事务标识符字段。

图9显示了此过程的简化版本,以供快速参考。

1,收到除触摸链接调试群集扫描以外的命令

请求PAN间命令帧,目标应终止触摸链接

目标程序。

2,目标设置vIPTransID到的值PAN间的事务标识符

字段,它将确定是否响应。如果扫描请求

收到的RSSI小于或等于某个乘积的命令

特定阈值或触摸链接信息的链接启动器子字段

字段等于0,目标将丢弃该帧并终止

目标的触摸链接过程。

3,目标启动计时器,以使当前事务在以下时间后到期

bdbcTLInterPANTransIdLifetime 秒。然后目标将生成

并将单点触控链接调试集群扫描单播回启动器

响应PAN间命令帧如下。在 PAN间交易

标识符字段应设置为 vIPTransID 。该 RSSI校正场

应将其设置为产品特定的RSSI校正值,以便

补偿射频信号与无线电设备的外侧之间的损耗

产品; 然后发起者可以将此值与RSSI结合使用

从每个发现的目标中选择合适的目标以继续

触摸链接调试。的触摸链接优先级请求子字段

如果目标希望将触摸链接信息字段设置为1,

启动程序在触摸链接期间将其视为优先级(例如,如果目标是

电源受限制,并且在按键按下后对扫描做出反应用户)。的响应标识符字段必须被设置为一个随机的(非顺序)值。如果目标的节点描述符的逻辑类型字段

等于0b001(ZigBee路由器)并且bdbNodeIsOnANetwork等于

TRUE,扩展PAN标识符,网络更新标识符,逻辑

channel , PAN标识符和网络地址字段应设置为

目标当前正在其上运行的网络的相应值。

如果目标的节点描述符的逻辑类型字段不等于

0b001(ZigBee路由器)或bdbNodeIsOnANetwork等于FALSE,则

扩展PAN标识符,网络更新标识符,逻辑信道, PAN

标识符和网络地址字段应设置为零。所有其他领域

应根据目标的具体情况进行设置。

4,收到touchlink调试群集设备信息请求后,

识别请求,网络启动请求,网络加入路由器请求,网络

加入终端设备请求或重置为出厂新请求inter-PAN命令

帧用的PAN间事务标识符字段不等于vIPTransID,

目标应放弃该帧,并从步骤4继续。如果

交易计时器到期,目标应终止触摸链接程序

为目标。

5,收到除设备信息请求外 PAN 以外的命令

命令框架,目标应从步骤6继续。目标应

生成并单播返回给启动器的touchlink调试集群

设备信息响应PAN间命令帧如下。该间

PAN交易标识符字段应设置为 vIPTransID 。所有其他

字段应根据目标的具体情况进行设置。目标

然后应从步骤4继续。

6,在收到除了identify request -PAN命令以外的命令时

帧,目标应从步骤8继续。目标应标识

本身以特定的应用方式(例如,通过闪烁灯)根据

标识时间字段的值。不会对

识别请求PAN间命令帧。识别操作应

不要阻止目标接收其他命令。目标应

然后从步骤4继续。

7,在接收到命令的比其他网络更新请求 PAN间

命令帧,目标应从步骤7继续。如果扩展了PAN

网络更新请求间PAN的标识符和 PAN标识符字段

命令框架与其存储的值或网络更新不同

标识符字段小于或等于 nwkUpdateId ,目标应为

丢弃该帧,然后从步骤4继续。如果扩展的PAN标识符和

网络更新请求inter-PAN命令的 PAN标识符字段

框架与其存储的值和网络更新标识符字段相同

高于nwkUpdateId,目标应更新nwkUpdateId及其

当前逻辑信道以及网络更新标识符的值,以及

逻辑通道字段。然后目标将继续

步骤4。

8,收到除网络启动请求外 PAN 以外的命令时

命令帧,目标将继续从步骤 15.如果逻辑型

节点描述符的字段不等于0b001(ZigBee路由器),目标

应丢弃该帧,然后从步骤 4 继续。

9,目标应通过特定于应用程序的方式来决定是否允许

本身以启动新的网络。如果目标服务器决定不启动新网络,则它将

应生成触摸链接调试并将其单播回发起方

群集网络启动响应 inter-PAN命令帧与inter-PAN之间

交易标识符字段设置为 vIPTransID ,状态字段设置为0x01

(失败)。然后目标应终止触摸链接过程以进行

目标。

10,目标应执行网络发现以建立网络

参数。为此,目标发布了NLME-NETWORK-

使用 ScanChannels 到NWK层的 DISCOVERY.request 原语

参数集要么对应于单个逻辑通道字段

如果不等于,则接收到网络启动请求跨PAN命令帧

零或bdbcTLPrimaryChannelSet等于零,并且

ScanDuration 参数设置为 bdbScanDuration 。收到 NLME-

NETWORK-DISCOVERY.confirm 来自NWK层的原语,目标是

通知结果。根据这些结果,目标应选择

逻辑信道,PAN标识符和扩展PAN的合适值

网络的标识符。

11,目标将生成网络启动并将其单播回启动器

响应PAN间命令帧如下。在 PAN间交易

标识符字段应设置为 vIPTransID 。该状态域设置

到0x00(成功)。所有其他字段应根据验证的网络参数进行适当设置。

12,如果bdbNodeIsOnANetwork等于TRUE,则目标应在其旧网络上执行离开请求。为此,目标设备将DeviceAddress参数设置为NULL,RemoveChildren参数设置为FALSE,而Rejoin参数设置为FALSE ,向NWK层发送NLME-LEAVE.request原语。接收到NLME-LEAVE.confirm 原语后,会将离开网络的请求状态通知给目标。然后目标将清除所有ZigBee持久数据(参见第 6.9节),但传出NWK帧计数器除外。

13,然后目标服务器应将新的网络参数复制到其网络信息库并开始在新网络上运行。为此,目标向NBME发出NLME-START-ROUTER.request原语,并将BeaconOrder参数设置为0x0f,将SuperframeOrder设置为0x00,将BatteryLifeExtension参数设置为FALSE。收到NLME-START-ROUTER.confirm原语后,会将启动请求的状态通知给目标。

14,目标应代表发起方执行直接联接。为此,目标设备将DeviceAddress参数设置为发起方的IEEE地址,将NLME-DIRECT-JOIN.request原语发布给NWK层。收到NLME-DIRECT-JOIN.confirm 原语后,会将直接加入请求的状态通知给目标。然后目标将继续从步骤20开始。

15,在收到除网络加入路由器请求或网络加入终端设备间PAN间命令帧以外的命令时,目标应从步骤21继续。如果收到了网络加入路由器请求间PAN命令帧和逻辑类型字段节点描述符的值不等于0b001(ZigBee路由器)或收到网络加入终端设备间PAN命令帧且节点描述符的逻辑类型字段不等于0b010(ZigBee终端设备),则目标将丢弃框架,然后从步骤4 继续。

16,目标应通过特定于应用程序的方式来决定是否允许其自身加入另一个网络。如果目标决定不加入另一个网络,则它应根据网络加入路由器的请求,生成相应的touchlink调试集群网络加入路由器响应或网络加入终端设备响应 inter-PAN命令帧并将其单播回发起方。分别接收到“ 网络连接”或“ 网络加入终端设备请求” INTER -PAN命令帧,并将“ PAN间事务标识符”字段设置为vIPTransID,并将“ 状态”字段设置为0x01(失败)。然后目标将终止目标的触摸链接过程。

17,目标应根据网络加入路由器请求或网络加入终端设备请求 PAN间命令帧,生成一个触摸链接调试群集网络加入路由器响应或网络加入终端设备响应 inter-PAN命令帧并将其单播回发起方,分别收到PAN间事务标识符字段设置为vIPTransID,状态字段设置为0x00(成功)的消息。目标将bdbNodeJoinLinkKeyType设置为0x03(touchlink预先配置的链接键)。

18,如果bdbNodeIsOnANetwork等于TRUE,则目标应在其旧网络上执行离开请求。为此,目标设备将DeviceAddress参数设置为NULL,RemoveChildren参数设置为FALSE,而Rejoin参数设置为FALSE ,向NWK层发送NLME-LEAVE.request原语。接收到NLME-LEAVE.confirm 原语后,会将离开网络的请求状态通知给目标。然后目标将清除所有ZigBee持久数据(参见第 6.9节),但传出NWK帧计数器除外。

19,然后目标服务器应将新的网络参数复制到其网络信息库中。如果节点描述符的逻辑类型字段等于0b010(ZigBee终端设备),则目标应从步骤 20 继续。目标将NLME-START-ROUTER.request原语发布到BeaconOrder参数设置为0x0f 的NWK层。,将SuperframeOrder设置为0x00并将BatteryLifeExtension参数设置为FALSE。收到NLME-START-ROUTER.confirm原语后,会将启动请求的状态通知给目标。

20,目标将bdbNodeIsOnANetwork 设置为TRUE,将apsTrustCenterAddress设置为0xffffffffffffffffff,并且它将确定apsDeviceKeyPairSet中是否存在带有与0xffffffffffffffffff对应的DeviceAddress字段的条目。如果不存在这样的条目,则目标服务器应使用DeviceAddress字段设置为0xffffffffffffffffff,apsLinkKeyType字段设置为0x01,LinkKey字段设置为分布式安全全局链接密钥以及OutgoingFrameCounter和IncomingFrameCounter字段都创建为新条目。0。然后目标应终止目标的触摸链接过程。

21,在收到除重置为出厂新请求interpan命令帧以外的命令时,目标应放弃该命令并从步骤4继续。目标应遵循touchlink重置过程(请参见第 9.2节),然后终止目标的触摸链接过程。

zigbeeBDBCommissioning(八)相关推荐

  1. 《将要淘汰的八种人》读后感

    前言: 将要淘汰的八种人http://blog.sina.com.cn/s/blog_638066ee0100nvis.html (不景气的社会,一定会淘汰不争气的人.如何不被淘汰,只要你不在八种之内 ...

  2. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  3. 2021年大数据ELK(八):Elasticsearch安装IK分词器插件

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装IK分词器 一.下载Elasticsearch IK分词器 ...

  4. 2021年大数据Kafka(八):Kafka如何保证数据不丢失

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...

  5. 2021年大数据HBase(八):Apache Phoenix的基本介绍

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 前言 系列历史文章 Apache Phoenix的基本介绍 Apache ...

  6. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  7. java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

    整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...

  8. 打印循环换行_科学向日葵在线课堂 ——张老师讲Python 第八课 周而复始为循环2...

    点击蓝字关注我们 张老师讲编程--和爸爸妈妈一起学Python Python 的编辑器有很多,例如 PyCharm.Spyder.Notepad++等等,大家根据需要选择一个就好,初期程序代码量不大, ...

  9. 北师大版图形的旋转二教案_北师大2011课标版(闫金铎主编)初中物理八年级下册三、重力公开课优质课课件教案视频...

    <重力>教学设计 一.教学目标 (一)知识与技能 1.了解重力及重力产生的原因. 2.了解重力的方向以及重垂线的应用. 3.了解重力的大小与质量的关系. (二)过程与方法 1.经历探究重力 ...

最新文章

  1. JAVA中的接口和抽象类的区别
  2. 使用代码配置 NHibernate
  3. 【github干货】主流深度学习开源框架从入门到熟练
  4. C#-invoke与sendmessage,findWindow的阻塞实验
  5. SQL点滴27—性能分析之执行计划
  6. 前端学习(3222):函数式组件使用props
  7. discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
  8. 发言稿开场白范文_万能演讲开场白范文
  9. 陕西机关事业单位工勤计算机考试成绩,2020年陕西省机关事业单位工人技术等级岗位考核公告发布 6月22日开始报名 9月中旬以后考核...
  10. scrapy里的selector,不能有正则提取
  11. Three.js 关于立方体贴图产生边缘锯齿问题
  12. Spark的那些外部框架
  13. TreeSet与TreeMap
  14. Air202入坑指南1---lua开发环境的安装
  15. Codeforces Round #306 (Div. 2)
  16. 海纳百川下载器使用方法图文详解
  17. 谷歌I/O大会发布语言模型LaMDA2,以及更多打开想象力的落地应用
  18. 大二〕一直在寻找 生而为人的意义(转载)
  19. windows简单命令
  20. MySQL数据库获取字段名

热门文章

  1. 小甲鱼第5章:列表、元组和字符串(半整理)
  2. 前端导出zip格式压缩包
  3. 常见客户SEO问题解答:网站关键词优化到底怎么做?
  4. 【大陆ARS408毫米波雷达】一种利用串口解析雷达数据的方法
  5. 2019考研 报名条件是什么?
  6. 治头发稀少哪个方法好 六个有效的生发方法
  7. 微信小程序实现图片多选择 || 选择城市
  8. 417. 太平洋大西洋水流问题(DFS)
  9. 一图读懂JVM架构解析
  10. java 延时发送邮件_基于SpringBoot实现定时发送邮件过程解析