bluetooth-lowenergy - C 语言的轻量级蓝牙 LE 库

标签 bluetooth-lowenergy dbus bluetooth-gatt gatttool gattlib

我一直在寻找一个简单的 C 语言蓝牙 LE 库,它允许我扫描 BLE 设备、连接并接收来自 BLE 设备的给定服务 UUID 的定期通知。直接与蓝牙套接字和 libbluetooth(由 BlueZ 创建)配合使用而不使用 DBUS 的东西。不需要配对和安全功能。

遇到https://github.com/labapart/gattlib 。看起来不错,但使用 dbus API 并依赖于 libdbus、glib 等。要使用该库,需要额外 5MB 的库,因此决定不使用 dbus。我们的设备上没有空间来支持压缩 rootfs 镜像上的 5MB 蓝牙堆栈。我们的 rootfs 镜像的总大小为 9 MB。带有 dbus 的蓝牙堆栈本身似乎超过了 rootfs 大小的 50%。

还有-https://github.com/edrosten/libblepp这是 C++ 语言,不使用 dbus。这需要编写一个在 C 程序中使用的 C 包装器,并且还需要 C++ 结构的开销,例如编译器生成的复制构造函数、赋值运算符等。交叉编译也存在问题。

目标板是运行 Linux 的 Xilinx Zynq,构建系统是 buildroot。

请提出建议。

谢谢

最佳答案

找到了解决方案,可能对某人有帮助......

在 YouTube 上搜索并浏览 Linux session 和 IOT session 视频后,发现 Bluez 具有轻量级可执行文件,并且代码位于 Bluez 的 src/shared 文件夹中。 btgattclient.c 在编译时生成“gatt-client”可执行文件,其功能与“gatttool”相同,并且不依赖于 bluetoothd 或 dbus。它唯一的依赖是 glib-2.0。

如果我们在操作系统没有运行蓝牙或没有安装 dbus 库时需要轻量级工具,这会很有帮助。

谢谢

关于bluetooth-lowenergy - C 语言的轻量级蓝牙 LE 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67178374/

相关文章:

ios - 同一台iDevice上同时运行的两个应用程序可以通过蓝牙进行通信吗?

bluetooth-lowenergy - 一个外设可以连接到多个中心吗?

android - 通过 BLE 的音乐播放器

go - 如何管理多个连接

java - BLE设备与同一设备上不同Android应用程序之间的通信

random - BLE IoT 设备通常如何生成其私有(private) MAC 地址?

android - Rhomobile、BLE112 蓝牙设备 - iOS 和安卓应用程序

python - 如何使用 Python 在自定义 dbus 上导出对象?

unix - 访问另一个用户的 D-Bus session

c++ - 这个 C++ 语法的含义是什么