我是靠谱客的博主 壮观可乐,最近开发中收集的这篇文章主要介绍Zigbee Cluster Library(ZCL) 解读,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文转自:http://blog.sina.com.cn/s/blog_682c514601014juk.html
Zigbee Cluster Library(ZCL)(Zigbee簇群库)[Z-Stack ZCL API_F8W-2006-0020_.pdf]



一、ZCL是Zigbee 1.1(Zigbee2006)协议版本中增加的一个重要的部分。在Zigbee中,一个簇群就是一个容器,在容器中以命令结构体包含了一个或多个属于某个应用剖面的属性/消息,不管应用剖面如何,相同的设备(比如开关)拥有相同的定义和功能。属性是设备的变量或特性,能够设置或获得。比如设置自动调温器的加热点。ZCL提供了一种机制,利用这种机制设备能够将变化异步地报告给属性(attribute),比如当空气变热时自动控温器服务器就将室温改变报告给他的客户端,这个过程不需要客户端发起请求。
ZCL 采用客户端/服务器模块的模式,一般储存簇属性的作为服务器影响或操作属性的作为客户端。然而如果需要,属性也可以呈现在客户端上。例如,设备通过读写属性的命令来操作属性,这些命令从客户端设备发送到服务器设备;对这些命令的应答从服务器设备发送到客户端设备;但是报告属性命令是从服务器发送到客户端。
cluster ID是每个簇的标志,由剖面分配,在内部使用的是逻辑簇ID,所以还有一个Cluster ID转换表。

[cpp]  view plain  copy
  1. typedef struct  
  2. {  
  3.   uint16 attrId;       // Attribute ID  
  4.   uint8 dataType;      // Data Type - defined in AF.h  
  5.   uint8 accessControl; // Read/write - bit field  
  6.   void *dataPtr;       // Pointer to data field  
  7. } zclAttribute_t;  
  8.    
  9. typedef struct  
  10. {  
  11.   uint16 clusterID;    // Real cluster ID  
  12.   zclAttribute_t attr;  
  13. } zclAttrRec_t;  
  14.    
  15. typedef struct  
  16. {  
  17.   zclGCB_BasicReset_t pfnBasicReset;  // Basic Reset  
  18.   zclGCB_Identify_t pfnIdentify;      // Identify Response  
  19.   zclGCB_IdentifyQueryRsp_t pfnIdentifyQueryRsp; // Identify Query Rsp  
  20.   zclGCB_OnOff_t pfnOnOff;            // On/Off cluster  
  21.   zclGCB_LevelControlMoveToLevel_t pfnLevelControlMoveToLevel; // MoveToLevel  
  22.   zclGCB_LevelControlMove_t pfnLevelControlMove; // Move  
  23.   zclGCB_LevelControlStep_t pfnLevelControlStep; // Step  
  24.   zclGCB_LevelControlStop_t pfnLevelControlStop; // Stop  
  25.   zclGCB_GroupRsp_t pfnGroupRsp;             // Group Response  
  26.   zclGCB_SceneStoreReq_t pfnSceneStoreReq;   // Scene Store Request  
  27.   zclGCB_SceneRecallReq_t pfnSceneRecallReq; // Scene Recall Request  
  28.   zclGCB_SceneRsp_t pfnSceneRsp;             // Scene Response  
  29.   zclGCB_Alarm_t pfnAlarm;                   // Alarm Req & Rsp  
  30.   zclGCB_Location_t pfnLocation;             // RSSI Location  
  31.   zclGCB_LocationRsp_t pfnLocationRsp;       // RSSI Location Rsp  
  32. } zclGeneral_AppCallbacks_t;  

创建一个ZCL应用至少需要创建4个模块:
  • zcl_<appname>.h 应用的定义,应用的终端也定义在此
  • zcl_<appname>_data.c 数据定义和声明,包含以下内容:
             应用支持的所有簇属性;
             属性表中每个属性包含一个zclAttrRec_t类型的入口;
             分别包含应用指定的输入和输出cluster ID的输入cluster ID表和输出cluster ID表,这些表将和简单描述表一起使用;
             SimpleDescriptionFormat_t[AF.h]类型的简单描述表。
  • zcl_<appname>.c
             endPointDesc_t[AF.h]类型的应用终端表声明;
             创建用以处理来自ZCL簇的命令的命令回调函数,这些函数和命令回调表一起使用;
             ZCL功能域(functional domains)的应用命令回调表声明。通用功能域的表类型为:zclGeneral_AppCallbacks_t[zcl_general.h];
             为应用任务创建应用初始化函数void zcl<AppName>_Init( byte task_id );此函数应该注册:
             1、相应功能域的命令回调表,zclGeneral_RegisterCmdCallbacks()[zcl_general.c]用来注册通用簇命令回调;
             2、用zcl_registerAttrList()[zcl.c]注册应用属性列表;
             3、用afRegister()[AF.h]注册应用终端;
             4、用RegisterForKeys()[OnBoard.c]注册所有处理按键事件的应用任务;
             5、用zclHA_Init()[zcl_ha.c]注册HA剖面层的应用简单描述。
             创建用于接收和处理消息以及应用任务队列中关键事件的函数uint16 zcl<AppName>_event_loop( uint8 task_id, uint16 events )。
  • OSAL_<AppName>.c
             此模块应该包含void osalAddTasks( void )函数,此函数包含添加到任务列表中的应用所需的任务和应用任务本身。使用osalTaskAdd()[OSAL_Tasks.c]来完成任务的添              加。在 此展示一个最小的任务列表,他们的添加顺序是一个简单ZCL应用所需的:
            1. HAL
            2. MAC
            3. Network
            4. APS
            5. ZD Application
            6. ZCL

            7. ZCL Application


二、功能层

1、功能层提供了操作属性和其他一般任务的一般命令:
[cpp]  view plain  copy
  1. Read attributes  
  2. Read attributes response  
  3. Write attributes  
  4. Write attributes undivided  
  5. Write attributes response  
  6. Write attributes no response  
  7. Configure reporting  
  8. Configure reporting response  
  9. Read reporting configuration  
  10. Read reporting configuration response  
  11. Report attributes  
  12. Default response  
  13. Discover attributes  
  14. Discover attributes response  
2、通用功能域包含以下簇:
[cpp]  view plain  copy
  1.  Basic  
  2.  Power Configuration  
  3.  Device Temperature Configuration  
  4. Identity  
  5. Groups  
  6. Scenes  
  7. On/Off  
  8. On/Off Switch Configuration  
  9. Level Control  
  10. Alarms  
  11. Time  
  12. RSSI Indication  
在文档的最后给出了ZCL的编译选项,也就是控制使用哪些ZCL功能的预编译项。

最后

以上就是壮观可乐为你收集整理的Zigbee Cluster Library(ZCL) 解读的全部内容,希望文章能够帮你解决Zigbee Cluster Library(ZCL) 解读所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部