DA14585 Windows大小和扫描间隔

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

4个帖子/ 0新
最后一篇
有限公司
离线
最后一次露面:15小时前1周
加入:2018-11-12 09:19
DA14585 Windows大小和扫描间隔

嗨,在一个项目中,我们想要在扫描3秒后扫描2秒。我实现了广告和扫描交换机机制,但我有一些问题。如何设置扫描窗口和扫描间隔值?我想扫描信标大约3秒钟?

我定义了该值

cmd-> op.code = gapm_scan_active;
cmd-> op.addr_src = gapm_static_addr;
cmd-> interval = ms_to_bleslots(3000);//总间隔3000 ms
cmd-> window = ms_to_bleslots(1000);//每个通道1000 ms
cmd-> mode = gap_gen_discovery;
cmd-> filt_policy = scan_allow_adv_all;
cmd-> filter_duplic = scan_filt_duplic_en;

但扫描时间需要大约7.94秒

扫描完成状态为69(GAP_ERR_TIMEOUT)

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

嗨btdev,

请尝试使用GAPM_SCAN_PASSIVE而不是GAPM_SCAN_ACTIVE。在被动扫描配置中,中央仅接收广告数据,并且不发送扫描请求(Scan_Req),以便从外围设备接收扫描响应(Scan_Resp)。关于超时,您应该设置第二个定时器以停止扫描过程。然后,您应该添加另一个回调.app_on_scanning_completed = scanning_completed。在Scanning_Completed()中,您应该将设备重新配置到外设并重新启动广告。

谢谢,PM_DIALOG.

有限公司
离线
最后一次露面:15小时前1周
加入:2018-11-12 09:19
//扫描停止计时器回调
//扫描停止计时器回调void scanstoptimer_cb(void){Arch_Printf(“扫描停止\ r \ n”);struct gapm_cancel_cmd * cmd =(struct gapm_cancel_cmd *)ke_msg_alloc(gapm_cancel_cmd,task_gapm,task_app,gapm_cancel_cmd);cmd->操作= gapm_scan_passive;//设置GAPM_SCAN_PASSIVE KE_MSG_SEND(CMD); //发送消息} //扫描开始函数静态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_passive;cmd-> op.addr_src = gapm_static_addr;cmd->间隔= 10;cmd->窗口= 5;cmd-> mode = gap_gen_discovery;cmd-> filt_policy = scan_allow_adv_all; cmd->filter_duplic = SCAN_FILT_DUPLIC_EN; // Send the message ke_msg_send(cmd); // We are now connectable //ke_state_set(TASK_APP, APP_CONNECTABLE); scanStopTimer = app_easy_timer(300,scanStopTimer_CB); arch_printf( "SCAN START\r\n"); } //.scan completed callback void user_on_scan_complete(const uint8_t param){ arch_printf( "Advertise Start = %d\r\n", param); // begin other process // }

嗨,我添加计时器。并扫描完成回调(在user_callback.h中)。在3秒后的运行扫描停止中,但不打印扫描停止Printf和Dont'Run扫描完成的回调。只需在3秒后停止应用程序

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

嗨btdev,

您提到,一旦扫描过程完成,就会触发任何回调函数。您是否在user_callback_config.h文件中注册了在.app_on_canning_completed的user_app_callbacks sttcture中的回调函数?当扫描停止时,代码会在哪里?

谢谢,PM_DIALOG.