免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ZigBee學(xué)習(xí)之15——ZStack API解讀3 (轉(zhuǎn))

文章發(fā)表于:2010-02-07 02:19

應(yīng)用框架(AF)

應(yīng)用框架層是應(yīng)用道APS層的OTA數(shù)據(jù)接口。此層也接收數(shù)據(jù)消息的終端多路復(fù)用器。AF為應(yīng)用提供以下功能:

·                     終端(Endpoint)管理

·                     發(fā)送和接收數(shù)據(jù)

哈哈,這里的函數(shù)應(yīng)該就是我們經(jīng)常要用到的函數(shù)了。

終端管理

每個(gè)設(shè)備都是Zigbee中的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有長地址和短地址,短地址被其他設(shè)備用來發(fā)送數(shù)據(jù)。每個(gè)節(jié)點(diǎn)又241個(gè)終端(0保留,1-240 可分配給應(yīng)用)。每個(gè)終端可以獨(dú)立設(shè)置地址;當(dāng)設(shè)備發(fā)送數(shù)據(jù)時(shí)必須指定目標(biāo)設(shè)備的短地址和接收終端。一個(gè)應(yīng)用必須注冊一個(gè)或多個(gè)終端用來接收或者發(fā)送數(shù)據(jù)。

簡單描述符-SimpLEDescriptionFormat_t

每個(gè)終端都必須有一個(gè)Zigbee簡單描述。這些描述對Zigbee網(wǎng)絡(luò)刻畫了這個(gè)終端,其他設(shè)備可以詢問這個(gè)終端以知道這個(gè)設(shè)備的類型。

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;

  byte          AppNumOutClusters;

  cId_t         *pAppOutClusterList;

} SimpleDescriptionFormat_t;

EndPoint – 終端號:1-240 這是節(jié)點(diǎn)的子地址,用來接收數(shù)據(jù)

AppProfId – 定義了這個(gè)終端上支持的Profile ID(剖面ID), ID最好遵循由ZigBee聯(lián)盟的分配。

AppDeviceId –終端支持的設(shè)備ID,ID最好遵循ZigBee聯(lián)盟的分配。

AppDevVer –此終端上設(shè)備執(zhí)行的設(shè)備描述的版本:0x00為Version 1.0.

Reserved – 保留

AppNumInClusters – 終端支持的輸入簇?cái)?shù)目

pAppInClusterList – 指向輸入Cluster ID列表的指針

AppNumOutClusters – 終端支持的輸出簇?cái)?shù)目

pAppOutClusterList – 指向輸出Cluster ID列表的指針

終端描述符-endPointDesc_t

節(jié)點(diǎn)中的每一個(gè)終端都必須有一個(gè)終端描述符

typedef struct

{

  byte endPoint;

  byte *task_id;  // Pointer to location of the Application task ID.

  SimpleDescriptionFormat_t *simpleDesc;

  afNetworkLatencyReq_t latencyReq;

} endPointDesc_t;

task_id -任務(wù)ID指針,當(dāng)接收到消息時(shí),此任務(wù)ID將指示消息傳遞目的。接收到的消息是以O(shè)SAL消息形式包裝的,將發(fā)送到一個(gè)任務(wù)

simpleDesc  -指向這個(gè)終端的ZigBee簡單描述

latencyReq  -必須用noLatencyReqs來填充

afStatus_t afRegister( endPointDesc_t *epDesc );

為設(shè)備注冊一個(gè)新的終端

epDesc      -指向終端描述符

返回值:afStatus_t   -若成功則返回ZSuccess,否則返回ZComDef.h中定義的錯(cuò)誤

epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn );

在上面函數(shù)功能的基礎(chǔ)上增加了回調(diào)函數(shù),當(dāng)終端的簡單描述符被查詢時(shí)將調(diào)用此回調(diào)函數(shù)。這樣應(yīng)有就可以動(dòng)態(tài)改變簡單描述符而不用RAM/ROM來儲存描述符了。

descFn      -回調(diào)函數(shù)指針。相關(guān)函數(shù)必須為簡單描述符分配足夠的空間,填充簡單描述符,然后返回指向簡單描述符的指針,調(diào)用者將釋放為描述符分配空間。

epList      -指向終端列表元件的指針,如果失敗則為NULL

endPointDesc_t *afFindEndPointDesc( byte endPoint );

從一個(gè)終端找到終端描述符

endPoint    -要尋找的終端描述符的終端號

endPointDesc_t -指向終端描述符的指針,若失敗則為NULL

byte afFindSimpleDesc( SimpleDescriptionFormat_t **ppDesc, byte EP );

