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的宏定义:

 

学习得很粗浅,如有问题欢迎指正。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

音无八重

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值