NXP Zigbee 3.0 软件开发流程 - 设备权限机制分析
在 ZigBee 网络中,我们有时候不希望别人的设备加入我们的 ZigBee 网络,我们可以禁用新加入设备的权限,先验证是否我们的设备,再恢复权限的方式,来限制新加入网络的设备。
下面来讲解在 NXP ZigBee 3.0 协议栈中的设备权限机制。
我们可以使用函数 zps_eAplZdoSetDevicePermission() 在本地设备上设置某些权限。这些权限如下: 权限许可枚举 | 描述 | zps_DEVICE_PERMISSIONS_ALL_PERMITED | 允许所有来自其他节点的请求 | zps_DEVICE_PERMISSIONS_JOIN_DISALLOWED | 不允许来自其他节点的入网请求 | zps_DEVICE_PERMISSIONS_DATA_REQUEST_DISALLOWED | 不允许来自其他节点的数据请求轮询以及关闭端到端响应 |
当允许设备加入网络时,默认设置 ALL_PERMITED 选项,所以设备可以响应来自其他节点的请求。 然而,如果网络使用 ZigBee 密钥建立集群(the Key Establishment cluster)(例如一个智能能源网络),在新节点加入网络的密钥建立过程中,有必要禁止新加入节点上的数据请求轮询和端到端响应。应用必须实现如下的过程: 1. 一旦发生事件表明设备已加入网络(事件 zps_EVENT_NWK_JOINED_AS_ROUTER 或 zps_EVENT_NWK_JOINED_AS_ENDDEVICE),应用程序必须通过调用 zps_eAplZdoSetDevicePermission() 函数中的 DATA_REQUEST_DISALLOWED 权限来禁止数据请求轮询和 APS 的端到端响应。
2. 然后,可以使用为密钥建立集群(the Key Establishment cluster)提供的函数启动密钥建立过程
3. 一旦密钥的建立过程成功完成,数据请求轮询和 APS 端到端响应可以通过调用 zps_eAplZdoSetDevicePermission() 函数中的 ALL_PERMITED 权限再次允许。
密钥建立集群(the Key Establishment cluster)和相关资源在文档密钥建立集群(the Key Establishment cluster)中有充分的说明(例如在 ZigBee 智能能源用户指南中)。
参考资料《 JN-UG-3113 ZigBee 3.0 Stack User Guide v1.5.pdf 》 Page 111 – 5.10.4 |