從一個(gè)終端找到終端描述符。若返回值非零則必須調(diào)用osal_mem_free()來釋放描述符的內(nèi)存占用。

ppDesc  -指向指向簡單描述符的指針。

EP –終端簡單描述符需要

uint8 afGetMatch( uint8 ep );

默認(rèn)情況下,設(shè)備將響應(yīng)ZDO匹配描述符請求。用這個(gè)函數(shù)來獲得ZDO匹配描述符應(yīng)答的設(shè)置。

ep  -用來獲得ZDO匹配描述符響應(yīng)行為的終端

返回值:TRUE-允許響應(yīng),F(xiàn)ALSE-不允許或者終端未找到

uint8 afSetMatch( uint8 ep, uint8 action );

默認(rèn)情況下,設(shè)備將響應(yīng)ZDO匹配描述符??梢杂眠@個(gè)函數(shù)來改變這個(gè)行為,比如ep為1,action為FALSE,ZDO將不響應(yīng)終端1的ZDO匹配面述符請求。

ep  -用來獲得ZDO匹配描述符響應(yīng)行為的終端

action  -TRUE-允許響應(yīng),F(xiàn)ALSE-不允許或者終端未找到

返回值:TRUE-成功,F(xiàn)ALSE-失敗或者終端未找到

byte afNumEndPoints( void );

查找已注冊的終端數(shù)目,返回此設(shè)備上已注冊的終端數(shù)目,包括終端0

void afEndPoints( byte *epBuf, byte skipZDO );

返回包含已注冊的終端的一個(gè)數(shù)組。

epBuf – 指向存放終端的數(shù)組,每個(gè)終端占一個(gè)字節(jié)  

skipZDO -設(shè)置為TRUE,則不包含ZDO終端(終端0)

發(fā)送數(shù)據(jù)

afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,

                uint16 cID, uint16 len, uint8 *buf, uint8 *transID,

                uint8 options, uint8 radius );

dstAddr -目標(biāo)地址指針。

    afAddrNotPresent    由反射器(邦定源,也即路由器或者協(xié)調(diào)器)指定

    afAddrGroup     發(fā)送到組

    afAddrBroADCast 發(fā)送廣播消息

    afAddr16Bit     直接發(fā)送到節(jié)點(diǎn)(單播)

srcEP       -發(fā)送終端的終端描述符指針

cID     -簇ID,cluster ID如同消息ID,并且在剖面(profile)中各不相同

len     -要發(fā)送的字節(jié)數(shù)

buf     -指向要發(fā)送的數(shù)據(jù)緩存的指針

transID -事務(wù)序列號指針。如果消息緩存發(fā)送,這個(gè)函數(shù)將增加這個(gè)數(shù)字

options     -發(fā)送選項(xiàng),可以由下面一項(xiàng),或幾項(xiàng)相或得到

    AF_ACK_REQUEST 0x10 要求APS應(yīng)答,這是應(yīng)用層的應(yīng)答,支在直接發(fā)送(單播)時(shí)使用。

    AF_DISCV_ROUTE 0x20 總要包含這個(gè)選項(xiàng)

    AF_SKIP_ROUTING 0x80 設(shè)置這個(gè)選項(xiàng)將導(dǎo)致設(shè)備跳過路由而直接發(fā)送消息。終點(diǎn)設(shè)備將不向其父親發(fā)送消息。在直接發(fā)送(單播)和廣播消息時(shí)很好用。

radius – 最大的跳數(shù),用默認(rèn)值A(chǔ)F_DEFAULT_RADIUS

afStatus_t – 成功則為ZSuccess(defined in ZComDef.h). 否則 Errors(defined in ZComDef.h)

uint8 afDataReqMTU( afDataReqMTU_t* fields );

找出基于輸入?yún)?shù)的最大可發(fā)送字節(jié)數(shù),返回能發(fā)送的最大字節(jié)數(shù)

fields      -要發(fā)送的消息類型參數(shù)

    typedef struct

    {

        uint8              kvp;

        APSDE_DataReqMTU_t aps;

    } afDataReqMTU_t;

    kvp – 設(shè)為false.

    typedef struct

    {

        uint8 secure;

    } APSDE_DataReqMTU_t;

    aps.secure – 設(shè)為false.如果在一個(gè)安全網(wǎng)絡(luò)中此位將自動(dòng)設(shè)置.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
數(shù)據(jù)傳輸AF層application frame
再談ZigBee中的綁定機(jī)制
zstack開發(fā)指南
發(fā)送函數(shù)AF_DataRequest
AF_DataRequest ()函數(shù)說明
ZIGBee組網(wǎng)流程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服