1. 程式人生 > >Zigbee協議棧中文說明

Zigbee協議棧中文說明

1.概述

1.1解析ZigBee堆疊架構

ZigBee堆疊是在IEEE 802.15.4標準基礎上建立的,定義了協議的MAC和PHY層。ZigBee裝置應該包括IEEE802.15.4(該標準定義了RF射頻以及與相鄰裝置之間的通訊)的PHY和MAC層,以及ZigBee堆疊層:網路層(NWK)、應用層和安全服務提供層。圖1-1給出了這些元件的概況。

1.1.1ZigBee堆疊層

每個ZigBee裝置都與一個特定模板有關,可能是公共模板或私有模板。這些模板定義了裝置的應用環境、裝置型別以及用於裝置間通訊的簇。公共模板可以確保不同供應商的裝置在相同應用領域中的互操作性。

    裝置是由模板定義的,並以應用物件(Application Objects)的形式實現(見圖1-1)。每個應用物件通過一個端點連線到ZigBee堆疊的餘下部分,它們都是器件中可定址的元件 圖1-1 zigbe堆疊框架

從應用角度看,通訊的本質就是端點到端點的連線(例如,一個帶開關元件的裝置與帶一個或多個燈元件的遠端裝置進行通訊,目的是將這些燈點亮)。

端點之間的通訊是通過稱之為簇的資料結構實現的。這些簇是應用物件之間共享資訊所需的全部屬性的容器,在特殊應用中使用的簇在模板中有定義。圖1-1-2就是裝置及其介面的一個例子:

圖1-1-2

每個介面都能接收(用於輸入)或傳送(用於輸出)簇格式的資料。一共有二個特殊的端點,即端點0和端點255。端點0用於整個ZigBee裝置的配置和管理。應用程式可以通過端點0與ZigBee堆疊的其它層通訊,從而實現對這些層的初始化和配置。附屬在端點0的物件被稱為ZigBee裝置物件(ZD0)。端點255用於向所有端點的廣播。端點241到254是保留端點。

所有端點都使用應用支援子層(APS)提供的服務。APS通過網路層和安全服務提供層與端點相接,併為資料傳送、安全和繫結提供服務,因此能夠適配不同但相容的裝置,比如帶燈的開關。

APS使用網路層(NWK)提供的服務。NWK負責裝置到裝置的通訊,並負責網路中裝置初始化所包含的活動、訊息路由和網路發現。應用層可以通過ZigBee裝置物件(ZD0)對網路層引數進行配置和訪問。

1.1.2  802.15.4 MAC層

IEEE 802.15.4標準為低速率無線個人域網(LR-WPAN)定義了OSI模型開始的兩層。PHY層定義了無線射頻應該具備的特徵,它支援二種不同的射頻訊號,分別位於2450MHz波段和868/915MHz波段。2450MHz波段射頻可以提供250kbps的資料速率和16個不同的通道。868/915MHz波段中,868MHz支援1個數據速率為20kbps的通道,915MHz支援10個數據速率為40kbps的通道。

MAC層負責相鄰裝置間的單跳資料通訊。它負責建立與網路的同步,支援關聯和去關聯以及MAC層安全:它能提供二個裝置之間的可靠連結。

1.1.3  關於服務接入點

ZigBee堆疊的不同層與802.15.4 MAC通過服務接入點(SAP)進行通訊。SAP是某一特定層提供的服務與上層之間的介面。

ZigBee堆疊的大多數層有兩個介面:資料實體介面和管理實體介面。資料實體介面的目標是向上層提供所需的常規資料服務。管理實體介面的目標是向上層提供訪問內部層引數、配置和管理資料的機制。

1.1.4  ZigBee的安全性

安全機制由安全服務提供層提供。然而值得注意的是,系統的整體安全性是在模板級定義的,這意味著模板應該定義某一特定網路中應該實現何種型別的安全。

每一層(MAC、網路或應用層)都能被保護,為了降低儲存要求,它們可以分享安全鑰匙。SSP是通過ZD0進行初始化和配置的,要求實現高階加密標準(AES)。ZigBee規範定義了信任中心的用途。信任中心是在網路中分配安全鑰匙的一種令人信任的裝置。

1.1.5  ZigBee堆疊容量和ZigBee裝置

根據ZigBee堆疊規定的所有功能和支援,我們很容易推測ZigBee堆疊實現需要用到裝置中的大量儲存器資源。 不過ZigBee規範定義了三種類型的裝置,每種都有自己的功能要求:ZigBee協調器是啟動和配置網路的一種裝置。協調器可以保持間接定址用的繫結表格,支援關聯,同時還能設計信任中心和執行其它活動。一個ZigBee網路只允許有一個ZigBee協調器。

ZigBee路由器是一種支援關聯的裝置,能夠將訊息轉發到其它裝置。ZigBee網格或樹型網路可以有多個ZigBee路由器。ZigBee星型網路不支援ZigBee路由器。

ZigBee端終裝置可以執行它的相關功能,並使用ZigBee網路到達其它需要與其通訊的裝置。它的儲存器容量要求最少。然而需要特別注意的是,網路的特定架構會戲劇性地影響裝置所需的資源。NWK支援的網路拓撲有星型、樹型和網格型。在這幾種網路拓撲中,星型網路對資源的要求最低。

ZigBee堆疊應該可以提供ZigBee規範要求的所有功能,因此製造商的重點工作是開發實際的應用。為了更加容易實現,如果製造商使用某種公共模板,那麼可用大多數現成的配置。如果沒有合適的公共模板,則可以充分利用其它模板已經做過的工作建立自己的模板。

ZigBee協議棧體系包含一系列的層元件,其中有IEEE802.15.4 2003標準中的MAC層和PHY層,當然也包括ZigBee組織設計的NWK層。每個層的元件有其特定的服務功能。本說明描述內容涉及ZigBee協議棧的各層元件,但側重於描述最具實際和理論探討性的APL應用層和NWK網路層。圖1-1為ZigBee棧結構框圖。

2.APL應用層介紹

2.1.1應用層簡介

如圖2-1所示,ZigBee應用層由三個部分組成,APS子層、ZDO(包含ZDO管理平臺)和製造商定義的應用物件。

圖2-1 zigbee協議堆疊分層結構

2.1.2應用層框架

ZigBee中的應用框架是為駐紮在ZigBee裝置中的應用物件提供活動的環境。

最多可以定義240個相對獨立的應用程式物件,且任何一個物件的端點編號都是從1到240。此外還有兩個附加的終端節點,為了APSDE-SAP的使用:端點號0固定用於ZDO資料介面;另外一個端點255固定用於所有應用物件廣播資料的資料介面功能。端點241-254保留(留給未來擴充套件使用)。

2.1.2.1應用Profiles

應用profiles是一組統一的訊息,訊息格式和處理方法,允許開發者建立一個可以共同使用的分散式應用程式,這些應用是利用駐紮在獨立裝置中的應用實體來實現的。這些應用profiles允許應用程式傳送命令、請求資料和處理命令的請求。

