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.

[参考译文] LP-EM-CC2340R53:在 MAP_HCI_EXT_EndModemTestCmd 之后重新启动 BLE 链路层依赖项的正确方法

Guru**** 2535150 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1544325/lp-em-cc2340r53-proper-way-to-restart-ble-link-layer-dependencies-after-map_hci_ext_endmodemtestcmd

器件型号:LP-EM-CC2340R53


工具/软件:

您好:

我正在寻找一种在调用 MAP_HCI_EXT_EndModemTestCmd 后将 BLE 依赖项正确重置为其先前状态的方法。 它表明该函数复位了链路层。 是否有任何简单的方法可以在不重新启动设备的情况下将 BLE 恢复到以前的状态? 我 在此工程中运行 simplelink 低功耗 f3 SDK 8.20.00.119 版本。

提前感谢、
Alex Trujillo

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

    您好!

    我不认为这是可能的,但我将寻找一个答案。 您能否提供有关使用案例和您期望的内容的更多说明、或者提供一个您想要的示例? 您是否意味着您要处于 BLE 连接中、运行调制解调器测试、然后自动恢复此连接?

    此致、
    Maxence

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

    对缺乏清晰度表示歉意、

    用例能够通过将参数写入 GATT 特性、然后断开连接来进入该模式。 我已成功进入此模式、在该模式下、它将关闭其广播信标、然后运行函数  MAP_HCI_EXT_EnhancedModemTestTxCmd 以发出连续波。 在 输入参数指定的时间之后、它会调用 MAP_HCI_EXT_EndModemTestCmd

    从 API 中的文档中可以看到  MAP_HCI_EXT_EndModemTestCmd  将复位链路层。 这应该使较高级别的内容(如队列和任务)仍然与我所能知道的内容保持一致。

    我不需要重新建立连接、我希望我的设备通过其广播信标和 GATT 服务恢复到常规的 BLE 操作。 我得到的最接近的是打电话 BLEAppUtil_stackInit  和  App_Stack。InitDoneHandler  这将允许我重新打开广告,但我无法通过我的手机使用 nrf 连接应用程序重新建立连接。 然而,我能够使用一个脚本和一个 NRF52840 Dongle 与一个在 blatann python 库中构建的脚本。

    我的主要问题是、除了硬重新启动器件之外、是否还有适当的方法可以在链路层复位之前将 BLE 功能恢复到其状态。

    编辑 :我刚注意到 SDK 中的 RF 载波示例项目。 在射频载波示例项目之后对连续波代码进行建模是否是更适合我的用例的解决方案、因为我希望能够更好地控制 CW 的启动方式?

    谢谢、
    Alex

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

    您好!

    查看 CC2340R53 上的 BLE 库的可用 API 后、没有 BLE 复位函数。 在 basic_ble 示例中、main 函数调用 BLEAppUtil_init。 此函数执行多项操作:
    -将给定的参数(错误处理程序,初始化参数等)存储为 BLE 堆栈的当前参数
    -为 BLE 消息创建队列
    -创建 BLE 堆栈任务  
    -创建本地应用任务
    -初始化用于事件处理程序的互斥量

    重置最接近的方法是执行与 BLEAppUtil_init 函数相反的操作:  
    -将 BLE 堆栈的当前参数设置为 NULL
    -删除 BLE 消息的队列
    -删除 BLE 堆栈任务
    -删除 BLE 应用任务->这一点听起来很困难、因为您很可能在尝试删除应用任务时参与应用任务。 您需要从主 FreeRTOS 任务中以某种方式调用该函数
    -重置互斥量

    此选项是在调用测试函数后重置 BLE 堆栈的正确方法。
    另一种方法是简单地调用 BLEAppUtil_init 并查看它是否有效、这是您可以尝试的操作。
    第三个选项是查看使用 GapAdv_enable 重新启动广播是否 起作用、以及它是否足以满足您的需求。

    更激进的第四种选择是实现软复位。 这将在不断开调试器的情况下重新启动应用。 此处介绍了有关如何在 CC2340R53 上执行软复位的说明

    此致、
    Maxence

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

    我确实有一个相关的问题。 是否可以在时保持灵活的连接  MAP_HCI_EXT_EnhancedModemTestTxCmd  TX 正在进行中? 或者、是否需要在测试开始之前终止连接? 我已尝试在活动连接期间触发它、但不传输连续波。

    此外、当调用该函数时、尽管未启动连续波、但它仍会返回有效的响应代码。

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

    您好、

    我认为在运行调制解调器测试 TX 时维持 BLE 连接是不可能的、因为连接会影响测试结果。

    此致、
    Maxence