zigbee zcl规范及其协议栈实现1

http://www.cnblogs.com/-song/archive/2013/03/16/3331818.html

refer to ZigBee_Cluster_Library_Public_download_version

1.zcl 分为几个不同的功能领域,
每个领域霸占一部分clusterid

比如通用领域有如下的clusterid




........
在协议栈的zcl.h中有对这些clusterid定义,对应上面的文档,但是不完整

  1. // General Clusters
  2. #define ZCL_CLUSTER_ID_GEN_BASIC                             0x0000
  3. #define ZCL_CLUSTER_ID_GEN_POWER_CFG                         0x0001
  4. #define ZCL_CLUSTER_ID_GEN_DEVICE_TEMP_CONFIG                0x0002
  5. #define ZCL_CLUSTER_ID_GEN_IDENTIFY                          0x0003
  6. #define ZCL_CLUSTER_ID_GEN_GROUPS                            0x0004
  7. #define ZCL_CLUSTER_ID_GEN_SCENES                            0x0005
  8. #define ZCL_CLUSTER_ID_GEN_ON_OFF                            0x0006
  9. #define ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG              0x0007
  10. #define ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL                     0x0008
  11. #define ZCL_CLUSTER_ID_GEN_ALARMS                            0x0009
  12. #define ZCL_CLUSTER_ID_GEN_TIME                              0x000A
  13. #define ZCL_CLUSTER_ID_GEN_LOCATION                          0x000B
  14. #define ZCL_CLUSTER_ID_GEN_KEY_ESTABLISHMENT                 0x0800
  15. // Closures Clusters
  16. #define ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIG                 0x0100
  17. // HVAC Clusters
  18. #define ZCL_CLUSTER_ID_HVAC_PUMP_CONFIG_CONTROL              0x0200
  19. #define ZCL_CLUSTER_ID_HAVC_THERMOSTAT                       0x0201
  20. #define ZCL_CLUSTER_ID_HAVC_FAN_CONTROL                      0x0202
  21. #define ZCL_CLUSTER_ID_HAVC_DIHUMIDIFICATION_CONTROL         0x0203
  22. #define ZCL_CLUSTER_ID_HAVC_USER_INTERFACE_CONFIG            0x0204
  23. // Lighting Clusters
  24. #define ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL                0x0300
  25. #define ZCL_CLUSTER_ID_LIGHTING_BALLAST_CONFIG               0x0301
  26. // Measurement and Sensing Clusters
  27. #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT            0x0400
  28. #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_LEVEL_SENSING_CONFIG   0x0401
  29. #define ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT            0x0402
  30. #define ZCL_CLUSTER_ID_MS_PRESSURE_MEASUREMENT               0x0403
  31. #define ZCL_CLUSTER_ID_MS_FLOW_MEASUREMENT                   0x0404
  32. #define ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY                  0x0405
  33. #define ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING                  0x0406
  34. // Security and Safety (SS) Clusters
  35. #define ZCL_CLUSTER_ID_SS_IAS_ZONE                           0x0500
  36. #define ZCL_CLUSTER_ID_SS_IAS_ACE                            0x0501
  37. #define ZCL_CLUSTER_ID_SS_IAS_WD                             0x0502
  38. // Protocol Interfaces
  39. #define ZCL_CLUSTER_ID_PI_GENERIC_TUNNEL                     0x0600
  40. #define ZCL_CLUSTER_ID_PI_BACNET_PROTOCOL_TUNNEL             0x0601
  41. #define ZCL_CLUSTER_ID_PI_11073_PROTOCOL_TUNNEL              0x0614
  42. // Advanced Metering Initiative (SE) Clusters
  43. #define ZCL_CLUSTER_ID_SE_PRICING                            0x0700
  44. #define ZCL_CLUSTER_ID_SE_LOAD_CONTROL                       0x0701
  45. #define ZCL_CLUSTER_ID_SE_SIMPLE_METERING                    0x0702
  46. #define ZCL_CLUSTER_ID_SE_MESSAGE                            0x0703
  47. #define ZCL_CLUSTER_ID_SE_REGISTRATION                       0x0704
  48. #define ZCL_CLUSTER_ID_SE_SE_TUNNELING                       0x0705
  49. #define ZCL_CLUSTER_ID_SE_PRE_PAYMENT                        0x0706

