協議棧規範的 id號可以通過查詢裝置傳送的 beacon 幀獲得。在裝置加入網路之前,首先
需要確認協議棧規範的 id。「特定網路」規範 id號為0; zigbee協議棧規範的 id號為1; zigbee
ro 協議棧規範的 id 號為 2。協議棧規範的 id(stack_profile_id)在 nwk_globals.h 中
// controls the operational mode of network
#define nwk_mode_star 0
#define nwk_mode_tree 1
#define nwk_mode_mesh 2
// controls various stack parameter settings id
#define network_specific 0
#define home_controls 1
#define zigbeepro_profile 2
#define generic_star 3
#define generic_tree 4
zigbee 裝置有兩種型別的位址。一種是 64 位 ieee 位址,即 mac 位址,另一種是 16 位網路位址。
16 位網路位址是當裝置加入網路後分配的。它在網路中是唯一的,用來在網路中鑑別裝置
和傳送資料。其中,協調器的網路位址為 0x00
#define nwk_pan_coord_addr 0x0000
當乙個節點加入時,將接收到父節點的隨機分配位址,然後產生「裝置宣告」(包含分配到的網路地
址和 ieee 位址)傳送至網路中的其餘節點。「裝置宣告」檢測新的網路位址是否衝突。
在每個路由加入網路之前,定址方案需要知道和配臵一些引數。這些引數是 max_depth
最大網路深度) 、max_routers(最多路由數)和 max_children(最多子節點數) 。
這些引數是棧配臵的一部分,zigbee2007 協議棧已經規定了這些引數的值:
max_depth 決定了網路的最大深度。協調器(coordinator)位於深度 0,它的兒子位於深
度1,他的兒子的的兒子位於深度 2,以此類推。max_depth 引數限制了網路在物理上的長度。
max_children 決定了乙個路由(router)或者乙個協調器節點可以處理的兒子節點的最大個數。
max_router 決定了乙個路由(router)或者乙個協調器(coordinator)節點可以處理的具有
路由功能的兒子節點的最大個數。這個引數是 max_children 的乙個子集,終端節點使用
(max_children – max_router)剩下的位址空間。
還必須設臵 nwk_globals.c 檔案中的 cskipchldrn 陣列和 cskiprtrs 陣列這些陣列的
值由max_children 和max_router 構成
為了向乙個在 zigbee 網路中的裝置傳送資料,應用程式通常使用 af_datarequest()函式
資料報將要傳送給乙個 afaddrtype_t(在zcomdef.h 中定義)型別的目標裝置。
typedef struct
addr;
afaddrmode_t addrmode;
byte endpoint;
uint16 panid; // used for the inter_pan feature
} afaddrtype_t;
typedef enum
afaddrmode_t;
傳送方式有資料報可以單點傳送(unicast),多點傳送(multicast)或者廣播傳送
一單點傳送(unicast)
uicast 是標準定址模式,它將資料報傳送給乙個已經知道網路位址的網路裝置。將
afaddrmode 設定為 addr16bit 並且在資料報中攜帶目標裝置位址。
二間接傳送(indirect)
當應用程式不知道資料報的目標裝置在**的時候使用的模式。將模式設臵為
addrnotpresent並且目標位址沒有指定。取代它的是從傳送裝置的棧的繫結表中查詢目標裝置。
這種特點稱之為源繫結。
三 廣播傳送(broadcast)
當應用程式需要將資料報傳送給網路的每乙個裝置時,使用這種模式。位址模式設臵為
nwk_broadcast_shortaddr_devall(0xffff)——資料報將被傳送到網路上的所有設
備,包括睡眠中的裝置。對於睡眠中的裝置,資料報將被保留在其父親節點直到查詢到它,或
者訊息超時(nwk_indirect_msg_timeout 在f8wconifg.cfg 中)。
nwk_broadcast_shortaddr_devrxon(0xfffd)——資料報將被傳送到網路上的所
有在空閒時開啟接收的裝置(rxonwhenidle),也就是說,除了睡眠中的所有裝置。
nwk_broadcast_shortaddr_devzczr(0xfffc)——資料報傳送給所有的路由器,包
括協調器。
zigbee協議棧學習(五)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!下篇文張講解乙個無線控制led案列,這章了解系統執行的結構。第一z stack 軟體架構 z stack 由 main 函式開始執行,main 函式共做了 2 件事 一是系統初始 化,另外一件是開始執行輪轉查詢式作業系統,fs zstack zma...
zigbee協議棧 端點
端點的意義 從應用角度看,通訊的本質就是端點到端點的連線 例如,乙個帶開關元件的裝置與帶乙個或多個燈元件的遠端裝置進行通訊,目的是將這些燈點亮 端點的實現 端點之間的通訊是通過稱之為簇的資料結構實現的。這些簇是應用物件之間共享資訊所需的全部屬性的容器,在特殊應用中使用的簇在模板中有定義。所有端點都使...
ZigBee協議棧解析
zigbee技術是物聯網領域最常用的無線技術之一,如果我們要做基於zigbee技術的物聯網應用,最好對zigbee協議棧有乙個基本的了解。這篇文章對zigbee協議棧做乙個簡單明瞭的介紹。概述本文準備介紹的zigbee協議棧是zigbee2007,也是目前業界最常用的標準版本,對於zigbee協議棧...