按键发送闪烁实验sampleappc之初步理解文档格式.docx

上传人:b****7 文档编号:22836129 上传时间:2023-02-05 格式:DOCX 页数:9 大小:17.07KB
下载 相关 举报
按键发送闪烁实验sampleappc之初步理解文档格式.docx_第1页
第1页 / 共9页
按键发送闪烁实验sampleappc之初步理解文档格式.docx_第2页
第2页 / 共9页
按键发送闪烁实验sampleappc之初步理解文档格式.docx_第3页
第3页 / 共9页
按键发送闪烁实验sampleappc之初步理解文档格式.docx_第4页
第4页 / 共9页
按键发送闪烁实验sampleappc之初步理解文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

按键发送闪烁实验sampleappc之初步理解文档格式.docx

《按键发送闪烁实验sampleappc之初步理解文档格式.docx》由会员分享,可在线阅读,更多相关《按键发送闪烁实验sampleappc之初步理解文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

按键发送闪烁实验sampleappc之初步理解文档格式.docx

--有效位掩码的发送选项 

radius 

--传送跳数,通常设置为AF_DEFAULT_RADIUS 

*/

uint8AF_DataRequestDiscoverRoute=TRUE;

afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,

uint16cID,uint16len,uint8*buf,uint8*transID,

uint8options,uint8radius)

{

pDescCBpfnDescCB;

ZStatus_tstat;

APSDE_DataReq_treq;

afDataReqMTU_tmtu;

//Verifysourceendpoint

if(srcEP==NULL)

returnafStatus_INVALID_PARAMETER;

}

#if!

defined(REFLECTOR)

if(dstAddr->

addrMode==afAddrNotPresent)

#endif

//Validatebroadcasting

if((dstAddr->

addrMode==afAddr16Bit 

)||

(dstAddr->

addrMode==afAddrBroadcast) 

//Checkforvalidbroadcastvalues

if(ADDR_NOT_BCAST!

=NLME_IsAddressBroadcast(dstAddr->

addr.shortAddr) 

//Forcemodetobroadcast

dstAddr->

addrMode=afAddrBroadcast;

else

//Addressisnotavalidbroadcasttype

addrMode==afAddrBroadcast)

elseif(dstAddr->

addrMode!

=afAddr64Bit&

&

=afAddrGroup&

=afAddrNotPresent)

//Setdestinationaddress

req.dstAddr.addrMode=dstAddr->

addrMode;

addrMode==afAddr64Bit)

osal_cpyExtAddr(req.dstAddr.addr.extAddr,dstAddr->

addr.extAddr);

req.dstAddr.addr.shortAddr=dstAddr->

addr.shortAddr;

req.profileID=ZDO_PROFILE_ID;

if((pfnDescCB=afGetDescCB(srcEP)))

uint16*pID=(uint16*)(pfnDescCB(

AF_DESCRIPTOR_PROFILE_ID,srcEP->

endPoint));

if(pID)

req.profileID=*pID;

osal_mem_free(pID);

elseif(srcEP->

simpleDesc)

req.profileID=srcEP->

simpleDesc->

AppProfId;

req.txOptions=0;

if((options&

AF_ACK_REQUEST 

)&

(req.dstAddr.addrMode!

=AddrBroadcast)&

=AddrGroup 

) 

req.txOptions|= 

APS_TX_OPTIONS_ACK;

if(options&

AF_SKIP_ROUTING)

APS_TX_OPTIONS_SKIP_ROUTING;

AF_EN_SECURITY)

req.txOptions|=APS_TX_OPTIONS_SECURITY_ENABLE;

mtu.aps.secure=TRUE;

mtu.aps.secure=FALSE;

mtu.kvp=FALSE;

req.transID 

=*transID;

req.srcEP 

=srcEP->

endPoint;

req.dstEP 

=dstAddr->

req.clusterID 

=cID;

req.asduLen 

=len;

req.asdu 

=buf;