2.1.2.2簇

簇識別符號可用來區分不同的簇,簇識別符號聯絡著從裝置流出和向裝置流入的資料。在特殊的應用profiles範圍內,簇識別符號是唯一的。

2.1.3ZigBee裝置物件

ZigBee裝置物件(ZDO),描述了一個基本的功能函式,這個功能在應用物件、裝置profile和APS之間提供了一個介面。ZDO位於應用框架和應用支援子層之間。它滿足所有在ZigBee協議棧中應用操作的一般需要。此外ZDO還有以下作用:

(1)初始化應用支援子層(APS),網路層(NWK),安全服務規範(SSS)。

(2)從終端應用集合中配置的資訊來確定和執行安全管理、發現、網路管理、以及繫結管理。  

ZDO描述了應用框架層中應用物件的公用介面以及控制裝置和應用物件的網路功能。在終端節點0, ZDO提供了與協議棧中與低一層連線的介面,如果是資料則通過APSDE-SAP,如果是控制資訊則通過APSME-SAP。ZDO的具體描述在2.5節。

2.1.3.1裝置發現

裝置發現是ZigBee裝置為什麼能發現其他裝置的過程。這有兩種形式的裝置發現請求:IEEE地址請求和網路地址請求。IEEE地址請求是單播到一個特殊的裝置且假定網路地址已經知道。網路地址請求是廣播且攜帶一個已知的IEEE地址作為負載。

2.1.3.2服務發現

服務發現是為什麼一個已知裝置被其他裝置發現的能力的過程。服務發現通過在一個已知裝置的每一個端點發送詢問或通過使用一個匹配服務(廣播或者單播)。服務發現方便定義和使用各種描述來概述一個裝置的能力。

服務發現資訊在網路中也許被隱藏,在這種情況下,裝置提供的特殊服務便可能不在操作發生的時候到達。

2.2 ZigBee應用支援子層APS

APS提供了這樣的介面:在NWK層和APL層之間,從ZDO到供應商的應用物件的通用服務集。這服務由兩個實體實現:APS資料實體(APSDE)和APS管理實體(APSME)。

(1)APSDE提供在同一個網路中的兩個或者更多的應用實體之間的資料通訊。通過APSDE服務接入點(APSDE-SAP);

(2)APSME提供多種服務給應用物件,這些服務包含安全服務和繫結裝置,並維護管理物件的資料庫,也就是我們常說的AIB。通過APSME服務接入點(APSME-SAP)。

2.2.1 範圍

這一小節描述了應用層部分提供的服務規範和生產商定義的應用物件與ZigBee裝置物件之間的介面。規範定義了允許應用物件傳輸資料的資料服務和提供繫結機制的管理服務。另外,它還定義了應用支援子層的幀格式和幀型別。如圖2-2

圖2-2 zigbee幀格式

2.2.2 目的

這小節的目的是定義ZigBee應用支援子層的功能。該功能建立在兩個基礎之上,一是正確執行ZigBee網路層的驅動功能,二是製造商定義的應用物件所需要的功能。

2.2.3 應用支援子層簡介

應用支援子層給網路層和應用層通過ZigBee裝置物件和製造商定義的應用物件使用的一組服務提供了介面,該介面提供了ZigBee裝置物件和製造商定義的應用物件使用的一組服務。通過兩個實體提供這些服務:資料服務和管理服務。APS資料實體(APSDE)通過與之連線的SAP,即APSDE-SAP提供資料傳輸服務。APS管理實體(APSME)通過與之連線的SAP,即APSME-SAP提供管理服務,並且維護一個管理實體資料庫,即APS資訊庫(NIB)。

2.2.3.1 應用支援子層的資料實體(APSDE)

APSDE向網路層提供資料服務,並且為ZDO和應用物件提供服務,完成兩個或多個裝置之間傳輸應用層PDU。這些裝置本身必須在同一個網路。

APSDU將提供如下服務:

生成應用層的協議資料單元(APDU):APSDE將應用層協議資料單元(PDU)加上適當的協議幀頭生成應用子層的協議資料單元(PDU)。

繫結:兩個裝置服務和需求相匹配的能力。一旦兩個裝置綁定了,APSDE將可以把從一個繫結裝置接受到的資訊傳送給另一個裝置。

組地址過濾:提供了基於終點組成員的過濾組地址資訊的能力。

可靠傳輸:比從網路層僅僅通過端對端的傳輸增加了可靠性

拒絕重複:提供傳送的資訊不會被重複接收

支援大批量的傳輸:提供兩個裝置間順序傳輸大批量的資料的能力。

碎片:當訊息的長度大於單個網路層幀時,可以分割並重組訊息。

流控制:APS提供避免傳輸訊息淹沒接收者的措施。

阻塞控制:APS層使用“盡力”原則,提供措施避免傳輸訊息淹沒中間網路。

2.2.3.2 應用支援子層的管理實體(APSME)

APSME應提供管理服務支援應用程式符合堆疊。

APSME應具有基於兩個裝置的服務和需求向匹配的能力。該服務稱為繫結服務,APSME應具有能力來構建和維護繫結表來儲存這些資訊。

另外,APSME應提供如下服務:

1 應用層資訊庫管理:讀取與設定裝置應用層資訊庫屬性的能力

2 安全:與其他裝置通過使用安全金鑰建立可信關係的能力

2.2.4 服務規範

應用支援子層為上層實體(NHLE)與網路層提供了一個介面。APS層理論上包含一個管理實體稱為APS層,管理實體(APSME)。這個實體通過呼叫子層的管理函式來提供服務介面。APSME還負責維護一個關於APS子層管理實體的資料庫。這是一個關於APS子層資訊庫(AIB)的資料庫.圖2-3描述了APS子層的構成和介面。

圖2-3 應用支援之層參考模型

APS子層通過兩個服務指標(SAPs)提供兩種服務。APS資料服務通過APS子層資料實體服務指標SAP(APSDE-SAP),APS管理服務通過APS則層管理實體服務指標SAP(APSME-SAP).這兩個服務通過NLDE-SAP和NLME-SAP 介面 (見3.2小節)提供了NHLE和網路層之間的介面。網路層和APS子層之間的NLME-SAP介面只支援NLME-GET 和 NLME-SET原語,其他的NLME-SAP原語只可以通過ZDO實現(見2.5小節)。除了這些外部介面以外,在APSME和APSDE之間還有一個內部的介面,支援APSME使用APS資料服務。

2.2.4.1 APS資料服務

APS子層資料實體SAP(APSDE-SAP)支援在兩個同等的應用實體之間傳輸應用協議資料單元。表2-1列出了APSDE-SAP支援的原語。每一個原語將在下面的小節論述。

2.2.4.1.1 APSDE-DATA.request

該原語請求從本地NHLE向一個同等的NHLE實體傳輸NHLE PDU(ASDU)。

