5

我正在尝试更深入地了解 BLE 和 GATT。我的兴趣是在 GATT 配置文件上每秒可以进行的最大读取次数。

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

但是,我试图通过 BLE 规范来解释这些结果。

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

假设我想轮询连接 BLE 的光传感器以获取单个字节值,我可以达到的最大 Hz 是多少?将最小连接间隔设置得尽可能低总是最好的吗?

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

最后,如果有人知道任何特定的 iOS 对我在密集轮询传感器时能够实现的吞吐量施加了限制,我很想听听。

4

1 回答 1

5

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

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

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

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

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

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

我认为最好的方法是自己实际对速度进行基准测试。然而,BLE 的全部意义在于以牺牲速度为代价来降低功耗。如果您担心速度,您可能不应该使用 BLE。通知/指示的全部意义在于,您不必轮询属性,而只需在发生特定事件时获取消息。

假设我想轮询连接 BLE 的光传感器以获取单个字节值,我可以达到的最大 Hz 是多少?将最小连接间隔设置得尽可能低总是最好的吗?

见上面2个答案。

那么 GATT 服务器通知是如何实现的呢?

一旦你实现了 GATT 连接,主设备和从设备之间就会进行 2 路通信。任何一个设备都可以向另一个设备发送事件。为了使用通知,您在特定属性上设置了一些信息,表示您希望收到有关该信息的通知。然后,根据该通知的工作方式,只要有要报告的内容,您就会收到将事件发回给您。我有一种感觉,灯泡不会有任何通知,除非除了 BLE 连接之外还有一些接口。我的典型应用类似于温度计,每次温度变化 1 度时它都会发送通知。

结论:

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

于 2013-07-01T15:13:39.090 回答