Mám ukázkový server GATT spuštěný pro BlueZ 5.31 (nejnovější od tohoto příspěvku):
Moje prostředí:
Tulák
Virtuální schránka
Ubuntu Trusty Tahr jako hostující OS (v. 14.04 32bitový OS)
Aktualizováno na linuxové jádro 3.19
Nainstalované balíčky:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev
Staženo BlueZ 5.31 odtud:https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
Instalace aktualizovaného jádra (v. 3.19):
Aktualizace sudo apt-get
sudo apt-get install --install-recommends linux-generic-lts-vivid
Je nutný restart. Používám Vagrant a ztratil jsem přístup ke sdílené složce. Pokud se vám to stane, počkejte, až vagrant nahlásí chybu, a přesto přejděte do virtuálního počítače (vagrant ssh). Ve virtuálním počítači zadejte tento příkaz k vyřešení problému se sdílenou složkou:
nastavení sudo /etc/init.d/vboxadd
Znovu bych restartoval (pravděpodobně to není nutné), abych zkontroloval, zda je sdílená složka opět aktivní.
Po návratu do virtuálního počítače pokračujte v instalaci 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
udělat
sudo make install
sudo cp attrib/gatttool /usr/bin
Instalace dokončena. Zkontrolujte to následovně:
hciconfig
Měli byste dostat následující odpověď (nebo něco podobného):
hci0:Typ:BR/EDR Sběrnice:USB
Adresa BD:00:1A:7D:DA:71:0C ACL MTU:310:10 SCO MTU:64:8
DOLŮ
RX bajtů:15528 acl:126 sco:0 události:683 chyby:0
TX bytes:6459 acl:146 sco:0 příkazy:234 chyby:0
Nakonfigurujte adaptér Bluetooth, začněte inzerovat, spusťte ukázkový server GATT (služba tepové frekvence) se zapnutým verbosem (můj adaptér je hci0):
cd Adresář BlueZ 5.31
sudo tools/btmgmt -i hci0 vypnout
sudo tools/btmgmt -i hci0 le on
sudo tools/btmgmt -i hci0 připojitelné zap
sudo tools/btmgmt -i hci0 name "nějaký přátelský název "
sudo tools/btmgmt -i hci0 reklama na
sudo tools/btmgmt -i hci0 zapnout
tools/btgatt-server -i hci0 -s low -t public -r -v
Přejděte na jiné zařízení (použil jsem iPod, Android -- Samsung Galaxy 5S a tablet Nexus -- a další počítač se systémem BlueZ) a připojte se ke službě. Zde je návod, jak jsem to udělal na jiném počítači se systémem BlueZ:
gatttool -b Adresa MAC serveru GATT -Já
připojit
hlavní
vlastnosti
Můžete zadat další příkazy pro čtení a zápis na server GATT.
Vytvořil jsem také vlastní server GATT (vaše původní žádost) zkopírováním a úpravou tohoto souboru:tools/btgatt-server.c . Soubor Makefile.tools můžete upravit tak, aby do sestavení zahrnul váš vlastní server. Aby to fungovalo, musíte spustit automake, make a sudo make install.
1) přejděte do složky Bluez
2) sudo ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer- režim
3) sudo make all
4) Inzerujte připojitelné pakety
aktivovat bluetooth
sudo hciconfig hci0 up
nastavit údaje o inzerci:"ahoj světe"
sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
začněte inzerovat jako připojitelné
sudo hciconfig hci0 leadv 0
5) sudo service bluetooth stop
6) sudo src/bluetoothd -d -n
7) Z jiného PC zadejte (Změnit MAC id gatt server mac)
gatttool -b gatt_server_mac --interactive
krok 6 je pro případ, že chcete zkompilovat plugins/gatt-example.c
pokud chcete zkompilovat server.c z profil/čas nebo profil/upozornění (nahraďte upozorněním místo času) nebo jakýkoli jiný soubor ve složce profilu nahraďte krok 6
sudo src/bluetoothd --plugin=time -n
Na tuto otázku jsem několikrát narazil při hledání samostatného serveru GATT pro C. Odpovědi zde vyžadují sestavení vašeho serveru GATT s BlueZ stackem. BlueZ přidal podporu D-Bus, která umožňuje samostatné servery GATT a dokonce obsahuje samostatný ukázkový server GATT pro Python, ale ne pro C.
Stále potřebuji server, začal jsem na něm pracovat se záměrem vydat ukázku, ale i minimální implementace je stále více kódu, než bych byl pohodlný za volání vzorku .
Počáteční implementace je nyní hotová a byla vydána pod LGPL (upravit:licence byla změněna z GPL-3 na LGPL):
https://github.com/nettlep/gobbledegook
Pokud to nekomu pomuze, klidne. Pokud to pomůže někomu, kdo vydal kód, který pomohl mně, ještě lépe.