From 9c12f798c68c1570a6438b7f843f720c7ae1d02b Mon Sep 17 00:00:00 2001
From: DTTerastar
Date: Thu, 9 Sep 2021 08:16:40 -0400
Subject: [PATCH] If all we have is md for fingerprint, but mac is static, use
static mac.
---
lib/BleFingerprint/BleFingerprint.cpp | 11 +++++++----
lib/BleFingerprint/BleFingerprint.h | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/lib/BleFingerprint/BleFingerprint.cpp b/lib/BleFingerprint/BleFingerprint.cpp
index 0063e49..6730fd1 100644
--- a/lib/BleFingerprint/BleFingerprint.cpp
+++ b/lib/BleFingerprint/BleFingerprint.cpp
@@ -8,6 +8,9 @@ BleFingerprint::~BleFingerprint()
BleFingerprint::BleFingerprint(BLEAdvertisedDevice *advertisedDevice, float fcmin, float beta, float dcutoff) : oneEuro{one_euro_filter(1, fcmin, beta, dcutoff)}
{
+ if (advertisedDevice->getAddressType() == BLE_ADDR_PUBLIC)
+ macPublic = true;
+
firstSeenMicros = esp_timer_get_time();
address = advertisedDevice->getAddress();
newest = recent = oldest = rssi = advertisedDevice->getRSSI();
@@ -114,8 +117,8 @@ BleFingerprint::BleFingerprint(BLEAdvertisedDevice *advertisedDevice, float fcmi
String fingerprint = "md:" + String(mdHex).substring(2, 4) + String(mdHex).substring(0, 2) + ":" + String(strManufacturerData.length());
if (advertisedDevice->haveTXPower())
fingerprint = fingerprint + String(-advertisedDevice->getTXPower());
- id = fingerprint;
- Serial.printf(", ID: %s", id.c_str());
+ id = macPublic ? mac_address : fingerprint;
+ Serial.printf(", ID: %s, MD: %s", id.c_str(), mdHex);
}
calRssi = advertisedDevice->haveTXPower() ? (-advertisedDevice->getTXPower()) - 41 : 0;
@@ -128,8 +131,8 @@ BleFingerprint::BleFingerprint(BLEAdvertisedDevice *advertisedDevice, float fcmi
}
}
- if (id.isEmpty() && advertisedDevice->getAddressType() == BLE_ADDR_PUBLIC)
- id = mac_address;
+ if (id.isEmpty() && macPublic)
+ id = mac_address;
Serial.println();
}
diff --git a/lib/BleFingerprint/BleFingerprint.h b/lib/BleFingerprint/BleFingerprint.h
index 6e93012..30aafb2 100644
--- a/lib/BleFingerprint/BleFingerprint.h
+++ b/lib/BleFingerprint/BleFingerprint.h
@@ -31,7 +31,7 @@ public:
long getLastSeen() { return lastSeenMicros; };
private:
- bool hasValue = false, close = false, reported = false;
+ bool hasValue = false, close = false, reported = false, macPublic = false;
NimBLEAddress address;
String id, name, url;
int rssi = -100, calRssi = 0;