ZigBee学习笔记一端口号命令簇

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主要解决的问题如何使用不同的命令号发送不同长度的的数据
第一部分一些概念
如图所示是一个节点设备上的
端口号(endpoint)
它是一个8位的字段,描述一个射频端所支持的不同应
用。

端口0x00:用于寻址设备配置文件,这是每个ZigBee
设备必须使用的端口;
端点0xff:用于寻址所有活动端口;
端口0xf1~0xfe:保留;
端口0x01~0xf0:共支持240个应用,即一个物理信
道最多支持240个虚拟链路。

图中还用另一个概念簇
簇(cluster)
多个属性的汇集形成了簇,簇是属性的集合,每个簇
也拥有一个唯一的ID。

譬如,FS_ZStack\
SimpleSwitch.c
const cId_t zb_OutCmdList[NUM_OUT_CMD_SWITCH]
= //输出簇列表
{
TOGGLE_LIGHT_CMD_ID //簇ID, 1
};
FS_Zstack\SimpleController.c
const cId_t
zb_InCmdList[NUM_IN_CMD_CONTROLLER] = //输入
簇列表
{
TOGGLE_LIGHT_CMD_ID //簇ID, 1
};
cId_t=uint16,
端口的描述
第一步,定义一个结构体用来描述端口endPointDesc_t GenericApp_epDesc; //结构体类型变量
第二步初始化端口参数
要完整的描述一个端口,分为两部分(1)endPointDesc_t端口描述(2)简单端口描述SimpleDescriptionFormat_t
其实2是包含在1里面的只是由于2比较多就单独列出来了。

下面是2的具体内容
探明数据包内容
1发送出去的数据是什么样子的
第一步数据发送使用的是协议栈的发送函数
内容包括了,目的地址
目的节点上的那个端口
簇里面的命令号
要发送的数据长度
要发送的数据地址
发送的数据序列号
第二步数据被接收后被解析成什么样子
可以通过一个结构体看明白数据被接受过来以后到底是什么样子
事件头很重要,它用来判断消息类型
簇里面的命令号
存储端口号
链路质量
数据具体位置很重要
上面说到的两个很重要的成员在应用层程序里都有体现
本想用两个命令号来区分不同的消息,但是好像不行!未完待续!
第二部分消息队列
从上面的讲解中我们了解了发送的无线数据、接收到的无线数据的样子。

但对于接收到的数据存储在什么地方,还是不太清楚,下面探索数据到底存储于何处该怎样调用数据的不同部分。

1.无线消息来了之后,协议栈是通过一个函数将这个消息
红色的下划线是一个和消息数据类型一样类型符,这样指针就指向了这个消息,通过判断事件头类型来
敲定所来消息是何种类型的消息,
通过判断消息簇里命令编号来识别是哪一个命令。

第三部分能解决的问题
如果我们想让终端节点向协调器发送不同长度的数据,并且协调器要根据所发送的不同数据做出不同的反应。

第一步,协调器编程
第二步终端程序
第四部分结果。

相关文档
最新文档