Hi,欢迎来到中国嵌入式培训第一品牌 - 华清远见嵌入式学院<北京总部官网>,专注嵌入式工程师培养13年!
当前位置: > 嵌入式学院 > 嵌入式学习 > 讲师博文 > 协调器还是终端设备?
协调器还是终端设备?
时间:2016-03-04作者:华清远见

我们知道协调器(coordinator)和终端节点(enddevice)是通过不同的工程区分的,但我们发现两个工程包含的文件又大致相同。那协议栈中如何判断设备的类型并进行相应的操作呢?

首先带大家认识一个全局变量zgDeviceLogicalType,他就是设备逻辑类型。这个变量位于ZGlobals.c文件中,他是协议栈中的一个全局变量,我们用户不需要修改。到这里我们可能想到他的值是什么,那就确定了该设备的类型。那我们go to define跟踪一下DEVICE_LOGICAL_TYPE这个宏。

发现协议栈是根据ZG_BUILD_COORDINATOR_TYPE、ZG_BUILD_RTR_TYPE、ZG_BUILD_ENDDEVICE_TYPE这三个宏来决定DEVICE_LOGICAL_TYPE。

那ZG_BUILD_COORDINATOR_TYPE、ZG_BUILD_RTR_TYPE、ZG_BUILD_ENDDEVICE_TYPE分别又是什么呢?从下图我们可以发现当定义了ZDO_COORDINATOR设备就是协调器,定义了RTR_NWK设备就是路由,如果前两者均未定义则设备为终端设备。

ZDO_COORDINATOR和RTR_NWK是何时被定义的呢?我们来看下边的图,我们发现不同的工程会包含不同的文件,协调器工程包含f8wCoord.cfg、路由器工程包含f8wRouter.cfg、终端设备工程包含f8wEndev.cfg。

我们发现f8wCoord.cfg中有Coordinator Settings:-DZDO_COORDINATOR -DRTR_NWK,f8wRouter.cfg中有Router Settings:-DRTR_NWK,f8wEndev.cfg中没有相关的配置。到这里我们已经知道了协议栈是如何通过配置文件来配置设备类型了。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
迎鸡年 IT培训课程大促 最高可省1599元!

全国免费咨询电话:400-706-1880,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(619366077), 余老师QQ(2657985593), 李老师QQ(2814652411), 徐老师QQ(1462495461)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2017 华清远见教育集团 版权所有 ,沪ICP备10038863号,京公海网安备110108001117号