我试图在Linux机器上使用GATT来设置具有许多特征的自定义服务。
使用[这个问题及其链接的问题,我能够识别出我需要编写的代码(利用该gatt_service_add()函数)。
gatt_service_add()
我创建了一个单独的文件gatt_service.c,并编写了我认为需要的代码。但是,我无法解决如何将我的代码链接到Bluez库以编译和运行我的解决方案。例如,此站点(并非用于BLE开发)使用-lbluetoothgcc参数链接到libbluetooth ,而我无法确定要链接的内容以使我的代码正常工作。
-lbluetooth
我没有发布任何示例,因为我不确定要发布什么内容-如果有任何要求,或者我没有提及任何内容,请告诉我。
提前致谢。
编辑-更多信息:
在评论之后,我以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位来解决此处报告的问题)。
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
我得到的错误是:gatt_broadcaster_service.c:11:27:致命错误:lib / bluetooth.h:没有这样的文件或目录#include“ lib / bluetooth.h”
我的C文件存储在文档,我的研究告诉我,它无法找到的lib / bluetooth.h因为它不是在正确的位置看这和使用包括编译器标志当一个文件是不是在一般地点,但我无法做到这一点。
再次感谢!
我得到了运行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才能使其运行。