這一層是最上層了,包含三種東西
1. 應用程式支援 APS (Application Support)
2. 設備物件 ZDO (Zigbee Device Object)
3. 應用程式框架 AF (Application Framefork)
這一層一樣有預設值(constant)以及屬性(attribute),如同其他層一樣,預設值前面有apsc,屬性前面有aps關鍵字。這些東西存在APS IB內,而APS IB (APS Information Base) 屬於上面講的APS的管轄範圍。
在應用程式框架這一段,內有很多應用程式物件(Application Object),藉由AF,與ZDO以及APS溝通。定義上,每台device最多可以有240個應用程式物件,也配給每個應用程式物件一個端點(end point),作為溝通用,編號由1 ~ 240。
還有一個沒講到的,就是設備物件ZDO,他也要溝通,他使用特殊的端點,端點 0。還有一個特別的是端點255,若要把訊息廣播到所有的應用程式物件,就使用端點255。
<應用程式框架 AF (Application Framefork)>
Zigbee標準支援了profile這個概念,用來跟別的dvice互動。每個profile有一個16 bit的唯一編號,稱為profile ID。只有Zigbee聯盟有資格發布這個ID。
Profile內包含兩組最重要的東西,是Cluster 與 Description。這是兩組不是兩個。所以Cluster內有好多個,每個都用一個16bit 的cluster ID表示。而Description也是,包含好多個description,每個都用一個description ID表示。先講Cluster,他是一堆屬性(attribute)的組合。也就是說,每一個cluster ID的背後,代表一堆的attribute,當然,有一堆的東西,就會有ID,是的,每個在cluster內的attribute都有一個16 bit的ID,稱為attribute ID。
所以,cluster ,包含很多的cluster ID,每個cluster ID又代表一堆的attribute組合。
而Description也是,內部包含很多的description,每個用一個16 bit 的ID表示,稱為description ID。每個description ID背後代表5個描述子(descriptor),
1. 節點描述子 (node descriptor): 描述這是哪種節點,哪家公司製造的。
Logical type: 表明這是Coordinator, router 或是 end device,用三個bit表示。細節要用的時候再去看spec,記得要找 'node descriptor' 這個表格就行了。
Complex descriptor, user descriptor: 有用到的話,要設定起來。
2. 節點電源描述子 (node power descriptor): 描述節點是如何供電的,以及其電流的等級(current level)如何。
Current power mode: 指定接收機在idle時要不要開起,或是週期性開啟。
Available power source, Current power source: 指定電源形式,是有插電主電源的, 可充電電池,或是拋棄式電池。
Current power source level: 這個我不了解,以後再補。
3. 精簡描述子 (simple descriptor): 寫profile ID and cluster。
Endpoint: 這個端點的編號。
Application profile ID: 這個端點的profile ID。
這裡要提到 綁定(binding)的概念。我們知道每台device都有至多240個application object,每個applicaiton object 都有一個endpoint ID。以電燈控制為例子,第一台device內有兩個endpoint, 1號以及2號,都是開關。第二台device內有兩個燈泡 1號以及2號,都是燈泡。所以想當然第一台機器是輸出的,第二台機器是輸入的。若我們想要第一個開關控制第一個燈,第二的開關控制第二個燈,我們就需要將他們綁定,這個紀錄的地方稱為 綁定表 (binding table)。我們要將第一台機器的endpoint 1與第二台機器的endpoint 1 使用一樣的cluster ID,這樣就可以綁定了。
4. 詳細描述子 (complex descriptor): 額外的序號或是型號。
5. 使用者描述子 (user descriptor): user自己寫的內容,可以寫16 bytes。
<ZDO>
根據之前的圖,ZDO一端接AF一端接APS。ZDO本身也有一個profile,稱為ZDP (ZigBee Device Profile) 這個也可以件稱為device profile,這個profile包含description以及cluster。
機器探索(Device Discovery): 去找到同一個網路內機器的能力(ability)。
服務探索(Service Discovery): 去跟同一個網路的機器要資訊,如profile ID,cluster list等等。
Deivce profile可以被設定成client 或是server
Client: 機器要求綁定或是機器探索的服務。
Server: 回應要求或是提供服務的機器。
ZDP command是使用APS data service傳送的。他的傳送格式,是前面一個8bit的傳送序號,後面加上要傳送的資料。command 分成兩群,client service 以及server service,ZDP command 在任一群中,又切分為三類,所以在ZDO內就有三種物件來對應。
1. 機器與服務發現物件(Device discovery and service discovery object): 允許device要求資訊。
2. 綁定管理物件 (Bind managment object): 允許device新增與移除綁定的資訊。
3. 網路管理物件 (Network managment object): 管理路由資訊以及加入解散的機器等等。
ZDO還特別多了兩個物件
1. 網路管理物件 (network manager object): 包含網路管理的介面。
2. 安全管理物件 (security manager object): 包含安全相關的介面。
ZDO本身有特殊的屬性,這些屬性由config_ 關鍵字開始。
<APS>
APS的主要目的是提供資料服務給application object 以及ZDO。它包含三種原生(primitive)去執行三種工作
1. 綁定管理 (bind managment)
2. 資訊庫管理 (APS Information Base)
3. 群組管理 (Group managment)
我們之前介紹過ZigBee的三種通訊方式,廣播,多重播送,單一播送。現在APS提供了第四種 間接定址(indirect addressing)。在這種狀況下,device想傳輸,但是卻不知道目的地的位址,可以直接送給coordinator,然後coordinator可以從綁定表查詢,根據來源位址,端點位址,叢集ID (cluster ID),最後重新傳輸訊息到對應的端點。
<APS 框架>
APS的框架有三種,
1. 資料 (Data)
2. 命令 (Command)
3. 認可 (Acknowledgment)
傳輸時有個傳輸欄位的選項,有四種選擇
1. 正常單一發送 (normal unicast delivery)
2. 間接定址 (indirect addressing): 目的地位址需省略。要是你是間接定址,又寫位址,代表是coordinator傳出來的。
3. 廣播 (Broadcast)
4. 群組定址 (Group addressing)


