一尘不染

C语言中的低功耗蓝牙-使用Bluez创建GATT服务器

linux

我试图在Linux机器上使用GATT来设置具有许多特征的自定义服务。

使用[这个问题及其链接的问题,我能够识别出我需要编写的代码(利用该gatt_service_add()函数)。

我创建了一个单独的文件gatt_service.c,并编写了我认为需要的代码。但是,我无法解决如何将我的代码链接到Bluez库以编译和运行我的解决方案。例如,此站点(并非用于BLE开发)使用-lbluetoothgcc参数链接到libbluetooth
,而我无法确定要链接的内容以使我的代码正常工作。

我没有发布任何示例,因为我不确定要发布什么内容-如果有任何要求,或者我没有提及任何内容,请告诉我。

提前致谢。

编辑-更多信息:

在评论之后,我以plugins / time为基础为我自己的“
Broadcaster服务”编写了自己的文件。完整代码位于:此处(我不知道在答案中放哪一部分代码!)。

我的编译命令是:(gcc gatt_broadcaster_service.c -Wall -o gatt_broadcaster_service -lbluetooth 'pkg-config --cflags --libs glib-2.0' -I/home/alexander/Documents/bluez-5.29/lib包括glib位来解决此处报告的问题)。

我得到的错误是:gatt_broadcaster_service.c:11:27:致命错误:lib /
bluetooth.h:没有这样的文件或目录#include“ lib / bluetooth.h”

我的C文件存储在文档,我的研究告诉我,它无法找到的lib /
bluetooth.h因为它不是在正确的位置看这和使用包括编译器标志当一个文件是不是在一般地点,但我无法做到这一点。

再次感谢!


阅读 1558

收藏
2020-06-07

共1个答案

一尘不染

我得到了运行BlueZ 5.31的示例GATT服务器(截至本文的最新信息):

我的环境: 作为来宾OS(版本14.04 32位操作系统)的
Vagrant
Virtual Box
Ubuntu Trusty Tahr
更新到linux内核3.19
已安装的软件包:
libglib2.0-dev
libdbus-1-dev
libudev-dev
libical-dev
* libreadline-dev

从此处下载BlueZ
5.31:https :
//www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
安装更新的内核(v.3.19):
sudo apt-get update
sudo apt-get install- -建议安装linux-generic-lts-vivid

必须重新启动。我正在使用Vagrant,并且失去了共享文件夹的访问权限。如果您遇到这种情况,请等待流浪者报告错误并以任何方式进入VM(流浪ssh)。在VM中,发出以下命令来解决共享文件夹问题:
sudo /etc/init.d/vboxadd setup

我将再次重新启动(可能没有必要),以检查共享文件夹是否再次处于活动状态。
一旦在VM回来,继续5.31的BlueZ的安装:
CD〜
命令和apt-get安装libglib2.0-dev的libdbus-1-dev的libudev-dev的libical-dev的libreadline-
dev的
wget的https://www.kernel.org/ pub / linux / bluetooth /
bluez-5.31.tar.xz
tar xvf bluez-5.31.tar.xz
cd bluez-5.31
./configure –prefix = / usr –mandir = / usr / share / man –sysconfdir = /等
–localstatedir = / var –disable-systemd –enable-experimental –enable-
maintainer-mode
make
sudo make install
sudo cp attrib / gatttool / usr / bin

安装完成。进行如下检查:
hciconfig
您应该得到以下响应(或类似的响应):
hci0:类型:BR / EDR总线:USB
BD地址:00:1A:7D:DA:71:0C ACL MTU:310:10 SCO MTU :64:8
向下
RX字节:15528 acl:126 sco:0事件:683错误:0
TX字节:6459 acl:146 sco:0命令:234错误:0

配置蓝牙适配器,启动广告,启动示例示例GATT服务器(心率服务),​​并启用详细信息(我的适配器为hci0):
cd BlueZ 5.31目录
sudo tools / btmgmt -i hci0 power
sudo tools / btmgmt -i hci0 le on
sudo工具/ btmgmt -i hci0连接上
须藤工具/ btmgmt -i hci0名“ 一些友好名称
须藤工具/上btmgmt -i hci0广告
上须藤工具/ btmgmt -i hci0动力
工具/ btgatt服务器-i hci0 -s低-t公共-r -v

转到另一台设备(我使用的是iPod,Android –三星Galaxy
5S和Nexus平板电脑–以及另一台运行BlueZ的PC)并连接到该服务。这是我在另一台运行BlueZ的PC上执行的操作:
gatttool -b GATT服务器的MAC地址 -我
连接
主要
特征

您可以发出其他命令来读写GATT服务器。

我还通过复制和编辑以下文件创建了一个自定义GATT服务器(您的原始请求): tools / btgatt-server.c
。您可以编辑Makefile.tools文件,以将自定义服务器包括在构建中。您必须运行automake,make和sudo make
install才能使其运行。

2020-06-07