欢迎来到天天文库
浏览记录
ID:37971872
大小:70.50 KB
页数:8页
时间:2019-06-04
《Z-Stack协议——发送函数AF_DataRequest》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、By:AdamZ-Stack协议——发送函数AF_DataRequestZ-Stack中发送数据通过在应用层调用函数voidSampleApp_SendFlashMessage(uint16flashTime)完成,其中flashTime为发送的数据,这个函数在应用中通过调用[AF.c]afStatus_t AF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,u
2、int8radius)函数完成数据的发送。如果熟悉了其中的每个参数的含义,就可以很灵活的使用发送函数发送自己的数据。 第一个参数dstAddr,在文件AF.h中,该参数是一个结构体的指针。在该参数中除了指定了网络地址外,还需要指定目的地址的模式参数。[AF.h]typedefstruct{ union { uint16shortAddr; }addr; afAddrMode_taddrMode;//afAddrMode_t是一个枚举类型模式参数 byteendPoint;//指定的端点号端点241—254保留端点
3、范围1-240}afAddrType_t;下面的是afAddrMode_t结构体的定义目的地址模式可以设置为以下几个值:[AF.h]typedefenum{afAddrNotPresent=AddrNotPresent,//间接传送(Indirect)afAddr16Bit=Addr16Bit,//指定地址单点传送(Unicast)16位afAddrGroup=AddrGroup,//组寻址(GroupAddressing)afAddrBroadcast=AddrBroadcast//广播传送(broadcast)}afAddrMod
4、e_t;下面详细解释各种地址模式单点传送(Unicast)Uicast是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备。将afAddrMode设置为Addr16Bit并且在数据包中携带目标设备地址。间接传送(Indirect)By:Adam当应用程序不清楚数据包的最终目标的时候使用间接传送。将模式设置为AddrNotPresent并且不指定目标地址。取而代之的是,从发送设备的栈的绑定表中查找到的目标。这种特点称之为源绑定(在后面的绑定一节详细介绍)。当数据向下发送到栈中,从绑定表中查找并且使用该目标地址。这样,数据包将被
5、处理成为一个标准的单点传送数据包。如果在绑定表中找到多个设备,则向每个设备都发送一个数据包的拷贝。上一个版本的ZigBee(ZigBee04),有一个选项可以讲绑定表保存在协调器(Coordinator)当中。发送设备将数据包发送给协调器,协调器查找它栈中的绑定表,然后将数据发送给最终的目标设备。这个附加的特性叫做协调器绑定(CoordinatorBinding)。广播传送(broadcast)当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。地址模式设置为AddrBroadcast。目标地址可以设置为下面广播地址的一种:
6、NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它或者消息超时(NWK_INDIRECT_MSG_TIMEO在f8wConifg.cfg中)。NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所有的打开接收的空闲设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。NWK_BROADCAST_SHORTADDR_DEVZCZR(0x
7、FFFC)——数据包发送给所有的路由器,包括协调器。组寻址(GroupAddressing)当应用程序需要将数据包发送给网络上的一组设备时,使用该模式。地址模式设置为afAddrGroup并且addr.shortAddr设置为组ID。在使用这个功能之前,必须在网络中定义组。(参见Z-stackAPI文档中的aps_AddGroup()函数)。注意组可以用来关联间接寻址。再绑定表中找到的目标地址可能是是单点传送或者是一个组地址。另外,广播发送可以看做是一个组寻址的特例。下面的代码是一个设备怎样加入到一个ID为1的组当中:aps_Grou
8、p_tgroup;//Assignyourselftogroup1group.ID=0x0001;group.name[0]=0;//Thiscouldbeahumanreadablestringaps_AddGroup
此文档下载收益归作者所有