TI中文支持网
TI专业的中文技术问题搜集分享网站

协调器不发送route request的问题

我用的CC2538+zmesh协议栈

我设置协调器工作在many to one模式,CONCENTRATOR_ENABLE设置为true

CONCENTRATOR_DISCOVERY_TIME = 3;

用sniffer抓包发现,协调器只发送link status,不发送route request,是怎么回事

chao sun3:

进一步发现,如果协议栈中定义了

-DNV_INIT-DNV_RESTORE

则协调器不会发送route request,如果没有定义,则会发送route request

我用的Z-Stack Mesh 1.0.0,代码没有任何修改,只是在f8wcoord.cfg中增加如下:

==========================================================================

//保存网络状态-DNV_INIT-DNV_RESTORE

-DCONCENTRATOR_ENABLE=TRUE-DCONCENTRATOR_DISCOVERY_TIME=3

//Link Status 网络维护包,邻居表-DNWK_LINK_STATUS_PERIOD=3

chao sun3:

回复 chao sun3:

又进一步发现,在ZDApp.c的479行:

// At start up, do one MTO route discovery if the device is a concentrator if ( zgConcentratorEnable == TRUE ) { // Start next event osal_start_timerEx( NWK_TaskID, NWK_MTO_RTG_REQ_EVT, 100 ); }

当定义了NV_INIT和NV_RESTORE,执行到479行时zgConcentratorEnable 值为0,怀疑协议栈在恢复NV变量的时候有bug。。

chao sun3:

回复 chao sun3:

原来是IAR的问题,IAR download and debug的时候不擦除flash吗,

VV:

回复 chao sun3:

@chao sun3

CONCENTRATOR_DISCOVERY_TIME = 3的含义,协调器每隔3秒会发一次MTO Router Request,而且是广播数据。

这样的频率太高了,一方面是网络内大量的广播数据,另外是每发一次MTO Router Request会让下面的节点重新选择一次Coordinator的路径,没必要如此频繁的选择到Coordinator的路径。一般建议把改变量设置为120s发一次

-DNWK_LINK_STATUS_PERIOD=3是用来维护邻居之间的链路状况的,一般默认为为15s一次,3s种太短了。

赞(0)
未经允许不得转载:TI中文支持网 » 协调器不发送route request的问题
分享到: 更多 (0)