我在广告数据中设置了一个制造商特定的数据字符串。我使用OS_Timer反复调用函数以更新广告数据。使用以下代码:
静态void mnf_tim_cb(OS_Timer计时器)
{
// hw_gpio_toggle(hw_gpio_port_1,hw_gpio_pin_5); // devkit使用0_7 for device
mnf_flag_1 ++;
ble_gap_adv_stop();
if(mnf_flag_1 == 0xff)
mnf_flag_1 = 0x04;
adv_data [10] = mnf_flag_1;
ble_gap_addata_set(sizeof(adv_data),adv_data,name_len + 2,scan_rsp);
ble_gap_adv_start(gap_conn_mode_undirected);
}
在扩展睡眠周期开始之前的问题它更新。一旦睡眠周期开始,它就会停止更新广告数据。我已经确认正在执行定时器回调函数,因为我将LED拨动以查看它。
我试过停止并开始广告,也没有它。
停止并启动它永远不会更新数据;但是,没有那些命令,但它完全更新,直到睡眠周期开始。
什么可能是问题。
温暖的问候
设备:
此外,这是使用Prox-Reporter作为基础
嗨瓦拉希尔,
尝试在您已经设置的计时器中停止广告,然后在主任务中捕获广告完成消息,Ble_evt_gap_adv_Completed,在该处理程序中,更改广告字符串,然后启动广告。
谢谢mt_dialog.
我已经尝试过这个,但它不起作用。一旦睡眠周期开始,它就会停止更新。在调试模式下禁用休眠状态,它会保持更新。
用BLE_PREPHERIAL项目尝试了同样的事情,并正确工作。
请帮忙。
嗨瓦拉希尔,
按照I VE中断的过程,并确保您放置在广告字符串中的数据属于保留部分内存,您使用的ADDATA为initialised_privileged_data变量。
谢谢mt_dialog.
谢谢!使用它作为initialised_privileged_data修复了问题。
谢谢您的帮助。非常感激。