我想更深入地了解BLE和GATT。我感兴趣的是您在GATT配置文件中每秒可以达到的最大可读数量。
我之前知道有关此主题的一些帖子,例如: Bluetooth Low Energy - updating a characteristic value repeatedly
但是,我试图解释这些结果,看看BLE规范。
连接事件与GATT之间有什么关系?每个ATT读/写是否需要新的连接事件?如果没有,是否可以说出每个连接事件可以进行多少次ATT读/写操作?
假设我想轮询BLE连接的光传感器以获得单字节值,那么我能达到的最大赫兹值是多少?是否最好将最小连接间隔设置为尽可能低?
我是否能够使用“GATT服务器通知获得更好的结果?在BLE规范(Core_v4.0)中,它表示”主服务器启动每个连接事件的开始“。那么GATT服务器通知是如何实现的?会认为这需要服务器发起连接事件。
最后,如果有人知道任何特定iOS对吞吐量的限制,我可以在密集轮询传感器时实现,我很乐意听到它。
答案 0 :(得分:5)
我可以回答其中一部分问题......
他们是不同级别的协议。您可以通过HCI处理连接和连接事件。 GATT是您连接后使用的。
没有。连接后,您可以执行多个读/写或其他GATT命令。
我认为最好的方法是自己对速度进行基准测试。然而,BLE的重点是以牺牲速度为代价来降低功耗。如果你担心速度,你可能不应该用BLE做这件事。通知/指示的整个要点是,您不必轮询属性,只会在发生特定事件时收到消息。
见上述2个答案。
一旦实施了GATT连接,主设备和从设备之间就会进行双向通信。任何一个设备都可以向另一个发送事件。为了使用通知,您可以在特定属性上设置一个位,以表示您希望对该信息进行通知。然后,根据通知的工作方式,只要有报告内容,您就会将事件发回给您。我觉得除非BLE连接上有灯泡,否则灯泡不会有任何通知。我的典型应用就像温度计一样,每次温度变化1度时都会发出通知。
如果您正在轮询属性,那么您做错了。但是,您可能必须做错,因为设备没有以您需要的方式正确实现通知,您无法修改设备。但是,轮询会显着提高电池使用量,并且您将失去使用BLE的好处。