跳过主要内容

查询设备是否正在广播

DA14585

1年前

查询设备是否正在广播

发表Moiify0分 1回复
0个投票

我正在使用da14585芯片在主和从模式下运行,这让我感到困惑的是,有时芯片在不连接时不会广播,在大多数时候,我应该使用一些API来查询设备是否定期广播。。谢谢你!

1年前

pm_dialog

嗨,Moiify

由于您使用的是DA14585,因此为了执行角色切换,您可以在gap_role_all和广告或扫描中设置角色(您不能同时执行两者)。但是,您可以在计时器到期后进行广告并设置计时器,OU应该停止广告,并且一旦停止,您就可以开始扫描并等待扫描完成(如果您在GAP_GEN_DISCOVERY中进行扫描或设置其他计时器并取消扫描程序)因此,扫描完成后,立即开始广告。请检查以下步骤,以便在SDK的BLE_APP_PERIPHERAL示例中执行它:

- 更改USER_CONFIG.H中的文件。

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

void user_scan_start(void){struct gapm_start_scan_cmd* cmd = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,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();

请尝试以上步骤,让我知道它是否有效。