亲爱的Dialog,
我们已经创建了BLE软件的一个版本,我们从外围角色开始做广告。当我通过LightBlue连接到设备时,我可以看到电池服务器、suota服务器服务。
按下一个按钮,我会断断续续地将角色更改为观察者(通过GAPM\u RESET\u CMD和app\u configuration\u func)并扫描一段时间,然后返回到外围角色(通过GAPM\u RESET\u CMD和app\u configuration\u func)并再次开始广告。我只是简单地按照几个线程,你解释了应该如何做。
这一切都很好,除了我再次通过LightBlue连接到设备时,没有服务了。这种情况一直持续到我关闭设备电源,然后我再次看到服务。
在执行GAPM\u RESET\u CMD时,返回到外围角色时是否未执行初始化的某些部分?如果是这样,我需要改变什么或打电话,以便能够获得与最初相同的服务?
设备:
嗨,保罗。德伯,
服务在系统初始化时初始化。请检查用户\u app \u init()回调函数,该函数在\u init()上调用默认的\u app。在这个函数中,当设备启动时,所有服务都被初始化。我假设GAPM\u RESET\u CMD可能不会对包含的服务造成任何问题,您应该能够在BLE通用移动应用程序中看到它们。您能在调试模式下运行固件并检查当您发送GAPM\u RESET\u CMD命令以重新启动广告时会发生什么吗?代码是否在某个地方卡住了或运行正常?
谢谢,下午好
我确信app\u init没有被调用,因此app\u init\u func没有被调用,我在那个方法上有断点,它们没有被命中。我已经注意到app\u env.next\u prf\u init=app\u prf\u LIST\u START+1;没有完成,所以app\u db\u init\u func什么都没做。我不认为代码被卡住,因为其他一切似乎工作,我可以连接和断开的外围设备,这证明了代码是工作的。
嗨,保罗。德伯,
我无法在我身边复制它。我使用的是SDK5.0.4的一个修改过的ble\u app\u睡眠模式示例,我通过按下按钮(用于唤醒设备的SW3按钮)来切换角色。每次连接移动应用程序时,我都能看到所有的服务都在使用。为此,您能否分享一下您遵循的步骤,以及您正在使用哪个SDK示例来复制您的问题?
谢谢,下午好
我们使用的是sdk3.0.10.1,但是让我看看是否可以提供一个复制该行为的示例项目
嗨,保罗。德伯,
SDK3目前不受支持,因此我建议您进入最新版本的SDK5.0.4,然后尝试实现“角色切换”功能。
谢谢,下午好