zigbee协议栈学习(四)
来源:互联网 发布:服务器上的java 知乎 编辑:程序博客网 时间:2024/04/29 06:52
准备开始分析代码的,突然发现还有一个重要的知识点没有讲,没办法还是得补齐,呵呵
消息提取函数
uint8 *osal_msg_receive( uint8 task_id ) //这个函数返回一个指向所需提取信息的指针属性(at tribute)
设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性。每个
属性可得到唯一的 ID,它们都用结构体来描述。
FS_Zstack\zcl .h
typedef struct
{
uint16 attrId; // Attribute ID
uint8 dataType; // Data Type - defined in AF.h
uint8 accessControl; // Read/write - bit field
void *dataPtr; // Pointer to data field
} zclAttribute_t;
typedef struct
{
uint16 clusterID; // Real cluster ID
zclAttribute_t attr;
} zclAttrRec_t;
描述符(Descriptor)
一个设备(device)可以有 240 个端点(endpoint 1~endpoint 240),每一个端点
必 须 有 一 个 端 点 描 述 符 endPointDesc, 端 点 描 述 符 里 包 括 一 个 简 单 描 述 符
SimpleDescript ionFormat,它们都用结构体来描述。
Typedef struct
{
Byte endPoint; //端点号 1-240
byte *task_id; //任务 ID号
SimpleDescriptionFormat_t *simpleDesc; //简单描述符
afNetworkLatencyReq_t latencyReq; //延时请求
} endPointDesc_t; //端点描述符
譬如:
FS_Zstack \sapi .c
对端点描述符进行初始化
sapi_epDesc.endPoint = zb_SimpleDesc.EndPoint;
sapi_epDesc.task_id = &sapi_TaskID;
sapi_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zb_SimpleDesc;
sapi_epDesc.latencyReq = noLatencyReqs;
特别的,
FS_Zstack \ZDApp.c
端点 0 的端点描述符为:
endPointDesc_t ZDApp_epDesc =
{
ZDO_EP, //端点 0 ID, 0
&ZDAppTaskID,
(SimpleDescriptionFormat_t *)NULL, // No Simple description for ZDO
(afNetworkLatencyReq_t)0 // No Network Latency req
};
typedef struct
{
byte EndPoint; //端点号 1-240
uint16 AppProfId; //支持的Profile ID
uint16 AppDeviceId; //支持的设备 ID
byte AppDevVer:4; //执行的设备描述的版本
byte Reserved:4; //保留
byte AppNumInClusters; //终端支持的输入簇数目
cId_t *pAppInClusterList; //指向输入Cluster ID 列表的指针
byte AppNumOutClusters; //终端支持的输出簇数目
cId_t *pAppOutClusterList; //指向输出Cluster ID 列表的指针
} SimpleDescriptionFormat_t; //简单描述符
1)开关设备(switch)简单描述符:
FS_Zstack\SimpleSwi tch.c
const SimpleDescriptionFormat_t zb_SimpleDesc =
{
MY_ENDPOINT_ID, // Endpoint, 0x02
MY_PROFILE_ID, // Profile ID, 0x0F10
DEV_ID_SWITCH, // Device ID, 1
DEVICE_VERSION_SWITCH, // Device Version, 1
0, // Reserved
NUM_IN_CMD_SWITCH, // Number of Input C
(cId_t *) NULL, // Input Command List
NUM_OUT_CMD_SWITCH, // Number of Output Commands, 1
(cId_t *) zb_OutCmdList // Output Command List
};
2)控制器设备(Control ler)简单描述符:
FS_Zstack \SimpleControl ler.c
const SimpleDescriptionFormat_t zb_SimpleDesc =
{
MY_ENDPOINT_ID, // Endpoint, 0x02
MY_PROFILE_ID, // Profile ID, 0x0F10
DEV_ID_CONTROLLER, // Device ID, 2
DEVICE_VERSION_CONTROLLER, // Device Version, 1
0, // Reserved
NUM_IN_CMD_CONTROLLER, // Number of Input Commands, 1
(cId_t *) zb_InCmdList, // Input Command List,
NUM_OUT_CMD_CONTROLLER, // Number of Output Commands, 0
(cId_t *) NULL // Output Command List,
};
3 0
- zigbee协议栈学习(四)
- zigbee协议栈学习(四)
- ZigBee组网学习笔记(四)--协议栈按键实验
- zigbee协议栈学习(一)
- zigbee协议栈学习(二)
- zigbee协议栈学习(三)
- zigbee协议栈学习(五)
- zigbee协议栈学习(一)
- zigbee协议栈学习(二)
- zigbee协议栈学习(三)
- zigbee协议栈学习(五)
- zigbee协议栈学习(六)
- zigbee协议栈学习(0)
- zigbee之协议栈学习(一)
- zigbee协议栈应用(四)广播组网-无线数据传输
- Zigbee协议栈学习实例
- zigbee协议学习(一)
- Zigbee学习(一)之新建Zstack协议栈工程
- [转] iOS --- 应用架构谈之二: View层的组织和调用方案
- alpha测试和beta测试
- Activity的生命周期的运行情况
- 九度1106
- 1040: [ZJOI2008]骑士
- zigbee协议栈学习(四)
- 沉痛记下这次与 mysql 的交锋,以全面溃败结束
- hive select查询语句
- js常用内置方法和对象
- Unity Shader UV动画(序列帧动画)
- iOS绘制渐变背景滑动条
- window对象
- Android-教你自作一个简单而又实用的流式Tag标签布局
- 台积电砸1000亿元建12英寸晶圆厂:2018年量产--OFweek