第一范文网 - 专业文章范例文档资料分享平台

zigbee网络建立与加入

来源:用户分享 时间:2025/8/23 4:00:25 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

协议栈如何辨别设备类型?

在上图中可以看到协调器建立网络的步骤以及路由器和终端加入网络的过程,但协议栈究竟如何区分设备类型,仅从图中无法看出。

在ZDApp.c文件中, ZDOInitDevice( uint16 startDelay )函数调用了ZDAppDetermineDeviceType()函数,函数原型:

/********************************************************************* * @fn ZDAppDetermineDeviceType() * @brief Determines the type of device to start. *

* Looks at zgDeviceLogicalType and determines what type of * device to start. The types are: * ZG_DEVICETYPE_COORDINATOR * ZG_DEVICETYPE_ROUTER * ZG_DEVICETYPE_ENDDEVICE *

* @param none * @return none */

void ZDAppDetermineDeviceType( void ) {

if ( zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR ) {

devStartMode = MODE_HARD; // Start as a coordinator

ZDO_Config_Node_Descriptor.LogicalType NODETYPE_COORDINATOR; } else {

if ( zgDeviceLogicalType == ZG_DEVICETYPE_ROUTER )

=

ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_ROUTER; else if ( zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE ) ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_DEVICE;

// If AIB_apsUseExtendedPANID is set to a non-zero value by commissioning

// The device shall do rejoin the network. Otherwise, do normal join if ( nwk_ExtPANIDValid( AIB_apsUseExtendedPANID ) == false ) {

devStartMode = MODE_JOIN; // Assume joining } else

{

devStartMode = MODE_REJOIN; } }

} 该

if(zgDeviceLogicalType

==

ZG_DEVICETYPE_COORDINATOR) ,其中,在ZGlobals,c文件中有如下定义:zgDeviceLogicalType = DEVICE_LOGICAL_TYPE 而在ZGlobals.h文件中有如下宏定义:#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR,最终在sapi.h文件中,出现如下宏定义: #define ZG_DEVICETYPE_COORDINATOR 0x00 ,这样看来似乎绕了一圈又绕回了原点,其实并非如此,在ZGlobals.h文件中完整的宏定义代码: // Default Device Logical Type

#if !defined ( DEVICE_LOGICAL_TYPE ) #if ( ZG_BUILD_COORDINATOR_TYPE ) // If capable, default to coordinator

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR #elif ( ZG_BUILD_RTR_TYPE )

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ROUTER #elif ( ZG_BUILD_ENDDEVICE_TYPE ) // Must be an end device

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ENDDEVICE #else

#error ZSTACK_DEVICE_BUILD must be defined as something! #endif #endif

搜索更多关于: zigbee网络建立与加入 的文档
zigbee网络建立与加入.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2acjp071bq5kaxc90s9y_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top