




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ZigBee2007协议栈API函数使用说明第一章第二章 介绍 . 4 应用函数接口(API). 52.1设备对象(ZDO) . 52.1.1 概述 . 52.1.2 ZDO网络设备启动 . 52.1.3 ZDO信息回调函数 . 72.1.3 .1 ZDO_RegisterForZDOMsg() . 72.1.3 .2 ZDO_RemoveRegistedCB() . 92.1.4 ZDO发现API . 102.1.4.1 ZDP_NwkAddrReq() . 112.1.4.2 ZDP_NWKAddrRsp() . 122.1.4.3 网络地址请求和响应应用举例分析 . 132.1.4.4
2、ZDP_IEEEAddrReq() . 142.1.4.5 ZDP_IEEEAddrRsp() . 152.1.4.6 IEEE地址请求和响应应用举例分析 . 162.1.4.7 ZDP_NodeDescReq() . 172.1.4.8 ZDP_NodeDescMsg() . 182.1.4.9节点描述符请求和响应应用举例分析 . 182.1.4.10 ZDP_PowerDescReq() . 202.1.4.11 ZDP_PowerDescMsg() . 202.1.4.12电源描述符请求和响应应用举例分析 . 212.1.4.13 ZDP_SimpleDescReq() . 222.1.
3、4.14 ZDP_SimpleDescMsg() . 232.1.4.15简单描述符请求和响应应用举例分析 . 232.1.4.16 ZDP_ActiveEPIFReq () . 242.1.4.17 ZDP_ActiveEPIFRsp() . 252.1.4.18活动端点请求和响应应用举例分析 . 262.1.4.20 ZDP_MatchDescRsp() . 272.1.4.21匹配描述符请求和响应应用举例分析 . 282.1.4.22 ZDP_DeviceAnnce () . 292.1.5 ZDO绑定API . 302.1.5.1 ZDP_EndDeviceBindReq () . 3
4、12.1.5.2 ZDP_EndDeviceBindRsp () . 322.1.5.3 终端设备绑定请求和响应应用举例分析 . 322.1.5.4 ZDP_BindReq () . 332.1.5.5 ZDP_BindRsp () . 342.1.5.6绑定请求和响应应用举例分析 . 342.2应用框架(AF) . 362.2.1概述 . 362.2.2 端点管理 . 362.2.2.1 afRegister() . 362.2.2.2 afFindEndPointDesc() . 372.2.2.3 afFindSimpleDesc(). 382.2.2.4 afGetMatch() .
5、382.2.2.4 afSetMatch() . 392.2.3 发送数据 . 392.2.3.1 AF_DataRequest() . 392.2.4 接收数据 . 402.3应用支持子层(APS) . 422.3.1 绑定表管理. 422.3.2 组表管理 . 422.3.2.1 aps_AddGroup( ) . 432.3.2.2 aps_RemoveGroup( ). 432.3.2.3 aps_FindGroup( ) . 442.4网络层(NWK) . 442.4.1 网络管理 . 442.4.1.1 NLME_NetworkFormationRequest() . 442.4.
6、1.2 网络层-组建网络请求举例分析 . 452.4.1.3 NLME_NetworkDiscoveryRequest() . 462.4.1.4网络层-发现网络请求举例分析 . 472.4.1.5 NLME_JoinRequest(). 492.4.1.6网络层-加入网络请求举例分析 . 492.4.1.7 NLME_ReJoinRequest() . 502.4.1.8网络层-重新加入网络请求举例分析 . 512.4.1.9 NLME_OrphanJoinRequest() . 512.4.1.10网络层-孤立节点连接父节点请求举例分析 . 522.4.1.11 NLME_StartRou
7、terRequest() . 532.4.1.12网络层-路由器启动请求举例分析. 532.4.2 地址管理 . 542.4.2.1 NLME_GetExtAddr() . 542.4.2.2 NLME_GetShortAddr() . 552.4.2.3 NLME_GetCoordShortAddr() . 552.4.2.4 NLME_GetCoordExtAddr() . 562.4.2.5 NLME_IsAddressBroadcast() . 562.4.2.6 NLME_SetBroadCastFilter() . 56第一章 介绍这份文档为目前发布的ZigBee 2007协议栈提
8、供了应用程序接口函数(API)的使用说明。为使得我们更好地开发和理解ZigBee项目,这份文档详细的讲述了协议栈中的数据结构和函数调用。首先,我们来了解一下在ZigBee 2007协议栈中使用的各个层次:l ZDO设备对象层,即ZDO(ZigBee Device Object)层,提供了管理一个ZigBee节点所要使用的功能函数。ZDO API为协调器、路由器和终端设备提供了应用端点的管理函数,其中包括:建立、发现和加入一个ZigBee网络,绑定应用端点和安全管理。l AF应用框架层,即AF(Application Framework),提供了针对协议栈的应用端点(EndPoint1240)和
9、设备对象端点(EndPoint0)接口,其中主要包含:设备描述数据结构和数据收、发函数。 l APS应用支持子层,即APS(Application Support Sublayer),为设备对象和应用实体提供了一系列的支持服务。l NWK网络层,即NWK(ZigBee network),为上层提供了管理服务和数据服务。l ZMAC介质访问层,即ZMAC,在802.15.4 MAC 与 网络层之间提供接口。第二章 应用函数接口(API)接下来我们讲述的应用函数接口主要包含一些经常使用的数据结构和各层提供的关键性函数。2.1设备对象(ZDO)本节列举出了在ZigBee设备规范,即ZigBee De
10、vice Profile(ZDP),所定义的相关命令和响应函数。2.1.1 概述ZDP描述了ZDO内部一般性的ZigBee设备功能是如何实现的。它定义了使用命令和响应对的设备描述和簇。ZDP为ZDO和应用程序提供如下功能:l 设备网络启动l 设备和服务发现l 终端设备绑定、绑定和取消绑定服务l 网络管理服务 2.1.2 ZDO网络设备启动通过默认的ZDApp_Init()(在ZDApp.c中)启动ZigBee网络中的设备。但是一个应用程序可以跳过这个默认行为:ZDApp.c其中HOLD_AUTO_START在IAR ->Project->Option->C/C+ Compil
11、e->Preprocess->Defined symbols中定义。如果预编译选择HOLD_AUTO_START,则ZDO不启动网络设备,只是闪烁LED4。交由应用程序启动网络设备。ZDApp.cZDOInitDevice()具体描述如下:函数原型:uint8 ZDOInitDevice( uint16 startDelay );参数:startDelay 设备启动延时(毫秒)返回值:ZDO_INITDEV_RESTORED_NETWORK_STATE(网络状态为恢复)ZDO_INITDEV_NEW_NETWORK_STATE (网络状态为初始化)ZDO_INITDEV_LEAVE
12、_NOT_STARTED (网络状态为未启动)举例分析:2.1.3 ZDO信息回调函数通过函数ZDO_RegisterForZDOMsg()注册请求或响应消息,这样就可以接收其他设备无线传输的消息。2.1.3 .1 ZDO_RegisterForZDOMsg()调用该函数可以将接收到的无线传输信息复制一份到OSAL层的某个任务。该任务接收到消息后可以自行解析此消息或者通过ZDO解析函数解析此消息。只有响应消息需要使用ZDO解析函数。 函数原型:ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID );参数:taskID
13、-任务ID,该任务发送OSAL 消息;clustered-簇ID (例如: NWK_addr_rsp),在 ZDProfile.h定义了相关的簇.返回值:ZStatus_t-状态消息接收到之后作为ZDO_CB_Msg(一种系统消息)发送至应用或者任务,消息结构体zdoIncomingMsg_t 定义在ZDProfile.h中:消息结构体zdoIncomingMsg_t:在应用层使用该函数注册的消息有:调用ZDO_RegisterForZDOMsg()在应用层注册后,应用层处理接收到的消息方式如下:在ZDO层使用该函数注册的消息有:调用ZDO_RegisterForZDOMsg()在ZDO层注册
14、后,ZDO层处理接收到的消息方式如下: 2.1.3 .2 ZDO_RemoveRegistedCB()调用此函数取消请求无线传输的消息。函数原型:ZStatus_t ZDO_RemoveRegistedCB ( uint8 taskID, uint16 clusterID );参数:taskID -任务ID,该任务ID必须与ZDO_RegisterForZDOMsg()所注册的任务ID相同;clustered-簇ID,该簇ID必须与ZDO_RegisterForZDOMsg()所使用的簇ID相同。返回值:ZStatus_t-状态2.1.4 ZDO发现APIZDO发现API包含建立和发送ZDO设
15、备和服务发现请求和响应。所有这些API函数和ZDP命令(ZigBee Device Profile Command)如下表:2.1.4.1 ZDP_NwkAddrReq()调用此函数将生成一个根据已知IEEE地址询问远程节点16位网络地址的消息。这个消息作为一个广播消息发送至网络中的所有节点。函数原型:afStatus_t ZDP_NwkAddrReq( byte *IEEEAddress, byte ReqType, byte StartIndex, byte SecuritySuite ); 参数:IEEEAddress-远程节点的IEEE地址ReqType- ZDP_NWKADDR_RE
16、QTYPE_SINGLE(只返回节点的短地址和扩展地址)、ZDP_NWKADDR_REQTYPE_EXTENDED(返回节点的短地址和扩展地址以及所有相关节点的短地址)StartIndex-响应节点的响应信息可以有很多的响应选项,请求程序可以指定一个起始索引号,索引从0开始SecuritySuite 安全要求返回值:ZStatus_t-状态2.1.4.2 ZDP_NWKAddrRsp()ZDP_NWKAddrRsp()实际上是调用ZDP_ADDRRsp()这个宏定义,用于建立和发送16位网络地址响应。函数原型:afStatus_t ZDP_NWKAddrRsp( byte TranSeq, z
17、AddrType_t *dstAddr, byte Status,byte *IEEEAddrRemoteDev, byte ReqType, uint16 nwkAddr, byte NumAssocDev, byte StartIndex, uint16 *NWKAddrAssocDevList, byte SecuritySuite );参数:TranSeq-传输序号DstAddr-目的地址Status - ZDP_SUCCESS=0,ZDP_INVALID_REQTYPE=1,ZDP_DEVICE_NOT_FOUND=2 IEEEAddrRemoteDev 远程节点的64位IEEE地址
18、ReqType 请求的类型nwkAddr 远程节点的16位网络地址NumAssocDev 与远程节点关联的节点数目StartIndex 响应节点的响应信息可以有很多的响应选项,请求程序可以指定一个起始索引号,该索引号是响应信息的起始索引号NWKAddrAssocDevList 与远程节点关联的节点16位网络地址列表 SecuritySuite 安全要求返回值:ZStatus_t-状态2.1.4.3 网络地址请求和响应应用举例分析本地节点首先需要在应用层或ZDO层注册响应信息,本例中在sapi.c中注册了NWK_addr_rsp信息。然后调用ZDP_NwkAddrReq()请求远程节点的网络地址
19、。远程节点接收到该请求信息(该信息从属于AF_DATA_CONFIRM_CMD),则根据Cluster ID选择处理函数,本例中使用zdpProcessAddrReq()来处理网络地址请求。当处理完之后,通过调用fillAndSend()将响应信息发送至本地节点。由于在应用层中注册了该响应信息,因此调用SAPI_ProcessZDOMsgs()来处理响应信息。详细流程如下图所示:2.1.4.4 ZDP_IEEEAddrReq()调用此函数将生成一个根据已知16位网络地址询问远程节点64位IEEE地址的消息。这个消息直接单播发送至该远程节点。函数原型:afStatus_t ZDP_IEEEAdd
20、rReq( uint16 shortAddr, byte ReqType, byte StartIndex, byte SecuritySuite ); 参数:shortAddr-远程节点的16位网络地址ReqType- ZDP_NWKADDR_REQTYPE_SINGLE(只返回节点的短地址和扩展地址)、ZDP_NWKADDR_REQTYPE_EXTENDED(返回节点的短地址和扩展地址以及所有相关节点的短地址)StartIndex-响应节点的响应信息可以有很多的响应选项,请求程序可以指定一个起始索引号,索引从0开始SecuritySuite 安全要求返回值:ZStatus_t-状态2.1.
21、4.5 ZDP_IEEEAddrRsp()ZDP_IEEEAddrRsp()实际上是调用ZDP_ADDRRsp()这个宏定义,用于建立和发送64位IEEE地址响应。函数原型:afStatus_t ZDP_IEEEAddrRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status,byte *IEEEAddrRemoteDev, byte ReqType, uint16 nwkAddr, byte NumAssocDev, byte StartIndex, uint16 *NWKAddrAssocDevList, byte SecuritySuite
22、 );参数:TranSeq-传输序号DstAddr-目的地址Status - ZDP_SUCCESS=0,ZDP_INVALID_REQTYPE=1,ZDP_DEVICE_NOT_FOUND=2 IEEEAddrRemoteDev 远程节点的64位IEEE地址ReqType 请求的类型nwkAddr 远程节点的16位网络地址NumAssocDev 与远程节点关联的节点数目StartIndex 响应节点的响应信息可以有很多的响应选项,请求程序可以指定一个起始索引号,该索引号是响应信息的起始索引号NWKAddrAssocDevList 与远程节点关联的节点16位网络地址列表 SecuritySui
23、te 安全要求返回值:ZStatus_t-状态2.1.4.6 IEEE地址请求和响应应用举例分析本地节点首先需要在应用层或ZDO层注册响应信息,本例中在ZDApp.c中注册了IEEE_addr_rsp信息。然后调用ZDP_IEEEAddrReq()请求远程节点的网络地址。远程节点接收到该请求信息(该信息从属于AF_DATA_CONFIRM_CMD),则根据Cluster ID选择处理函数,本例中使用zdpProcessAddrReq()来处理IEEE地址请求。当处理完之后,通过调用fillAndSend()将响应信息发送至本地节点。由于在ZDO中注册了该响应信息,因此调用ZDApp_Proce
24、ssMsgCBs()来处理响应信息。详细流程如下图所示:2.1.4.7 ZDP_NodeDescReq()ZDP_NodeDescReq()实际上是调用宏定义ZDP_NWKAddrOfInterestReq()。这个函数建立和发送一个节点描述符(Node Descriptor)请求至已明确网络地址的远程节点。函数原型:afStatus_t ZDP_NodeDescReq( zAddrType_t *dstAddr, uint16 NWKAddrOfInterest, byte SecuritySuite ); 参数:DstAddr-目的地址NWKAddrOfInterest -远程节点的16位
25、网络地址SecuritySuite -安全要求返回值:ZStatus_t-状态2.1.4.8 ZDP_NodeDescMsg()调用此函数响应节点描述符的请求。函数原型:afStatus_t ZDP_NodeDescMsg( byte TransSeq, zAddrType_t *dstAddr, byte Status, uint16 nwkAddr, NodeDescriptorFormat_t *pNodeDesc, byte SecuritySuite );参数:TranSeq-传输序号DstAddr-目的地址Status - ZDP_SUCCESS=0, ZDP_DEVICE_NOT_FOUND=1nwkAddr已明确的远程节点的16位网络地址pNodeDesc 节点描述符SecuritySuite 安全要求返回值:ZStatus_t-状态2.1.4.9节点描述符请求和响应应用举例分析节点描述符包含ZigBee节点的功能信息,每个节点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 范文工程资质转让居间合同
- 二零二五版酒吧经营转让合同
- 二零二五广告活动策划合同范例
- 营销推广服务协议合同书范例
- 施工合同范例小学
- 住建部土建合同范本
- 2025年山西警官职业学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 2025年山西艺术职业学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 2025年山西水利职业技术学院高职单招(数学)历年真题考点含答案解析
- 2025年山东中医药高等专科学校高职单招职业技能测试近5年常考版参考题库含答案解析
- 颈椎损伤术后的康复护理
- 视觉导航关键技术
- 新能源汽车充电桩项目可行性研究报告模板及范文
- 如何应对学习压力
- 6S组织架构及内容
- 数学探究:用向量法研究三角形的性质教学设计-2023-2024学年高一下学期数学人教A版(2019)必修第二册
- 2024年共青团入团积极分子团校结业考试试题库及答案
- 高中英语语法-各种从句练习
- 人教版高一下学期期中考试数学试题及答案解析(共五套)
- 口腔诊所合伙人协议书
- 中医培训课件:《放血疗法》
评论
0/150
提交评论