El ejemplo de la otra respuesta no me funciona, se detiene en Scanning...
El siguiente enlace funciona para lenguaje c, pero tiene un error al emitir los bytes que tienen la información sobre la señal rssi. https://github.com/glock45/intel-edison-playground/blob/master/scan.c
esta línea 121:
printf("%s - RSSI %d\n", addr, (**char**)info->data[info->length]);
debería ser:
printf("%s - RSSI %d\n", addr, (**int8_t**)info->data[info->length]);
Los encontré mirando dentro de bluez-version/monitor/*.c
, donde está el programa btmon. Puede ver los tipos de datos y estructuras, hcidump.c
es muy útil y packets.c
y main.c
también, pero hay muchos que aprender sobre los sockets hci
La programación BLE con BlueZ en Galileo o Edison es similar a cualquier otra plataforma x86.
Edison (y Galileo) generalmente viene con bibliotecas BlueZ preinstaladas. Solo necesita vincularse con ellos con su código C y programar de manera similar a otra plataforma x86.
Para ver un ejemplo de escaneo de bluetooth de código C completo con BlueZ, consulte este enlace.
Consulte este ejemplo de escaneo BLE
Y la API de HCI aquí.