ZIGBEE 工程內區分終端與協調器

目前已知,工程中區分是終端還是協調器,與工程中Tolls文件夾中的.cfg文件有關:

從project->Edit Configuration進去可以刪減左邊欄Workspace下拉的項:

區別終端、路由器和協調器是通過Options.. -> C/C++ Compiler -> Extra Options 中添加不同的.cfg文件實現的:

協調器:

終端:

 

還沒學完,接下來看一下cfg文件中的代碼區別,參考自:

詳解在程序中怎樣區分協調器 路由器 終端[轉載]

來自 <https://blog.csdn.net/xiao11xiang123/article/details/26495517>

 

f8wConfig.cfg文件:

每個Pro都會帶的,不管是終端、協調器還是路由器。存放有一些通用的編譯選項,比如PAN ID網絡識別碼、指定的信道等等。

 

f8wEndev.cfg文件代碼:

 

f8wCoord.cfg文件代碼:

 

f8wRouter.cfg文件代碼:

 

可以發現CPU頻率、MAC/ZMAC 設置(具體是什麼不太清楚)在三種類型代碼中都有;

MAC層的設置“-DMAC_CFG_APP_PENDING_QUEUE=TRUE”,以及路由器設置“-DRTR_NWK   ”只在協調器和路由器中定義,終端沒有;

協調器則單獨多了一行代碼“-DZDO_COORDINATOR   ”,應該是定義其有協調器功能。

而協調器既宏定義了ZDO_COORDINATOR又宏定義了RTR_NWK是因爲:在Zigbee網絡中,只有協調器才能建立一個新網絡,而一旦網絡建立後該設備的作用就是一個路由器。

 

打開協議棧NWK文件夾下的Zglobals.h,可以找到代碼:

我覺得大概意思就是,如果定義了協調器ZDO_COORDINATOR,那麼此Pro的代碼作爲協調器功能執行,否則如果定義了RTR_NWK,則作爲路由器,否則作爲終端。

 

Zglobals.h有對DEVICE_BUILD_XXX的宏定義:

 

學習得很粗淺,如有問題歡迎指正。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章