reconoce pero funciona fallo exito dispositivo conectar con como añadido activar bluetooth embedded-linux bluetooth-lowenergy bluez gatt

bluetooth - pero - Cómo obtener el Evento de Desconexión del Servidor GATT en Bluez/Linux



el dispositivo se ha añadido con exito pero fallo al conectar (1)

Entorno: Bluez 5.14, Linux 3.1, USB Plugable BLE radio, TI BLE keyfob (CC2541 dev kit) Dispositivo Linux <--- hci ----> USB BLE Radio

Permitimos eventos de pulsación de tecla en el mando de TI usando gatttool y comenzamos a escuchar eventos

gatttool -b [hardware ID] --char-write-req -a [handle] -n [value] --listen (gatttool -b 90:59:AF:09:E1:5D --char-write-req -a 0x0048 -n 0100 --listen)

Al presionar los botones del mando y ver estos eventos

Notification handle = 0x0047 value: 02 Notification handle = 0x0047 value: 00 Notification handle = 0x0047 value: 02

Por lo tanto, podemos recibir los eventos de pulsación de tecla desde el Mando a través de la pila Bluez

Objetivo:

Tenemos que atrapar el Evento de Desconexión del GATT, es decir, cuando retiremos la batería del llavero tarde o temprano la conexión del GATT se interrumpirá. Nos gustaría recibir un evento de desconexión de Bluez stack. Bluez tiene esta capacidad ya que Android es compatible con el evento de desconexión GATT que se construye sobre Bluez.

Pregunta:

¿Cómo recibimos el evento GATT Disconnect usando la línea de comandos de Bluez hcitool / gatttool o Bluez API?


Esté atento a G_IO_HUP y cierre con gracia.

chan = gatt_connect(opt_src, opt_dst, opt_dst_type, opt_sec_level, opt_psm, opt_mtu, connect_cb, &gerr); if (chan == NULL) { log_printf(LOG_LEVEL_ERROR,"%s: chan is NULL/n",__func__); log_printf(LOG_LEVEL_ERROR,"%s/n", gerr->message); g_error_free(gerr); g_main_loop_quit(event_loop); } else { log_printf(LOG_LEVEL_INFO,"Connected to %s/n",opt_dst); g_io_add_watch(chan, G_IO_HUP, channel_watcher, NULL); }