我已经在广告数据中设置了一个制造商特定的数据字符串。我使用OS_timer反复调用函数更新广告数据。使用以下代码:
static void mnf_tim_cb(OS_TIMER定时器执行操作)
{
//devkit use 0_7 for device . hw_gpio_toggle(HW_GPIO_PORT_1, HW_GPIO_PIN_5)
mnf_flag_1 + +;
ble_gap_adv_stop ();
如果(mnf_flag_1 = = 0 xff)
mnf_flag_1 = 0 x04;
adv_data [10] = mnf_flag_1;
Ble_gap_adv_data_set (sizeof(adv_data), adv_data, name_len + 2, scan_rsp);
ble_gap_adv_start (GAP_CONN_MODE_UNDIRECTED);
}
这个问题在延长的睡眠周期开始之前就会更新。一旦睡眠周期开始,它就会停止更新广告数据。我已经确认定时器回调函数正在执行,因为我拨动LED看到它。
我尝试了停止和开始广告和没有它也。
使用stop和start,它永远不会更新数据;然而,如果没有这些命令,它就会完美地更新,直到睡眠周期开始。
有什么问题吗?
温暖的问候
设备:
这也是使用代理报告作为基地
你好,穆
尝试在你设置的定时器中停止广告,然后在你的主要任务BLE_EVT_GAP_ADV_COMPLETED中捕捉广告完成消息,在那个处理程序中,改变广告字符串,然后开始广告。
由于MT_dialog
我试过了,但没用。一旦睡眠周期开始,它就停止更新。在调试模式下禁用睡眠,它会不断更新。
在ble_prepherial项目中尝试了同样的事情,并且工作正常。
请帮助。
你好,穆
遵循我所描述的过程,并确保您放置在广告字符串中的数据属于内存的retain部分,具有您正在使用的adv_data作为INITIALISED_PRIVILEGED_DATA变量。
由于MT_dialog
谢谢!使用它作为INITIALISED_PRIVILEGED_DATA修复了这个问题。
谢谢你的帮助。感谢。