req.discoverRoute=AF_DataRequestDiscoverRoute;

//(uint8)((options&

AF_DISCV_ROUTE)?

1:

0);

req.radiusCounter=radius;

#ifdefined(INTER_PAN)

req.dstPanId 

=dstAddr->

panId;

if(StubAPS_InterPan(dstAddr->

panId,dstAddr->

endPoint))

if(len>

INTERP_DataReqMTU())

stat=afStatus_INVALID_PARAMETER;

stat=INTERP_DataReq(&

req);

#endif//INTER_PAN

if(len>

afDataReqMTU(&

mtu))

if(apsfSendFragmented)

stat=(*apsfSendFragmented)(&

stat=APSDE_DataReq(&

参数详解如下:

其中 

1、afAddrType_t 

*dstAddr 

af地址类型

typedefstruct 

union 

uint16shortAddr;

//短地址 

}addr;

afAddrMode_t 

addrMode;

//传送模式 

byte 

endPoint;

//端点号 

}afAddrType_t;

2、endPointDesc_t 

*srcEP 

端点描述

byteendPoint;

//端点号 

byte*task_id;

//那一个任务的端点号(调用任务的ID)

SimpleDescriptionFormat_t 

*simpleDesc;

//简单的端点描述 

afNetworkLatencyReq_tlatencyReq;

}endPointDesc_t;

3、SimpleDescriptionFormat_t 

简单描述格式

EndPoint;

//EP 

uint16 

//应用规范ID 

AppDeviceId;

//特定规范ID的设备类型 

AppDevVer:

4;

//特定规范ID的设备的版本 

Reserved:

//AF_V1_SUPPORTusesforAppFlags:

4. 

AppNumInClusters;

//输入簇ID的个数 

cId_t 

*pAppInClusterList;

//输入簇ID的列表 

AppNumOutClusters;

//输出簇ID的个数 

*pAppOutClusterList;

//输出簇ID的列表 

}SimpleDescriptionFormat_t;

4、uint16 

cID 

ClusterID--具体应用串ID 

5、uint8 

options 

发送模式选项有如下选项 

#defineAF_FRAGMENTED 

0x01 

#defineAF_ACK_REQUEST 

0x10 

#defineAF_DISCV_ROUTE 

0x20 

#defineAF_EN_SECURITY 

0x40 

#defineAF_SKIP_ROUTING 

0x80 

其中AF_ACK_REQUEST为发送后需要接收方的确认 

6、uint8 

radius 

传输跳数或传输半径,默认值为10 

AF_DataRequest(&

SampleApp_Flash_DstAddr,zigbee地址NwkAddr+EndPoint

SampleApp_epDesc,EndPointDescr

SAMPLEAPP_FLASH_CLUSTERID,clusterID

3,len

buffer,*buf

SampleApp_TransID,*transID

AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS)==afStatus_SUCCESS)

关键参数说明:

SampleApp_Flash_DstAddr:

目的地址,你要把数据发到哪里肯定要先知道他的地址吧,就像你要给人写信,总得先知道对方的地址吧,这里也是一样的,描述了目的设备的地址

EndPointDescr:

对于这个参数,我的理解,就是一个更精确的地址,因为一个node可以有多个Endpoint,就像你写信到底给那个人一样。

目的地址标识了,他在那,而这个参数就是说这个人到底是谁了。

clusterID:

关于这个参数,可以这样理解。

……呃……这样吧,就是大的包裹,还是纸质的普通信封,还是……总之你要根据这个采取不同的措施,例如,比如是个大的包裹,你需要一把剪刀来打开,如果是一个普通的纸质信封,直接撕开就好,如果是一份加密信函……总之,你会根据这个参数的不同采取不同的措施

len:

数据的长度,可以理解为信的内容有几页

*buf:

数据内容。

可以理解为信的内容

*transID:

序列号:

可以理解为邮戳的日期

……那两个就不说了,是路由相关啦……

呵呵……自己说都有点绕……

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1