C/C++ BLE read/write example with Bluez

纵然是瞬间 提交于 2019-12-03 02:59:23

Something simple? How short is a piece of string? I personally think that the gatttool code itself is simple enough to follow and extract for your own purposes (I've done it recently). But if that's really not suitable for you then another option is libgatt. It's essentially the same code that gatttool uses but has been bundled more conveniently into a public library API. Have a look at gatt.h which has connect/read/write etc. Hopefully it should be self evident how to use that.

Bluez (Linux official Bluetooth stack) has moved to DBUS for its API. While in the past, it was 'accepted' to 'fork' bluez code to access BLE support on Linux, now the approach is to use DBUS. Bluez DBUS API is documented here: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc

Either you directly speak to DBUS for your bluetooth C/C++ application or you use a GATT library as a helper. The second one is probably the best approach for beginner (and also for non-beginner who would prefer to keep their program Bluez agnostic for instance to support other OSes or Bluez pre-DBUS API or to have their sources more readable).

One of these GATT libraries that support modern D-BUS API is gattlib (note: I am the author of this library). Here is a simple example based on this library for reading/writing a BLE device: https://github.com/labapart/gattlib/blob/master/examples/read_write/read_write.c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!