工具/软件:
您好:
我正在寻找一种在调用 MAP_HCI_EXT_EndModemTestCmd 后将 BLE 依赖项正确重置为其先前状态的方法。 它表明该函数复位了链路层。 是否有任何简单的方法可以在不重新启动设备的情况下将 BLE 恢复到以前的状态? 我 在此工程中运行 simplelink 低功耗 f3 SDK 8.20.00.119 版本。
提前感谢、
Alex Trujillo
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.
工具/软件:
您好:
我正在寻找一种在调用 MAP_HCI_EXT_EndModemTestCmd 后将 BLE 依赖项正确重置为其先前状态的方法。 它表明该函数复位了链路层。 是否有任何简单的方法可以在不重新启动设备的情况下将 BLE 恢复到以前的状态? 我 在此工程中运行 simplelink 低功耗 f3 SDK 8.20.00.119 版本。
提前感谢、
Alex Trujillo
对缺乏清晰度表示歉意、
用例能够通过将参数写入 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