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.

[参考译文] 如何在孤立扫描失败后缩短扫描持续时间?

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/580604/how-to-reduce-the-scan-duration-after-orphan-scan-failed

大家好

        我有一个Zed开关,它由电池。供电

         当 它是孤立的,我想让它尽快进入睡眠状态。。。当我不想 更改 zgDefaultRejoinScan。时

       因此,我 按 如下所示更改ZDO_StartDevice()函数:

        

否则,如果( startMode == mode_resume )
{
如果( logicalType == NodeType_router )
{//路由设备
ZMacScanCnf_t scanCnf;
ZDApp_ChangeState( dev_Nwk_orphan );

/*如果路由器和NVRAM可用,则假的成功孤立扫描*/
scanCnf.hdr.Status = ZSUCCESS;
scanCnf.ScanType = ZMAC_ORUAND_SCAN;
scanCnf.UnscannedChannels = 0;
scanCnf.ResultListSize =0;
Nwk_ScanJoiningOrphan(&scanCnf);

RET = ZSuccessess;
}
否则
{//终端设备
ZDApp_ChangeState( dev_Nwk_orphan );
//设置扫描和重新加入的计时器
#ifdef SWITCH_BAT
//电池按键孤立1s后立刻进入休眠态
OSAL_START_TIMEREx (ZDAppTaskID,ZDO_REUST_backoff,1000);
#否则
OSAL_START_TIMEREx( ZDAppTaskID, ZDO_REUST_backoff, zgDefaultRejoinScan );
#endif
RET = NLME_OrphanJoinRequest (RuntimeChannel,
zgDefaultStartingScanDuration);
} 

       当 我 发现有时Zed swicth无法重新加入~~~它 只是 发送信标 请求,并且 无法 重新加入!

      为什么?

巴西!

      

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用Ubiqua Packet Analyzer检查此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还可以,这是我的错误!

    ZDOInitDevice()!值得我们多关注

    //按住sw_bypass_NV键(在onboard.h中定义)
    //启动时跳过NV Restore。
    //如果( zdappHoldKeys == sw_bypass_NV )
    //{
    zdappHoldKeys =0;//仅一次
    //networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
    //}
    //其他
    //{
    //确定是否应恢复NV
    networkStateNV = ZDApp_ReadNetworkRestoreState();
    //}


    因为有一位关键新闻法官!

    巴西!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很好地知道您发现了问题所在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不,这只是一个原因!

    问题尚未解决!

    当 Zed将  MAC ACK交给其他 ZC,时,我发现它无法再重新加入其父项   虽然父母 对它的回答是正确的信号!

    0.01248亿cB8039B  不8039不是 Zed交换机的父级! 为什么 它会向  Zed交换机发送协调器领域??

    有一个日志!!!

    e2e.ti.com/.../3513.1 .rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    数据包#42 (设备通知)显示此设备重新加入,是不是?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是,这是因为我重置了设备,并且设备将MAC ACK回复到正确的MAC ACK,这样它就可以重新加入成功!

    如果我们不重置它,它不能重新加入,尽管有很多正确的信标!!!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否可以指定将哪些数据包重置为设备?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,yikai!

    当我重置设备!时,会发生第二个孤立通知

    这种情况就像Zed加入了很多ZC,,离开时没有告诉ZC。

    因此,当它发送孤立通知时,这些ZC都将回复协调者重新调整!

    我不知道Zed要依靠什么来回复一个MAC ACK,其中一个ZC!(最好的结果是Zed知道哪一个适合它)但Zed似乎随机选择了!

    当回复旧的,时,它无法再重新加入!


    巴西!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您在ZDApp_NwkDescListProcessing中设置一个断点,以了解为什么它在接收信标帧后不发送关联请求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它返回pNwkDesc!,但我似乎没有更多的关联请求~~~~~~


    IF ( i == ResultCount )

    nwk_desc_list_fe();
    返回(NULL);//找不到合适的PAN来连接!
    }
    否则

    返回(pNwkDesc);
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您应继续跟踪ZADAPP_ProcessOSALMsg中的“CASE ZDO_Nwk_dice_CNF:”。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它进入了连续加入,但我没有看到任何关联请求

    如果(ZG_build_joining_type && ZG_device_joining_type)

    networkdesc_t *pChosenNwk;
    如果((pChosenNwk = ZDApp_NwkDescListProcessing())!= NULL )&&(zdoDiscCounter > NUM_DISK_Attempts))

    }
    否则

    如果( continueJoining )

    ......
    }
    }
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的意思是它调用ZDP_NetworkInit吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是 !

    它调用ZDApp_NetworkInit() ,  然后 转到

    如果( Events & ZDO_NETWORK_INIT )
    {
    //初始化应用程序并启动网络
    ZDApp_ChangeState( dev_init );
    
    ZDO_StartDevice((uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
    default_beacon顺序,default_superframe_order);
    
    //返回未处理的事件
    返回(事件^ ZDO_NETWORK_INIT);
    } 

    当ZDO_StartDevice()中的以下调用函数起作用时   ,它返回 ret=失败

         如果(startMode == mode_REUIUSE)
         {//
           RET = NLME_NetworkDiscoveryRequest( runtimeChannel, Bertel_Order_480_msec );
         }

    巴西!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有NLME_NetworkDiscoveryRequest源代码可用于进一步跟踪。 发生此问题时,什么是runtimeChannel? 它是ZC所在的通道吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦不,我犯了一个错误!

    NLME_NetworkDiscoveryRequest返回ZSuccessess,并且它在末尾没有调用以下函数
    如果( ret != ZSuccessess )

    OSAL_START_TIMEREx(ZDAppTaskID, ZDO_NETWORK_INIT, Nwk_RETRY_DELAY );
    }


    但我再也没有看到设备发送重新加入~~~


    不管怎样,当它调用ZDApp_NwkDescListProcessing()时,我总是发现这一点

    ZDO_UseExtendedPANID与pNwkDESC ->扩展PANID不同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在的问题是当ZStack运行到案例ZDO_Nwk_dice_CNF,时

    如果((pChosenNwk = ZDApp_NwkDescListProcessing())!= NULL )&&(zdoDiscCounter > NUM_DISK_Attempts))


    ZDApp_NwkDescListProcessing返回pNwkDesc以重新加入,,但zdoDiscCounter为1,因此使设备无法执行以下重新加入 过程!


    如果((pChosenNwk = ZDApp_NwkDescListProcessing())!= NULL )&&(zdoDiscCounter > NUM_DISK_Attempts))

    如果( devStartMode == mode_join )

    }
    否则,如果( devStartMode == mode_injuse )

    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试将NUM_DISC_ATINES设置为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还可以,但为什么? 什么是NUM_DISC_INESS_Attempts和zdoDiscCounter?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    减少NUM_DISK_Attempts将使设备发送较少的信标请求以确认加入过程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将NUM_DISC_INESS_TINESS设置为0或确保设备接收到的信标超过NUM_DISC_INESS_INESS!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在是否正常?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是!谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    欢迎您的光临,很高兴知道它能发挥作用。