观察者只扫描一个通道

9个帖子/ 0新
最后一篇
Pdonchev.
离线
最后一次露面:3年3天前
加入:2015年6月21日14:37
观察者只扫描一个通道

您好,我有两个设备。一个播音员和一名观察员。
问题是观察者似乎只扫描一个通道(37)。
如果我将广播公司设置为38或/和39,Observer不会收到任何报告。
同时,我的Android表从广播公司接收报告。
开始扫描用下面的代码:

void user_scan_start(void)
{
结构gapm_start_scan_cmd * CMD = KE_MSG_ALLOC(GAPM_START_SCAN_CMD,
TASK_GAPM,TASK_APP,
gapm_start_scan_cmd);

CMD-> op.code = GAPM_SCAN_PASSIVE;
cmd-> op.addr_src = gapm_public_addr;
CMD->间隔= MS_TO_BLESLOTS(100);
cmd-> window = ms_to_bleslots(100);
CMD->模式= GAP_OBSERVER_MODE;
CMD-> filt_policy = SCAN_ALLOW_ADV_WLST,
CMD-> filter_duplic = SCAN_FILT_DUPLIC_DIS;

//发送消息
ke_msg_send(cmd);
}

在通道37上进行广告时,会收到报告。
两种设备都基于Pan1740模块。
有什么问题?

编辑:忘了提到:SDK 5.0.3

编辑2:
我可以看到观察者清楚地花时间在扫描其他渠道,但没有检测到报告。在相同的
时间Android平板电脑检测到所有的报告(无论哪个频道)。

设备:
mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨pdonchev,

嗨pdonchev,

我没有看到这样的东西,我能够通过使用扫描代码和Gap_observer_sca角色中设置的设备扫描广告数据包(在通道38中,在我的设置上使用SDK的示例测试了我的安装程序)和使用白色列表和平移模块。您确定这是通过更改频道发生的问题吗?如果您使用的是定制板,您是否能够使用DEV套件来检查是否发生了?除了在GIVEM时间的38和39频道上,除了在38和39频道的反馈外,我不会看到这种情况发生的任何可能性。你有没有尝试过不使用白名单过滤器?

谢谢mt_dialog.

Pdonchev.
离线
最后一次露面:3年3天前
加入:2015年6月21日14:37
嗨mt_dialog,

嗨mt_dialog,
感谢你的回复。
如果没有白名单的结果是一样的。不幸的是,我没有开发工具包就可以了测试。尝试了其他主板 - 同样的结果。切换到SDK 5.0.4。- 同样的结果。
我现在观察者扫描期间设定为1秒和广播上做广告的所有信道(信道掩码为0x7)与间隔100毫秒。我看到(观察者),随后是两秒的停顿(其中必须扫描信道38,39)单次活动(约10份报告)。
我不知道是否重要,但我有自定义Gapm_cmp_evt处理程序(在user_catch_rest_hndl中),以进行以下操作(GapM_RESET,GAPM_SET_DEV_CONFIG):

..............................................................
案例GAPM_RESET:
if(msg_param-> status!= gap_err_no_error)
{
ASSERT_ERR(0);// 意外的错误
}
别的
{
..................................
//设置设备配置
app_gapm_configure_op(GAP_OBSERVER_SCA,(uint8_t *)user_gapm_conf.irk,user_gapm_conf.appearance,
user_gapm_conf.appearance_write_perm,
user_gapm_conf.name_write_perm,
user_gapm_conf.max_mtu,user_gapm_conf.con_intv_min,user_gapm_conf.con_intv_max,
user_gapm_conf.con_latency,user_gapm_conf.superv_to,user_gapm_conf.flags);
..................................................
}
休息;
CASE GAPM_SET_DEV_CONFIG:
user_add_white_list();
休息;
案例GAPM_ADD_DEV_IN_WLIST:
if(msg_param-> status!= gap_err_no_error)
{
ASSERT_ERR(0);// 意外的错误
}
别的
{
user_scan_start();
}
休息;

原处理程序在评论gapm_cmp_evt_handler。

你可以给我你测试的例子吗?

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨pdonchev,

嗨pdonchev,

对不起,我不明白你的意思是什么“我看到(观察者),随后是两秒的停顿(其中必须扫描信道38,39)单次活动(约10份报告)。“由于观察者扫描一秒钟,而广播员的间隔是100ms 10报告是你应该得到的。我也不明白2秒暂停,在这两秒,它应该扫描38和39频道。观察者会根据您设置的间隔顺序扫描所有通道,如果例如,使用100ms间隔扫描1秒,设备将扫描100ms通道37,然后将切换到通道38另外100ms,然后将另一个100ms切换到通道38然后将重新开始。测试FW通过邮件发送,中央观察者是中央设备,BLE_APP_PROFILE是广播公司,中央只打印白色列表中找到的设备。

