Hello everybody, I'm getting crazy.
I' trying to read the UUID and the sensor name from a bluetooth LE sensor and I have only the EIR, the Extended Entity Response.
I'm using an api that return me the info object
LGATTDeviceInfo info;
boolean ret = getScanResult(1, info);
The info object is a struct
typedef struct {
LGATTAddress bd_addr;
int32_t rssi;
uint8_t eir_len;
uint8_t eir[256];
} LGATTDeviceInfo;
I can print the address and the rssi
Serial.printf("[LGATTC ino]dev address : [%x:%x:%x:%x:%x:%x] rssi [%d]\n",
info.bd_addr.addr[5], info.bd_addr.addr[4], info.bd_addr.addr[3], info.bd_addr.addr[2], info.bd_addr.addr[1], info.bd_addr.addr[0],
info.rssi);
And the result is
[LGATTC ino]dev address : [20:c3:8f:86:b5:96] rssi [-72]
But I cannot find a way to parse the EIR response. If I try to print the array
for(int i = 0; i < 255; i++)
{
Serial.print(info.eir[i], HEX);
}
Serial.println();
The result is:
216320A0109524543414D3532474A5830313235315125005002A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
I need to obtain the same data i obtain using a BLE scanner on iPhone
The element I need is the manufacturer data, but I cannot understand how can I obtain the manufacturer data from the eir response...
Any idea?