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);
}