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:如果dev_end_device进入dev_nwk_disc,则启动计时器

Guru**** 2551870 points
Other Parts Discussed in Thread: CC2530, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/590288/cc2530-start-timer-if-dev_end_device-goes-into-dev_nwk_disc

部件号:CC2530
主题中讨论的其他部件: Z-stack

您好,

我想知道如何使CC2530从dev_end_device变为dev_nwk_ddisc时,它将启动计时器。 原因是当我断开集线器的电源时,CC2530开始查找集线器(因此它是dev_Nwk_disc)。 下面是我如何测试这种情况。 但是,我不能只写"if(devState=dev_Nwk_ddis)",因为这将包括步骤1。 要澄清一下,我只希望CC2530在已经进入dev_end_device,然后进入dev_nwk_disc的情况下启动计时器。 基本上,如何使CC2530在完成步骤2到4后启动计时器?

1.使用dev_nwk_disc启动

2.然后进入dev _end_device

3.拔下轮毂

4.然后进入dev_nwk_disc

5.然后进入dev_nwk_backoff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果设备从未加入任何Zigbee网络,您是否意味着不执行网络搜索?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我要说的是,我将CC2530连接到集线器,它在dev_end_device中就知道了。 我断开集线器的电源,CC2530位于dev_nwk_disc中。 此时,计时器应启动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果设备正在执行dev_nwk_disc操作,您希望启动什么计时器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经创建了一个计时器来执行另一个任务,但我只是尝试在发生上述事件后启动计时器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果发生步骤2至4,如何启动计时器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否想知道设备与其父节点失去连接?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的。 我可以使用什么代码告诉CC2530当它失去连接时计时器将启动?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果终端设备失去与其父节点的连接,它将遇到zclxxx_event_loop中的ZDO_STATE更改案例(例如,zclSampleLight_event_loop)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么,如何才能使CC2530仅在ZDO_STE_CHANGE从dev_end_device更改为dev_Nwk_disc时启动计时器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以在红色部分启动计时器。

           案例ZDO_STANE_CHANGE:
             zclSampleLight_NwkState =(devstates_t)(MSGpkt->HDR.status);

             //现在在网络上
             如果(zclSampleLight_NwkState == dev_ZB_coord)||
                  (zclSampleLight_NwkState == dev_router)  ||
                  (zclSampleLight_NwkState == dev_end_device))
             {
               giLightScreenMode = LIGHT_MAINMODE;
               zclSampleLight_LcdDisplayUpdate();
    #ifdef ZCL_EZMODE
               zcl_EZModeAction( EZMODE_ACT_NETWORK_STARTED,NULL );
    #endif // ZCL_EZMODE
             }
             否则
             {
               //在此处启动您的计时器
             }
             中断;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直在尝试使用计时器代码,但似乎该位已被使用。 您知道我可以使用哪些其他位吗?

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

    您应该自己检查代码,以了解不使用哪个事件位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么,如果我开始使用一个新的z-stack程序而没有任何其他代码,您知道哪些位可用于事件吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这取决于您使用的示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用SampleLight
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在原始SampleLight中使用等于或大于0x0080的事件代码。