亲爱的对话框,
我们已经创建了BLE软件的一个版本,我们从外围角色开始并做广告。当我通过LightBlue连接设备时,我可以看到电池服务器,suota服务器服务。
按下按钮后,我间歇地将角色更改为观察者(通过GAPM_RESET_CMD和app_configuration_func),并扫描一段时间后返回外围角色(通过GAPM_RESET_CMD和app_configuration_func),并再次开始发布。我只是遵循了几个线程,您在其中解释了应该如何完成。
这一切都很正常,除了当我再次通过LightBlue连接设备时,不再有服务。这种情况一直持续到我给设备充电,之后我确实再次看到了服务。
当执行GAPM_RESET_CMD时返回外围角色时,初始化的某些部分没有执行吗?如果是,我需要更改或调用什么才能获得与最初相同的服务?
设备:
嗨paul.deboer,
初始化系统时会初始化服务。请检查user_app_init()回调函数是否调用default_app_on_init()。在这个函数中,所有的服务都是在设备启动时初始化的。我假设GAPM_RESET_CMD可能不会对包含的服务造成任何问题,并且您应该能够在BLE通用移动应用程序中看到它们。请您在调试模式下运行固件,并检查当您发送GAPM_RESET_CMD命令以便重新启动广告时发生了什么?代码是在某处卡住了,还是运行正常?
谢谢,PM_Dialog
我确定app_init没有被调用,因此app_init_func没有被调用,我在那个方法上有断点,它们没有被命中。我已经注意到app_env。next_prf_init = APP_PRF_LIST_START + 1;没有完成,所以app_db_init_func没有做任何事情。我不认为代码卡住了,因为其他一切似乎都工作,我可以连接和断开外设,这证明代码是工作的。
嗨paul.deboer,
我无法在我的身边复制它。我使用的是SDK5.0.4中修改过的ble_app_sleepmode示例,我通过按下一个按钮(SW3按钮,用于唤醒设备)切换角色。每次连接移动应用,我都能看到所有的服务被使用。为了做到这一点,您能否分享您所遵循的步骤,以及为了复制您的问题,您在哪个SDK示例中工作?
谢谢,PM_Dialog
我们使用的是SDK 3.0.10.1,但让我看看我是否能想出一个复制该行为的示例项目
嗨paul.deboer,
目前还不支持SDK3,所以我建议你改用最新版本的SDK5.0.4,然后尝试实现“角色转换”功能。
谢谢,PM_Dialog