使用DSPS项目进行扫描

4个帖子/ 0新
最后一篇
乔纳斯弗雷斯瓦斯
离线
最后一次露面:3年2个月前
加入:2014-11-14 12:23
使用DSPS项目进行扫描

你好,

我正在使用DSP的项目工作,我正在尝试在中央模式下扫描,但我只能看到BL设备(DA14580)。我无法看到其他制造商的设备,如Microchip RN4020。

扫描配置如下:

void app_scanning(无效)
{
ke_state_set(task_app,app_connectable);

//创建一个核心消息以开始扫描
struct gapm_start_scan_cmd * msg =(struct gapm_start_scan_cmd *)ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
//最大对等连接
msg-> mode = gap_observer_mode;
msg-> op.code = gapm_scan_passive;
msg-> op.addr_src = gapm_public_addr;
msg-> filt_policy = scan_allow_adv_all;
msg-> filter_duplic = scan_filt_duplic_dis;
msg-> interval = app_scan_interval;
msg-> window = app_scan_window;

//发送消息
KE_MSG_SEND(MSG);
}

msgid,lapm_adv_report_ind_handler(ke_msg_id_t const,
const struct gapm_adv_report_ind * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
char temp [150];
INT8_T RSSI;

if(!memcmp(&param-> report.data [3],app_dflt_addata,app_dflt_add_data_len)))
{
//将找到的bd_addr保存到全局变量
RSSI =(int)(((float)param->报告.rssi * 0.474)-122);
memcpy(&connect_bdaddr,param-> eport.addr.addr,sizeof(struct bd_addr));
Sprintf(Temp,“Mac:%0.2x:%0.2x:%0.2x:%0.2x:%0.2x:%0.2x || RSSI:%d \ r \ n”,param-> eport.addr.addr[5],param-> eport.addr.addr [4],param-> eport.addr.addr [3],param-> report.addr.addr [2],param-> report.addr.addr [1],param-> eport.addr.addr [0],RSSI);
sps_uart_sps_write((uint8_t *)temp,strlen(temp));

// app_cancel_scanning();
}
return(ke_msg_consumed);
}

谢谢,

设备:
乔纳斯弗雷斯瓦斯
离线
最后一次露面:3年2个月前
加入:2014-11-14 12:23
任何建议,对你有什么建议

任何建议,对于你可能会发生的事情?

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨Jonas Fleitas,

嗨Jonas Fleitas,

您是否能够在if()的休息点来捕捉广告指示?你确定另一个设备是广告吗?

我可以看到您正在检查用于特定广告数据模式的广告字符串的设备,您确定其他设备是否广告与对话框芯片相同的广告字符串?

谢谢mt_dialog.

MSUN
离线
最后一次露面:8个月3周前
加入:2015-11-30 22:40
默认情况下,DSP

默认情况下,DSPS应用程序只会报告与DSP应用程序使用的UUID匹配的设备。

如果要查看其他设备,则需要注释出解除其他非DPSP设备的代码。

查看user_on_adv_report_ind()

if(!memcmp(&param-> report.data [3],user_advertise_data,user_advertise_data_len)))
上面的IF语句只能寻找DSP uuid。如果您愿意,您可以修改此区域以查看所有UUID。

谢谢,马丁