大家好。
在需求方的项目“DA14580_DSPS_3.150.2”,主持人s send scan cmd but not scan any perpheral device.
但手机应用程序可以扫描周围的设备。
为什么?
请帮帮我。
代码没有更改,但通过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); //////add by me
// Send the message
发送消息(msg);
}
在gapm\u cmp\u evt\u处理程序函数中添加提示:
case GAPM_SCAN_PASSIVE:
case 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)
{
// We are now in Initialization State
ke\ u state\ u set(任务\应用程序、应用程序\数据库\初始化);
//在数据库中添加第一个必需的服务
if (app_db_init())
{
//当数据库已经建立好,就开始做广告
uart_write("\r\nS1\r\n", 6, NULL); //add by me
应用程序扫描();
}
}
在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))
{
//Save found bd_addr to global variable
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级
every S7 tip is about 10 second gap.
I used "DA14580_DSPS_3.150.2", The sps_device and 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 to 0xAA;
中央也改变了这个地方:
#define CFG_LP_CLK 0x00 to 0xAA;
没有变化
其他地方再也没有变化了。
YuanhangWu
大家好。
我使用“DA14580\U DSPS\U 3.150.2”sps\U主机。
当GAPM启动扫描命令发送时,
但不进入gapm\u adv\u report\u ind\u处理程序函数。
手机应用程序可以扫描14580的外围设备。
为什么?
如何利用sps\u主机项目获取外围设备广告数据?
在某个地方获取广告数据存储?
thanks.
Or need to wait for a long time to scan out the advertising data,
如何更快地扫描出广告数据?
thanks.
我不知道该怎么帮你. I have asked a local representative to reach out to you directly.
我有类似的问题。当我使用被动扫描时,没有任何adv数据。你能帮帮我吗?
我的代码中有个bug,所以the problem is resolved. Thanks.
你好,summer20100514,
You problem have resolved.
所以,我需要你的帮助。
在DA14580\U DSP\U 3.150.2中使用主机角色,
如何使扫描结果更快更有效?
thanks .
我没有使用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处理函数。
所以我想得到更快更有效的扫描结果。
那怎么办?
thanks.
嗨,MHv\U对话,
I mean is that host device scan first time or second time,then scan out the perpheral's advertising data.
是的,用很短的数字扫描时间得到扫描结果。
how to do to make it?
thanks.
嗨,MHv\U对话,
I just debug in KEIL u4.
When I set like this:
///广告最小间隔
#define APP_ADV_INT_MIN 0x30
///广告最大间隔
#define APP_ADV_INT_MAX 0x30
我点击dubug--run-(已经扫描出了周围的广告数据)--dubug。
When I set like this:
///广告最小间隔
#定义APP\u ADV\u INT\u MIN 0xA0
///广告最大间隔
#define APP_ADV_INT_MAX 0xA0
我点击dubug——运行——dubug。
我插入提示告诉我,很多时间过去了,但也无法扫描出周围的广告数据。
喂?
对于低消费,那么广告间隔应该设置多长时间才是最好的呢?
谢谢。
嗨,MHv\U对话,
I have get it.
结果是:
外围设备:
0.5秒间隔。
中央:
主机每7.5秒扫描一次,但平均消耗3.6MA。
扫描速度不是很快,但是消耗已经很高了。
如何使扫描结果更快更有效?
Or how to get the best balance.
你怎么解决这个问题?我现在也有同样的问题了,谢谢。
“不进入gapm adv report ind处理程序”