原创 修改ZigBee路由深度及网络容量

2009-7-14 11:11 1359 8 8 分类: 消费电子

在无线龙ZigBee开发系统C51RF-3系列中提供的ZigBee2006协议栈在未修改前支持5级路由深度,每个路由器最多可连接20个节点(最多包括6个路由器节点)。

那用户如何修改协议栈来提高路由深度及连接节点呢?

打开ZigBee2006协议栈源代码,找到“NWK”中的nwk_globals.h及nwk_globals.c二个文件。

1)打开nwk_globals.h文件,可看到:

#if ( STACK_PROFILE_ID == HOME_CONTROLS )
    #define MAX_NODE_DEPTH      5
    #define NWK_MODE            NWK_MODE_MESH
    #define SECURITY_MODE       SECURITY_RESIDENTIAL
#if   ( SECURE != 0 )
    #define USE_NWK_SECURITY    1   // true or false
    #define SECURITY_LEVEL      5
#else
    #define USE_NWK_SECURITY    0   // true or false
    #define SECURITY_LEVEL      0
#endif

#elif ( STACK_PROFILE_ID == GENERIC_STAR )
    #define MAX_NODE_DEPTH      5
    #define NWK_MODE            NWK_MODE_STAR
    #define SECURITY_MODE       SECURITY_RESIDENTIAL
#if   ( SECURE != 0 )
    #define USE_NWK_SECURITY    1   // true or false
    #define SECURITY_LEVEL      5
#else
    #define USE_NWK_SECURITY    0   // true or false
    #define SECURITY_LEVEL      0
#endif

#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
// define your own stack profile settings
    #define MAX_NODE_DEPTH          5
    #define NWK_MODE            NWK_MODE_MESH
    #define SECURITY_MODE       SECURITY_RESIDENTIAL
#if   ( SECURE != 0 )
    #define USE_NWK_SECURITY    1   // true or false
    #define SECURITY_LEVEL      5
#else
    #define USE_NWK_SECURITY    0   // true or false
    #define SECURITY_LEVEL      0
#endif
#endif

MAX_NODE_DEPTH来定义路由深度。

2)再打开nwk_globals.C文件,可以看到:

#if defined ( RTR_NWK )
// change this if using a different stack profile...
// Cskip array
uint16 *Cskip;

#if ( STACK_PROFILE_ID == HOME_CONTROLS )
    byte CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
    byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
   byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#endif // STACK_PROFILE_ID
#endif // RTR_NWK

修改CskipRtrsCskipChldrn二个数组的数值即可。

MAX_NODE_DEPTH=6,路由器最多可连接10个路由器,路由器最多可连接30个节点时。

修改为:

#if ( STACK_PROFILE_ID == HOME_CONTROLS )
  
byte CskipRtrs[MAX_NODE_DEPTH+1] = {10,10,10,10,10,10,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {30,30,30,30,30,30,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
   
byte CskipRtrs[MAX_NODE_DEPTH+1] = {10,10,10,10,10,10,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {10,10,10,10,10,10,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
  
byte CskipRtrs[MAX_NODE_DEPTH+1] = {10,10,10,10,10,10,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {10,10,10,10,10,10,0};

 

更多资料与技术讨论请联系:

上海无线龙通讯科技有限公司

联系人:司文铠

QQ876692208

MSN:siwenkai@hotmail.com

TEL13816689475

email:wxlsiwenkai@yahoo.com.cn

skype:sparksi01

公司网址:www.wxlsoc.com

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /3 下一条