2.2.4.1.1.1 服務原語的語法

該原語的語法如下:

APSDE-DATA_request

                     {

DstAddrMode

DSTAddress

DstEndpoint

Profiled

Clusterld

SrcEndpoint

asduLength

asdu

TxOpionts

RadiusCounter

}

表2.2詳細說明了APSDE-DATA.request原語的引數。

2.2.4.1.1.2 產生

當有一個數據PDU(ASDU)由本地NHLE向一個同等的NHLE傳輸時,由本地NHLE生成該原語。

2.2.4.1.1.3 2

當APS子層實體接收到該原語時,便開始傳輸提供的ASDU。

如果DstAddrMode引數為0x00,並且接收該原語的裝置的APSDE支援繫結表,那麼在繫結表中根據引數SrcEndpoint和ClusterId所指定的endpoint和cluster identifiers尋找相關聯的繫結表入口。如果沒有繫結表入口,APSDE將傳送狀態引數為NO_BOUND_DEVICE 的語APSDE-DATA.confirm原語。如果找到了一個或多個繫結表入口,APSDE將構建APDU,其endpoint資訊從繫結表入口獲得,當通過網路層傳輸資訊幀時,其destination address資訊從繫結表入口獲得。如果存在多於一個繫結表入口,當接收到相應的NLDE-DATA.confirm原語,按上面描述的,APSDE將構建並向下一個繫結表入口傳輸APDU,直到沒有繫結表入口剩餘。如果接收到該原語裝置的APSDE不支援繫結表,那麼APSDE將傳送狀態引數為NOT_SUPPORTED的APSDE-DATA.confirm原語。

如果DstAddrMode引數為0x02,DstAddress引數包含擴充套件的64位IEEE地址,首次必須使用NIB(見表2.24)屬性中的nwkAddressMap對映相應的16位網路地址。如果找不到相應的16位網路地址,那麼APSDE將傳送狀態引數為NO_SHORT_ADDRESS的APSDE-DATA.confirm原語。如果找到了相應的16位網路地址,其值將被用在NLDE-DATA.request原語中,引數DstEndpoint將被置在作為結果的APDU中。如果DstAddrMode引數為0x01,表明為群地址,引數DstAddress將被解釋為16位的全地址。這個地址將被放置在APS頭中的群地址域,引數DstEndpoint將被忽略,APS頭中的destination endpoint域將被省略。APS頭中的幀控制域的delivery mode子域值在這種情況下為0x03.

如果DstAddrMode引數為0x02,DstAddress引數包含16位的網路地址,並且提供引數DstEndpoint,當目的網路地址用於應用響應,並且網路地址部位後面的資料傳輸請求保留時,上層只能使用DstAddrMode為0x02.

應用程式可以通過使用引數RadiusCounter來限制在網路中傳輸資料幀的跳數。如果引數RadiusCounter為0x00,網路層在網路中傳輸資訊幀沒有約束。如果引數RadiusCounter為非零,則網路層將允許資訊幀在網路中傳輸存在最多RadiusCounter跳。

如果DstAddrMode引數為0x01,表明為群地址,或者DstAddrMode引數為0x00,並且相應的繫結表入口包含哪一個群地址,那麼APSME將檢查NIB(見表3.42)中的屬性nwkUseMulticast值。如果屬性值為FALSE,那麼輸出幀的幀控制域中的delivery mode子域設為0b11,16位的目的群地址將設定輸出幀APS頭中的group address域,該幀將以廣播方式傳輸。傳輸該幀的原語NLDE-DATA.request的DstAddr引數設定為值0xfffd,廣播給所有RxOnWhenIdle=TRUE的裝置。如果屬性nwkUseMulticast值為TRUE,那麼該幀將使用網路層多點傳送方式傳輸,群地址不用放置在輸出幀的APS頭中。

如果引數TxOptions指定使用安全傳輸,則APS子層將使用安全服務為ASDU提供安全(見4.2.4小節)。如果安全處理失敗,則APSDE傳送狀態引數為SECURITY_FAIL的APSDE-DATA.confirm原語。

APSDE使用NLDE-DATA.request原語向網路層傳輸構造幀。當接收到NLDE-DATA.confirm原語,APSDE則傳送APSDE-DATA.confirm原語,其狀態引數值域從網路層接收到的一致。

APSDE通過每次傳送使NLDE-DATA.request原語的DiscoverRoute引數值為0x01確保網路層中的路由發現始終啟用。

如果傳輸的ASDU大於合適的單個幀,當沒有請求確認傳輸或者在TxOptions域的fragmentation permitted標誌位設為0時,則放棄傳輸ASDU,APSDE將傳送狀態引數為INVALID_REQUEST的APSDE-DATA.confirm原語。

如果傳輸的ASDU大於合適的單個幀,當請求確認傳輸並且在TxOptions域的fragmentation permitted標誌位設為1時,ASDU將按照2.2.8.3.5小節所述分裂為多個APDU。如果請求傳輸和安全處理,那麼每一個APDU都要進行處理。注意不要使用分裂處理,除非相應的上層檔案或者相互明確表明幀的傳輸允許分裂處理,並且說明了塊的數量和總共傳輸的大小。

2.2.4.1.2 APSDE-DATA.confirm

該原語報告從本地NHLE向一個同等的NHLE傳輸PDU資料的結果。

2.2.4.1.2.1 服務原語的語法

該原語的語法如下:

APSDE-DATA.confirm   {

                     DstAddMode

                     DstAddress

                     DstEndpoint

                     SrcEndpoint

                     Status

}

表2.3詳細介紹了APSDE-DATA.confirm原語的引數。

2.2.4.1.2.2 產生

該原語有本地APS子層產生作為對APSDE-DATA.request原語的響應。該原語返回的狀態引數值為SUCCESS,表明請求傳輸成功,或者為錯誤程式碼NO_SHORT_ADDRESS , NO_BOUND_DEVICE 或SECURITY_FAIL或者為任何NLDE-DATA.confirm原語返回的狀態值。這些狀態值的路由在2.2.4.1.2小節中進行了詳細的描述。

2.2.4.1.2.3 接收

接收到該原語,發起裝置的上層被通報請求傳輸的結果。如果傳輸成功,狀態引數值設定為SUCCESS。否則,狀態引數表明錯誤。

2.2.4.1.3 APSDE-DATA.indication

該原語表明一個PDU資料向本地應用實體的APS子層傳輸。

2.2.4.1.3.1 服務原語的語法

該原語的語法如下:

APSDE-DATA.indication

 {

DstAddrMode

DSTAddress

DstEndpoint

SrcAddrMode

SARCAddress

SrcEndpoint

Profield

Clusterld

asduLength

asdu

WasBroadcast

SecurityStatus

LinkQuality

}

表2.4詳細描述了APSDE-DATA.indication原語的引數。

2.2.4.1.3.2 產生

