綁定(Binding)是一種控制兩個(gè)或者多個(gè)設(shè)備應(yīng)用層之間信息流傳遞的機(jī)制。綁定允許應(yīng)用程序發(fā)送一個(gè)數(shù)據(jù)包而無(wú)需知道目標(biāo)地址的16位短地址(此時(shí)目標(biāo)設(shè)備短地址設(shè)置為無(wú)效地址0xFFFE)伴逸,應(yīng)用支持子層APS從綁定表中自動(dòng)獲得目標(biāo)設(shè)備的短地址陨溅,從而將數(shù)據(jù)順利發(fā)送到目標(biāo)節(jié)點(diǎn)的一個(gè)或者多個(gè)應(yīng)用服務(wù)乃至分組婆翔。
說(shuō)明:綁定是基于設(shè)備應(yīng)用層端點(diǎn)的綁定葫男,只能在互為補(bǔ)充的設(shè)備間被創(chuàng)建膳沽。即被綁定的兩個(gè)設(shè)備必須在其簡(jiǎn)單描述符結(jié)構(gòu)中登記為相同的命令I(lǐng)D矫渔,且其中一個(gè)設(shè)備作為輸入彤蔽,另一個(gè)設(shè)備作為輸出。
- 概述
1.1. 概念
綁定指的是在兩個(gè)節(jié)點(diǎn)的應(yīng)用層上建立起來(lái)一條邏輯鏈路蚌斩。在同一個(gè)節(jié)點(diǎn)可以建立多個(gè)綁定服務(wù)铆惑,分別對(duì)應(yīng)不同種類(lèi)的數(shù)據(jù)包,此外送膳,綁定也允許有多個(gè)目標(biāo)節(jié)點(diǎn)员魏,即一對(duì)多綁定。
1.2. 作用
一旦在源節(jié)點(diǎn)上建立綁定叠聋,其應(yīng)用服務(wù)即可向目標(biāo)節(jié)點(diǎn)發(fā)送數(shù)據(jù)而無(wú)需知道目標(biāo)地址撕阎。協(xié)議棧會(huì)根據(jù)數(shù)據(jù)包的命令標(biāo)識(shí)符通過(guò)自身的綁定表查找所對(duì)應(yīng)的目標(biāo)設(shè)備地址,完成數(shù)據(jù)包的發(fā)送和接收碌补。若打開(kāi)編譯選項(xiàng)NV_RESTORE虏束,那么協(xié)議棧在編譯目標(biāo)文件時(shí)會(huì)把綁定表中的綁定條目保存在非易失性存儲(chǔ)器中,如遇意外重啟厦章、節(jié)點(diǎn)電池耗盡需要更換等突發(fā)狀況時(shí)镇匀,節(jié)點(diǎn)能夠自動(dòng)恢復(fù)到掉電前的工作狀態(tài),無(wú)需用戶重新設(shè)定綁定服務(wù)袜啃。 - Zigbee綁定的四種方式及其特點(diǎn)
2.1. 兩個(gè)設(shè)備節(jié)點(diǎn)分別通過(guò)按鍵機(jī)制調(diào)用ZDP_EndDeviceBindReq()
函數(shù)
即在一定時(shí)間內(nèi)汗侵,兩個(gè)節(jié)點(diǎn)都通過(guò)按鍵或者其他方式觸發(fā)調(diào)用ZDP_EndDeviceBindReq()
函數(shù)。
特點(diǎn):該綁定方式需要協(xié)調(diào)器的參與群发,綁定成功后不再需要協(xié)調(diào)器晰韵;該方式不局限于EndDevice的綁定,也可適用于Router的綁定熟妓。
2.2. Match方式
即一個(gè)節(jié)點(diǎn)通過(guò)調(diào)用afSetMatch()
函數(shù)允許或者禁止本節(jié)點(diǎn)被Match(協(xié)議棧中默認(rèn)允許節(jié)點(diǎn)被Match)雪猪,然后另一個(gè)節(jié)點(diǎn)在一定時(shí)間內(nèi)發(fā)起ZDP_MatchDescReq請(qǐng)求,允許被Match的節(jié)點(diǎn)會(huì)響應(yīng)這個(gè)Req請(qǐng)求起愈,發(fā)起Req的節(jié)點(diǎn)在接收到RSP的時(shí)候就會(huì)自動(dòng)處理綁定只恨。
特點(diǎn):無(wú)需第三方節(jié)點(diǎn)译仗,處于網(wǎng)絡(luò)中的兩個(gè)可Match的節(jié)點(diǎn)(即一方的outcluster至少有一個(gè)是另一方節(jié)點(diǎn)的incluster)皆可實(shí)現(xiàn)綁定。
2.3. ZDP_BindReq和ZDP_UnbindReq方式
即通過(guò)調(diào)用上述兩個(gè)函數(shù)(ZDP_BindReq()
和ZDP_UnbindReq()
)來(lái)實(shí)現(xiàn)綁定和解綁坤次。
特點(diǎn):該綁定方式需要第三方節(jié)點(diǎn)發(fā)送bind或者unbind命令給控制節(jié)點(diǎn)古劲,控制節(jié)點(diǎn)收到Req后直接處理綁定而不用告知被控制的節(jié)點(diǎn),綁定表存儲(chǔ)在控制節(jié)點(diǎn)中缰猴。該方式可實(shí)現(xiàn)一個(gè)節(jié)點(diǎn)綁定到一個(gè)Group上产艾。此外,該綁定方式需要知道控制節(jié)點(diǎn)以及被控制節(jié)點(diǎn)的64位長(zhǎng)地址滑绒。
2.4 手工管理綁定表
通過(guò)應(yīng)用程序調(diào)用bindAddEntry()
等函數(shù)來(lái)實(shí)現(xiàn)手工管理綁定表闷堡。
特點(diǎn):改綁定方式具有很大的自由度,無(wú)需其他節(jié)點(diǎn)的參與疑故,但應(yīng)用程序所做的工作較多杠览,同時(shí)需要實(shí)現(xiàn)知道被綁定節(jié)點(diǎn)的短地址、端點(diǎn)號(hào)纵势、incluster和outcluster等信息踱阿。 - 建立綁定表的兩種機(jī)制
3.1 目標(biāo)設(shè)備擴(kuò)展地址(即64位MAC地址)已知,在源設(shè)備端只需通過(guò)調(diào)用函數(shù)zb_BindDevice()
進(jìn)行綁定钦铁,該函數(shù)中的地址就是目標(biāo)設(shè)備的擴(kuò)展地址软舌。
3.2. 目標(biāo)設(shè)備擴(kuò)展地址未知,設(shè)定目標(biāo)設(shè)備為允許綁定狀態(tài)牛曹,源設(shè)備通過(guò)調(diào)用函數(shù)zb_BindDevice()
進(jìn)行綁定佛点,其中擴(kuò)展地址參數(shù)為NULL。