大家好。
在DSPS项目“DA14580_DSPS_3.150.2”中,主机是发送扫描CMD但不扫描任何终点设备。
但手机应用程序可以扫描周围的设备。
为什么?
请帮帮我。
代码没有更改,但通过uart添加了一些提示。位置如下:
无效应用程序扫描(void)
{
ke\ u state\ u set(任务\应用程序,应用程序\可连接);
//创建内核消息以开始扫描
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\u GEN\u发现;
msg->op.code=GAPM\u SCAN\u PASSIVE;
msg->op.addr\u src=GAPM\u PUBLIC\u addr;
msg-> filter_duplic = scan_filt_duplic_en;
msg-> interval = app_scan_interval;
msg->window=APP\u SCAN\u窗口;
UART_WRITE(“\ r \ ns7 \ r \ n”,6,null);//////添加我
//发送消息
发送消息(msg);
}
在gapm\u cmp\u evt\u处理程序函数中添加提示:
案例GAPM_SCAN_PASSIVE:
案例Gapm_scan_active:
{
if(param->status==GAP\u ERR\u CANCELED)
{
uart\u write(“\r\nS6\r\n”,6,NULL)//由我添加
app_connect();
}
其他的
{
uart\u write(“\r\nS7\r\n”,6,NULL)//由我添加
应用程序扫描();
}
}
中断;
在应用程序\设置\开发\配置\完成\功能:
void app_set_dev_config_complete_func(void)
{
//我们现在处于初始化状态
ke\ u state\ u set(任务\应用程序、应用程序\数据库\初始化);
//在数据库中添加第一个必需的服务
if(app_db_init()))
{
//当数据库已经建立好,就开始做广告
UART_WRITE(“\ r \ ns1 \ r \ n”,6,null);//添加我
应用程序扫描();
}
}
在gapm\u adv\u report\u ind\u handler函数中:
int gapm\u adv\u report\u ind\u handler(ke\u msg\u id\u t const msgid,
const struct gapm_adv_report_ind * param,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
/ *
如果(!memcmp(¶m->report.data[3],应用程序\u DFLT\u ADV\u data,应用程序\u DFLT\u ADV\u data\u LEN))
{
//将找到的bd_addr保存到全局变量
memcpy(&connect_bdaddr,param->report.adv_addr.addr,sizeof(struct bd_addr));
uart\u write(“\r\nS5\r\n”,6,NULL)//由我添加
app_cancel_scanning();
}
其他的
*/
uart\u write(“\r\nS6\r\n”,6,NULL)//由我添加
返回(已消耗的消息);
}
我在da14580\u config.h中关闭睡眠模式。
什么都没变。
结果是:
S1级
S7级
S7级
S7级
S7级
每个S7尖端都是大约10秒的间隙。
我使用了“da14580_dsps_3.150.2”,sps_device和sps_host。
但不进入gapm\u adv\u report\u ind\u处理程序函数。
手机应用程序可以扫描14580的外围设备。
为什么不进入gapm\u adv\u report\u ind\u handler函数?
等待你的帮助。
你好,
你有没有改变周边的东西?代码如何在没有任何修改的情况下为您工作?
你好,
因为没有32.768K,所以
外围设备仅在此处更改:
#define cfg_lp_clk 0x00到0xaa;
中央也改变了这个地方:
#define cfg_lp_clk 0x00到0xaa;
没有变化
其他地方再也没有变化了。
袁汉武
大家好。
我使用“DA14580\U DSPS\U 3.150.2”sps\U主机。
当GAPM启动扫描命令发送时,
但不进入gapm\u adv\u report\u ind\u处理程序函数。
手机应用程序可以扫描14580的外围设备。
为什么?
如何利用sps\u主机项目获取外围设备广告数据?
在某个地方获取广告数据存储?
谢谢。
或者需要等待很长时间扫描广告数据,
如何更快地扫描出广告数据?
谢谢。
我不确定如何帮助你。我要求一位当地代表直接联系到您。
我有类似的问题。当我使用被动扫描时,没有任何adv数据。你能帮帮我吗?
我的代码中有一个错误,所以问题得到了解决。谢谢。
嗨,夏季,2014年,
你的问题已经解决了。
所以,我需要你的帮助。
在DA14580\U DSP\U 3.150.2中使用主机角色,
如何使扫描结果更快更有效?
谢谢 。
我没有使用DA14580\u DSPS\u 3.150.2,而是使用DA14580\u SDK\u 3.0.4.0\host\u apps\windows\proximity\monitor。当然,我修改了PC上的项目,将STM32作为一个外部主机,DA14580运行ble堆栈,即DA14580\U SDK\U 3.0.4.0\dk\u apps\keil\u projects\proximity\monitor\u fe\u usb。由于一些商业原因,我不能提供给你的项目,但我认为你可以研究这些项目获得灵感,事实上,这是很容易的。
嗨,MHv\U对话
我测试了很多次使用主机扫描广告数据,只有一次扫描出广告数据在gapm\u adv\u report\u ind\u处理函数。
所以我想得到更快更有效的扫描结果。
那怎么办?
谢谢。
嗨,MHv\U对话,
我的意思是,主机设备扫描第一次或第二次,然后扫描百周的广告数据。
是的,用很短的数字扫描时间得到扫描结果。
怎么办?
谢谢。
嗨,MHv\U对话,
我只是在Keil U4中调试。
当我这样的时候:
///广告最小间隔
#define app_adv_int_min 0x30.
///广告最大间隔
#define app_adv_int_max 0x30.
我点击dubug--run-(已经扫描出了周围的广告数据)--dubug。
当我这样的时候:
///广告最小间隔
#定义APP\u ADV\u INT\u MIN 0xA0
///广告最大间隔
#define app_adv_int_max 0xa0.
我点击dubug——运行——dubug。
我插入提示告诉我,很多时间过去了,但也无法扫描出周围的广告数据。
怀用?
对于低消费,那么广告间隔应该设置多长时间才是最好的呢?
谢谢。
嗨,MHv\U对话,
我已经得到了。
结果是:
外围设备:
0.5秒间隔。
中央:
主机每7.5秒扫描一次,但平均消耗3.6MA。
扫描速度不是很快,但是消耗已经很高了。
如何使扫描结果更快更有效?
或者如何获得最佳平衡。
你怎么解决这个问题?我现在也有同样的问题了,谢谢。
“不进入gapm adv report ind处理程序”