該原語由APS子層產生,當從本地網路層實體接收到適當地址的資料幀時,APS子層向上層傳送該原語。如果ASDU頭的幀控制域表明該幀安全保護,則按照4.2.4小節的描述進行安全處理。

該原語由APS子層產生,當通過NLDE-DATA.indication原語從網路層接收到適當地址的資料幀時,傳送給上層實體。如果APDU頭的幀控制域表明該幀安全保護,則按照4.2.4小節的描述進行安全處理。

接收到的幀的源地址必須通過NIB(見表2.24)中的屬性nwkAddressMap對映為相應的擴充套件的64位IEEE地址。如果能找到相應的64為IEEE地址,則APSDE傳送該原語,其引數SrcAddrMode設為0x02,SrcAddress引數設為相應的64位IEEE地址。如果找不到相應的64位IEEE地址,APSDE將傳送該原語,其引數SrcAddrMode設為0x01,引數SrcAddress設為接收幀包含的16位源地址。

2.2.4.1.3.3 接收

接收到該原語,上層被通報有資料到達該裝置。

2.2.4.2 APS管理服務

APS管理實體SAP(APSME-SAP)支援上層和APSME層之間傳輸管理命令。表2.5總結了APSME通過APSME-SAP介面支援的原語。各原語的詳細描述見下面小節。

2.2.4.3 繫結原語

這組原語定義了裝置上層如何將一個繫結記錄加入(提交)其本地繫結表或將繫結記錄從本地繫結表中移除。

只有支援繫結表或者繫結表儲存器的裝置支援這些原語。如果其他裝置從上層接收到這些原語,那麼這些原語將被忽略。

2.2.4.3.1 APSME-BIND.request

該原語允許支援繫結的裝置上層通過在本地繫結表中建立一個入口請求將兩個裝置繫結。

2.2.4.6.1.1 服務原語的語法

該原語的語法如下:

APSME-BIND.request               {

SrcAddr

SrcEndpoint

Clusterld

DstAddrMode

DstAddr

DstEndpoint

}

表2.6詳細描述了APSME-BIND.request原語的引數。

2.2.4.3.1.2 產生

該原語由上層產生髮送給APS子層,在支援繫結表的裝置上發起繫結操作。

2.2.4.3.1.3 接收

一旦被當前沒有加入到網路或不支援繫結表的裝置接收到該原語,那麼APSME將傳送狀態引數為ILLEGAL_REQUEST的APSME-BIND.confirm原語。

如果支援繫結表的裝置的APS子層從NHLE接收該原語,APSME將試圖直接從其繫結表中建立指定的入口。如果可以建立入口,APSME將傳送狀態引數為SUCCESS的APSME-BIND.confirm原語。如果因為其繫結表缺乏能力而無法建立入口,APSME將傳送狀態引數為TABLE_FULL的APSME-BIND.confirm原語。

2.2.4.3.2 APSME-BIND.confirm

該原語使裝置得到其上層請求繫結兩個裝置的結果。

2.2.4.3.2.1 服務原語的語法

該原語的語法如下:

APSME-BIND.confirm              {

Status

SrcAddr

SrcEndpoint

Clusterld

DstAddrMode

DstAddr

DstEndpoint

}

表2.7詳細描述了APSME-BIND.confirm原語的語法。

2.2.4.3.2.2 產生

該原語由APSME產生作為APSME-BIND.request原語的響應傳送給NHLE。如果請求成功,那麼狀態引數將表明一個成功的繫結請求。否則,狀態引數則為錯誤碼ILLEGAL_DEVICE、 ILLEGAL_REQUEST 或TABLE_FULL。

2.2.4.3.2.3 接收

接收到該原語,上層就被通知其繫結請求的結果。如果繫結請求成功,狀態引數設定為SUCCESS。否則,狀態引數表明錯誤。

2.2.4.3.3 APSME-UNBIND.request

該原語允許支援繫結的裝置上層通過在本地繫結表中移除一個入口請求將兩個裝置解除繫結。

2.2.4.3.3.1 服務原語的語法

APSME-UNBIND.request             {

SrcAddr

SrcEndpoint

Clusterld

DstAddrMode

DstAddr

DstEndpoint

}

表2.8詳細描述了APSME-UNBIND.request原語的引數。

2.2.4.3.3.2 產生

該原語有上層產生髮送給APS子層,在支援繫結表的裝置上發起解除繫結操作。

2.2.4.3.3.3 接收

一旦被當前沒有加入到網路或不支援繫結表的裝置接收到該原語,那麼APSME將傳送狀態引數為ILLEGAL_REQUEST的APSME-UNBIND.confirm原語。

如果支援繫結表的裝置的APS子層從NHLE接收該原語,APSME將在繫結表中查詢指定的入口。如果入口存在,APSME將移除這個入口併發送狀態引數為SUCCESS的APSME-UNBIND.confirm原語(見2.2.4.3.4小節)。如果沒有找到入口,APSME將傳送狀態引數為INVALID_BINDING的APSME-UNBIND.confirm原語。如果該裝置不在網路中,APSME將傳送狀態引數為ILLEGAL_DEVICE的APSME-BIND.confirm原語。

2.2.4.3.4 APSME-UNBIND.confirm

該原語使裝置得到其上層請求解除兩個裝置繫結的結果。

2.2.4.3.4.1 服務原語的語法

該原語的語法如下:

APSME-UNBIND.confirm             {

Status

SrcAddr

SrcEndpoint

Clusterld

DstAddrMode

DstAddr

DstEndpoint

}

表2.9詳細描述了APSME-UNBIND.confirm原語的語法。

2.2.4.3.4.2 產生

該原語由APSME產生作為APSME-UNBIND.request原語的響應傳送給NHLE。如果請求成功,那麼狀態引數將表明一個成功的解除繫結請求。否則,狀態引數則為錯誤碼ILLEGAL_DEVICE、 ILLEGAL_REQUEST 或INVALID_BINDING。

2.2.4.3.4.3 接收

接收到該原語,上層就被通知其解除繫結請求的結果。如果解除繫結請求成功,狀態引數設定為SUCCESS。否則,狀態引數表明錯誤。

2.2.4.4 資訊庫的維護

這組原語定義了裝置上層如何讀取和寫入AIB中的屬性。

2.2.4.4.1 APSME-GET.request

該原語允許裝置上層從AIB中讀取屬性值。

2.2.4.4.1.1 服務原語的語法

該原語的語法如下:

APSME-GET.request               {

AIBAttribute

}

表2.10描述了該原語的引數。

2.2.4.4.1.2 產生

該原語由上層產生併發送給APSME來讀取AIB中的屬性。

2.2.4.4.1.3 接收

接收到該原語,APSME試圖從資料庫中得到AIB屬性。如果在資料庫中沒有相應的AIB屬性表識別符號,APSME將傳送狀態引數為UNSUPPORTED_ATTRIBUTE的APSME-GET.confirm原語。

如果成功得到了AIB屬性,APSME將傳送狀態引數為SUCCESS,包含AIB屬性識別符號和屬性值的APSME-GET.confirm原語。