2.每个clusterid由一些属性集合和命令集合组成
比如
general领域的basic clusterid就有以下这么多的属性(分为了两部分,基本设备信息和设备配置信息)


general领域的basic clusterid还有1个命令

clusterid的属性和命令在协议栈的实现,比如general领域的basic clusterid,位于zcl_general.h

  1. /********************************/
  2. /*** Basic Cluster Attributes ***/
  3. /********************************/
  4. // Basic Device Information
  5. #define ATTRID_BASIC_ZCL_VERSION                          0x0000
  6. #define ATTRID_BASIC_APPL_VERSION                         0x0001
  7. #define ATTRID_BASIC_STACK_VERSION                        0x0002
  8. #define ATTRID_BASIC_HW_VERSION                           0x0003
  9. #define ATTRID_BASIC_MANUFACTURER_NAME                    0x0004
  10. #define ATTRID_BASIC_MODEL_ID                             0x0005
  11. #define ATTRID_BASIC_DATE_CODE                            0x0006
  12. #define ATTRID_BASIC_POWER_SOURCE                         0x0007
  13. // Basic Device Settings
  14. #define ATTRID_BASIC_LOCATION_DESC                        0x0010
  15. #define ATTRID_BASIC_PHYSICAL_ENV                         0x0011
  16. #define ATTRID_BASIC_DEVICE_ENABLED                       0x0012
  17. #define ATTRID_BASIC_ALARM_MASK                           0x0013
  18. ...
  19. /******************************/
  20. /*** Basic Cluster Commands ***/
  21. /******************************/
  22. #define COMMAND_BASIC_RESET_FACT_DEFAULT                  0x00
  23. <span style="font-family:SimSun;">
  24. </span>

各个领域的clusterid和属性分别位于
zcl_general.h-通用
zcl_closures.h-室内or 门禁?
zcl_hvac.h-空调
zcl_lighting.h-照明
zcl_ms.h-Measurements and Sensing
zcl_ss.h
zcl_pi.h

