DA14585
1年前
我正在使用da14585芯片在主和从模式下运行,这让我感到困惑的是,有时芯片在不连接时不会广播,在大多数时候,我应该使用一些API来查询设备是否定期广播。。谢谢你!
嗨,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();
请尝试以上步骤,让我知道它是否有效。
1年前
嗨,Moiify
由于您使用的是DA14585,因此为了执行角色切换,您可以在gap_role_all和广告或扫描中设置角色(您不能同时执行两者)。但是,您可以在计时器到期后进行广告并设置计时器,OU应该停止广告,并且一旦停止,您就可以开始扫描并等待扫描完成(如果您在GAP_GEN_DISCOVERY中进行扫描或设置其他计时器并取消扫描程序)因此,扫描完成后,立即开始广告。请检查以下步骤,以便在SDK的BLE_APP_PERIPHERAL示例中执行它:
- 更改USER_CONFIG.H中的文件。
- 创建一个user_scan_start()函数以使设备开始扫描:
- 在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();
请尝试以上步骤,让我知道它是否有效。