app_easy_gap_advertise_stop.

了解更多常见问题解答教程

5个帖子/ 0新
最后一篇
ohmi.
离线
最后一次露面:1年8个月前
加入:2019-03-28 08:21
app_easy_gap_advertise_stop.

你好支持团队,

我正试图了解SDK如何工作。

使用示例ble_app_barebone。

我正在尝试在2个州运行的设备:

州0:广告
第1州:什么都不做

为了实现这一目标,我以这种方式修改了上述项目:
在函数adv_data_update_timer_cb() - 定时器回调:我正在基于内部计数器切换状态
当计数器达到预期值时,我更改状态并询问ADV STOP:

mystatus是一个全局变量

UINT8_T MyStatus __Attribute __((部分(“保留_MEM_AREA0”),ZERO_INIT));// @保留内存uint8_t nb __attribute __((部分(“Retention_mem_area0”),Zero_Init));// @保留内存静态void void avd_data_update_timer_cb(){nb ++;if(nb == 2){mystatus = 1;// evite la rescess app_easy_gap_advertise_stop();}如果(nb> = 4){mystatus = 0;nb = 0;} //如果MND_DATA_INDEX具有MSB集,制造商数据存储在扫描响应中uint8_t * mnf_data_storage =(mnf_data_index&0x80)?storage_scan_rsp_data:storage_add_data;//更新制造商数据Mnf_data_update(); // Update the selected fields of the advertising data (manufacturer data) memcpy(mnf_data_storage + (mnf_data_index & 0x7F), &mnf_data, sizeof(struct mnf_specific_data_ad_structure)); // Update advertising data on the fly app_easy_gap_update_adv_data(stored_adv_data, stored_adv_data_len, stored_scan_rsp_data, stored_scan_rsp_data_len); // Restart timer for the next advertising update app_adv_data_update_timer_used = app_easy_timer(APP_ADV_DATA_UPDATE_TO, adv_data_update_timer_cb); }

而不是在user_app_adv_start时,我不会在mystatus == 1时调用app_easy_gap_undircted_advertise_start

void user_app_adv_start(void){// ARCH_PRINTF(“user_app_adv_start”);/ * sb * ///trystry下一个广告数据更新app_add_data_update_timer_used = app_easy_timer(app_addata_update_to,adv_data_update_timer_cb);/ * sb * / if(mystatus == 1){return;} struct gapm_start_advertise_cmd * cmd;cmd = app_easy_gap_undirected_advertise_get_active();//如果有足够的空间app_add_ad_struct(cmd,&mnf_data,sizefof(struct mnf_specific_data_ad_structure),1),将制造商数据添加到初始广告或扫描响应数据。app_easy_gap_undircated_advertise_start();}

结果不是我在nmi_handlerc完成时的预期。

你能帮我理解我做错了什么

谢谢

设备:
PM_DIALOG.
离线
最后一次露面:11小时37分钟前
员工
加入:2018-02-08 11:03
嗨ohmi,

嗨ohmi,

停止广告时,触发User_App_Adv_Undirect_Complete()回调函数。如果检查此函数的源代码,则会触发User_App_Adv_Start(),因此设备将再次启动广告。请在调试模式下运行代码,并且您将看到“status”等于Gap_err_Canceled(= 0x44)。因此,当user_app_adv_start再次触发时,MyStatus变量等于1,并将执行“返回”。结果是代码被困,看门狗超时,你得到了一个nmi。如果删除if(mystatus == 1){return;},在停止广告后,user_app_adv_start()将被正确粗uenceumed,设备将重新启动广告。在名为BLE_APP_SLEEPMODE示例中有一个示例,其中设备启动广告,在预定义的时间停止广告之后,进入扩展睡眠模式,当您按下设备唤醒并重新启动广告时。如果您与我们的产品和我们的SDK为新手,我会建议您查看亚博电竞菠菜以下文件,这将帮助您了解我们的API和SDK的体系结构。

请阅读UM-B-080文档的支柱5(睡眠模式)部分。此外,我强烈建议您从我们的支持网页查看我们的教程和我们的软件示例。

https://www.dialog-seminile.com/produ亚博电竞菠菜cts/connectivity/bluetooth-low-energy/smartbond-da14585-and-da14586.

谢谢,PM_DIALOG.

ohmi.
离线
最后一次露面:1年8个月前
加入:2019-03-28 08:21
是的,我是你的新手

是的,我是你的产品和SDK。亚博电竞菠菜
我试图通过UM-B-080/079了解SDK,但很难进入。
感谢与芭托托的联系,我会经过他们。

PM_DIALOG.
离线
最后一次露面:11小时37分钟前
员工
加入:2018-02-08 11:03
嗨ohmi,

嗨ohmi,

我建议您阅读UM-B-080/079,运行和调试所有SDK的示例然后阅读教程。如果您有任何其他问题或问题,请创建另一个论坛线程。谢谢你接受我的答案。

谢谢,PM_DIALOG.

ohmi.
离线
最后一次露面:1年8个月前
加入:2019-03-28 08:21
嗨支持,

嗨支持,

我经历了这样的例子,但我发现教程更有用(特别是讨论睡眠模式的人)。
我设法在短时间内发送广告,而不是在重新启动广告之前睡一段时间。

谢谢你的指导。