有了clusterid的属性的宏定义,还需对属性配置(赋值)
比如,zcl_samplelight.c中对clusterid ZCL_CLUSTER_ID_GEN_BASIC的各个属性进行的配置:

  1. CONST zclAttrRec_t zclSampleLight_Attrs[SAMPLELIGHT_MAX_ATTRIBUTES] =
  2. {
  3. // *** General Basic Cluster Attributes ***
  4. {
  5. ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
  6. {  // Attribute record
  7. ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
  8. ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
  9. ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
  10. (void *)&zclSampleLight_HWRevision  // Pointer to attribute variable
  11. }
  12. },
  13. {
  14. ZCL_CLUSTER_ID_GEN_BASIC,
  15. { // Attribute record
  16. ATTRID_BASIC_ZCL_VERSION,
  17. ZCL_DATATYPE_UINT8,
  18. ACCESS_CONTROL_READ,
  19. (void *)&zclSampleLight_ZCLVersion
  20. }
  21. },
  22. {
  23. ZCL_CLUSTER_ID_GEN_BASIC,
  24. { // Attribute record
  25. ATTRID_BASIC_MANUFACTURER_NAME,
  26. ZCL_DATATYPE_CHAR_STR,
  27. ACCESS_CONTROL_READ,
  28. (void *)zclSampleLight_ManufacturerName
  29. }
  30. },
  31. {
  32. ZCL_CLUSTER_ID_GEN_BASIC,
  33. { // Attribute record
  34. ATTRID_BASIC_MODEL_ID,
  35. ZCL_DATATYPE_CHAR_STR,
  36. ACCESS_CONTROL_READ,
  37. (void *)zclSampleLight_ModelId
  38. }
  39. },
  40. {
  41. ZCL_CLUSTER_ID_GEN_BASIC,
  42. { // Attribute record
  43. ATTRID_BASIC_DATE_CODE,
  44. ZCL_DATATYPE_CHAR_STR,
  45. ACCESS_CONTROL_READ,
  46. (void *)zclSampleLight_DateCode
  47. }
  48. },
  49. {
  50. ZCL_CLUSTER_ID_GEN_BASIC,
  51. { // Attribute record
  52. ATTRID_BASIC_POWER_SOURCE,
  53. ZCL_DATATYPE_UINT8,
  54. ACCESS_CONTROL_READ,
  55. (void *)&zclSampleLight_PowerSource
  56. }
  57. },
  58. {
  59. ZCL_CLUSTER_ID_GEN_BASIC,
  60. { // Attribute record
  61. ATTRID_BASIC_LOCATION_DESC,
  62. ZCL_DATATYPE_CHAR_STR,
  63. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  64. (void *)zclSampleLight_LocationDescription
  65. }
  66. },
  67. {
  68. ZCL_CLUSTER_ID_GEN_BASIC,
  69. { // Attribute record
  70. ATTRID_BASIC_PHYSICAL_ENV,
  71. ZCL_DATATYPE_UINT8,
  72. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  73. (void *)&zclSampleLight_PhysicalEnvironment
  74. }
  75. },
  76. {
  77. ZCL_CLUSTER_ID_GEN_BASIC,
  78. { // Attribute record
  79. ATTRID_BASIC_DEVICE_ENABLED,
  80. ZCL_DATATYPE_BOOLEAN,
  81. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  82. (void *)&zclSampleLight_DeviceEnable
  83. }
  84. },
  85. // *** Identify Cluster Attribute ***
  86. {
  87. ZCL_CLUSTER_ID_GEN_IDENTIFY,
  88. { // Attribute record
  89. ATTRID_IDENTIFY_TIME,
  90. ZCL_DATATYPE_UINT16,
  91. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  92. (void *)&zclSampleLight_IdentifyTime
  93. }
  94. },
  95. // *** On/Off Cluster Attributes ***
  96. {
  97. ZCL_CLUSTER_ID_GEN_ON_OFF,
  98. { // Attribute record
  99. ATTRID_ON_OFF,
  100. ZCL_DATATYPE_UINT8,
  101. ACCESS_CONTROL_READ,
  102. (void *)&zclSampleLight_OnOff
  103. }
  104. },
  105. }

3.除了clusterid的专有命令之外,还有部分通用命令,比如读取clusterid的某个属性,


在协议栈的实现,位于zcl.h

  1. /*** Foundation Command IDs ***/
  2. #define ZCL_CMD_READ                                    0x00
  3. #define ZCL_CMD_READ_RSP                                0x01
  4. #define ZCL_CMD_WRITE                                   0x02
  5. #define ZCL_CMD_WRITE_UNDIVIDED                         0x03
  6. #define ZCL_CMD_WRITE_RSP                               0x04
  7. #define ZCL_CMD_WRITE_NO_RSP                            0x05
  8. #define ZCL_CMD_CONFIG_REPORT                           0x06
  9. #define ZCL_CMD_CONFIG_REPORT_RSP                       0x07
  10. #define ZCL_CMD_READ_REPORT_CFG                         0x08
  11. #define ZCL_CMD_READ_REPORT_CFG_RSP                     0x09
  12. #define ZCL_CMD_REPORT                                  0x0a
  13. #define ZCL_CMD_DEFAULT_RSP                             0x0b
  14. #define ZCL_CMD_DISCOVER                                0x0c
  15. #define ZCL_CMD_DISCOVER_RSP                            0x0d
  16. #define ZCL_CMD_MAX                                     ZCL_CMD_DISCOVER_RSP

