嗨,对话小组,
我动态地更改了广告数据,它仍然有效,但有些非常敏感的东西有时会导致稳定性问题。
我通过使用globle变量更改了避免数据,该变量由一个1秒周期的计时器更新,然后是app_adv_stop(),然后是app_adv_start。如果app_adv_stop()直接跟在app_adv_start()后面,则它不起作用,不会发布广告。如果我把一些东西放在中间,它也不起作用。只有在中间插入I++之类的东西时,它才能正常工作。
当我频繁改变状态来测试它的稳定性时,有时广告会停止或无法连接。我使用了样本128。
期待听到你的回答和帮助。
谢谢
亚历克斯

你好,亚历克斯,
也许问题在于,仍然存在一些问题
GAPM\u取消\u命令由发送的消息挂起app_adv_stop. 也许一种“正确的方法”是使用间隙事件处理程序。打开app_task_handlers.h并搜索侦听器以查找GAPM_CMP_EVT. 如果尚未添加,则添加,但默认情况下应添加。查找函数gapm\U cmp\U evt\U处理器在里面app_task.c. 发现,例如。,案件GAPM_ADV_undirective. 希望这有帮助!嗨,亚历克斯,
请看一下灯塔用户手册,其中说明了如何操作:
http://support.dialog-semiconductor.com/system/files/UM-B-019_DA14580_Be...
我建议您也看看beacon SW:
http://support.dialog-semiconductor.com/da14580-reference-design-beacon
以下是答案:
如何动态更改广告数据?
1.在da14580_config.h头文件中定义CFG_动态_信标_数据。
可以使用在广告模式下,在app_asynch_trm()函数中计算到BLE事件结束的转换的过程。当广播当前数据时,此过程检查BLE事件状态何时移到BLE_event_END以统计广告事件。
通过调用函数app_last_rwble_evt_get()获得BLE状态。当达到最大广告迭代次数时,广告数据将自动动态更改。
2.信标参考软件中的广告迭代次数由app_sleep.h头文件中definition MAX_Beacon_advertive_计数器的值确定。
发生超时后,必须执行GAPM_取消操作。这可以通过调用app_adv_stop()函数来完成。
GAPM_CANCEL操作完成后,将启动广告间隔计时器。
然后,可以通过调用计时器处理程序中的app_adv_start()函数重新启动广告。
当做
对话小组。