DA14585窗口大小和扫描间隔

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
ltdev
离线
最后看到:1个月4个星期前
加入:2018-11-12 09:19
DA14585窗口大小和扫描间隔

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

我定义这些值

cmd - > op。代码= GAPM_SCAN_ACTIVE;
cmd - > op。addr_src = GAPM_STATIC_ADDR;
cmd - >间隔= MS_TO_BLESLOTS (3000);//总间隔3000毫秒
cmd - >窗口= MS_TO_BLESLOTS (1000);//每个通道1000毫秒
cmd - >模式= 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
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
嗨btdev,

嗨btdev,

请尝试使用GAPM_SCAN_PASSIVE而不是GAPM_SCAN_ACTIVE。在被动扫描配置中,中心只接收发布数据,而不发送扫描请求(SCAN_REQ)来接收外设的扫描响应(SCAN_RESP)。关于超时,您应该设置第二个计时器来停止扫描过程。然后,您应该添加另一个回调。app_on_scaning_completed = scaning_completed。在scananning_completed()中,你应该将设备重新配置为外设并重新启动广告。

谢谢,PM_Dialog

ltdev
离线
最后看到:1个月4个星期前
加入: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;//发送消息}//扫描启动函数static 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。代码= 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秒后但不打印scan stop printf和不运行扫描完成回调。只需在3秒后停止应用

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
嗨btdev,

嗨btdev,

您提到,一旦扫描过程完成,就不会触发回调函数。你是否在user_callback_config.h文件中user_app_callbacks结构的.app_on_scanning_completed项中注册了你的回调函数?扫描停止后,代码去了哪里?

谢谢,PM_Dialog