亲爱的对话框,
我最近尝试将现有的14585/14586应用程序从SDK 6.0.4移植到SDK 6.0.10,但我遇到了一个奇怪的问题。应用程序启动时不发布广告,并开始一个周期:wake -> advertise start -> timer timeout -> advertise stop -> sleep -> timer timeout -> wake等。使用此模型的几个亚博国际官网平台网址应用程序已经在SDK 6.0.4中成功实现,但在SDK 6.0.10中,app_easy_gap_undirected_advertise_start()调用似乎会被拒绝,并且计时器回调不会在第一个重复周期中触发。如果我删除了广告的开始和停止调用,时间序列就会像预期的那样工作。这只发生在.role = GAP_ROLE_PERIPHERAL。我得到正确的.role = GAP_ROLE_ALL的广告和计时器行为。
你能帮我解释一下吗?解决方法是使用GAP_ROLE_ALL,但是我想了解它的敏感性。顺便说一句,来自SDK 6.0.10的'ble_peripheral'应用程序在目标硬件上运行正常,但它会在设备配置后自动开始永久发布,所以它不是同一型号。正如我所说的,这个广告/计时器锁定条件不会在SDK 6.0.4中出现。
谢谢提前
Huw
设备:
嗨huwjones,
事实上,如果你想开始/停止广告,并将设备置于睡眠模式,我建议你看看ble_app_sleepmode。系统将开始发布广告,在预定义的时间后,无定向广告将停止,并进入延长睡眠模式。你可以按一个按钮来唤醒这个设备。按下按钮后,设备将在预定时间内再次开始发布广告。
谢谢,PM_Dialog
亲爱的对话框,
我已经用Da1458x和Da1468x零件设计了好几年。我希望您能提供关于为什么SDK6.0.10的行为应该与SDK6.0.4略有不同的见解。在定义了CFG_DEVELOPMENT_DEBUG的进一步测试中,.role = GAP_ROLE_ALL不是问题所在。使用测试代码,我注意到如果我开始发布(设置为连续),就会出现意外的user_app_adv_undirect_complete()事件,即使没有用户代码来停止发布。目前该设备仍在做广告。如果我把定时的启动/停止周期放回,一个GAPM_CANCEL断言将在第二个唤醒周期上发生。看起来好像一个start advertise调用被SDK忽略了,所以在随后的stop advertise调用上没有任务需要停止——这就是GAPM_CANCEL错误的原因。
我会继续调查,希望你能提供一些信息。
谢谢
Huw
嗨huwjones,
非常感谢您的建议,并对延误表示歉意。你能分享一些代码片段,以便复制它吗?您使用哪个SDK示例?
谢谢,PM_Dialog
嗨Huw,
我已经在内部升级了你的问题,我们会直接离线支持你。我一有团队的最新消息就会通知你。
问候,PM_Dialog