Ciao a tutti, sto impazzendo per capire come parsare una risposta di un sensore bluetooth LE. Tecnicamente è una EIR, Extended Inquiry Response e dovrebbe contenere tutti i dati che mi servono.
La risposta è in uno struct così definito
typedef struct {
LGATTAddress bd_addr;
int32_t rssi;
uint8_t eir_len;
uint8_t eir[256];
} LGATTDeviceInfo;
Se stampo LGATTDeviceInfo.eir esce questa cosa:
216986953656E736F72209FFBECA2C24603E3A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Qui dentro ci sono tutti i dati che mi servono ma devo capire se c'è una logica per estrarli.
Il sensore letto dall'app di iOS è questo:
A me servono esclusivamente il nome del dispositivo e i manufacturer data.
Il nome del dispositivo è iSensor, e corrisponde a 6953656E736F72.
I manufacturer data come si vede dallo screenshot sono BECA2C02-46028785. La prima parte non cambia mai, è l'identificativo univoco del sensore (BECA2C02) mentre la seconda parte è parzialmente variabile.
Essendo un sensore magnetico di antifurto cicla in questo modo
<beca2c02 46025856> - > open
<beca2c02 46005955> - > close
<beca2c02 46025a58> - > open
<beca2c02 46005b57> - > close
<beca2c02 46025c5a> - > open
<beca2c02 46005d59> - > close
<beca2c02 46025e5c> - > open
<beca2c02 46005f5b> - > close
in pratica 00/02 definiscono apertura e chiusura, poi ci sono degli incrementali che cambiano ad ogni apertura chiusura. A me sostanzialmente interessa capire se il sensore è quello che dico io (quindi usando BECA2C02 ) e verificare se lo stato è 02.
Quindi nell'eir ho
21698 | non so cosa siano
6953656E736F72 | device name, iSensor
209FF | non so cosa siano
BECA2C2 | dovrebbe essere la prima parte ma manca uno 0 davanti al due per diventare BECA2C02
4603E3A | dovrebbe essere la seconda parte ma al posto di 4603E3A dovrei avere 46 00 3E3A oppure 46 02 3E3A se il contatto fosse aperto.
Qualcuno ha idea di che formato siano e di come convertire il tutto per permettermi di lavorare questo eir e di fare dei condizionali sul device e sullo stato?