我看到的程序如下:
1、在nwk_globals.h中
#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};
。。。。。。。。。
2、在nwk_globals.c中
#if !defined( NWK_MAX_DEVICE_LIST )
#define NWK_MAX_DEVICE_LIST 20
#endif
#if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE )
#define MAX_NODE_DEPTH 20
#define NWK_MODE NWK_MODE_MESH
。。。。。。。。
以上两处定义了如果是ZIGBEEPRO协议,最大深度为20,最大关联表数量为20,但uint8 CskipRtrs[1] = {0}; uint8 CskipChldrn[1] = {0};这两个却定义第二级可挂载路由器和终端都为0,是不是就说明ZIGBEEPRO协议默认可挂载设备数量只能为20,,即关联表的数量。
我的疑惑是不知道是不是我想的这样的,或者在其他地方还有另外设置?
Susan Yang:
您是可以自己定义网络深度及最大节点数量的
jincheng liu:
回复 Susan Yang:
是不是修改这个两个uint8 CskipRtrs[1] = {0}; uint8 CskipChldrn[1] = {0};即可;改成这样uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0}; uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};可以吗。
Susan Yang:
回复 jincheng liu:
是的,在协议栈中,有以下几个参数影响网络拓扑的形态:
Cm(nwkMaxChildren):每个父节点可以连接的子节点的总个数;
Rm(nwkMaxRouters):在Cm中,可以是路由节点的个数,Rm<=Cm;
Lm:网络最大深度,协调器的深度为0。
这三个参数的值在Z-stack中分别由变量CskipChldrn、CskipRtrs、MAX_NODE_DEPTH决定。这三个变量可以在NWK中的nwk_globals.c 和 nwk_globals.h 两个文件中查找
jincheng liu:
回复 Susan Yang:
哦。谢谢。
修改这个两个uint8 CskipRtrs[1] = {0}; uint8 CskipChldrn[1] = {0};后, 还属于ZIGBEEPRO协议吗。
在ti的Z-Stack Developer‘s Guide中,有说这样一句话 After choosing legal values, the developer needs to ensure not to use the standard stack profile and insteadset it to network-specific (i.e. change the STACK_PROFILE_ID in “nwk_globals.h” to NETWORK_SPECIFIC) because the values are different from the values defined for the ZigBee profile. Then the MAX_DEPTH parameter in “nwk_globals.h” may be set to the appropriate value.
说不能再用ZIGBEEPRO协议, 而要改成NETWORK_SPECIFIC协议了。