修改z-stack节点深度和数量

以下内容为转载,尚未认证。

http://zyxmien.blog.163.com/blog/static/11772364201051251739998/


在TI ZigBee开发系统中提供的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

 

修改CskipRtrs及CskipChldrn二个数组的数值即可。

 

如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};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值