ZIGBEE 工程内区分终端与协调器
目前已知,工程中区分是终端还是协调器,与工程中Tolls文件夹中的.cfg文件有关:
文章图片
从project->Edit Configuration进去可以删减左边栏Workspace下拉的项:
文章图片
文章图片
区别终端、路由器和协调器是通过Options.. -> C/C++ Compiler -> Extra Options 中添加不同的.cfg文件实现的:
协调器:
文章图片
终端:
文章图片
还没学完,接下来看一下cfg文件中的代码区别,参考自:
详解在程序中怎样区分协调器 路由器 终端[转载]
来自
f8wConfig.cfg文件:
每个Pro都会带的,不管是终端、协调器还是路由器。存放有一些通用的编译选项,比如PAN ID网络识别码、指定的信道等等。
f8wEndev.cfg文件代码:
文章图片
f8wCoord.cfg文件代码:
文章图片
f8wRouter.cfg文件代码:
文章图片
【ZIGBEE 工程内区分终端与协调器】可以发现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的宏定义:
文章图片
学习得很粗浅,如有问题欢迎指正。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 你有婚内虐待行为吗()
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- ?【段子图】内裤为啥湿呢(想想好邪恶啊...)
- 放下心中的偶像包袱吧
- angular2内置管道
- 全过程工程咨询——时间管理(12)
- 也许,是我记性不好,也许是社会太吵,内心太躁。
- 操作系统|[译]从内部了解现代浏览器(1)