谢谢mt_dialog.

Pdonchev.
离线
最后一次露面:3年3天前
加入:2015年6月21日14:37
嗨mt_dialog,

嗨mt_dialog,
100毫秒是做广告间隔广播的。观察者扫描设置为1秒的时间间隔(1秒窗口),因此对于第一个其次,它接收在通道37中的报告,但下一个两秒(其中它必须监听信道38和39)有没有接收到报告。在同一时间,我看到这两秒钟内,我的Android平板电脑接收到的报告。
如果我设置广播通告仅在通道38和39(信道掩码为0x6),观察者不能检测任何报告。我会测试你发给我的东西,将报告。

编辑:
OK,测试你的例子,结果是一样的。他们的工作只能在通道37.也许我的空气环境是如此糟糕,唯一的通道37是可用的?
但我的Android平板电脑上接收频道38和39发出的报告。

编辑2:
你测试,如果两台设备都是PAN1740?

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨pdonchev,

嗨pdonchev,

扫描和扫描窗口的间隔取决于当扫描过程开始时向堆栈发送的命令(MS_TO_BLE_SLOTS(100)(从您提供的扫描功能)意味着100ms,而不是1秒)。此外,由于您为窗口提供了相同的值,并且窗口将略小于100ms的间隔。我可以考虑扫描信道37的唯一方法是通过使用具有与扫描的间隔相同的时间长度的内核定时器,开始扫描并设置计时器,因此当通道37的扫描周期结束定时器时还将发生回调并取消扫描到下一个通道(如果您正在进行类似的东西,我提到的原因)。是的,我测试了PAN模块的两个设备都改变了1秒内的间隔和窗口,我能够通过时间戳将广告指令的38和39通道记录广告指示指示我在适当的时间内获得所有广告取决于我扫描的频道(除了在频道37上扫描时,每秒我有一个广告指示)所以我想这必须用你的环境和你正在使用的平板电脑的接收者或你扫描的方式打印广告迹象。

谢谢mt_dialog.

Pdonchev.
离线
最后一次露面:3年3天前
加入:2015年6月21日14:37
嗨mt_dialog,

嗨mt_dialog,
我不是专门用于我发布的代码。我只是说,如果我将间隔/窗口设置为ms_to_ble_slots(1000),我看到的是一个第二个活动,两秒钟暂停。
扫描未取消/重新开始,但连续运行。
所以观察者实际上扫描频道38和39,但没有收到任何东西。
反正(观察者)您所提供的代码也不会与渠道在我的环境38和/或39的工作,但同时我的老Android平板电脑(的Nexus 7,2012)收取通道38和39的所有报告。
因此,不知何故,我的Pan1740观察者无法在我的环境中在频道38和39上工作,因为其他设备不面对这个问题。
我将使用一些较旧的PAN1740设备进行一次测试(不幸的是,我只有Pan1740设备),并将返回给您。

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨pdonchev,

嗨pdonchev,

我很抱歉,但我不能复制,你在平底锅,我已经得到了,即使遇到什么,尝试检查与其它设备是万一有somekind的在当前模块故障的好主意。我已附加了终端的输出与以1秒内扫描期间,你可以看到扫描仪能够广告跟踪数据只到两个信道(每打印“连接与‘bd_address’”是一个广告的指示)。在印刷(秒)的时间戳指示设备越来越两个subseququent频道广告和不得到第三通道的任何(广播设置在通道38和39做广告,检查attachement更多信息)。这应该是源代码,我已经发送的输出,所以如果你有你的定制电路板尝试通过改变UART端口,并通过将您的蓝牙地址在白名单中运行示例打印功能,只需更改ADDR_TARGET定义和使用可时间戳输出和检查,如果你可以得到相同模式的终端。

谢谢mt_dialog.

Pdonchev.
离线
最后一次露面:3年3天前
加入:2015年6月21日14:37
嗨mt_dialog,

嗨mt_dialog,
我很遗憾浪费你的时间。问题已经解决了。
这是在原型板上硬件错误。
在其中一个数字输入上通过高值电阻赋予更高的电压。
这不是由于该输入,它从损害保存在设备内部保护二极管检测
但它无法在渠道38,39上运作。
现在董事会收到所有通道的报告。
非常感谢您的关注和帮助。
问候,
Pdonchev.