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.

[参考译文] CC2642R:更改周期性广播参数

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1341490/cc2642r-changing-periodic-advertising-params

器件型号:CC2642R

我在 simple_peripheral 中添加了周期性广告、如 https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1294888/faq-cc2642r-periodic-advertising-with-cc2642r-cc2652r7中

一切都运行正常!

此外、我想在稍后的运行期间更改周期性广播参数(间隔)。   用户可通过 GATT 服务设置新设置。

因此,我 再次调用 Adv_Set:iodicAdvParams

        
        uint32_t newInterval = getNewInterval();
        
        // Change Periodic Advertising parameters
        GapAdv_periodicAdvParams_t perParams = {newInterval, newInterval, 0x40};
        status = GapAdv_SetPeriodicAdvParams(advHandleNCNS, &perParams);

状态始终为0x18 (bleInvalidRange)。 该函数仅在创建广播后的第一次调用中成功。

我还试图暂停定期广播   、方法是在再次调用 Adv_Set 中的 Adv_Set 中、调用 advHandleNCNS (0、advHandleNCNS)和/或 GapAdv_disable (advHandleNCNS)。 但没有成功。

现在的唯一方法是进行复位、但我想避免这种情况。

是否可以在运行时将初始周期性广播参数更改为新值? 如果是、我 会感谢您提供任何帮助!

提前感谢!

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

    您好!

    感谢您与我们联系。 您能确认 advHandleNCNS 是一个扩展的广告句柄吗? 我希望这是因为你有定期广告工作在第一个地方,但想再次检查. 您是否有任何其他广告句柄正在运行? 如果是、那么您是否可以尝试禁用所有广播以查看是否仍然可以观察到该行为?

    此致、

    1月

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

    大家好、Jan、

    感谢您的回复!

    我可以确认  advHandleNCNS 是扩展的广告处理。

    请参阅 参数:

    GapAdv_params_t advParamsNCNS = {
      .eventProps = 0,
      .primIntMin = 160,
      .primIntMax = 160,
      .primChanMap = GAP_ADV_CHAN_ALL,
      .peerAddrType = PEER_ADDRTYPE_PUBLIC_OR_PUBLIC_ID,
      .peerAddr = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },
      .filterPolicy = GAP_ADV_WL_POLICY_ANY_REQ,
      .txPower = GAP_ADV_TX_POWER_NO_PREFERENCE,
      .primPhy = GAP_ADV_PRIM_PHY_1_MBPS,
      .secPhy = GAP_ADV_SEC_PHY_1_MBPS,
      .sid = 1
    };
    
    status = GapAdv_create(advCb, &advParamsNCNS, &advHandleNCNS);

    我另外创建了一个旧广播句柄。 我需要它是可扫描和可连接的。

    在测试中、我禁用了旧广播、以便我只使用扩展的句柄。

    同样的行为: Adv_Set 中的第二次和后续调用也失败。

    谢谢、Andreas

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

    尊敬的 Andreas:

    您是否也可以尝试禁用扩展广播? 因此、旧广播和扩展广播都会被停止、并且器件根本就没有广播?

    此致、

    1月

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

    大家好、Jan、

    是的,我  在调用 Adv_Set 前完全禁用所有的广告。

    相同的行为。

    安德烈

     

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

    尊敬的 Andreas:

    我已经深入研究了这一点、一旦进行了初始设置、便无法更改配置。 您可能需要销毁广播集并重新创建或重置设备。 您能尝试一下吗?

    此致、

    1月

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

    大家好、Jan、

    始终可以选择对器件进行复位、这将运行。

    销毁广告也不成功:

    GapAdv_Destroy 与 freeOptions GAP_ADV_FREE_OPTION_DONT_FREE 并重新创建  会导致 G52 Adv_Set iodicAdvParams 再次出现相同的状态=0x18。   

    使用 其他 freeOptions 的 GapAdv_Destroy 会导致 下一个 GapAdv_enable 上的状态= 0x18。

     

    遗憾的是、目前除了复位之外、我没有看到其他选择。

    谢谢。

    安德烈

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

    尊敬的 Andreas:

    明白了。 感谢您的测试、我认为值得一试。 您是正确的、在配置定期广播参数一次后、它们似乎被设置直到下一次复位。 我会提交一个请求单、看看这是否可以在未来的 SDK 版本中解决、或者是否可以解决。

    此致、

    1月

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

    大家好、Jan、

    所以我必须接受更改周期性参数的复位。

    如果有任何新闻、 我希望了解最新情况。

    非常感谢您的热情支持!

    安德烈

    亚斯