2.2.4.4.2 APSME-GET.confirm

該原語向上層報告從AIB中讀取屬性值的結果。

2.2.4.4.2.1 服務原語的語法

該原語的語法如下:

APSME-GET.confirm               {

                                  Status

AIBAttribute

AIBAttributeLength

AIBAttributeValue

}

表2.11描述了該原語的引數。

2.2.4.4.2.2 產生

該原語由APSME產生,傳送給上層作為對APSME-GET.request原語的響應。該原語返回狀態SUCCESS,表明請求讀取AIB屬性請求成功,或者返回錯誤碼UNSUPPORTED_ATTRIBUTE.這些狀態在2.2.4.4.1.3小節進行了描述。

2.2.4.4.2.3 接收

接收到該原語,上層得知讀取AIB屬性請求的結果。如果讀取AIB屬性請求成功,狀態引數設定為SUCCESS。否則,狀態引數表明錯誤。

2.2.4.4.3 ASPME-SET.request

該原語允許裝置上層將屬性值寫入AIB。

2.2.4.4.3.1 服務原語的語法

該原語的語法如下:

APSME-SET.request               {

AIBAttribute

AIBAttributeLength

AIBAttributeValue

}

表2.12描述了該原語的引數。

2.2.4.4.3.2 產生

該原語由上層產生併發送給APSME在AIB中寫入一個屬性值。

2.2.4.4.3.3 接收

接收到該原語,APSME試圖將給定的資料庫中的值寫入AIB屬性。如果在資料庫中沒有AIB屬性引數指定的屬性,APSME將傳送狀態引數為UNSUPPORTED_ATTRIBUTE的APSME-SET.confirm原語。如果AIB屬性值引數給定的值超過了有效的屬性範圍,APSME將傳送狀態引數為INVALID_PARAMETER的APSME-SET.confirm原語。

如果成功寫入了AIB屬性,APSME將傳送狀態引數為SUCCESS的APSME-SET.confirm原語。

2.2.4.4.4 APSME-SET.confirm

該原語向上層報告向AIB屬性中寫入屬性值的結果。

2.2.4.4.4.1 服務原語的語法

該原語的語法如下:

APSME-SET.confirm               {

                                  Status

AIBAttribute

}

表2.13描述了該原語的引數。

2.2.4.4.4.2 產生

該原語由APSME產生,傳送給上層作為對APSME-SET.request原語的響應。該原語返回狀態SUCCESS,表明將屬性值寫入AIB屬性的請求成功,或者返回錯誤碼INVALID_PARAMETER或UNSUPPORTED_ATTRIBUTE.這些狀態在2.2.4.4.3.3小節進行了描述。

2.2.4.4.4.3 接收

接收到該原語,上層得知寫入AIB屬性請求的結果。如果寫入AIB屬性請求成功,狀態引數設定為SUCCESS。否則,狀態引數表明錯誤。

2.2.4.5 組管理

這組原語允許上層在當前裝置中通過在組表中新增和移除入口來管理每個端點的組關係。

2.2.4.5.1 APSME-ADD-GROUP.request

該原語允許上層請求一個特定的組的組關係加入到特定的端點。

2.2.4.5.1.1 服務原語的語法

該原語的語法如下:

APSME-ADD-GROUP.request          {

                                 GroupAddress

Endpoint

}

表2.14描述了該原語的引數。

2.2.4.5.1.2 產生

當上層要將一個特定組的關係加入一個端點時產生該原語,設定了組地址的幀將被傳送給該端點。

2.2.4.5.1.3 接收

如果接收到該原語,其GroupAddress引數的值超出了有效範圍,APSME將向上層傳送狀態引數為INVALID_PARAMETER的APSME-ADD-GROUP.condirm原語。同樣,如果Endpoint引數值為0x00或當前裝置的其它沒有執行的端點,APSME將傳送狀態引數為INVALID_PARAMETER的APSME-ADD-GRROUP.confirm原語。

完成上述引數檢測後,APSME將檢查組表中是否存在包含給定引數GroupAddress和Endpoint的入口。如果該入口已存在於組表中,APSME將向上層傳送狀態引數為SUCCESS的APSME-ADD-GROUP.confirm原語。如果沒有該入口,表中還有入口空間,APSME將在組表中建立一個新的入口,其引數為給定的GroupAddress和Endpoint值。入口加入到APS組表後,APSME將傳送NLME-SET.request原語來確保相應的網路層組表中的nwkGroupIDTable屬性與APS子層中的組表包含的組地址列表相一致。一旦兩個表一致了,APSME將向上層傳送狀態引數為SUCCESS的APSME-ADD-GROUP.confirm原語。如果沒有給定引數GroupAddress和Endpoint的入口並且組表中沒有建立另一個入口的空間,APSME將向上層傳送狀態引數為TABLE_FULL的APSME-ADD-GROUP.confirm原語。

2.2.4.5.2 APSME-ADD-GROUP.confirm

該原語使得裝置得知其將一個組新增到端點的請求結果。

2.2.4.5.2.1 服務原語的語法

該原語的語法如下:

APSME-ADD-GROUP.confirm          {

                                  Status

GroupAddress

Endpoint

}

表2.15描述了該原語的引數。

2.2.4.5.2.2 產生

該原語由APSME產生併發送給上層作為對APSME-ADD-GROUP.request原語的響應。如果APSME-ADD-GROUP.request成功,那麼狀態引數值為SUCCESS。如果APSME-ADD-GROUP.request中的引數為無效值,那麼狀態產生設定為INVALID_PARAMETER。如果APSME試圖加入一個組表入口,但表中已沒有加入其它入口的空間,狀態引數設定為TABLE_FULL。

2.2.4.5.2.3 接收

上層接收到該原語,則得知新增組請求的結果。狀態引數值如上面所述。

2.2.4.5.3 APSME-REMOVE-GROUP.request

該原語允許上層請求將一個特定的組的組關係從特定的端點中移除。

2.2.4.5.3.1 服務原語的語法

該原語的語法如下:

APSME-REMOVE-GROUP.request       {

GroupAddress

Endpoint

}

表2.16描述了該原語的引數。

2.2.4.5.3.2 產生

當上層要將一個特定組的關係從一個端點中移除時產生該原語,設定了組地址的幀將不被傳送給該端點。

2.2.4.5.3.3 接收

如果接收到該原語,其GroupAddress引數的值超出了有效範圍,APSME將向上層傳送狀態引數為INVALID_PARAMETER的APSME-REMOVE-GROUP.condirm原語。同樣,如果Endpoint引數值為0x00或當前裝置的其它沒有執行的端點,APSME將傳送狀態引數為INVALID_PARAMETER的APSME-REMOVE-GRROUP.confirm原語。

