From c156b0202c09826b41774eec3ce462db6b8db684 Mon Sep 17 00:00:00 2001 From: h2zero Date: Wed, 12 Jun 2024 09:30:16 -0600 Subject: [PATCH] Add `isRpa` method to NimBLEAddress. This provides and easy way to check if the peer address is a Resolvable Private Address. --- src/NimBLEAddress.cpp | 9 +++++++++ src/NimBLEAddress.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/NimBLEAddress.cpp b/src/NimBLEAddress.cpp index d8ce5e8..af7956b 100644 --- a/src/NimBLEAddress.cpp +++ b/src/NimBLEAddress.cpp @@ -138,6 +138,15 @@ uint8_t NimBLEAddress::getType() const { } // getType +/** + * @brief Determine if this address is a Resolvable Private Address. + * @return True if the address is a RPA. + */ +bool NimBLEAddress::isRpa() const { + return (m_addrType && ((m_address[5] & 0xc0) == 0x40)); +} // isRpa + + /** * @brief Convert a BLE address to a string. * diff --git a/src/NimBLEAddress.h b/src/NimBLEAddress.h index a6e10a0..8a55b3e 100644 --- a/src/NimBLEAddress.h +++ b/src/NimBLEAddress.h @@ -43,6 +43,7 @@ public: NimBLEAddress(uint8_t address[6], uint8_t type = BLE_ADDR_PUBLIC); NimBLEAddress(const std::string &stringAddress, uint8_t type = BLE_ADDR_PUBLIC); NimBLEAddress(const uint64_t &address, uint8_t type = BLE_ADDR_PUBLIC); + bool isRpa() const; bool equals(const NimBLEAddress &otherAddress) const; const uint8_t* getNative() const; std::string toString() const;