跳转到主要内容

扫描错误

DA14580

4年前

扫描错误

发布的craftwizard0点 6回复
0的问题

嗨。
我在测试ble扫描仪。
我在一个新项目中实现了这个扫描仪。
扫描程序命令中出现错误。请参见下面的代码

空白app_start_scanning(空白)

ke_state_set (TASK_APP APP_CONNECTABLE);

arch_printf(“app_start_scanning \ r \ n”);
struct gapm_start_scan_cmd * msg = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
味精- >模式= GAP_OBSERVER_MODE;/ / GAP_GEN_DISCOVERY;
味精- > op。代码= GAPM_SCAN_ACTIVE;/ / GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
// msg->filt_policy = SCAN_ALLOW_ADV_ALL;/ / SCAN_ALLOW_ADV_WLST;/ / SCAN_ALLOW_ADV_ALL;
msg-> filter_duplic = scan_filt_duplic_en;
味精- >间隔= 10;
msg->窗口= 5;
ke_msg_send(味精);
返回;

下面的代码返回错误码。
Gapm_cmp_evt_handler -操作:16,状态:0x42
不支持GAPM_SCAN_PASSIVE。
Int gapm_cmp_evt_handler(ke_msg_id_t const msgid, struct gapm_cmp_evt const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id)

ARCH_PRINTF(“GAPM_CMP_EVT_HANDLER - 操作:%d,状态:0x%x \ r \ n”,param->操作,param->状态);
.......

这是一根完整的圆木。
Gapm_cmp_evt_handler -操作:1,状态:0x0
Gapm_cmp_evt_handler -操作:3,状态:0x0
app_set_dev_config_complete_func
app_start_scanning
Gapm_cmp_evt_handler -操作:16,状态:0x42
app_scanning_completed_func

我需要一个预定义的扫描仪来做吗?
租赁帮助我。

4年前

craftwizard 0点

它看起来像下面的代码被修改并扫描。

void app_configuration_func(ke_task_id_t const task_id,struct gapm_set_dev_config_cmd * cmd)

/ /操作选择
cmd->操作= gapm_set_dev_config;

/ /设备的作用
cmd - >角色= GAP_CENTRAL_MST;

//定义最大传输单元
cmd - > max_mtu = APP_CFG_MAX_MTU;

似乎正在扫描的设备只是一台电视机。
其他BLE设备似乎没有检测到它。
我无法检测到我的DA14580 BLE。
原因是什么?
如果您更改了app_start_scanning中的选项,它将不会被搜索。

4年前

MT_dialog -30点

嗨Craftwizard,

首先为了能够扫描设备需要配置作为一个中央或作为一个观察者,在你的设备配置作为外围或广播你不会可以扫描,因为那些不支持的操作的角色。

关于您只能跟踪电视的事实,您填写的选项发送扫描命令时可以通过检查RW-BLE-GAP检查这些配置是否有哪些配置-is.pdf(您可以在配置文件和API文档部分 - GAP接口规范中的“文档”选项卡下找到“支持门户”的文档)。另请注意,常规发现和有限的发现中的扫描命令只持续10秒后,设备将停止扫描,并且您必须重新发出扫描命令。还要确保您拥有的设备实际上是广告,您应该在.app_on_adv_report_ind回调中捕获广告设备。

由于MT_dialog

4年前

craftwizard 0点

嗨mt_dialog.

感谢您的回复。
要扫描所有设备,我必须更改哪些选项?
更改该选项不会搜索所有设备。

正如您在下面的代码中看到的那样,没有搜索完成。
味精- >模式= GAP_GEN_DISCOVERY;

即使你看了文件,也没有专门的扫描指南。

我按照下面的代码再次进行了测试。
一旦扫描,电视就会扫描,但在很长一段时间后,设备的其余部分将扫描。
如果您在智能手机上搜索BLE,它将立即搜索。
是什么原因?
空白app_start_scanning(空白)

ke_state_set (TASK_APP APP_CONNECTABLE);

arch_printf(“app_start_scanning \ r \ n”);
struct gapm_start_scan_cmd * msg = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
味精- >模式= GAP_OBSERVER_MODE;/ / GAP_OBSERVER_MODE;/ / GAP_GEN_DISCOVERY;
味精- > op。代码= GAPM_SCAN_PASSIVE;/ / GAPM_SCAN_ACTIVE;/ / GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
味精- > filt_policy = SCAN_ALLOW_ADV_ALL;/ / SCAN_ALLOW_ADV_WLST;/ / SCAN_ALLOW_ADV_ALL;
msg-> filter_duplic = scan_filt_duplic_en;// scan_filt_duplic_dis;// scan_filt_duplic_en;
味精- >间隔= 500;
味精- >窗口= 100;
ke_msg_send(味精);
返回;

请帮助我。

4年前

MT_dialog -30点

嗨craftwizard,

为了扫描所有类型的广告字符串你需要设置你的扫描模式GAP_OBSERVER_MODE,显示文档的扫描将返回任何类型的广告字符串的BLE设备广告目前和扫描过程永远不会超时,你只能通过使用GAPM_CANCEL_CMD停止它。GAP_GEN_MODE将返回仅在有限模式或通用模式下发布的设备。正如我所提到的,确保该设备确实是在做广告。没有特殊的指导如何操作扫描过程,只是什么每个配置的规范扫描命令,请看看dsp在主机端和检查user_scan_start()函数,你可以作为参考。

如果需要时间需要扫描的设备你可以尽量不要过滤重复的广告信息(如果你是打印数据太多,尽管这可能最终设备重置),你也可以试着减少扫描时间间隔的值和扫描窗口,你目前拥有的值是每312.5ms扫描62.5ms的每个频道,也许你使用的设备不经常宣传。另外,你看到的广告设备在其他手机扫描仪(android我假设)可能是因为这些设备缓存和android不会显示你在扫描实例发现的设备。

由于MT_dialog

4年前

craftwizard 0点

嗨mt_dialog.
感谢您的回复。

我再次尝试了测试。
似乎无法搜索,因为发送和接收设备的敏感性并不好。

是否有rssi值,意思是“100”是“-100dBm”?

4年前

MT_dialog -30点

嗨craftwizard,

一个值为-100dBm的RSSI在BLE中没有任何意义(这是一个每周的招待会),但我不确定我是否明白你的问题。你得到的100是多少?你有没有在FAQ中检查如何正确地转换dbm中的值,在https://support.dialog-semiconductor.com/guide/faq-da1458x-software-per..。检查“如何读取并将RSSI值转换为DBM”。

由于MT_dialog