L'esempio sull'altra risposta non funziona per me, si ferma in Scansione...
Il collegamento successivo funziona per il linguaggio c, ma presenta un errore durante il cast dei byte che contengono le informazioni sul segnale de rssi.https://github.com/glock45/intel-edison-playground/blob/master/scan.c
questa riga 121:
printf("%s - RSSI %d\n", addr, (**char**)info->data[info->length]);
dovrebbe essere:
printf("%s - RSSI %d\n", addr, (**int8_t**)info->data[info->length]);
Li ho trovati guardando dentro bluez-version/monitor/*.c
, dove si trova il programma btmon. Puoi vedere i tipi di dati e le strutture, hcidump.c
è molto utile e packets.c
e main.c
anche, ma ce ne sono molte da imparare sui socket hci
La programmazione BLE con BlueZ su Galileo o Edison è simile a qualsiasi altra piattaforma x86.
Edison (e Galileo) di solito viene fornito con le librerie BlueZ preinstallate. Devi solo collegarti con loro con il tuo codice C e programmare in modo simile ad altre piattaforme x86.
Per un esempio completo di scansione Bluetooth in codice C con BlueZ, vedere questo collegamento.
Consulta questo esempio per la scansione BLE
E l'API HCI qui.