如题,采用MESH协议,终端从一个路由器旁移动到另一个路由器旁时,发送数据,因发送失败进入孤立状态,发出孤立广播,发出后约5s才开始请求beacon进行重新关联的操作,能否修改协议栈参数降低这5s的等待时间。
lihua li1:
通过修改DEXTENDED_JOINING_RANDOM_MASK、DBEACON_REQ_DELAY_MASK参数已经加快重连速度。
VV:
你好,首先你要知道节点变成孤立节点以后,状态是怎么样变化,协议栈处理的流程是什么,这样可以去看能不能改动。
当节点跟父设备断开以后,首先会调用ZDO_SyncIndicationCB( type, shortAddr );
这个函数里面会发送ZDApp_SendMsg( ZDAppTaskID, ZDO_NWK_JOIN_REQ, sizeof(osal_event_hdr_t), NULL );给ZDO层。
在下面处理这个消息
case ZDO_NWK_JOIN_REQ: if ( ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE ) { retryCnt = 0; devStartMode = MODE_RESUME; _tmpRejoinState = true; osal_cpyExtAddr( ZDO_UseExtendedPANID, _NIB.extendedPANID ); zgDefaultStartingScanDuration = BEACON_ORDER_60_MSEC; ZDApp_NetworkInit( 0 ); } break;
在上面把节点改成resume,然后初始化节点,
zgDefaultStartingScanDuration = BEACON_ORDER_60_MSEC;是orphan在每个信道广播的时间
——————————–
if ( events & ZDO_NETWORK_INIT ) { // Initialize apps and start the network devState = DEV_INIT; osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
// Return unprocessed events return (events ^ ZDO_NETWORK_INIT); }
———————————–
在ZDO_StartDevice里面,然后调用
NLME_OrphanJoinRequest( zgDefaultChannelList, zgDefaultStartingScanDuration );发送orphan notification,
然后然后,你可以再跟踪下到什么时候再去发送beacon了。。。。。