在 BlueZ (5.30) 的最后一个版本中,亮点是 GATT D-Bus api 的完成。我的目标是以编程方式(在 C 中)作为 BLE 客户端:
- 扫描 ble 设备(我可以使用 hci 层)
- 连接到广告 BLE 设备
- 获取 UUID
- 对句柄执行读写操作
BlueZ 社区强烈建议使用 GATT-Dbus api 来完成此操作。经过多次搜索和挠头后,我没有成功找到通过 GATT-DBUs api 执行此操作的正确方法或示例。这似乎比直接使用 GATT 层更复杂。不幸的是,BlueZ 删除了调用 gatt 的直接访问权限。
我非常接近从 Bluez 中提取 GATT 源文件,将其编译为它自己的独立库,并直接使用 GATT 层和调用来连接和执行对 ble 设备服务器的读/写操作。我知道与 DBUS-GATT api 相比,这不是建议的方式,但我没有选择。
如果有人对此或建议(带有一些示例代码)有任何意见,请告知。
先感谢您!