打印

(转)如何用ZCL编写客户端服务器端程序

[复制链接]
822|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heimaojingzhang|  楼主 | 2018-7-24 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

代码分两个模块 , 第一个模块按如下步骤如下定义:

下面是初始化函数中要执行的步骤

1.定义zclAttrRec_t类型的数组(表示设备属性)

2.定义cId_t类型的数组(两个数组,一个表示输入cluster,一个表示输出cluster)

3.定义SimpleDescriptionFormat_t类型的变量(表示zcl层端点相关联的简单描述符)

4.定义zclGeneral_AppCallbacks_t类型的变量(表示zcl层命令的回调函数)

5.调用zclHA_Init()函数(家庭自动化profile的初始化)

6. 调用zclGeneral_RegisterCmdCallbacks()函数(向任务中注册上面定义的回调函数)

7.调用zcl_registerAttrList()函数(向任务中注册上面定义的设备属性列表)

8.调用ZDO_RegisterForZDOMsg(My_TaskID, End_Device_Bind_rsp)函数(向任务中注册End_Device_Bind_rsp事件,可以判定绑定是否成功)

9.调用ZDO_RegisterForZDOMsg( My_TaskID, Match_Desc_rsp )(向任务中注册Match_Desc_rsp 事件,可以获取与本设备绑定的设备列表中每个设备的地址信息)

之后进入消息循环,轮询应用层任务中的事件

第二个模块按照同样的方式定义

需要注意的是,如果一个设备要控制另一个设备的话,简单描述符中Prifile ID必须一致,另外作为客户端设备的输出cluster必须是服务器端设备的输入cluster

之后服务器端就可以调用zcl cluster library说明书定义的API了,例如

zclGeneral_SendOnOff_CmdOff()函数可以使客户端灯灭

zclGeneral_SendOnOff_CmdOn()函数可以使客户端灯亮

zclGeneral_SendOnOff_CmdToggle()函数可以使客户端灯的状态在灭的时候亮,在亮的时候灭

编译选项ZCL_LEVEL_CTRL里的API可以控制灯的亮度

编译选项ZCL_GROUPS里的API可以控制设备加入或离开组

其他API用法一样,直接调用即可


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

4102

帖子

4

粉丝