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.

[参考译文] CC2530:成功加入或重新加入后停止轮询

Guru**** 664280 points
Other Parts Discussed in Thread: Z-STACK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1285786/cc2530-stop-polling-after-successful-join-or-re-join

器件型号:CC2530
主题中讨论的其他器件:Z-STACK

嗨、大家好!

我的 ZED 基于 Z-stack 3.0.2

我已启用 NWK_AUTO_POLL

在 INIT 函数中、我调用:BDB_StartCommissioning (BDB_rotunding_existing_network_on_startup);

然后输入:

案例 BDB_调试_初始化:
if (bdbcommitingModeMsg->bdbcommitingStatus == bdb_interving_success){
  //没有什么可做的
} else if (bdbcommitingModeMsg->bdbcommitingStatus == bdb_interving_no_network){
  BDB_StartCommissioning (BDB_Commissioning_mode_NWK_steering);

基本上、我的器件会在启动时尝试加入现有网络、如果有、则会尝试加入新网络。

这工作得非常好。

但是、即使我有  NWK_AUTO_POLL、我仍然只需要按需将其激活、例如当通过中断唤醒器件一段时间后、我希望器件再次进入睡眠状态并停止轮询。

我尝试设置:

在我的 init 方法中使用 NLME_SetPollRate (0)-器件不再能够加入或重新加入

然后我尝试设置

NLME_SetPollRate (0)(位于  

案例 BDB_SANTING_NWK_STANGING:
if (bdbcommitingModeMsg->bdbcommitingStatus == BDB_interving_Success)

同样、该器件不再能够加入/重新加入...

因此,似乎只要我试图把 NLME_SetPollRate(0) 它在某种程度上与混合机制相互作用。

我希望拥有一个器件、该器件能够:

-在启动时加入/重新加入网络

-在引脚中断出现之前无需轮询即可休眠

-当被中断唤醒时,开始轮询,例如30秒,然后再次进入睡眠状态而没有轮询。

因此、我需要您的帮助:

1.如何停止自动轮询,特别是在哪个地方,这样它就不会与通信过程发生交互?

2.或者是否更适合其他方式-如何在不  设置 NWK_AUTO_POLL 的情况下仅在指定时间段内开始轮询

基本上我的 ZED 应该是深度睡眠的设备,只有当我告诉它的时候才需要轮询-为了辅助绑定。

非常感谢!

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

    尊敬的 Peter:

    如果 ZED 不主动轮询数据、则 Zigbee 调试过程将失败。  确保应用  在调试时使用 NLME_SetPollRate (zgRejoinPollRate)。  然后、您可以 在器件成功 (重新)加入 Zigbee 网络后返回所需的轮询率设置、可以通过 ZDO_STATE_CHANGE 系统事件消息或调试状态回调进行观察。

    此致、
    瑞安

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

    您好、Ryan、

    谢谢你。  对我来说、使用 ZDO_STATE_CHANGE 就是理想之选。  

    感谢提示!

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

    顺便说一下... 禁用自动轮询时、是否有办法手动轮询?

    谢谢

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

    你可以尝试使用 NwkPollReq (0)来进行单次轮询。

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

    我们还可以尝试  NLME_SetPollRate(1)进行一次性轮询。

    此致、
    瑞安

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

    非常感谢大家、你们的支持是最棒的!