GNU/Linux >> Znalost Linux >  >> Linux

Bluetooth Low Energy v C - pomocí Bluez vytvořit server GATT

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.


Linux
  1. Vytvářejte cloudové servery OnMetal

  2. Pitchfork:Vytvořte server

  3. Jak nainstaluji Pdftk na svůj server?

  1. Bluetooth Low Energy:poslouchání oznámení/indikací v linuxu

  2. BlueZ:Jak nastavit server GATT z příkazového řádku

  3. Knihovna Bluetooth pro BlueZ (Windows)

  1. Jak SSH na server pomocí jiného serveru?

  2. Použití protokolů serveru

  3. Java (J2SE) Bluetooth Low Energy (BLE)