查询设备是否是广播

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

2帖/ 0新
最后发表
moiify
离线
最后一次露面:1周5天前
加入时间:2020年3月12日07:26
查询设备是否是广播

我使用DA14585芯片在主机和从机模式下运行,它使混淆,有时芯片不广播(当它不被连接,在大多数时间),所以我设备是否被周期性地广播应使用一些API来查询。谢谢!

设备:
PM_Dialog
离线
最后一次露面:6小时53分钟前
员工
加入时间:2018年2月8日11:03
嗨moiify

嗨moiify

由于您使用的是DA14585,以进行角色切换,则可以设置GAP_ROLE_ALL的作用和宣传或扫描(你不能做都在同一时间)。但是,你可以做广告,并设置一个计时器,在计时器到期,欧应该停止广告,一旦它停止,如果你是在GAP_GEN_DISCOVERY扫描就可以开始扫描,要么等待扫描完成(或设置附加定时器,并取消在扫描过程),以便尽快完成扫描再次启动广告。请检查以在SDK的ble_app_peripheral例如执行它下面的步骤:

- 改变在user_config.h文件user_gapm_conf到GAP_ROLE_ALL的。角色成员。

- 创建user_scan_start()函数,以便使设备开始扫描:

空隙user_scan_start(无效){结构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->模式= 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秒后停止广告开始了,所以我们要使用,以阻止广告的计时器。

- 因此,在计时器adv_data_update_timer_cb的回调(),而不是广告串的更新,调用app_easy_gap_advertise_stop()函数。

- 在user_app_adv_undirect_complete()函数调用user_scan_start()函数,从而使装置停止时的广告开始扫描。

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

- 为了尽快开始扫描端部创建user_on_scanning_completed(函数广告)和从调用user_app_adv_start该功能();

请尝试上述步骤,让我知道它是否正在工作。