测试环境:
设备:一个协调器C,69个开关(可以接收命令和发送状态,类型是路由器)。
问题:1,协调器C只发送一条单播命令,发现有较多的route reques数据包,有时需要十多秒才能终止,有时没有一条route reques。
2,如果协调器C逐一给69个开关发送一条单播命令,1秒间隔,route reques包会更多,且时间长,很长时间才能停止。曾出现过,在协调器发送几个小时的间隔1秒逐一对开关的单播命令后,将
协调器关闭电源(其它节点只是静默的接收,因为没有收到是不会单播回复的),route reques 的数据包在第二天上午来上班仍然不能停止。
3,出现以上问题,应该是协议栈关于zigbee路由方面的设置有待优化或是忽略的,希望能得到指点。
附测试产品相关的配置,协议栈:zigbee1.2.2a。
我们产品还含有电池产品(end_device),所以代码中将zgChildAgingEnable设为TRUE。
一、协调器C部分设置代码:
协调使用的是TI官方的ZNP修改后加上一些按键及LED灯。
1,f8wConfig.cfg 中:
/* Enable ZigBee-Pro */
-DZIGBEEPRO
/* in seconds; set to 0 to turn off route expiry */
-DROUTE_EXPIRY_TIME=30//0
/* The number of simultaneous route discoveries in network */
-DMAX_RREQ_ENTRIES=20//8
/* Number of entries in the regular routing table plus additional
* entries for route repair
*/
-DMAX_RTG_ENTRIES=40//40
2,nwk_globals.h
// If ZIGBEEPRO is defined - define all the features for Zigbee Pro
#define NWK_LINK_STATUS_PERIOD 60 // 15 seconds
3,ZGlobals.c
uint8 zgRouterOffAssocCleanup = TRUE;
uint8 zgNwkLeaveRequestAllowed = TRUE;
#if ( ZG_BUILD_ENDDEVICE_TYPE )
uint8 zgNwkParentInformation = NWK_PARENT_INFO_UNDEFINED;
#else
uint8 zgNwkParentInformation = NWK_PARENT_INFO_MAC_DATA_POLL;//NWK_PARENT_INFO_ORPHAN_NOTIFICATION;
#endif
uint8 zgChildAgingEnable = TRUE;
二、开关部分的设置代码。
因为RAM的原因,和C的设置有如下差别,其它的设置是一样的
/* The number of simultaneous route discoveries in network */
-DMAX_RREQ_ENTRIES=12//8
/* Number of entries in the regular routing table plus additional
* entries for route repair
*/
-DMAX_RTG_ENTRIES=80//40