嗨,所有。
在dsps项目“DA14580_DSPS_3.150.2”中,主机发送扫描命令,但不扫描任何外部设备。
但在手机应用程序可以扫描外围设备。
为什么?
请帮助我。
代码不是修改,而是通过uart增加了一些提示。地点如下:
空白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);
//最大对等连接
味精- >模式= GAP_GEN_DISCOVERY;
味精- > op。代码= GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
味精- >间隔= APP_SCAN_INTERVAL;
味精- >窗口= APP_SCAN_WINDOW;
uart_write(“\ \ nS7 \ r \ n”,6日,NULL);/ / / / / /添加我
//发送消息
ke_msg_send(味精);
}
在gapm_cmp_evt_handler函数中添加提示:
案例GAPM_SCAN_PASSIVE:
案例GAPM_SCAN_ACTIVE:
{
if (param->status == gap_err_cancelled)
{
uart_write(“\ \ nS6 \ r \ n”,6日,NULL);/ /添加我
app_connect ();
}
其他的
{
uart_write(“\ \ nS7 \ r \ n”,6日,NULL);/ /添加我
app_scanning ();
}
}
打破;
在app_set_dev_config_complete_func功能:
空白app_set_dev_config_complete_func(空白)
{
//我们现在处于初始化状态
ke_state_set (TASK_APP APP_DB_INIT);
//在数据库中添加第一个所需的服务
如果(app_db_init ())
{
//当数据库已经创建时,开始发布
uart_write(“\ \ nS1 \ r \ n”,6日,NULL);/ /添加我
app_scanning ();
}
}
在gapm_adv_report_ind_handler函数中:
Int gapm_adv_report_ind_handler(ke_msg_id_t const msgstr,
构造函数gapm_adv_report_ind *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
/*
如果(! memcmp (param - >报告。数据[3]、APP_DFLT_ADV_DATA APP_DFLT_ADV_DATA_LEN))
{
//将找到的bd_addr保存到全局变量
memcpy (&connect_bdaddr param - > report.adv_addr。addr, sizeof (struct bd_addr));
uart_write(“\ \ nS5 \ r \ n”,6日,NULL);/ /添加我
app_cancel_scanning ();
}
其他的
* /
uart_write(“\ \ nS6 \ r \ n”,6日,NULL);/ /添加我
返回(KE_MSG_CONSUMED);
}
我在da14580_config.h中关闭睡眠模式。
不会改变任何事情。
结果是:
S1
S7
S7
S7
S7
每一个S7提示大约有10秒的间隔。
我使用“DA14580_DSPS_3.150.2”,sps_device和sps_host。
但不要进入gapm_adv_report_ind_handler函数。
手机应用程序可以扫描14580的外围设备。
为什么不进入gapm_adv_report_ind_handler函数?
等待你的帮助。
你好,
你对外围设备做了什么改动吗?在没有任何修改的情况下,代码如何为您工作?
你好,
因为没有32.768K,所以
外围设备的变化只在这个地方:
#定义CFG_LP_CLK 0x00到0xAA;
而中央也改变了这个地方:
#定义CFG_LP_CLK 0x00到0xAA;
没有变化
其他地方都不再改变了。
YuanhangWu
嗨,所有。
我使用“DA14580_DSPS_3.150.2”sps_host。
当GAPM_START_SCAN_CMD发送,
但不要进入gapm_adv_report_ind_handler函数。
手机应用程序可以扫描14580的外围设备。
为什么?
如何使用sps_host项目获取外围设备广告数据?
在哪里获得广告数据存储?
谢谢。
或者需要等很长时间才能扫描出广告数据,
如何更快地扫描出广告数据?
谢谢。
我不知道怎么帮你。我已经让当地代表直接联系你了。
我也有类似的问题。当我使用PASSIVE_SCAN没有任何广告数据。你能帮帮我吗?
我的代码中有一个bug,所以问题已经解决了。谢谢。
嗨,summer20100514,
你的问题解决了。
所以,我需要你的帮助。
DA14580_DSPS_3.150.2中使用的主机角色,
如何使扫描结果更快更有效?
谢谢。
我没有使用DA14580_DSPS_3.150.2,而是使用DA14580_SDK_3.0.4.0\host_apps\windows\proximity\monitor。当然,我修改了PC上的项目,以在STM32作为一个外部主机和DA14580上运行ble堆栈,这是DA14580_SDK_3.0.4.0\dk_apps\keil_projects\proximity\monitor_fe_usb。由于一些商业上的原因,我不能把这个项目提供给你,但是我认为你可以通过这些项目来获得灵感,事实上,这是很容易的。
嗨,MHv_dialog
我测试了多次使用主机扫描广告数据,只有一次扫描出广告数据在gapm_adv_report_ind_handler函数。
所以我想更快更有效地得到扫描结果。
那怎么办呢?
谢谢。
嗨,MHv_dialog,
我的意思是主机设备扫描第一次或第二次,然后扫描出外围的广告数据。
是的,用较短的数字扫描时间获得扫描结果。
怎么做才能做到呢?
谢谢。
嗨,MHv_dialog,
我只是在KEIL u4中调试。
当我这样设置时:
///广告最小间隔时间
#定义APP_ADV_INT_MIN 0 x30
///广告最大间隔时间
#定义APP_ADV_INT_MAX 0 x30
我点击dubug—运行—(已扫描出外围广告数据)—dubug。
当我这样设置时:
///广告最小间隔时间
#定义xa0 APP_ADV_INT_MIN 0
///广告最大间隔时间
#定义xa0 APP_ADV_INT_MAX 0
我点击dubug——运行——dubug。
我插入提示告诉我,很多时间过去了,还不能扫描出外围的广告数据。
Wyh吗?
对于低消耗,那么广告间隔应该设定多长时间为最佳?
谢谢。
嗨,MHv_dialog,
我明白了。
结果是:
周边:
0.5秒广告间隙。
中心:
主机每7.5秒扫描一次,但平均消耗3.6MA。
扫描的速度不是很快,但是消耗已经很高了。
如何使扫描结果更快更有效?
或者如何获得最佳的平衡。
你如何解决这个问题?我现在也有同样的问题,谢谢。
"not go in to gapm_adv_report_ind_handler"