BLE设备在不扫描时是否读取广告包? (自动连接)

Does a BLE device reads advertising packets when not scanning? (autoconnect)

我在一些地方看到,广告数据包被发送到距离范围内的每个人。但是,其他设备应该扫描接收它们还是无论如何都会接收?

问题: 假设我要在 5 或 6 个 BLE 设备之间建立微微网。在某些时候,我在奴隶和一个主人之间有一些联系。然后,如果其中一台设备 removed/shut 关闭几天,我希望它在打开后立即重新连接回网络。

我了解了自动连接功能,但似乎当您将其设置为真时,设备会创建后台扫描,实际上(频率)比手动扫描慢。这让我得出结论,要使自动连接正常工作,再次打开的设备需要再次做广告,对吗?因此,如果自动连接真的在后台运行缓慢扫描,那么在我看来,除非您以某种方式进行扫描,否则您永远无法立即收到 adv 数据包。这有意义吗?

如果是这样,有什么解决办法吗?我的意思是,立即检测返回范围内的设备?

什么都不是 "Instant"。您谈论的是具有延迟、超时、重传、干扰等的无线电协议。延迟总是存在的。重要的是你认为你的申请可以接受什么。

无线电收发器一次在一个给定频道上接收、休眠或传输。发送和接收意味着功耗。

当 Central 空闲时(根本不处理任何连接),它所要做的就是扫描。它可以全职完成(即使规范说这应该是占空比)。您可以期望在第一次传输时实际收到来自对等 Peripheral 的广告数据包。

当一个 Central 与多个外围设备保持连接时,其收发器时间由所有连接保持共享。后台扫描被认为是低优先级的,并且会占用一些剩余的收发器时间。然后一个广告外围设备可以在中央不监听时发送它的 ADV 数据包。

统计魔术来了:

规范说两个广告事件之间的间隔必须用(伪)随机延迟来增加。这确保中央(扫描器)和外围(广告商)将设法在某个时间点看到对方。如果没有这种随机延迟,他们的时间分配可能会变得和谐,但会出现异相,而且他们可能永远见不到对方。

根据中央和外围使用的参数(advInterval、advDelay、scanWindow、scanInterval)和无线电 link 质量,您可以计算在给定时间后到达节点的概率。这留给 reader... :)

作为练习

最后,你应该问自己的问题是 "is it acceptable my Peripheral is reconnected to my Central after 300 ms in 95% of cases" ?