使用蓝牙LE GATT配置文件可实现最大轮询频率?

Sor*_*ren 5 performance ios bluetooth-lowenergy

我想更深入地了解BLE和GATT.我感兴趣的是您在GATT配置文件中每秒可以达到的最大可读数量.

我之前知道有关此主题的一些帖子,例如: 蓝牙低功耗 - 反复更新特征值

但是,我试图解释这些结果,看看BLE规范.

连接事件和GATT之间有什么关系?每个ATT读/写是否需要新的连接事件?如果没有,是否可以说出每个连接事件可以进行多少次ATT读/写操作?

假设我想轮询BLE连接的光传感器以获得单字节值,那么我能达到的最大赫兹值是多少?是否最好将最小连接间隔设置为尽可能低?

我是否能够使用"GATT服务器通知获得更好的结果?在BLE规范(Core_v4.0)中它说"主服务器启动每个连接事件的开始".那么如何实现GATT服务器通知?我会认为将要求服务器启动连接事件.

最后,如果有人知道任何特定iOS对吞吐量的限制,我将能够在密集轮询传感器时实现,我很乐意听到它.

Tim*_*all 5

我可以回答其中一部分问题......

连接事件和GATT之间有什么关系?

它们是协议的不同级别.您可以通过HCI处理连接和连接事件.GATT是您连接后使用的东西.

每个ATT读/写是否需要新的连接事件?

不可以.连接后,您可以执行多个读/写或其他GATT命令.

如果没有,是否可以说出每个连接事件可以进行多少次ATT读/写操作?

我认为最好的方法是自己对速度进行基准测试.然而,BLE的重点是以牺牲速度为代价来降低功耗.如果你担心速度,你可能不应该用BLE做这件事.通知/指示的整个要点是,您不必轮询属性,只会在发生特定事件时收到消息.

假设我想轮询BLE连接的光传感器以获得单字节值,那么我能达到的最大赫兹值是多少?是否最好将最小连接间隔设置为尽可能低?

见上面的2个答案.

然后如何实施GATT服务器通知?

一旦实现了GATT连接,主设备和从设备之间就会进行双向通信.任何一个设备都可以向另一个发送事件.为了使用通知,您可以在特定属性上设置一个位,以表示您希望对该信息进行通知.然后,根据通知的工作方式,只要有报告内容,您就会将事件发回给您.我觉得除非BLE连接上有灯泡,否则灯泡不会有任何通知.我的典型应用就像一个温度计,它会在每次温度变化1度时发出通知.

结论:

如果您正在轮询属性,那么您做错了.但是,您可能必须做错,因为设备没有以您需要的方式正确实现通知,您无法修改设备.但是,轮询会显着提高电池使用量,并且您将失去使用BLE的好处.