Bienvenido a nuestro sitio, en este lugar vas a encontrar la resolución a lo que andabas buscando.
Solución:
Obtuve el servidor GATT de ejemplo ejecutándose para BlueZ 5.31 (el último a partir de esta publicación):
Mi entorno:
Vagabundo
Caja virtual
Ubuntu Trusty Tahr como SO invitado (v. 14.04 SO de 32 bits)
Actualizado al kernel de Linux 3.19
Paquetes instalados:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev
Descargado BlueZ 5.31 desde aquí: https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
Instalación del kernel actualizado (v. 3.19):
sudo apt-get update
sudo apt-get install –install-recomienda linux-generic-lts-vivid
Es necesario reiniciar. Estoy usando Vagrant y he perdido el acceso a la carpeta compartida. Si esto le sucede, espere a que vagrant informe el error y acceda a la máquina virtual de todos modos (vagrant ssh). En la máquina virtual, emita este comando para solucionar el problema de la carpeta compartida:
sudo /etc/init.d/vboxadd configuración
Reiniciaría nuevamente (probablemente no sea necesario), para verificar que la carpeta compartida esté activa nuevamente.
Una vez de vuelta en la VM, continúe con la instalación de 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-maintenance-mode
fabricar
sudo hacer instalar
sudo cp attrib / gatttool / usr / bin
Instalación completa. Compruébelo de la siguiente manera:
hciconfig
Debería obtener la siguiente respuesta (o algo similar):
hci0: Tipo: BR / EDR Bus: USB
Dirección BD: 00: 1A: 7D: DA: 71: 0C ACL MTU: 310: 10 SCO MTU: 64: 8
ABAJO
Bytes RX: 15528 acl: 126 sco: 0 eventos: 683 errores: 0
TX bytes: 6459 acl: 146 sco: 0 comandos: 234 errores: 0
Configure el adaptador Bluetooth, comience a publicar anuncios, inicie el servidor GATT de ejemplo (servicio de frecuencia cardíaca) con verbose activado (mi adaptador es hci0):
CD Directorio BlueZ 5.31
sudo tools / btmgmt -i hci0 apagado
sudo tools / btmgmt -i hci0 le on
herramientas sudo / btmgmt -i hci0 conectable en
sudo tools / btmgmt -i hci0 name “algún nombre amistoso“
sudo tools / btmgmt -i hci0 publicidad en
sudo tools / btmgmt -i hci0 encendido
herramientas / btgatt-server -i hci0 -s low -t public -r -v
Vaya a otro dispositivo (he usado un iPod, un Android (Samsung Galaxy 5S y tableta Nexus) y otra PC con BlueZ) y conéctese al servicio. Así es como lo hice en otra PC con BlueZ:
gatttool -b Dirección MAC del servidor GATT -I
conectar
primario
caracteristicas
Puede emitir otros comandos para leer y escribir en el servidor GATT.
También creé un servidor GATT personalizado (su solicitud original) copiando y editando este archivo: herramientas / btgatt-server.c. Puede editar el archivo Makefile.tools para incluir su servidor personalizado en la compilación. Tendrá que ejecutar automake, make y sudo make install para que funcione.
1) Ir a la carpeta Bluez
2) sudo ./configure -prefix= / usr –mandir = / usr / share / man –sysconfdir = / etc –localstatedir = / var –disable-systemd –enable-experimental –enable-maintenance-mode
3) sudo hacer todo
4) Publicidad de paquetes conectables
activar bluetooth
sudo hciconfig hci0 arriba
establecer datos de publicidad: “hola mundo”
sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
empezar a anunciar como conectable
sudo hciconfig hci0 leadv 0
5) parada de bluetooth del servicio sudo
6) sudo src / bluetoothd -d -n
7) Desde otra PC, escriba (Change MAC id gatt server mac)
gatttool -b gatt_server_mac –interactive
paso 6 es por si quieres compilar plugins / gatt-example.c
si desea compilar server.c desde perfil / tiempo o perfil / alerta(reemplace con alerta en lugar de tiempo) o cualquier otro archivo en la carpeta de perfil reemplace el paso 6
sudo src / bluetoothd –plugin = tiempo -n
Aterricé en esta pregunta varias veces en mi búsqueda de un servidor GATT independiente para C. Las respuestas aquí requieren construir su servidor GATT con la pila BlueZ. BlueZ agregó soporte D-Bus para permitir servidores GATT independientes e incluso incluye un servidor GATT de muestra independiente para Python, pero no para C.
Aún necesitando un servidor, comencé a trabajar en uno con la intención de lanzar una muestra, pero incluso una implementación mínima es más código del que me sentiría cómodo llamando a muestra.
La implementación inicial está hecha ahora y se ha publicado bajo LGPL (editar: la licencia se cambió de GPL-3 a LGPL):
https://github.com/nettlep/gobbledegook
Si ayuda a alguien, genial. Si ayuda a alguien que ha lanzado un código que me ha ayudado a mí, aún mejor.
Tienes la opción de proteger nuestra ocupación dejando un comentario y puntuándolo te lo agradecemos.