SCOPIA Mobile V3今朝在Apple App Store可免費(fèi)。 在公理的事業(yè)中,弱者也能克服強(qiáng)者 疾苦,在人的成長(zhǎng)過程中是多么高貴而又神秘莫測(cè)呀!沒有疾苦就沒有詩歌,每一首詩幾乎都是由一份興奮,一份和兩份疾苦所構(gòu)成的!只有疾苦才干在生射中給你留下深深的印象。那萌發(fā)出冷氣的禱告的,潮濕的淚痕就是人們稱之為崇奉,和仁慈這三個(gè)高貴姊妹的母親。啊,疾苦,讓詩人都謳歌你吧!BindingTable 綁定表 1.綁定表存放的地位是內(nèi)存中預(yù)先定義的塊,若是編譯選項(xiàng)NV_RESTORE被激活,也能保存在Flash里。 2.綁定表放置在源節(jié)點(diǎn)(須要激活編譯選項(xiàng)REFLECTOR)。 3.綁定表的條目把須要發(fā)送的消息映射到它們的目標(biāo)地址上。 4.綁定表中每個(gè)條目包含以下內(nèi)容: 5.綁定表?xiàng)l目布局體的定義 typedefstruct { uint16srcIdx;//源地址索引 uint8srcEP;//源端點(diǎn) uint8dstGroupMode;//指定尋址模式 uint16dstIdx;//目標(biāo)地址索引或者分組號(hào) uint8dstEP;//目標(biāo)端點(diǎn) uint8numClusterIds;//在簇標(biāo)識(shí)符表中簇標(biāo)識(shí)符的個(gè)數(shù) uint16clusterIdList[MAX_BINDING_CLUSTER_IDS];//簇標(biāo)識(shí)符表 }BindingEntry_t; SimpleDescription---Howtobinddevices 概述---如何綁定節(jié)點(diǎn) 綁定指的是兩個(gè)節(jié)點(diǎn)在應(yīng)用層上建樹起來的一條邏輯鏈路。在同一個(gè)節(jié)點(diǎn)上可以建樹多個(gè)綁定辦事,分別對(duì)應(yīng)不合種類的數(shù)據(jù)包。此外,綁定也容許有多個(gè)目標(biāo)節(jié)點(diǎn)(一對(duì)多綁定)。 舉個(gè)例子,在一個(gè)燈光收集中,有多個(gè)開關(guān)和燈光設(shè)備,每一個(gè)開關(guān)可以把握一個(gè)或以上的燈光設(shè)備。在這種景象下,須要在每個(gè)開關(guān)中建樹綁定辦事。這使得開關(guān)中的應(yīng)用辦事在不知道燈光設(shè)備確切的目標(biāo)地址時(shí),可以順利地向燈光設(shè)備發(fā)送數(shù)據(jù)包。 一旦在源節(jié)點(diǎn)上建樹了綁定,其應(yīng)用辦事即可向目標(biāo)節(jié)點(diǎn)發(fā)送數(shù)據(jù),而不需指定目標(biāo)地址了(調(diào)用zb_SendDataRequest(),目標(biāo)地址可用一個(gè)無效值0 xFFFE庖代)。如許,和談棧將會(huì)按照數(shù)據(jù)包的號(hào)令標(biāo)識(shí)符,經(jīng)由過程自身的綁定表查找到所對(duì)應(yīng)的目標(biāo)設(shè)備地址。 在綁定表的條目中,有時(shí)會(huì)有多個(gè)目標(biāo)端點(diǎn)。這使得和談棧主動(dòng)地反復(fù)發(fā)送數(shù)據(jù)包到綁定表指定的各個(gè)目標(biāo)地址。同時(shí),若是在編譯目標(biāo)文件時(shí),編譯選項(xiàng)NV_RESTORE被打開,和談棧將會(huì)把綁定條目保存在非易失性存儲(chǔ)器里。是以當(dāng)不測(cè)重啟(或者節(jié)點(diǎn)電池耗盡須要調(diào)換)等突發(fā)景象的產(chǎn)生時(shí),節(jié)點(diǎn)能主動(dòng)恢復(fù)到掉電前的工作狀況,而不須要用戶從頭設(shè)置綁定辦事。 設(shè)備設(shè)備綁定辦事,有兩種機(jī)制可供選擇。若是目標(biāo)設(shè)備的擴(kuò)大地址(64位地址)已知,可經(jīng)由過程調(diào)用zb_BindDeviceRequest()建樹綁定條目。若是目標(biāo)設(shè)備的擴(kuò)大地址未知,可實(shí)驗(yàn)一個(gè)“按鍵”策略實(shí)現(xiàn)綁定。這時(shí),目標(biāo)設(shè)備將起首進(jìn)入一個(gè)容許綁定的狀況,并經(jīng)由過程zb_AllowBindResponse()對(duì)配對(duì)懇求作出響應(yīng)。然后,在源節(jié)點(diǎn)中履行zb_BindDeviceRequest()(目標(biāo)地址設(shè)為無效)可實(shí)現(xiàn)綁定。 此外,應(yīng)用節(jié)點(diǎn)外部的委托對(duì)象(凡是是調(diào)和器)也可實(shí)現(xiàn)綁定辦事。請(qǐng)重視,綁定辦事只能在“互補(bǔ)”設(shè)備之間建樹。那就是,只有分別在兩個(gè)節(jié)點(diǎn)的簡(jiǎn)單描述布局體(simpledescriptorstructure)中,同時(shí)注冊(cè)了雷同的號(hào)令標(biāo)識(shí)符(command_id)并且標(biāo)的目標(biāo)相反(一個(gè)屬于輸出指令“output”,另一個(gè)屬于輸入指令“input”),才干成功建樹綁定。 Thereare4waystobuildabindingtable: 建樹一個(gè)綁定表格有四種辦法可供選擇: 主動(dòng)綁定 一、負(fù)責(zé)發(fā)送消息的設(shè)備在收集上廣播帶有如下參數(shù)的“小我通知布告”(PersonalAdvertisement): (1)地址,設(shè)備文件標(biāo)識(shí)符,叢聚合列表; (2)描述符匹配懇求-ZDP_MatchDescReq()。 二、匹配的設(shè)備會(huì)作出響應(yīng)。 三、由ZDO處理懲罰和驗(yàn)證響應(yīng) 四、負(fù)責(zé)發(fā)送消息的設(shè)備建樹綁定表并保存綁定記錄。 五、這種辦法有時(shí)也稱“辦事發(fā)明”,“主動(dòng)找尋”或者“主動(dòng)匹配”。 ZigBee設(shè)備對(duì)象綁定懇求-一種告訴目標(biāo)設(shè)備建樹綁定記錄的委托對(duì)象,也稱幫助綁定。 任何一個(gè)設(shè)備或應(yīng)用辦事,都能經(jīng)由過程無線信道向收集上的另一個(gè)設(shè)備發(fā)送一個(gè)ZDO消息,幫助其建樹一個(gè)綁定記錄。這稱為幫助綁定,在消息發(fā)向的設(shè)備上會(huì)建樹一個(gè)綁定條目。 委托綁定的申請(qǐng): 任一個(gè)應(yīng)用辦事,經(jīng)由過程向ZDP_BindReq()[definedinZDProfile.h]供給綁定記錄所須要的應(yīng)用辦事進(jìn)口參數(shù)(地址和端點(diǎn))以及簇標(biāo)識(shí)號(hào)(clusterID),即可啟動(dòng)委托綁定的申請(qǐng)。第一個(gè)參數(shù)(消息發(fā)送目標(biāo)地址)是綁定源節(jié)點(diǎn)的短地址(即保存綁定記錄的節(jié)點(diǎn)地址,這是因?yàn)閆DP需委托應(yīng)用框架AF幫助實(shí)現(xiàn)綁定,若是節(jié)點(diǎn)本身是REFLECTOR,并且保存綁定記錄,則此消息發(fā)送的目標(biāo)地址就是本地的AF,這與目標(biāo)節(jié)點(diǎn)的地址DestinationAddrofReceivingdevice不合)。 重視事項(xiàng): 確保[ZDConfig.h]中ZDO_BIND_UNBIND_REQUEST特點(diǎn)已經(jīng)打開! 你可以經(jīng)由過程ZDP_UnbindReq()(應(yīng)用雷同參數(shù))來移除綁定記錄。 被懇求幫助綁定的目標(biāo)設(shè)備會(huì)返回的ZDO申請(qǐng)綁定或者解除綁定的應(yīng)答消息。此ZDO消息會(huì)被解析并經(jīng)由過程調(diào)用ZDApp_BindRsp()或ZDApp_UnbindRsp()告訴ZDApp.c此次懇求的成果。 對(duì)于申請(qǐng)綁定的應(yīng)答消息,從調(diào)和器返回的狀況可能有ZDP_SUCCESS,ZDP_TABLE_FULLorZDP_NOT_SUPPORTED。 對(duì)于解除綁定的應(yīng)答消息,從調(diào)和器返回的狀況可能有ZDP_SUCCESS,ZDP_NO_ENTRYorZDP_NOT_SUPPORTED。 綁定是由外部的設(shè)備創(chuàng)議(“外部”的意思是創(chuàng)議綁定的不是綁定的對(duì)象之一)。 外部設(shè)備應(yīng)用法度以兩個(gè)應(yīng)用辦事(地址和端點(diǎn))和簇標(biāo)識(shí)符作為參數(shù)調(diào)用ZDP_BindReq()創(chuàng)議綁定。第一個(gè)參數(shù)就是綁定記錄保存的設(shè)備地址。 確保編譯選項(xiàng)REFLECTOR已經(jīng)打開! 函數(shù)解析: ZDP_BindReq()實(shí)際上是調(diào)用ZDP_BindUnbindReq()的一個(gè)宏。這一調(diào)用會(huì)產(chǎn)生并發(fā)送一個(gè)綁定的懇求,使得ZigBee調(diào)和器按照簇標(biāo)識(shí)號(hào)clusterID對(duì)響應(yīng)的應(yīng)用辦事實(shí)驗(yàn)綁定。 函數(shù)原型: afStatus_tZDP_BindReq(zAddrType_t*dstAddr,byte*SourceAddr,byteSrcEPIntf,byteClusterID,byte*DestinationAddr ,byteDstEPIntf,byteSecuritySuite) 參數(shù)細(xì)節(jié): DstAddr-消息發(fā)送地址(負(fù)責(zé)綁定的設(shè)備地址) SourceAddr–源節(jié)點(diǎn)的64位IEEE地址 SrcEPIntf–源節(jié)點(diǎn)應(yīng)用辦事的端點(diǎn) ClusterID–須要綁定的簇標(biāo)識(shí)符 DestinationAddr–目標(biāo)節(jié)點(diǎn)的64位IEEE地址 DstEPIntf–目標(biāo)節(jié)點(diǎn)應(yīng)用辦事的端點(diǎn) SecuritySuite-安然機(jī)制模式 返回值:afStatus_t–此函數(shù)須要借助AF發(fā)送(AF_DataRequest())生成的消息,是以返回值是AF狀況值。 ZigBee設(shè)備對(duì)象終端節(jié)點(diǎn)綁定懇求-兩個(gè)設(shè)備可向調(diào)和器告訴他們想建樹一個(gè)綁定表記錄。調(diào)和器經(jīng)由過程安排配對(duì)并分別在這兩個(gè)設(shè)備上建樹綁定表?xiàng)l目,也稱集中式綁定。 這一機(jī)制規(guī)定在指定的時(shí)限內(nèi),經(jīng)由過程按鍵或者其他類似動(dòng)尷尬刁難指定的設(shè)備實(shí)驗(yàn)綁定。在規(guī)定的時(shí)限內(nèi),調(diào)和器負(fù)責(zé)收集終端設(shè)備綁定懇求消息,然后按照雷同的設(shè)備文件標(biāo)識(shí)號(hào)和簇標(biāo)識(shí)號(hào)建樹響應(yīng)的綁定表格條目。默認(rèn)的終端節(jié)點(diǎn)綁按時(shí)限(APS_DEFAULT_MAXBINDING_TIME)是16秒(在nwk_globals.h中定義),若要批改可在f8wConfig.cfg中新增數(shù)值。 所有例子的應(yīng)用辦事中都有一個(gè)響應(yīng)按鍵事務(wù)的函數(shù)(例如,TransmitApp.c中的TransmitApp_HandleKeys())。這一響應(yīng)函數(shù)調(diào)用ZDApp_SendEndDeviceBindReq()[在ZDApp.c中]收集該應(yīng)用辦事端點(diǎn)的所有信息,然后再調(diào)用ZDP_EndDeviceBindReq()[在ZDProfile.c中]把信息發(fā)送給調(diào)和器?;蛘?,像SampleLight和SampleSwitch例程中,按鍵后直接調(diào)用ZDP_EndDeviceBindReq(),僅把與開關(guān)燈函數(shù)相干的簇標(biāo)識(shí)號(hào)發(fā)送出去。 這一消息將會(huì)被調(diào)和器接管[ZDP_IncomingData()inZDProfile.c]和解析[ZDO_ProcessEndDeviceBindReq()inZDObject.c],然后讓回調(diào)函數(shù)ZDApp_EndDeviceBindReqCB()[inZDApp.c]調(diào)用ZDO_MatchEndDeviceBind()[ZDObject.c]處理懲罰這一懇求。 當(dāng)調(diào)和器接管到第一個(gè)綁定懇求時(shí),他會(huì)在必然的時(shí)限內(nèi)保存這一懇求并守候第二個(gè)懇求的呈現(xiàn)。(默認(rèn)的最長(zhǎng)時(shí)候間隔是16秒)。 一旦調(diào)和器接管到兩個(gè)須要匹配的終端設(shè)備綁定懇求時(shí),它就會(huì)啟動(dòng)綁定過程,為發(fā)出懇求的設(shè)備建樹源綁定條目。假設(shè)在ZDO終端設(shè)備綁定懇求中找到匹配,調(diào)和器將采取以下步調(diào): 1.調(diào)和器發(fā)送一個(gè)ZDO解除綁定懇求給第一個(gè)設(shè)備。終端設(shè)備綁定是一個(gè)切換過程,所以解除綁定懇求須要發(fā)送給第一個(gè)設(shè)備,以便移除一個(gè)已有的綁定條目。 2.守候ZDO解除綁定的應(yīng)答,若是返回的狀況是ZDP_NO_ENTRY,調(diào)和器可以發(fā)送一個(gè)ZDO綁定懇求,在源設(shè)備(ZDP_EndDeviceBindReq()第一個(gè)參數(shù)指定的地址)中建樹綁定條目。假如此時(shí)返回的狀況是ZDP_SUCCESS,可持續(xù)處理懲罰第一個(gè)設(shè)備的簇標(biāo)識(shí)符(解除綁定指令已經(jīng)移除了綁定條目,即已經(jīng)切換完成)。 3.守候ZDO綁定應(yīng)答。收到今后,持續(xù)處理懲罰第一個(gè)設(shè)備的下一個(gè)簇標(biāo)識(shí)符。 4.等第一個(gè)設(shè)備完成了今后,在第二個(gè)設(shè)備上實(shí)驗(yàn)同樣的過程。 5.等第二個(gè)設(shè)備也完成了,調(diào)和器向兩個(gè)設(shè)備發(fā)送ZDO終端設(shè)備綁定應(yīng)答消息。 重視打開編譯選項(xiàng):REFLECTOR和ZDO_COORDINATOR ZDApp_SendEndDeviceBindReq() 長(zhǎng)處: 1.綁定信息保存在收集反射設(shè)備(例如調(diào)和器、路由器)中,可以節(jié)儉目標(biāo)設(shè)備的內(nèi)存空間。 2.收集反射設(shè)備老是處于收集的狀況。所以,若是此中一個(gè)被綁定的節(jié)點(diǎn)廣播收集地址改變的消息,收集反射設(shè)備就可以即速更新響應(yīng)的綁定表?xiàng)l目。如許,其他被綁定的節(jié)點(diǎn)即使處于休眠狀況(沒有收到該節(jié)點(diǎn)收集地址改變的消息),隨后向該節(jié)點(diǎn)(收集地址已改變)發(fā)送的消息,(在)收集反射設(shè)備(協(xié)助下)仍能準(zhǔn)斷定位。 毛病: 1.一個(gè)與多個(gè)設(shè)備綁定的節(jié)點(diǎn)不克不及只向一個(gè)或若干個(gè)配對(duì)的設(shè)備發(fā)送消息。收集反射設(shè)備會(huì)向全部已綁定的設(shè)備本別發(fā)送單播消息。 2.發(fā)送消息的設(shè)備無法收到目標(biāo)設(shè)備接管景象的布告。(沒有像AF_ACK_REQUEST標(biāo)記位那樣返回接管景象的功能?。?/p> 3.所有的消息必須經(jīng)過收集反射設(shè)備傳輸,降落了收集的帶寬。 進(jìn)一步解析: 與六個(gè)設(shè)備綁定的某個(gè)設(shè)備,向收集反射器發(fā)送一個(gè)消息后,會(huì)導(dǎo)致反射器發(fā)送六個(gè)單播消息。假設(shè)一個(gè)收集被分成兩個(gè)相等的地理區(qū)域A和B,收集反射器在兩區(qū)之間的中心。若是發(fā)送消息的設(shè)備在A區(qū)的深處,接管消息的(六個(gè))設(shè)備在B區(qū)的深處,那么每次經(jīng)由過程綁定(向反射器)發(fā)送一個(gè)消息,A區(qū)的收集流量將會(huì)是對(duì)六個(gè)接管設(shè)備分別發(fā)送消息時(shí)的六分之一。(這是長(zhǎng)處!)但若是發(fā)送和接管的設(shè)備都附近在一個(gè)區(qū)的深處(假設(shè)離反射器很遠(yuǎn)),那么(此中一個(gè)設(shè)備經(jīng)由過程反射器的綁定功能想其他設(shè)備發(fā)送一個(gè)消息)該區(qū)的收集流量將會(huì)是對(duì)六個(gè)接管設(shè)備分別發(fā)送單跳消息的很多倍。(這是毛病?。?/p> 設(shè)備的應(yīng)用辦事-設(shè)備上的一個(gè)應(yīng)用辦事可以建樹或者保護(hù)一個(gè)綁定表。進(jìn)入設(shè)備上綁定條目標(biāo)另一種辦法是由應(yīng)用辦事本身去經(jīng)管綁定表。 這意味著應(yīng)用辦事經(jīng)由過程調(diào)用以下的綁定表經(jīng)管函數(shù),可以在本地進(jìn)入或者移除綁定表的條目。 經(jīng)管綁定表應(yīng)用的API: bindAddEntry()–綁定表中加條目 bindRemoveEntry()–綁定表中移除條目 bindRemoveClusterIdFromList()–從一個(gè)已有的綁定表?xiàng)l目中移除一個(gè)簇標(biāo)識(shí)符 bindAddClusterIdToList()–在一個(gè)已有的綁定表?xiàng)l目中參加一個(gè)簇標(biāo)識(shí)符 bindRemoveDev()–移除某目標(biāo)地址的所有條目 bindRemoveSrcDev()–移除某源地址的所有條目 bindUpdateAddr()–更新條目到新的地址 bindFindExisting()–查找一個(gè)綁定條目 bindIsClusterIDinList()–在綁定條目中查找一個(gè)已有的簇標(biāo)識(shí)符 bindNumBoundTo()–某一地址(源地址或目標(biāo)地址)綁定條目標(biāo)個(gè)數(shù) bindNumOfEntries()–綁定表?xiàng)l目標(biāo)個(gè)數(shù) bindCapacity()–容許的最大綁定條目數(shù) BindWriteNV()–在NV中保存新的綁定表 WhichBindingMethodToUse? 我們應(yīng)當(dāng)選擇哪一種綁定體式格式? Automatic +nouserinteractionrequired +notoolcost -developmenttimeknowledge -non-configurable Assisted +install-timedecisions(site-specificknowledge) +analysis,maintenance,modification,visualization canbeunderinstallerscontrol -costoftool Centralized +allowsusertodecide +costoftoolminimal -few,ifany,configurableparameters -requiresauserinterfaceoneachdevice Application +maximumflexibility -youmustwriteallthecode 【編輯推薦】
【義務(wù)編輯:于爽 TEL:(010)68476606】
MRMY |
|