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.

[参考译文] LAUNCHXL-CC1352R1:在 FH 模式下的运行时间内更改广播 Intervar

Guru**** 2482225 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1229849/launchxl-cc1352r1-changing-broadcast-intervar-during-operation-time-in-fh-mode

器件型号:LAUNCHXL-CC1352R1
"Thread:SysConfig"中讨论的其他器件

嗨、

我将使用收集器和传感器的 SimpleLink SDK 示例。  
https://dev.ti.com/tirex/explore/node?a=BSEc4rl__6.40.00.13&devtools=LAUNCHXL-CC1352R1&node=A__ADh8veUDmQ809L8z0l6GtQ__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__6.40.00.13&r=BSEc4rl__7.10.00.98

我需要在运行时更改广播间隔。 为此、根据 文档  和 本文、 我将使用这段代码。

ApiMac_mlmeSetFhReqUint32(ApiMac_FHAttribute_BCInterval,FH_BROADCAST_INTERVAL2);
uint16_t pibAttributeValue;
ApiMac_mlmeGetReqUint16(ApiMac_FHAttribute_broadcastSchedId,&pibAttributeValue);

// Increment the value
pibAttributeValue++;
ApiMac_mlmeSetReqUint16(ApiMac_FHAttribute_broadcastSchedId, pibAttributeValue);

我在 SysConfig 中设置了广播间隔、我可以清楚地看到发生的广播间隔正确。 当我按下按钮时、该代码运行、间隔应该发生变化。 但它没有n´t μ V。  

有人能帮我解决这个问题吗? 我是不是做错了什么事还是伪造了什么东西?

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

    您好、Nelson、

    我正在 做并测试这一点。 我现在没有正在运行的解决方案。

    但是,您是否也尝试在传感器内设置 API_MAC_FHAttribute_trackParentEUI,这可能是必要的,因为在更改收集器上的广播间隔后,传感器将会松散同步,而不会接收广播消息。  

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

    尊敬的 Alex:

    是的,我知道这一点,正如在这篇 帖子上所提到的。 但我不确定到底该怎么做。 当我在函数 wsAsyncIndCb()中看到传感器中的代码并搜索该属性时,我找到了这行代码  

    ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_trackParentEUI,(uint8_t *) (pData->srcAddr.addr.extAddr));

    是否有任何应该调用此函数的特定位置?

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

    是不是应该使用这行代码而不是我的代码?
    我能够使用我的代码更改广播间隔。 但正如您说过的、传感器没有接收到它。 我认为问题是传感器不知道新的日程安排。 也许与您之前对  API_MAC_FHAttribute_trackParentEUI 的评价有关?

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


    这是监听器日志记录。 我们可以看到编号为15、16和17的数据包、这些数据包是在 SysConfig 上设置的间隔为7s 的广播。
    当我按下按钮时、我的代码就会运行。 一段时间后、广播间隔为17秒。 但传感器没有接收到这些信号。

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

    其他问题是重复数据包。 还是没弄清楚为什么有两个发送的数据包。

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

    我认为我们需要强制传感器发送 Pan Configuration 请求。 它将更新传感器侧的新配置。 你有什么想法吗?  
    我当时正在尝试在切换 LED 时使用中的这两行代码对其进行测试、但不确定不起作用:

     ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle, true);
                            processFHEvent(&fhNumPCSRcvdInTrickleWindow,
                                                       ApiMac_wisunAsyncFrame_configSolicit,
                                                       fhPanConfigInterval);

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

    您好、Nelson、

    很抱歉回复延迟。

    您将发送两次数据包,因为应用程序仍以旧间隔填充广播队列。

    要更改,您必须将应用程序的广播间隔更改为您的广播应具有的频率。

    我们还建议将 Mac 的广播间隔设置为应用程序的1/2时间、以避免将消息排队。

    下面是我更改广播间隔所做的操作:

    在 collector.c 中添加全局变量:  

    //Broadcast Intervall
    uint32_t u32t_FH_BC_INTERVAL= 5000;

    并将 CSF_setBroadcast 更改为:

     Csf_setBroadcastClock(u32t_FH_BC_INTERVAL);

    已在 CFS.c 中添加

     u32t_FH_BC_INTERVAL = 10000;
               // ApiMac_mlmeSetFhReqUint32(ApiMac_FHAttribute_BCInterval,10000);
                ApiMac_mlmeSetFhReqUint32(ApiMac_FHAttribute_BCInterval,( u32t_FH_BC_INTERVAL >> 1));
                uint16_t pibAttributeValue;
                ApiMac_mlmeGetReqUint16(ApiMac_FHAttribute_broadcastSchedId,&pibAttributeValue);
                pibAttributeValue++;
                ApiMac_mlmeSetReqUint16(ApiMac_FHAttribute_broadcastSchedId, pibAttributeValue);

    现在它不发送消息两次:

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

    您好、Nelson、  

    我仍然没有设法获得这次跑步。

    但是、认为它不在传感器侧、因为配置消息是由收集器发送的。 我尝试使用  Collector_CONFIG_EVT 使它运行

    这也会在收集器接收到 PA 消息后调用。

    然而,它还不工作,但我会保持你更新!

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

    谢谢、这解决了重复 msgs 问题。

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

    关于传感器未在新间隔内接收到广播的情况、请跟我一起想一想、如果我错了、答案是否定的:传感器需要一个 PAN Config 帧来设置跳频时间表。 我试图强制收集器发送 PAN Config Frame、但如果传感器红外睡眠、则不会接收 PAN 配置。  
    我认为、我们需要发送 PAN 配置请求、以便收集器发送新的配置帧、然后传感器会准备好接收该帧并设置新的 FH 计划。 我坚持这一点、尝试、读取和测试...

    很高兴您能提供帮助、

    此致

    尼尔森

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

    您好、Nelsonl、

    很抱歉这么晚才回复。

    我在运行过程中将这些线添加到 gleftButtonHandle 处的传感器的 ssf.c:

    Util_setEvent(&Jdllc_events,JDLLC_PCS_EVT);
    sem_post(sensorSem);

    因此、它在按下左侧按钮后发送 PCS 消息。

    对于您的应用、我建议使用计时器事件对缺少几个广播间隔做出反应。