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.

[参考译文] CC2538:网络构建

Guru**** 2540720 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/674378/cc2538-network-formation

器件型号:CC2538

NLME_NetworkFormationRequest()的含义是什么?

它是否用于网络构建?

此致

 王西安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的。 呼叫链大致如下所示:
    BDB_StartCommissioning (BDB_TUSICING_MODE_NWK_Formation)
    bdb_nwkJoiningFormatim()
    ZDOInitDeviceEx()
    4. ZDUApp_NetworkInit()
    5. ZDO_StartDevice()
    6. NLME_NetworkFormationRequest()

    上面的所有代码都位于 BDB 和 ZDO 层中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的答复。
    还有一个问题是、如果网络构建请求完成、委员会状态是否变为成功?
    如果不是、成功通知何时发生?

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

    是的、它用于构建 Zigbee 网络。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    NLME_NetworkFormationRequest()的结果将在 ZDO 回调函数 ZDO_NetworkFormationConfirmCB()中返回。 在 ZDO_NetworkFormationConfirmCB()中,如果我们成功地建立了网络,我们将调用 bdb_nwkFormationAtteme(true),它将调用 bdb_commissioningState (BDB_commissioning_State_formation,true, true),然后将 BDB_commissioning_formation 报告为 BDB_commissioning_Success 给您的应用程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的答复。

    另一个问题是,在 ZDO_NetworkFormationConfirmCB()中,如果网络是集中式的,则应该遵循 if (ZG_DEVICE_Coordinator_type),然后设置协调器启动。 另一方面、如果遵循 if (ZG_DEVICE_RTR_TYPE)、则表示网络已分布。 对吗?

    此致

     王西安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正确的做法是、如果使用模式 BDB_TUSESING_MODE_NWK_FORM 启动 bdb 调试、Z3.0路由器将尝试形成分布式安全网络。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的答复。

    之后、我检查以下代码、代码出现在事件 ZDO_NETWORK_START 上。

    以下代码出现、
    if (events & ZDO_network_start)
    ZDUP_NetworkStartEvt()(nwkStatus 现在应为 ZSuccessess)
    然后在 ZDUApp_NetworkStartEvt()中,有两个有用的函数,即 ZDUApp_NWKWriteNvRequest()和 ZDUApp_ChangeState (DEV_ZB_COD)。 之后是 if (bdbCommissioningProcedureState.bdbCommissioningState = BDB_TUSING_State_Formation)、然后是 bdb_nwkFormationAttempt (true);

    我的问题在 bdb_nwkFormationAttempt (true)中、它涉及函数 bdb_commissionreportingState (bdb_commissioning_State_formation、true)、然后代码进入
    案例 BDB_TUSING_State_Formation、
    然后定义 bdbAttributes.bdbCommissioningStatus = BDB_commissioning_Success、这意味着网络构建完成了、对吧?

    然后、这种情况的最后三行是
    bdbCommissioningProcedureState.bdbCommissioningState = BDB_TUSESING_State_Start_RESUME;
    OSAL_START_timerEx (bdb_taskID、bdb_change_commissioning_State、50);
    bdbAttributes.bdbCommissioningMode &=~BDB_TUSCING_MODE_NWK_Formation;
    下一个问题是、在下一个 BDB_CHANGE_TUSING 事件中、代码应位于网络转向器件中、对吧?
    由于最后一行设置了 bdbCommissioningMode 和01010 (此处无 Touchlink)、接下来的最高优先级是网络转向。

    此致
    王西安