Ich habe den GATT-Beispielserver für BlueZ 5.31 zum Laufen gebracht (zuletzt seit diesem Beitrag):
Mein Umfeld:
Landstreicher
Virtuelle Kiste
Ubuntu Trusty Tahr als Gastbetriebssystem (v. 14.04 32-Bit-Betriebssystem)
Aktualisiert auf Linux-Kernel 3.19
Installierte Pakete:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev
BlueZ 5.31 von hier heruntergeladen:https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
Installation des aktualisierten Kernels (v. 3.19):
sudo apt-get update
sudo apt-get install --install-recommends linux-generic-lts-vivid
Ein Neustart ist erforderlich. Ich verwende Vagrant und habe den Zugriff auf freigegebene Ordner verloren. Wenn Ihnen das passiert, warten Sie, bis vagrant den Fehler meldet, und gehen Sie trotzdem in die VM (vagrant ssh). Geben Sie in der VM diesen Befehl aus, um das Problem mit dem freigegebenen Ordner zu beheben:
sudo /etc/init.d/vboxadd-Setup
Ich würde erneut neu starten (wahrscheinlich nicht notwendig), um zu überprüfen, ob der freigegebene Ordner wieder aktiv ist.
Sobald Sie wieder in der VM sind, fahren Sie mit der Installation von BlueZ 5.31 fort:
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
machen
sudo make install
sudo cp attrib/gatttool /usr/bin
Installation abgeschlossen. Überprüfen Sie es wie folgt:
hciconfig
Sie sollten die folgende Antwort (oder etwas Ähnliches) erhalten:
hci0:Typ:BR/EDR-Bus:USB
BD-Adresse:00:1A:7D:DA:71:0C ACL-MTU:310:10 SCO-MTU:64:8
NIEDER
RX-Bytes:15528 acl:126 sco:0 Ereignisse:683 Fehler:0
TX-Bytes:6459 acl:146 sco:0 Befehle:234 Fehler:0
Konfigurieren Sie den Bluetooth-Adapter, starten Sie die Werbung, starten Sie den Beispiel-GATT-Server (Herzfrequenzdienst) mit verbose on (mein Adapter ist hci0):
cd BlueZ 5.31-Verzeichnis
sudo tools/btmgmt -i hci0 ausschalten
sudo tools/btmgmt -i hci0 le on
sudo tools/btmgmt -i hci0 anschließbar an
sudo tools/btmgmt -i hci0 name "irgendein freundlicher Name "
sudo tools/btmgmt -i hci0 Werbung ein
sudo tools/btmgmt -i hci0 einschalten
tools/btgatt-server -i hci0 -s low -t public -r -v
Gehen Sie zu einem anderen Gerät (ich habe einen iPod, ein Android-Gerät – Samsung Galaxy 5S und ein Nexus-Tablet – und einen anderen PC mit BlueZ verwendet) und stellen Sie eine Verbindung zum Dienst her. So habe ich es auf einem anderen PC mit BlueZ gemacht:
gatttool -b MAC-Adresse des GATT-Servers -ICH
verbinden
primär
Eigenschaften
Sie können andere Befehle zum Lesen und Schreiben auf dem GATT-Server erteilen.
Ich habe auch einen benutzerdefinierten GATT-Server (Ihre ursprüngliche Anfrage) erstellt, indem ich diese Datei kopiert und bearbeitet habe:tools/btgatt-server.c . Sie können die Datei Makefile.tools bearbeiten, um Ihren benutzerdefinierten Server in den Build aufzunehmen. Sie müssen automake, make und sudo make install ausführen, um es zum Laufen zu bringen.
1) gehe zum Bluez-Ordner
2) sudo ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer- Modus
3) sudo alles machen
4) Verbindbare Pakete ankündigen
Bluetooth aktivieren
sudo hciconfig hci0 up
Werbedaten festlegen:"hello world"
sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
Werbung als verbindbar starten
sudo hciconfig hci0 leadv 0
5) sudo-Dienst Bluetooth stoppen
6) sudo src/bluetoothd -d -n
7) Geben Sie auf dem anderen PC (MAC-ID gatt server mac ändern)
eingatttool -b gatt_server_mac --interaktiv
Schritt 6 ist für den Fall, dass Sie plugins/gatt-example.c kompilieren möchten
wenn Sie server.c aus Profil/Zeit kompilieren möchten oder Profil/Alarm (durch Benachrichtigung anstelle der Uhrzeit ersetzen) oder eine andere Datei im Profilordner ersetzt Schritt 6
sudo src/bluetoothd --plugin=time -n
Ich bin bei meiner Suche nach einem eigenständigen GATT-Server für C einige Male auf diese Frage gestoßen. Die Antworten hier erfordern, dass Sie Ihren GATT-Server mit dem BlueZ-Stack erstellen. BlueZ fügte D-Bus-Unterstützung hinzu, um eigenständige GATT-Server zu ermöglichen, und enthält sogar einen eigenständigen Beispiel-GATT-Server für Python, aber nicht für C.
Da ich immer noch einen Server brauche, begann ich mit der Arbeit an einem mit der Absicht, ein Beispiel zu veröffentlichen, aber selbst eine minimale Implementierung ist immer noch mehr Code, als ich Beispiel nennen würde .
Die Erstimplementierung ist nun erfolgt und wurde unter LGPL freigegeben (edit:die Lizenz wurde von GPL-3 auf LGPL geändert):
https://github.com/nettlep/gobbledegook
Wenn es jemandem hilft, cool. Wenn es jemandem hilft, der Code veröffentlicht hat, der mir geholfen hat, umso besser.