完成上述引數檢測後,APSME將檢查組表中是否存在包含給定引數GroupAddress和Endpoint的入口。如果該入口已存在於組表中,該入口將被移除。APSME將傳送NLME-SET.request原語來確保相應的網路層組表中的nwkGroupIDTable屬性與APS子層中的組表包含的組地址列表相一致。一旦兩個表一致了,APSME將向上層傳送狀態引數為SUCCESS的APSME-REMOVE-GROUP.confirm原語。如果沒有該入口,APSME將向上層傳送狀態引數為SUCCESS的APSME-REMOVE-GROUP.confirm原語。

2.2.4.5.4 APSME-REMOVE-GROUP.confirm

該原語使得裝置得知其將一個組從端點中移除的請求結果。

2.2.4.5.4.1 服務原語的語法

該原語的語法如下:

APSME-REMOVE-GROUP.confirm       {

                                  Status

GroupAddress

Endpoint

}

表2.17描述了該原語的引數。

2.2.4.5.4.2 產生

該原語由APSME產生併發送給上層作為對APSME-REMOVE-GROUP.request原語的響應。如果APSME-REMOVE-GROUP.request成功,那麼狀態引數值為SUCCESS。如果APSME-REMOVE-GROUP.request中有引數為無效值,那麼狀態產生設定為INVALID_PARAMETER。

2.2.4.5.4.3 接收

上層接收到該原語,則得知移除組請求的結果。狀態引數值如上面所述。

2.2.4.5.5 APSME-REMOVE-ALL-GROUP.request

當上層想要將所有組中的關係從端點中移除時產生該原語,因此,沒有組地址的幀傳送給端點。

2.2.4.5.5.1 服務原語的語法

該原語的語法如下:

APSME-REMOVE-ALL-GROUPS.request   {

Endpoint

}

表2.18描述了該原語的引數。

2.2.4.5.5.2 產生

當上層想要將所有組中的關係從端點中移除時產生該原語,因此,沒有組地址的幀傳送給端點。

2.2.4.5.5.3 接收

接收到該原語,如果Endpoint引數值為0x00或當前裝置的其它沒有執行的端點,APSME將傳送狀態引數為INVALID_PARAMETER的APSME-REMOVE-ALL-GRROUP.confirm原語。

完成上述引數Endpoint檢測後,APSME將從組表中移除所有與該端點相關的入口。APSME將傳送NLME-SET.request原語來確保相應的網路層組表中的nwkGroupIDTable屬性與APS子層中的組表包含的組地址列表相一致。一旦兩個表一致了,APSME將向上層傳送狀態引數為SUCCESS的APSME-REMOVE-ALL-GROUP.confirm原語。

2.2.4.5.6 APSME-REMOVE-ALL-GROUP.confirm

該原語使得裝置得知其從一個端點中移除所有組的請求結果。

2.2.4.5.6.1 服務原語的語法

該原語的語法如下:

表2.19描述了該原語的引數。

2.2.4.5.6.2 產生

該原語由APSME產生併發送給上層作為對APSME-REMOVE-ALL-GROUP.request原語的響應。如果APSME-REMOVE-ALL-GROUP.request成功,那麼狀態引數值為SUCCESS。如果APSME-REMOVE-ALL-GROUP.request中有引數為無效值,那麼狀態產生設定為INVALID_PARAMETER。

2.2.4.5.6.3 接收

上層接收到該原語,則得知從端點中移除所有組請求的結果。狀態引數值如上面所述。

2.2.5 幀格式

這小節描述了APS層的幀格式(APDU)。每一個APS幀包含如下的基本組成:

1、APS頭,由幀控制和地址資訊組成。

2、APS有效載荷,變長,包含幀型別指定的資訊。

APS子層的幀作為有序域按照指定的順序進行描述。這小節的所有幀格式都按照網路層的傳輸順序進行描述,從左至右,最左的位最先傳輸。每個域中的長度為k位都從0(最左、最低)至k-1(最右、最高)排號。域中長度小於一個位元組的值都按照從最低位至最高位的順序向網路層傳輸。

2.2.5.1 常規的APDU幀格式

APS幀格式由一個APS幀頭和APS有效載荷組成。APS幀頭域有固定的順序,在幀中可以不包含地址域。常規的APS幀格式如表2.2所示。

2.2.5.1.1 幀控制域

幀控制域8位元長,包含定義的幀型別、地址域和其它控制標誌資訊。幀控制域如表2.3所示的格式。

2.2.5.1.1.1 幀型別子域

幀型別子域為2位元長,可設定為表2.20所列出的值。

2.2.5.1.1.2 傳輸模式子域

傳輸模式子域2位元長,可設定為表2.21所列出的值。

如果值為0b00,幀將被髮送給接收裝置給定的端點。

如果值為0b10,訊息為廣播發送。在這種情況下,訊息將被髮送給所選擇的使用的廣播地址的所有裝置和所有端點,見3.7.5小節。

如果值為0b11,將使用組地址,幀只被傳送給APS頭中組地址域所確定的在組中表示組成員的裝置端點。注意,源裝置的其它端點可能是輸出幀組地址的成員。幀將被髮送給指定組的成員,包括源裝置的其它端點。

2.2.5.1.1.3 安全子域

安全服務提供者(見4章)管理安全子域。

2.2.5.1.1.4 確認請求子域

確認請求子域1位元長,指定了當前的傳輸是否要求接收者接收到幀後傳送確認幀。如果該子域設定為1,確定接收的為有效幀後,接收者需要構建並向發起者傳送確認幀。如果該子域為0,確定接收的為有效幀後,接收者不向發起者傳送確認幀。

2.2.5.1.1.5 延長頭存在

延長頭存在子域為1位元長,指定在幀中是否包含延長頭。如果該子域設定為1,那麼延長頭包含在幀中。否則,不包含在幀中。

2.2.5.1.2 目的端點域

目的端點8位元長,指定幀的最終接收端點。如果幀控制域中的傳輸模式子域為0b00(標準單播發送),那麼幀中包含該域。

目的端點值為0x00,該幀的目的地址為每個裝置的ZOD。目的端點值為0x01-0xf0,幀目的地址為操作的端點。目的端點值為0xff,幀目的地址為除了端點0x00的所有活躍的端點。端點(0xf1-0xfe)保留。

2.2.5.1.3 組地址域

組地址域16位元長,只有當幀控制中的傳輸模式子域為0b11時存在該域。在這種情況下,目的端點不存在。如果幀中的APS頭包含組地址域,幀將被髮送裝置中組表中由組地址域確定的所有端點。

裝置的nwkUseMukticast設定為TRUE,輸出幀不設定組地址域。

2.2.5.1.4 簇識別符號域

簇識別符號16位元長,指定由請求中SrcAddr所指示的用於裝置繫結操作的簇識別符號。幀控制域的幀型別子域指定簇識別符號域是否存在。該域只用於資料幀,不用於命令幀。

2.2.5.1.5 Profile識別符號域

Profile識別符號2位元組長,指定在傳輸幀的過程中,用於裝置過濾訊息和幀的Profile識別符號。該域之用於資料幀和確認鎮。

