ZBD 的属性包含在结构体 BDB_tsAttrib 中,如下所示
typedef struct
{
uint16 u16bdbCommissioningGroupID;
uint8 u8bdbCommissioningMode;
BDB_teCommissioningStatus ebdbCommissioningStatus;
uint64 u64bdbJoiningNodeEui64;
uint8 au8bdbJoiningNodeNewTCLinkKey[16];
bool_t bbdbJoinUsesInstallCodeKey;
const uint8 u8bdbNodeCommissioningCapability;
bool_t bbdbNodeIsOnANetwork;
uint8 u8bdbNodeJoinLinkKeyType;
uint32 u32bdbPrimaryChannelSet;
uint8 u8bdbScanDuration;
uint32 u32bdbSecondaryChannelSet;
uint8 u8bdbTCLinkKeyExchangeAttempts;
uint8 u8bdbTCLinkKeyExchangeAttemptsMax;
uint8 u8bdbTCLinkKeyExchangeMethod;
uint8 u8bdbTrustCenterNodeJoinTimeout;
bool_t bbdbTrustCenterRequireKeyExchange;
bool_t bTLStealNotAllowed;
bool_t bLeaveRequested;
}BDB_tsAttrib;
ZBD 的属性值可以在编译时在 bdb_options.h 文件中使用下表中列出的宏进行初始化(有关编译时选项的信息,请参阅 2.10 节)。通过上述结构体,可以在运行时写入或读取属性。
Note:bTLStealNotAllowed 和 bLeaveRequested 是 NXP 私有变量,非 ZigBee 的属性。
属性 | 初始化宏 |
---|---|
u16bdbCommissioningGroupID | BDB_COMMISSIONING_GROUP_ID |
u8bdbCommissioningMode | BDB_COMMISSIONING_MODE |
ebdbCommissioningStatus | BDB_COMMISSIONING_STATUS |
u64bdbJoiningNodeEui64 | BDB_JOINING_NODE_EUI64 |
au8bdbJoiningNodeNewTCLinkKey[16] | - |
bbdbJoinUsesInstallCodeKey | BDB_JOIN_USES_INSTALL_CODE_KEY |
u8bdbNodeCommissioningCapability | - |
bbdbNodeIsOnANetwork | - |
u8bdbNodeJoinLinkKeyType | BDB_NODE_JOIN_LINK_KEY_TYPE |
u32bdbPrimaryChannelSet | BDB_PRIMARY_CHANNEL_SET |
u8bdbScanDuration | BDB_SCAN_DURATION |
u32bdbSecondaryChannelSet | BDB_SECONDARY_CHANNEL_SET |
u8bdbTCLinkKeyExchangeAttempts | BDB_TC_LINK_KEY_EXCHANGE_ATTEMPTS |
u8bdbTCLinkKeyExchangeAttemptsMax | BDB_TC_LINK_KEY_EXCHANGE_ATTEMPTS_MAX |
u8bdbTCLinkKeyExchangeMethod | BDB_TC_LINK_KEY_EXCHANGE_METHOD |
u8bdbTrustCenterNodeJoinTimeout | BDB_TRUST_CENTER_NODE_JOIN_TIMEOUT |
bbdbTrustCenterRequireKeyExchange | BDB_TRUST_CENTER_REQUIRE_KEYEXCHANGE |
bTLStealNotAllowed | - |
bLeaveRequested | - |
这些属性分布在下面描述。有关更多详情,请参阅 ZigBee Base Device Behavior Specification (13-0402-08)。
u16bdbCommissioningGroupID
该属性只能用于发现和绑定发起者的端点。它包含发起者将放置目标端点的组的标识符。如果它等于 0xFFFF,则将创建单个(非组)绑定。该属性值可以在编译时使用宏 BDB_COMMISSIONING_GROUP_ID 进行初始化。
要使用此属性,需要在 u8bdbCommissioningMode 属性中使能发现和绑定。
commissioning 模式的发现和绑定在 2.2.4 节中描述。
u8bdbCommissioningMode
该属性是一个位映像,用于指示端点上使能了哪些 commissioning 模式,其中每个位对应一种模式,并且当模式使能时对应位置为 ‘1’。这意味着如果需要的话,节点将能够实现该 commissioning 模式。该属性值可以在编译时使用宏 BDB_COMMISSIONING_MODE 来初始化。下表说明位映像及用于置位的枚举。
位 | commissioning 模式 | 枚举 |
---|---|---|
0 | Touchlink | BDB_COMMISSIONING_MODE_TOUCHLINK |
1 | Network Steering | BDB_COMMISSIONING_MODE_NWK_STEERING |
2 | Network Formation | BDB_COMMISSIONING_MODE_NWK_FORMATION |
3 | Finding and Binding | BDB_COMMISSIONING_MODE_FINDING_N_BINDING |
4-7 | 保留(设置为 ‘0’) | - |
commissioning 模式在 2.2 节中描述。
Note:该属性用于所有节点类型。但是,为了使能 commissioning 模式,它必须在节点上是可用的,通过属性 u8bdbNodeCommissioningCapability 表明。使能的 commissioning 模式将成为节点 commissioning 能力的一个子集。
ebdbCommissioningStatus
该属性指示当前正在端点上进行的 commissioning 过程的状态。该属性取 BDB_teCommissioningStatus 枚举中定义的值的其中一个(参见 2.8.2 节)。该属性用于所有节点类型。该属性值由 ZBD 实现内部更新,但可由应用程序读取。
u64bdbJoiningNodeEui64
该属性包含正在加入集中式安全网络的节点的 64-bit IEEE/MAC 地址,它仅用于协调器。该属性值由 ZBD 实现内部更新。
au8bdbJoiningNodeNewTCLinkKey
该属性包含一个新的链接密钥,用于当前正在加入网络但尚未被授予完整网络成员资格的节点。该属性值由 ZBD 实现内部更新(在加入节点及其父系节点上)。
bbdbJoinUsesInstallCodeKey
该属性指示在节点被允许加入网络之前,预配置链接密钥是否必须可用,这可能是预安装的链接密钥,也可能是派生自安装码。值为 TRUE 表示需要链接密钥,FALSE 表示不需要链接密钥。它仅用于 协调器/ TC。该属性值可以在编译时使用宏 BDB_JOIN_USES_INSTALL_CODE_KEY 进行初始化。默认情况下,该属性被设置为 FALSE。该属性不被 ZBD 使用,如果其设置为 TRUE,则应用程序有责任直接处理该功能并设置所需的密钥(参阅 u8bdbNodeJoinLinkKeyType)。
u8bdbNodeCommissioningCapability
该属性是指示节点的 commissioning 能力的位映像,其中每个位对应一种 commissioning 能力,并且如果能力存在则被置为 ‘1’。该属性用于所有节点类型。应用程序不能直接写入这些位,它们根据应用程序的 makefile 中定义的选项进行设置。下表详细介绍了位映像和相关的 makefile 选项。
位 | 能力 | Makefile 选项(如果定义了其中一个,则置为 ‘1’) | ||
---|---|---|---|---|
0 | Network Steering | BDB_SUPPORT_NWK_STEERING | ||
1 | Network Formation | BDB_SUPPORT_NWK_FORMATION | ||
2 | Finding and Binding | BDB_SUPPORT_FIND_AND_BIND_INITIATOR \ | BDB_SUPPORT_FIND_AND_BIND_TARGET | |
3 | Touchlink | BDB_SUPPORT_TOUCHLINK_INITIATOR_END_DEVICE \ | BDB_SUPPORT_TOUCHLINK_INITIATOR_ROUTER \ | BDB_SUPPORT_TOUCHLINK_TARGET |
4-7 | 保留(设置为 ‘0’) | - |
以上 commissioning 模式在 2.2 节中描述。
Note:为了使用其中一种可用的 commissioning 模式,必须通过属性 u8bdbCommissioningMode 来使能该模式。使能的 commissioning 模式将会成为节点 commissioning 能力的一个子集。
bbdbNodeIsOnANetwork
该属性指示本地节点当前是否网络的成员。值为 TRUE 表示它在网络中(但不一定绑定到任何远程节点),FALSE 表示它不在网络中。该属性用于所有节点类型,但 ZBD 不维持它。应用程序负责维持属性值,并在重启后初始化属性(在调用任何其他 ZBD 函数之前)。
u8bdbNodeJoinLinkKeyType
该属性指示链接密钥的类型。当节点加入一个新的网络时,节点能够解密通过 over-air 接收到的已加密的网络密钥。该属性由路由器和终端设备节点使用。下表列出了属性值和对应的链接密钥类型,以及可用于定义链接密钥的宏。
值 | 链接密钥类型 | 链接密钥定义宏 |
---|---|---|
0x00 | 默认全局 TC 链接密钥 | DEFAULT_GLOBAL_TRUST_CENTER_LINK_KEY |
0x01 | 分布式安全全局链接密钥 | DISTRIBUTED_SECURITY_GLOBAL_LINK_KEY |
0x02 | 安装码派生的预配置链接密钥 | INSTALL_CODE_DERIVED_PRECONFIGURED_LINK_KEY |
0x03 | TL 预配置链接密钥 | TOUCHLINK_PRECONFIGURED_LINK_KEY |
u32bdbPrimaryChannelSet
该属性指定将在信道扫描中使用的 2.4GHz 无线信道的主要(第一选择)集合。该属性是一个位映像,其中每个位对应一个信道,如果该信道将被扫描则应该置为 ‘1’。位编号直接对应信道编号,即第 11 位对应 2.4GHz 的 11 信道,第 26 位对应 26 信道。该属性用于所有节点类型。该属性值可以在编译时使用宏 BDB_PRIMARY_CHANNEL_SET 来初始化。
u8bdbScanDuration
该属性决定每个 2.4GHz 无线信道扫描操作的持续时间。实际的扫描时间计算如下:
$$aBaseSuperframeDuration * (2^{bdbScanDuration} + 1)$$
其中 aBaseSuperframeDuration 在 IEEE 802.15.4 规范中定义。
该属性用于所有节点类型。该属性值取自 ZPS 配置编辑器中设置的扫描持续时间(Scan Duration Time)。
u32bdbSecondaryChannelSet
该属性指定将在信道扫描中使用的 2.4GHz 无线信道的次要(第二选择)集合。如果主要信道的扫描不成功,将使用此信道集。如果不需要扫描次要信道,则应该将该属性设置为零。该属性用于所有节点类型。该属性值可以在编译时使用宏 BDB_SECONDARY_CHANNEL_SET 来初始化。
u8bdbTCLinkKeyExchangeAttempts
该属性指示当节点加入网络时请求(创建)新链接密钥的尝试次数。该属性用于路由器和终端设备节点。该属性值可以在编译时使用宏 BDB_TC_LINK_KEY_EXCHANGE_ATTEMPTS 进行初始化。
u8bdbTCLinkKeyExchangeAttemptsMax
该属性指定当节点加入新的网络时,在密钥建立被放弃之前将进行的密钥建立尝试的最大次数。该属性用于路由器和终端设备节点。该属性值可以在编译时使用宏 BDB_TC_LINK_KEY_EXCHANGE_ATTEMPTS_MAX 进行初始化。
u8bdbTCLinkKeyExchangeMethod
该属性指定节点加入网络时用于获取新链接密钥的方法。下表列出了属性值及相应的方法。该属性用于路由器和终端设备节点。
值 | 密钥交换方法 |
---|---|
0x00 | APS 请求密钥 |
0x01 | 基于证书的密钥交换(CBKE) |
0x02-0xFF | 保留 |
该属性值可以在编译时使用宏 BDB_TC_LINK_KEY_EXCHANGE_METHOD 来初始化。它应该被初始化为 0x00(APS 请求密钥)。
u8bdbTrustCenterNodeJoinTimeout
该属性指定 TC 在新加入节点的密钥建立失败时删除其 TC 生成链接密钥的超时时间(以秒为单位)。该属性仅用于 协调器/ TC。该属性值可以在编译时使用宏 BDB_TRUST_CENTER_NODE_JOIN_TIMEOUT 来初始化。
bbdbTrustCenterRequireKeyExchange
该属性指定 TC 是否要求加入节点将其初始链接密钥替换为由 TC 生成的新链接密钥。值为 TRUE 表示加入节点必须成功完成链接密钥交换过程,否则将从网络中移除该节点;值为 FALSE 表示加入节点将被允许保留在网络中,即使它没有完成链接密钥交换过程。该属性值可以在编译时使用宏 BDB_TRUST_CENTER_REQUIRE_KEYEXCHANGE 来初始化。它应该根据网络中实施的 TC 策略进行初始化,默认情况下,将其设置为 FALSE 以实现向后兼容。
bTLStealNotAllowed
这是 NXP 私有的标志,应用程序可以设置该标志以防止来自不同网络中的另一个节点的 TL commissioning 命令 ‘盗取’ 本地节点。清除标志为允许节点被盗,在这种情况下,它会离开当前网络并加入另一个网络或形成一个新的分布式网络,如 TL 发起者所指示的那样。
bLeaveRequested
这是 NXP 私有的标志,应用程序应该只读而不写入。如果 TL commissioning 操作导致 ZBD 发起网络离开,则该标志由 BD 设置。当生成 stack 事件 ZPS_EVENT_NWK_LEAVE_CONFIRM 时,应用程序应该读取此标志,如果它为 TRUE,则应用程序不应处理该事件(因为 ZBD 将处理该事件)。