This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

终端位置变化后,从发出孤立广播到开始重新关联耗时约5s,能否调整协议栈加快重新关联操作

如题,采用MESH协议,终端从一个路由器旁移动到另一个路由器旁时,发送数据,因发送失败进入孤立状态,发出孤立广播,发出后约5s才开始请求beacon进行重新关联的操作,能否修改协议栈参数降低这5s的等待时间。

  • 通过修改DEXTENDED_JOINING_RANDOM_MASK、DBEACON_REQ_DELAY_MASK参数已经加快重连速度。

  • 你好,首先你要知道节点变成孤立节点以后,状态是怎么样变化,协议栈处理的流程是什么,这样可以去看能不能改动。

    当节点跟父设备断开以后,首先会调用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了。。。。。