2.2.5.1.6 源端點域

源端點域8位元長,指定發起者幀的端點。源端點值為0x00,表明從每個裝置的ZDO發起。源端點值為0x01-0xf0,表明幀從應用操作的端點發起。其它的端點(0xf1-0xfe)保留。

2.2.5.1.7 APS計數器

該域8位元長,用於防止接收重複幀,如2.2.8.4.2小節。每新傳輸一次該值加一。

2.2.5.1.8 延長頭子域

延長頭子域包含深層子域,格式如表2.4所示。

2.2.5.1.8.1延長幀控制域

延長幀控制域長8位元,包含使用分裂的定義資訊。延長幀控制域的格式如表2.5所示。

分裂子域2位元長,值為表2.22所列出的任意值。

2.2.5.1.8.2 塊序號

塊序號域為1位元組長,用於如下所述的分裂控制:如果分裂子域的設定表示不是分裂傳輸,那麼子域中不包含塊序號域。如果分裂域設定為01,那麼子域中包含塊序號域,並且該域表示在分裂傳輸中塊的序號。如果分裂域設定為10,那麼子域中包含塊序號域,並且表示當前幀傳輸的塊序號,用值0x02表示第二個分裂塊,0x03表示第三個,等等。

2.2.5.1.8.3 應答位域

應答位域為1位元組長,用於2.2.8.4.3小節所描述的APS確認,表示成功傳輸哪個ASDU分裂塊。該域只有在幀型別域表明為確認幀並且分裂子域表明是分裂傳輸使才出現。

2.2.5.1.9 幀有效載荷域

幀有效載荷域為變長,包含各個幀型別指定的資訊。

2.2.5.2 個別幀型別的格式

定義了三種幀型別:資料、APS命令和確認幀。每一個幀型別都在下面的小節進行討論。

2.2.5.2.1 資料幀格式

資料幀的格式如表2.6所示。

資料幀中域的順序如表2.2所示的APS幀順序。

2.2.5.2.1.1 資料幀APS幀頭域

資料幀的APS幀頭域包含幀控制、簇識別符號、Profile識別符號、源端點和APS計數器域。資料幀是否包含目的端點和延長頭域則各自按照幀控制域中的傳輸模式和延長頭存在域的規定。

在幀控制域中,幀型別應包含如表2.20所示的表示資料幀的值。源端點存在域設定為1.所有其它域根據使用資料幀的意圖設定。

2.2.5.2.1.2 資料有效載荷域

對於輸出的資料幀,資料有效載荷應包含部分或全部上層請求APS資料服務傳輸的位元組序列。對於輸入資料幀,資料有效載荷域應包含APS資料服務接收到的轉發給目的裝置或如果協調器是其中的目的地傳送給上層位元組序列。

2.2.5.2.2 APS命令幀格式

APS命令幀格式如表2.7所示。

APS命令幀中域的順序如表2.7所示的APS幀順序。

2.2.5.2.2.1 APS命令你幀APS頭域

APS命令幀的APS頭域應包含幀控制和APS計數器域。如果幀控制域中的傳輸模式子域表明為組地址,則幀中應包含組地址域。在該版本的規範中,APS命令幀不能分裂,並且沒有延長頭域。

在幀控制域中,幀型別子域應包含表明是APS命令幀的值,如表2.20所示。APS命令有效載荷應根據使用APS命令幀的意圖進行適當的設定。

2.2.5.2.2.2 APS命令識別符號域

APS命令識別符號域表明正在使用APS命令。

2.2.5.2.2.3 APS命令有效載荷域

APS命令幀的APS命令有效載荷域應包含APS命令本身。

2.2.5.2.3 確認幀格式

確認幀格式如表2.8所示。

確認幀中域的順序應與表2.8所示的APS幀中域順序一致。

2.2.5.2.3.1 確認幀APS頭域

確認幀的APS頭域應包含幀控制、簇識別符號、Profile識別符號和APS計數器。源和目的端點都應包含在確認幀中。是否包含延長頭域則按照幀控制域中延長頭存在子域的要求裝置。

在幀控制域中,幀型別子域應包含如表2020所示的表示為確認幀的值。延長頭存在域應包含同樣表明為確認幀的值。所有其它子域則根據使用確認幀的意圖進行適當的設定。

確認幀源端點的值反映了要求進行確認的幀的目的端點的值。同樣,確認幀目的端點的值反映了要求進行確認的幀的源端點的值。

APS計數器域包含與確認的幀相一致的值。

如果延長頭域存在,延長的幀控制域的分裂域應包含域確認的幀一致的值。如果該幀使用分裂,那麼應包含塊序號和請求域。如果傳輸的使分裂的第一個幀,那麼塊序號應為0,否則應包含域確認的幀一致的值。

2.2.6 命令幀

這部分規範沒有命令幀。APS命令幀和原語的相關安全問題見4.5.9小節。

2.2.7 常數和PIB屬性

2.2.7.1 APS常數

APS子層常量的定義與描述見表2.23.

2.2.7.2 APS資訊資料庫

APS資訊資料庫包含管理裝置APS層需要的屬性。AIB屬性如表2.24所示。AIB還包含一些管理安全服務的屬性。這些屬性在4.5.10小節列出。

2.2.8 功能描述

2.3ZigBee應用程式框架

2.3.1建立一個ZigBee Profile

在ZigBee網路中兩個裝置之間通訊的關鍵是統一一個profile。

Profile的一個例子就是智慧家居。這個ZigBee profile允許一系列裝置型別交換控制訊息來構造一個無線智慧家居應用。這些裝置被設計成很好的交換已知資訊來實現這些控制,如控制燈的開和關,傳送一個亮度感測器測量給一個照明裝置控制器或者如果已有的感測器檢測到移動就傳送一個警告資訊。

Profile另一個型別的例子是在連個ZigBee裝置間定義了普通行為。為了舉例說明,無線網路在網路中依靠自制裝置的能力來同網路連線和發現其他裝置和在裝置上的服務。裝置和服務發現是在裝置的profile中支援的特性。

2.3.1.1從ZigBee聯盟獲得的Profile識別符號

ZigBee在兩個分開的等級定義Profile,這兩個等級是:私人的和公開的。這些等級的精確定義和標準是在ZigBee聯盟和在這個檔案範圍之外的一個管理問題。為了這個技術規範的目的,對Profile識別符號標準是唯一的。到最後,對一個Profile識別符號的應用程式,每一個Profile必須以向ZigBee聯盟的一個請求開始。一旦獲得Profile識別符號,Profile識別符號允許Profile設計者有如小定義:

(1)       裝置描述

(2)       簇識別符號

Profile識別符號的應用的市場空間對從ZigBee聯盟發行Profile識別符號是一個關鍵的標準。Profile需要覆蓋一個足夠寬的裝置範圍來允許互動性來發生在沒有過度範圍裝置之間,且導致用來描述它們介面的一個簇識別符號的不足。相反的。Profile不能被定義的太狹窄導致很多被個人Profile識別符號描述的裝置導致Profile識別符號定址空間的浪費,且在描述裝置如何介面時產生互操作性。在ZigBee聯盟裡的政策組將就如何定義Profile建立標準,且幫助請求者製作它們的Profile識別符號請求。

