ZigBee学习之15—ZStackAPI解读3分析_第1页
ZigBee学习之15—ZStackAPI解读3分析_第2页
ZigBee学习之15—ZStackAPI解读3分析_第3页
ZigBee学习之15—ZStackAPI解读3分析_第4页
ZigBee学习之15—ZStackAPI解读3分析_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#1楼主:ZigBee学习之15ZStack API解读3文章发表于:2010-02-07 02:19应用框架(AF)应用框架层是应用道APS层的OTA数据接口。此层也接收数据消息的终端多路复用器。AF为应用提供以下功能:· 终端(Endpoint)管理· 发送和接收数据哈哈,这里的函数应该就是我们经常要用到的函数了。终端管理每个设备都是Zigbee中的节点,每个节点有长地址和短地址,短地址被其他设备用来发送数据。每个节点又241个终端(0保留,1-240 可分配给应用)。每个终端可以独立设置地址;当设备发送数据时必须指定目标设备的短地址和接收终端。一个应用必须注册一个或多

2、个终端用来接收或者发送数据。简单描述符-SimpleDescriptionFormat_t每个终端都必须有一个Zigbee简单描述。这些描述对Zigbee网络刻画了这个终端,其他设备可以询问这个终端以知道这个设备的类型。typedef struct byte EndPoint; uint16 AppProfId; uint16 AppDeviceId; byte AppDevVer:4; byte Reserved:4; / AF_V1_SUPPORT uses for AppFlags:4. byte AppNumInClusters; cId_t *pAppInClusterList; b

3、yte AppNumOutClusters; cId_t *pAppOutClusterList; SimpleDescriptionFormat_t;EndPoint 终端号:1-240 这是节点的子地址,用来接收数据AppProfId 定义了这个终端上支持的Profile ID(剖面ID), ID最好遵循由ZigBee联盟的分配。AppDeviceId 终端支持的设备ID,ID最好遵循ZigBee联盟的分配。AppDevVer 此终端上设备执行的设备描述的版本:0x00为Version 1.0. Reserved 保留 AppNumInClusters 终端支持的输入簇数目 pAppInC

4、lusterList 指向输入Cluster ID列表的指针 AppNumOutClusters 终端支持的输出簇数目 pAppOutClusterList 指向输出Cluster ID列表的指针终端描述符-endPointDesc_t 节点中的每一个终端都必须有一个终端描述符typedef struct byte endPoint; byte *task_id; / Pointer to location of the Application task ID. SimpleDescriptionFormat_t *simpleDesc; afNetworkLatencyReq_t laten

5、cyReq; endPointDesc_t; task_id -任务ID指针,当接收到消息时,此任务ID将指示消息传递目的。接收到的消息是以OSAL消息形式包装的,将发送到一个任务simpleDesc -指向这个终端的ZigBee简单描述latencyReq -必须用noLatencyReqs来填充afStatus_t afRegister( endPointDesc_t *epDesc );为设备注册一个新的终端epDesc -指向终端描述符返回值:afStatus_t -若成功则返回ZSuccess,否则返回ZComDef.h中定义的错误epList_t *afRegisterExtend

6、ed( endPointDesc_t *epDesc, pDescCB descFn );在上面函数功能的基础上增加了回调函数,当终端的简单描述符被查询时将调用此回调函数。这样应有就可以动态改变简单描述符而不用RAM/ROM来储存描述符了。descFn -回调函数指针。相关函数必须为简单描述符分配足够的空间,填充简单描述符,然后返回指向简单描述符的指针,调用者将释放为描述符分配空间。epList -指向终端列表元件的指针,如果失败则为NULLendPointDesc_t *afFindEndPointDesc( byte endPoint );从一个终端找到终端描述符endPoint -要寻找

7、的终端描述符的终端号endPointDesc_t -指向终端描述符的指针,若失败则为NULLbyte afFindSimpleDesc( SimpleDescriptionFormat_t *ppDesc, byte EP );从一个终端找到终端描述符。若返回值非零则必须调用osal_mem_free()来释放描述符的内存占用。ppDesc -指向指向简单描述符的指针。EP 终端简单描述符需要uint8 afGetMatch( uint8 ep );默认情况下,设备将响应ZDO匹配描述符请求。用这个函数来获得ZDO匹配描述符应答的设置。ep -用来获得ZDO匹配描述符响应行为的终端返回值:TR

8、UE-允许响应,FALSE-不允许或者终端未找到uint8 afSetMatch( uint8 ep, uint8 action );默认情况下,设备将响应ZDO匹配描述符。可以用这个函数来改变这个行为,比如ep为1,action为FALSE,ZDO将不响应终端1的ZDO匹配面述符请求。ep -用来获得ZDO匹配描述符响应行为的终端action -TRUE-允许响应,FALSE-不允许或者终端未找到返回值:TRUE-成功,FALSE-失败或者终端未找到byte afNumEndPoints( void );查找已注册的终端数目,返回此设备上已注册的终端数目,包括终端0void afEndPoi

9、nts( byte *epBuf, byte skipZDO );返回包含已注册的终端的一个数组。epBuf 指向存放终端的数组,每个终端占一个字节 skipZDO -设置为TRUE,则不包含ZDO终端(终端0)发送数据afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius );dstAddr -目标地址指针。 afAddrNotPresent 由

10、反射器(邦定源,也即路由器或者协调器)指定 afAddrGroup 发送到组 afAddrBroADCast 发送广播消息 afAddr16Bit 直接发送到节点(单播)srcEP -发送终端的终端描述符指针cID -簇ID,cluster ID如同消息ID,并且在剖面(profile)中各不相同len -要发送的字节数buf -指向要发送的数据缓存的指针transID -事务序列号指针。如果消息缓存发送,这个函数将增加这个数字options -发送选项,可以由下面一项,或几项相或得到 AF_ACK_REQUEST 0x10 要求APS应答,这是应用层的应答,支在直接发送(单播)时使用。 AF

11、_DISCV_ROUTE 0x20 总要包含这个选项 AF_SKIP_ROUTING 0x80 设置这个选项将导致设备跳过路由而直接发送消息。终点设备将不向其父亲发送消息。在直接发送(单播)和广播消息时很好用。radius 最大的跳数,用默认值AF_DEFAULT_RADIUSafStatus_t 成功则为ZSuccess(defined in ZComDef.h). 否则 Errors(defined in ZComDef.h)uint8 afDataReqMTU( afDataReqMTU_t* fields ); 找出基于输入参数的最大可发送字节数,返回能发送的最大字节数fields -要发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论