BLE扫描存在一些问题

12个职位/ 0个新职位
最后发表
2455321262
离线
最后看到:2年7个月前
加入:2017-01-22 06:43
BLE扫描存在一些问题

我将设备角色设置为中心,我使用以下功能
静态孔隙user_scan_start(空白)

struct gapm_start_scan_cmd* cmd = KE_MSG_ALLOC(gapm_start_scan_cmd,
TASK_GAPM TASK_APP,
gapm_start_scan_cmd);

cmd - > op。代码= user_scan_conf.code;
cmd - > op。addr_src = user_scan_conf.addr_src;
cmd - >间隔= user_scan_conf.interval;
cmd窗口- > = user_scan_conf.window;
cmd - >模式= user_scan_conf.mode;
cmd - > filt_policy = user_scan_conf.filt_policy;
cmd - > filter_duplic = user_scan_conf.filter_duplic;

//发送消息
ke_msg_send (cmd);

//我们现在是可连接的
ke_state_set (TASK_APP APP_CONNECTABLE);

使设备开始扫描。但是,不能对app_on_scaning_completed函数执行。(我指的是dsp项目)
我错过了什么吗?我没有找到ble_central的项目?你能告诉我在哪里可以下载吗?
我想让你告诉我如何配置ble启动扫描?我认为在内核任务上有一些错误或遗漏。
谢谢提前

设备:
MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
你好2455321262,

你好2455321262,

app_on_scanning_completed回调函数将在设备通过扫描操作超时(大约8秒)或取消操作而停止扫描过程时执行。所以如果你不开始扫描回调将永远不会执行,因此你不会得到你的函数执行。在设备配置完成后(在设备配置完成后,.app_on_set_dev_config_complete回调将发生),您应该在这里开始扫描操作。另外,要想了解一个中心的示例,您可能需要查看HOST项目中的DSPS参考设计。您可以在支持门户网站的参考设计部分找到DSPS参考设计。

由于MT_dialog

2455321262
离线
最后看到:2年7个月前
加入:2017-01-22 06:43
嗨MT_dialog,

嗨MT_dialog,
谢谢你的建议,我很确定我调用函数开始扫描在函数。app_on_set_dev_config_complete回调。但是我的设备无法实现。app_on_set_dev_config_complete功能。我发现我的设备能够扫描到周围的蓝牙信号,我不知道为什么设备没有扫描超时,超时时间是固定的8秒?如果不是8秒,我可以在哪里配置它?
我希望你能尽快帮助我,提前感谢。

chris0409
离线
最后看到:3年10个月前
加入:2017-01-11 05:59
你好,2455321262

你好,2455321262
您可以启动一个计时器来取消扫描进程,这样您的程序就可以执行扫描完成回调。
您可以像这样取消当前扫描。
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;/ /设置GAPM_SCAN_PASSIVE
ke_msg_send(cmd);//发送消息

2455321262
离线
最后看到:2年7个月前
加入:2017-01-22 06:43
嗨,chrise0409

嗨,chrise0409
我认为这是解决我的问题的一个好主意,谢谢你的建议。但我还是想知道如何配置自动扫描超时?我想这对我没有害处。

MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨,杰瑞,

嗨,杰瑞,

扫描程序扫描大约8秒默认情况下,为了改变这种情况,没有选择的扫描功能,当你扫描GAP_GEN_DISCOVERY或GAP_LIM_DISCOVERY这一次了,如果你不希望这一次你可以扫描GAP_OBSERVER_MODE(你可以找到更多的信息在这个RW-BLE-GAP-IS)。我不明白的是确切的问题,你的设备在开始扫描,你没有看到扫描功能执行时超时发生?如果您的设备扫描,这意味着设备在某个地方执行扫描过程(我假设这发生在app_on_set_dev_config中)。DSPS在user_on_set_dev_config_complete(。App_on_set_dev_config_complete回调),当超时发生(超时没有取消),.app_on_scanning_completed被触发。检查您在custom_on_scanning_completed()中使用的回调函数是否检查扫描的状态是否只有GAP_ERR_CANCELED而没有超时(GAP_ERR_TIMEOUT)。如果为了实现项目而使用的项目调用了回调app_on_scanning_completed(),那么还要检查app_task.c中的gapm_cmp_evt_handler()。

案例GAPM_SCAN_ACTIVE:
案例GAPM_SCAN_PASSIVE:

EXECUTE_CALLBACK_PARAM (app_on_scanning_completed param - >状态);

打破;

由于MT_dialog

2455321262
离线
最后看到:2年7个月前
加入:2017-01-22 06:43
嗨,MT_dialog,

嗨,MT_dialog,

非常感谢你的建议,我已经逐一告诉你哪里做检查了,现在我的扫描已经能够运行成功,真的非常感谢你

谢谢你杰里

MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨,杰瑞,

嗨,杰瑞,

我不确定我理解的问题,当你不处理app_on_scanning_completed(你提供NULL在你的回调)到底发生了什么?如果你不完成扫描,你的设备将什么都不做就进入睡眠状态。我不明白Jlink和你不处理扫描完成这件事有什么关系。

由于MT_dialog

2455321262
离线
最后看到:2年7个月前
加入:2017-01-22 06:43
嗨,MT_dialog,

嗨,MT_dialog,
对于我对我的问题的错误陈述,我感到很抱歉。
我发现我的J-LINK在睡眠模式下醒来后不能正常工作。
我在调试模式下,一个人的前辈说DA14580不能在调试模式和睡眠模式,我想我已经进入了睡眠模式成功,但是arch_resume_from_sleep的实现函数之后,我的J-LINK不会工作,似乎退出调试模式?

我发现函数如下:

空白BLE_SLP_Handler(空白)

syscntl_use_highest_amba_clocks ();

TOGGLE_GPIO13_SHORT

power_up ();//启动BLE核心

wakeup_lp_comp = 0;//为下一次清除标志

SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);

SetBits16 (GP_CONTROL_REG BLE_WAKEUP_REQ 0);

...................

我可以注释掉SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0)的代码吗?或者修改为SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 1)?
如果我想同时进入调试和睡眠模式,我应该怎么做?

谢谢你杰里

MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨,杰瑞,

嗨,杰瑞,

在旧的SDK中,你不能同时处于睡眠模式和调试,这个功能是在SDK5.0.4中添加的,所以直到5.0.3之前,你都不能在睡眠模式下使用keil进行调试。如果您正在使用SDK是5.0.3你已经删除了代码停止的弗兰克-威廉姆斯check_sys_start_up_period睡觉(),防止设备在调试器启用就可以删除SLP的禁用调试器处理程序(删除SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);)你应该能够做你想做的事。你之所以会有这样的经历,是因为当你处于调试模式时,ARM的调试器模块被禁用了。

由于MT_dialog

wisilica
离线
最后看到:10个月,4个星期前
加入:2015-03-17 08:16
你好,

你好,

我想问一些与这个帖子有关的问题。
在一般发现/有限发现模式下扫描时,是否连续接收到发布报告也会超时?还是只在扫描模式下没有收到BLE包?

谢谢
wisilica

MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

如果您正在执行的扫描是GAP_GEN_DISCOVERY或GAP_LIM_DISCOVERY,无论发布报告如何,操作都会自动超时,所以即使设备没有收到任何报告,扫描过程将在大约8秒后超时。

由于MT_dialog