(转载)ZigBee zcl规范及其协议栈实现1相关推荐

  1. (转载)zigbee zcl规范及其协议栈实现2

    zigbee zcl规范及其协议栈实现2   中有介绍 对通用命令的处理,按照那个思路和信息流程添加读取服务器端属性值的功能 客户端samplesw想要知道与自己的12号端点SAMPLESW_ENDP ...

  2. zigbee zcl规范及其协议栈实现3 读取服务器端属性值

    zigbee zcl规范及其协议栈实现2   中有介绍 对通用命令的处理,按照那个思路和信息流程添加读取服务器端属性值的功能 客户端samplesw想要知道与自己的12号端点SAMPLESW_ENDP ...

  3. zigbee zcl规范及其协议栈实现2

    对通用命令的处理: 对zcl的通用命令的响应,zcl自己已经实现,比如读取某个clusterid的某个属性值,应用只需将这个属性设置好即可, 通用命令包括,zcl.h /*** Foundation ...

  4. zigbee zcl规范及其协议栈实现1

    refer to ZigBee_Cluster_Library_Public_download_version 1.zcl 分为几个不同的功能领域, 每个领域霸占一部分clusterid 比如通用领域 ...

  5. ZigBee 3.0理论教程-通用-1-09:ZCL规范与Cluster

    [源码.文档.软件.硬件.技术交流.技术支持,入口见文末] [所有相关IDE.SDK和例程源码均可从群文件免费获取,免安装,解压即用] 持续更新中,欢迎关注! 一.ZCL规范 (待补充) 二.Clus ...

  6. 【ember zigbee】序章:协议栈相关文档学习笔记

    原文地址:https://blog.csdn.net/tainjau/article/details/90648114 文章目录 写在前面 一.材料出处 二.文档解析 2.1.EZSP Protoco ...

  7. 《安富莱嵌入式周报》第310期:集成大语言模型的开源调试器ChatDBG, 多功能开源计算器,M7内核航空航天芯片评估板, Zigbee PRO规范

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  8. ZigBee无线传感器的网络协议栈

    小结: Z-Stack协议栈 = OSAL操作系统 + CC2530硬件模块 + AF无线网络应用 协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;协议栈是协议的具体实现 ...

  9. zigbee zcl如何扩展cluster、扩展命令、扩展属性

    1. 厂商扩展 zcl支持开发厂商在遵循zcl基本规范的基础上扩展每个厂商特有的内容,包含簇.簇特有的命令和属性.这个通常是很有用的,因为厂商在实现的时候总会有不一样的特色功能. 属于扩展内容的消息都 ...

最新文章

  1. 细胞内钾多钠少——原初生物的第三大遗迹?
  2. 14 岁发现 Bug 兼职游戏开发、拒绝过乔布斯,Dropbox 创始人成为科技创业者的偶像...
  3. 20172318 2016-2017-2 《Java程序设计》第一周学习总结
  4. BUU CODE REVIEW 1
  5. 成功解决Scrapy框架的问题ModuleNotFoundError: No module named 'win32api'
  6. FreeEIM 来点新知识iOS UIScrollView详解
  7. quartz的job类无法保留本身通过spring注入的属性问题
  8. C++11::lambda 的用法
  9. 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域
  10. matlab 最优化编程,Matlab最优化编程例子
  11. vasp软件全名是什么_vasp软件主要功能
  12. APISpace 全国行政区查询API 方便好用
  13. 基于CC2430的Zigbee开发套件【转】
  14. 【PC工具】可能是最好用的下载工具:IDM特点及功能汇总,IDM破解版下载,PC好用的迅雷下载版本合集...
  15. MAVEN使用中 error role: org.apache.maven.model.validation.ModelValidato...
  16. 12306泄露数据可视化分析
  17. ubuntu 18.04 LORD 3DM-GX5-45 IMU ros_mscl ros驱动安装
  18. 如何用div实现炫酷3D球体?
  19. Leetcode题347、前K个高频元素(Python题解)Amazon面试题
  20. 2021 年国产数据库名录和产品信息一览

热门文章

  1. Windows系统下的一些实用操作技巧
  2. js带参数跳转php,JS实现页面跳转参数不丢失的方法
  3. python财务入门基础培训
  4. 继电器放二极管作用(使用肖特基二极管,开关快,反向并联构成回路)
  5. 11.区块链系列之NFT从零到一开发
  6. 【鼠笼式三相交流异步电动机矢量控制变频调速系统的MATLAB建模与仿真】
  7. 奶爸日记26 - 生日祝福
  8. 做员工难,做领导更难!(只有不断学习与进步才能够带好团队)
  9. SQL课堂随笔第三章
  10. 基于模糊控制算法的快速反射镜 系统扰动抑制