2.3.1.2定義裝置描述和簇

Profile識別符號是在ZigBee協議中主要的主要列舉量。每一個唯一的Profile識別符號定義了裝置描述和簇識別符號的一個聯合的列舉量。例如,對Profile識別符號“1”,存在一些被16位值描述的裝置描述(就是說在每一個Profile中可能有65536個裝置描述)和一些被16位值描述的簇識別符號(就是說在每一個Profile中可能有65536個識別符號)。每一個簇識別符號也支援一些被16位值描述的屬性。例如,每一個Profile識別符號最多有65536格簇識別符號且每一個這樣的識別符號最多又可以包含65536格屬性。Profile開發者的責任就是定義和分配裝置描述,簇識別符號和在它們已分配的Profile識別符號裡的屬性。注意裝置描述、簇識別符號和屬性識別符號的定義必須很小心的採用以保證簡單描述的有效建立和當交換訊息時單一化處理。

裝置描述和簇識別符號必須通過將被處理的已知的profile識別符號來完成。在任何訊息被定向到一個裝置之前,ZigBee協議採用已經使用服務發現確定profile在裝置和端點的支援。同樣的,繫結處理採用相似的服務發現,且profile發生,由於作為結果的匹配提取到源地址、源端點、簇識別符號、目的地址和目的端點。

2.3.1.3在端點配置profile

在一個單獨的ZigBee裝置也許包含許多的profile的維持,這些profile是由在這些profile定義的各種簇識別符號的子集提供的,且維持多樣的裝置描述。在裝置裡使用一個分層定址定義的能力如下:

(1)     裝置:裝置是由有唯一的IEEE和網路地址的單個無線電來維持的。

(2)       端點:這是一個8位的域,描述了不同的應用程式,這些應用都是由單個無線電來維持的。端點0x00用來定址裝置profile,裝置profile是每個ZigBee裝置必須使用的;端點0xff用來定址所有活動的端點(廣播端點),且端點0xf1-0xfe保留。結果,一個單獨的物理ZigBee無線電能維持最多240個應用程式在端點0x01-0xf0.

應用程式決定關於如何造裝置端點配置應用程式和哪個端點來廣播(advertise)。唯一的要求是每個端點都建立簡單的描述符,且這些描述符對於服務發現是有效的。

2.3.1.4啟用安全發現

一旦裝置被建立維護特殊的profile且同簇描述符使用一致,簇描述符使用是為在這些profile中的裝置描述,那麼應用程式能被配置。為了達到這一點,每一個應用程式被分配給個別的端點,且每一個都使用簡單描述符來描述。通過簡單描述和在ZigBee設被profile中描述的其他服務發現機制,啟用服務發現,裝置的繫結被維持和在補充的裝置間應用程式的通知。

重要的一點是服務發現是以profile識別符號、輸入簇識別符號列表和輸出簇識別符號列表(裝置描述很明顯的丟失了)為基礎構成的。裝置描述是在表示profile的型別的裝置裡規定必選的和可選的簇識別符號維持的一個簡單的協定。另外,期望裝置描述列舉在PDA裡使用或者其他輔助的繫結裝置提供裝置能力的額外描述。

2.3.1.5混合標準和所有權Profile

一個例子,ZigBee裝置能被建立帶有一個為了一個標準而寫的單獨的端點應用程式,公開的ZigBee profile識別符號“XX”。如果生產商想配置一個ZigBee裝置支援的標準profile“XX”,且提供給賣主特殊的副檔名,這些副檔名將被advertised在一個孤立的端點。維持標準的profile識別符號“XX”,但生產時沒有賣主副檔名的裝置將僅僅advertised維持單獨的profile識別符號“XX”,且不能使用賣主副檔名響應或者建立訊息。

2.3.1.6啟用相反的相容性

在先前的例子中,使用一個標準建立一個裝置,這個標準公佈ZigBee profile識別符號“XX”,它包含了標準的profile的最初版本。如果ZigBee聯盟將更新這個標準profile來建立新的特性和加法(additions),修訂本將組合成一個新的標準profile,這個新的標準profile有一個新的profile識別符號(即“XY”)。有profile識別符號“XX”的裝置應域新裝置相容,這新的裝置對於profile識別符號“XX”和profile識別符號“XY”有新裝置advertised維持。以這種方式,新裝置使用profile識別符號“XX”與舊裝置通訊,然而,也可以使用profile識別符號“XY”與舊裝置通訊在相同的應用程式裡。在ZigBee中的服務發現特性啟用網路中的裝置來確定維持級別。

2.3.2ZigBee描述

ZigBee裝置使用描述符資料結構來描述它們自己。包含在這些描述符裡的實際資料被定義在個人的裝置描述符裡。有五個描述符:節點、節點電源、簡單的、複雜的和使用者,如表2.25所示。

表2.25ZigBee描述符

描述符名稱

狀態

描述

Node

M

節點的型別和能力

Node power

M

節點電源特性

Simple

M

包含在節點裡的裝置描述

Complex

O

裝置描述的進一步資訊

User

O

定義的使用者的描述符

2.3.2.1描述符傳送

節點、節點電源、簡單的和使用者描述符按它們出現在各自的表中的順序傳送,也就是,在表頭的域第一個傳送,表底的域最後傳送。每一個individual域按第一章規定的順序傳送。複雜的描述符的格式和傳送如圖2.15所示。

位元組:1

可變長

可變長

域計數器

域1

域n

圖2.15複雜描述符的格式

包含在複雜識別符號裡的每一個域的格式如圖2.16所示。

位元組:1

可變長

壓縮的XML標誌

域資料

圖2.16individual複雜描述符域的格式

2.3.2.1.1域計數器域

域計數器域長度為1位元組,且規定包含在描述符裡的域的數值,每一個格式描述如圖。

2.3.2.1.1壓縮的XML標誌域

壓縮的XML標誌域長度為1位元組,且規定當前域的XML標誌。複雜識別符號的壓縮XML標誌如表2.37所示。

2.3.2.1.1域資料域

域資料域是可變長且包含當前域的資訊規定,如壓縮XML標誌域表明的。

2.3.2.2經由描述符發現

在ZDO管理實體裝置中詢問識別符號資訊,且使用ZigBee裝置識別符號請求原語的服務發現定址到端點0。發現操作的詳細描述見2.4.2.1節。資訊通過ZigBee裝置profile指示(indication)原語返回。

節點、節點電源、複雜和使用者識別符號應用於完整節點。簡單識別符號必須為了每個被定義的端點在節點裡而被規定。如果一個節點包含多個子組,這些將在孤立的端點上,且對於這些特殊的描述符通過在ZigBee裝置profile裡包含的相