Skip to content

Commit 5529457

Browse files
authored
Fix to detect iBeacon that also has Service UUID
This fix makes the BLE_iBeacon.ino to work correctly with the BLE_Beacon_Scanner.ino example
1 parent a64613d commit 5529457

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

Diff for: libraries/BLE/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino

+20-23
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,32 @@ class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
3535
Serial.println(devUUID.toString().c_str());
3636
Serial.println("");
3737
}
38-
else
38+
39+
if (advertisedDevice.haveManufacturerData() == true)
3940
{
40-
if (advertisedDevice.haveManufacturerData() == true)
41-
{
42-
std::string strManufacturerData = advertisedDevice.getManufacturerData();
41+
std::string strManufacturerData = advertisedDevice.getManufacturerData();
4342

44-
uint8_t cManufacturerData[100];
45-
strManufacturerData.copy((char *)cManufacturerData, strManufacturerData.length(), 0);
43+
uint8_t cManufacturerData[100];
44+
strManufacturerData.copy((char *)cManufacturerData, strManufacturerData.length(), 0);
4645

47-
if (strManufacturerData.length() == 25 && cManufacturerData[0] == 0x4C && cManufacturerData[1] == 0x00)
48-
{
49-
Serial.println("Found an iBeacon!");
50-
BLEBeacon oBeacon = BLEBeacon();
51-
oBeacon.setData(strManufacturerData);
52-
Serial.printf("iBeacon Frame\n");
53-
Serial.printf("ID: %04X Major: %d Minor: %d UUID: %s Power: %d\n", oBeacon.getManufacturerId(), ENDIAN_CHANGE_U16(oBeacon.getMajor()), ENDIAN_CHANGE_U16(oBeacon.getMinor()), oBeacon.getProximityUUID().toString().c_str(), oBeacon.getSignalPower());
54-
}
55-
else
46+
if (strManufacturerData.length() == 25 && cManufacturerData[0] == 0x4C && cManufacturerData[1] == 0x00)
47+
{
48+
Serial.println("Found an iBeacon!");
49+
BLEBeacon oBeacon = BLEBeacon();
50+
oBeacon.setData(strManufacturerData);
51+
Serial.printf("iBeacon Frame\n");
52+
Serial.printf("ID: %04X Major: %d Minor: %d UUID: %s Power: %d\n", oBeacon.getManufacturerId(), ENDIAN_CHANGE_U16(oBeacon.getMajor()), ENDIAN_CHANGE_U16(oBeacon.getMinor()), oBeacon.getProximityUUID().toString().c_str(), oBeacon.getSignalPower());
53+
}
54+
else
55+
{
56+
Serial.println("Found another manufacturers beacon!");
57+
Serial.printf("strManufacturerData: %d ", strManufacturerData.length());
58+
for (int i = 0; i < strManufacturerData.length(); i++)
5659
{
57-
Serial.println("Found another manufacturers beacon!");
58-
Serial.printf("strManufacturerData: %d ", strManufacturerData.length());
59-
for (int i = 0; i < strManufacturerData.length(); i++)
60-
{
61-
Serial.printf("[%X]", cManufacturerData[i]);
62-
}
63-
Serial.printf("\n");
60+
Serial.printf("[%X]", cManufacturerData[i]);
6461
}
62+
Serial.printf("\n");
6563
}
66-
return;
6764
}
6865

6966
uint8_t *payLoad = advertisedDevice.getPayload();

0 commit comments

Comments
 (0)