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

Ale*_*lex 6 linux bluetooth-lowenergy bluez gatt

我正在尝试在我的Linux机器上使用GATT来设置具有大量特征的自定义服务.

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

我创建了一个名为gatt_service.c的独立文件,并编写了我认为我需要的代码.但是,我无法弄清楚如何将我的代码链接到Bluez库以编译和运行我的解决方案.例如,这个站点(虽然不是用于BLE开发)使用-lbluetoothgcc参数链接libbluetooth ,我无法找出链接的内容以使我的代码工作.

我没有发布任何样品,因为我不确定要发布什么 - 如果有任何要求,或者我没有提及,请告诉我.

提前致谢.

编辑 - 更多信息:

在评论之后,我使用插件/时间作为基础为我自己的"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文件存储在Documents中,我的研究告诉我它找不到lib/bluetooth.h,因为它没有找到正确的位置(这个谈论在文件不是时使用包含标志的编译器在一般的位置,但我无法做到这一点.

再次感谢!

Joh*_*ier 12

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

我的环境:
Vagrant
Virtual Box
Ubuntu Trusty Tahr作为客户操作系统(v.14.04 32位操作系统)
更新到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 - -install-recommended linux-generic-lts-vivid

需要重新启动.我正在使用Vagrant并丢失共享文件夹访问权限.如果你遇到这种情况,请等待vagrant报告错误然后进入VM(vagrant ssh).在VM中,发出此命令以修复共享文件夹问题:
sudo /etc/init.d/vboxadd setup

我会重新启动(可能没有必要),以检查共享文件夹是否再次处于活动状态.
回到VM后,继续安装BlueZ 5.31:
cd~
sudo apt-get install 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 =/etc --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
DOWN
RX字节:15528 acl:126 sco:0事件:683错误:0
TX字节:6459 acl:146 sco:0命令:234错误:0

配置蓝牙适配器,开始广告,启动示例GATT服务器(心率服务)详细打开(我的适配器是hci0):
cd BlueZ 5.31目录
sudo工具/ btmgmt -i hci0关闭
sudo工具/ btmgmt -i hci0 le on
sudo tools/btmgmt -i hci0可连接
sudo工具/ btmgmt -i hci0名称" 一些友好名称 "
sudo工具/ btmgmt -i hci0关于
sudo工具的广告/ btmgmt -i hci0 power on
tools/btgatt-server -i hci0 -s low -t public -r -v

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

您可以发出其他命令来读取和写入GATT服务器.

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