我有个疑问,还请论坛的高手帮忙解答下,谢谢。
在ZStack的nwk_globals.c文件里面有如下定义:
#if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE )
uint8 CskipRtrs[1] = {0};
uint8 CskipChldrn[1] = {0};
#elif ( STACK_PROFILE_ID == HOME_CONTROLS )
uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#endif // STACK_PROFILE_ID
如果是HOME_CONTROLS时,默认的路由深度为5级,每级最多的路由节点数为6.
那如果profile为ZIGBEEPRO_PROFILE时,每级的最大路由节点数怎么确定呢?
还有ZStack里面的这个宏定义:#define NWK_MAX_ROUTERS 6也是表示每级最大路由器节点数为6,那这个宏与前面的数组有什么关系呢?
我实际测试:STACK_PROFILE_ID == ZIGBEEPRO_PROFILE的情况下,网络中有70多个路由器,协调器下就挂了18个路由器。从这个现象看#define NWK_MAX_ROUTERS 6这个宏定义好像没有作用。而且这种profile下的 路由器和子节点数组定义如下:
uint8 CskipRtrs[1] = {0};
uint8 CskipChldrn[1] = {0};
这是什么原因呢?
bx da:
回复 VV:
VV你好,
谢谢你的解答,我现在用的协议栈版本是2.5.1.a,那是不是这个宏定义#define NWK_MAX_ROUTERS 6已经没有作用呢?
从下面这段代码看:
#if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE ) uint8 CskipRtrs[1] = {0}; uint8 CskipChldrn[1] = {0};#elif ( STACK_PROFILE_ID == HOME_CONTROLS ) uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0}; uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};#elif ( STACK_PROFILE_ID == GENERIC_STAR ) uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0}; uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC ) uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0}; uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};#endif // STACK_PROFILE_ID
是不是我把STACK_PROFILE_ID设置为HOME_CONTROLS每个路由器下能挂载的最大路由器个数为6,最多设备数为20,MAX_NODE_DEPTH为5?
如果STACK_PROFILE_ID设置为ZIGBEEPRO_PROFILE,这些数组定义和NWK_MAX_ROUTERS就没有作用了?
VV:
回复 bx da:
是的 没有作用的
wei zhang34:
回复 VV:
为什么我的程序里边连了16个就不行了 我的NWK_MAX_DEVICE_LIST就是20
天空:
回复 wei zhang34:
可能是AssociatedDevList满了
chiyuchen chiyuchen:
回复 VV:
最大路由级数一般多少合理?
one Man:
回复 VV:
VV,你好!
如果STACK_PROFILE_ID设置为ZIGBEEPRO_PROFILE话,能否设置每级EndDevice和Router的数量,我担心设备太多时,End把所有位置都占了,导致Router入不了网。