DA14585扫描和宣传

学到更多常见问题解答教程

6个帖子/ 0新
最后一篇
有限公司
离线
最后一次露面:2天前1周
加入:2018-11-12 09:19
DA14585扫描和宣传

嗨;我们可以使用DA14585进行扫描并相当广告吗?如果是如何实现它?

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

嗨btdev,

根据Bluetooth Le规范,无法同时扫描(间隙中心角色)并宣传(间隙外围角色)。由于您使用的是DA14585,您可以执行从外设切换到中央间隙配置的角色,反之亦然。这可以通过将角色设置为GAP_ROLE_ALL来完成,以便您可以进行广告或扫描。不可能同时发生。

谢谢,PM_DIALOG.

有限公司
离线
最后一次露面:2天前1周
加入:2018-11-12 09:19
嗨,谢谢你的支持。一世

嗨,谢谢你的支持。我有个问题。如何在扫描和广告之间切换?

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

嗨btdev,

让我们将SDK的BLE_APP_PERITEDAL示例作为起点。默认情况下,DA14585作为外设配置为外设,因此它开始广告(无向)。您可以使用app_easy_timer()和到期后,您应该停止广告。一旦停止,您就可以将设备配置为中心并开始扫描。您可以等待扫描完成(如果在GAP_GEN_DISCOVERY中扫描)或设置额外的计时器并取消扫描过程。扫描完成后,也许您可​​以再次启动广告。请检查下面的步骤以执行角色切换。

- 将user_gapm_conf结构的.thole成员更改为user_config.h文件中的gap_role_all。

- 创建user_scan_start()函数以开始扫描:

void user_scan_start(void){struct gapm_start_scan_cmd * cmd = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);cmd-> op.code = gapm_scan_active;cmd-> op.addr_src = gapm_static_addr;cmd->间隔= 16384;cmd->窗口= 16384;cmd-> mode = gap_gen_discovery;cmd-> filt_policy = scan_allow_adv_all;cmd-> filter_duplic = scan_filt_duplic_en;//发送消息ke_msg_send(cmd);//我们现在是可连接的ke_state_set(task_app,app_connectable); }

- 在user_app_adv_start()函数中,有一个定时器启动,以便在大约30秒后停止广告,因此我们将使用它以停止广告。

- 因此在Timer Adv_Data_update_Timer_CB()的回调中而不是更新广告字符串,请调用app_easy_gap_advertise_stop()函数。

- 在user_app_add_undirect_complete()函数调用user_scan_start()函数,以便在设备停止广告以开始扫描。

- 为了停止扫描,将不会使用额外的计时器以取消命令,但将使用扫描本身的超时。

- 一旦扫描结束创建函数user_on_scanning_Completed(),并且从该函数启动广告,调用user_app_adv_start();

希望我的建议为您提供帮助!如果您发现任何答案有用,请将其标记为“已接受”。请回复您的反馈意见。

谢谢,PM_DIALOG.

有限公司
离线
最后一次露面:2天前1周
加入:2018-11-12 09:19
谢谢你的支持。一世

谢谢你的支持。我以前想到了这种算法。但我担心数据丢失

PM_DIALOG.
离线
最后一次露面:17小时23分钟前
员工
加入:2018-02-08 11:03
谢谢你接受我的

谢谢你接受答案!问候,pm_dialog