ZigBee HA示例程序分析
ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好。下面就简要分析以下ZCL的使用。
在任务数组中,多定义了zcl层。
//OSAL_SampleSw.c
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_ProcessEvent,
#if defined( MT_TASK )
MT_ProcessEvent,
#endif
APS_event_loop,
#if defined ( ZIGBEE_FRAGMENTATION )
APSF_ProcessEvent,
#endif
ZDApp_event_loop,
#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
ZDNwkMgr_event_loop,
#endif
zcl_event_loop,
zclSampleSw_event_loop
};
既然是zcl的事件循环,那就肯定有zcl的初始化函数如下:
//ZCL.c
void zcl_Init( uint8 task_id )
{
zcl_TaskID = task_id; plugins = (zclLibPlugin_t *)NULL;
attrList = (zclAttrRecsList *)NULL;
clusterOptionList = (zclClusterOptionList *)NULL;
}
ZCL层仅仅是指定一个任务号,初始化ZCL的一些全局变量。
要符合HA规范,那么,在填充本地端点描述符时,就要符合相应的要求。其中最重要的是这句话
epDesc->task_id = &zcl_TaskID; // all messages get sent to ZCL first
这表明,符合HA profile规范的设备,在接收数据时,首先会经过ZCL层的处理。
对于一些常用的命令,ZCL已经绑定好命令与其响应回调函数的关系,在通用族库里面已经定义好。
每一个簇包含簇ID和对应的属性。
处理收到的数据包ZCL_INCOMING_MSG:
zclSampleSw_ProcessIncomingMsg,通过commandID来进行不同的处理。
处理ZDO的消息函数ZDO_CB_MSG:
给任务指定End_Device_Bind_rsp 和Match_Desc_rsp 的响应。
ZDO_RegisterForZDOMsg( zclSampleSw_TaskID, End_Device_Bind_rsp );
ZDO_RegisterForZDOMsg( zclSampleSw_TaskID, Match_Desc_rsp )
zclSampleSw_ProcessZDOMsgs,该函数处理在初始化时绑定的ZDO消息请求与响应函数。
处理键盘的响应函数KEY_CHANGE:
zclSampleSw_HandleKeys
SW_1按键:按下会发送一个切换灯状态的命令
SW_2按键: 启动终端设备绑定请求,ZDP_EndDeviceBindReq
SW_4按键:协调器按下SW_4,允许绑定请求。ZDP_MatchDescReq
最新文章
- JavaScript测试题
- union和union all的区别
- 关于import caffe出错的解决
- Python操作Excel之xlwt
- struts2拦截器
- NBU bplabel命令擦除磁帶數據
- 修改 Semantic UI 的默认字体
- Squid代理之反向代理
- 限制<;input>;输入内容 只允许数字 或者 字母
- C++的64位整数
- cocos2d-x创建新项目模板
- 2015网易校招Java开发工程师(技术架构)在线笔试题
- java 显示视频时间--玩的
- Jdbc、Mybatis、Hibernate各自优缺点及区别
- C++ vector动态数组
- 《Linux内核原理与分析》第五周作业
- 封装fetch的使用(包含超时处理)
- ABAP中不修改内表参照的结构,给内表/结构体增加字段
- pyhon类继承
- PAT——1026. 程序运行时间
热门文章
- CentOS 6.0 图形(图解)安装教程
- 关于删除7z历史解压路径
- WPF 之 TreeView右键选中节点及节点重命名
- c#入门实例
- Windows8不联网直接安装.Net 3.5 Framework的方法
- DML 数据操控语言
- eclipse bookmark的使用
- 怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
- 剑指Offer06 旋转数组的最小值
- hdu-5690 All X(快速幂+乘法逆元)