diff --git a/libraries/BLE/src/BLEAdvertisedDevice.cpp b/libraries/BLE/src/BLEAdvertisedDevice.cpp index 4b9c3380..73a493d5 100644 --- a/libraries/BLE/src/BLEAdvertisedDevice.cpp +++ b/libraries/BLE/src/BLEAdvertisedDevice.cpp @@ -25,6 +25,7 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() { m_manufacturerData = ""; m_name = ""; m_rssi = -9999; + m_serviceUUIDs = {}; m_serviceData = {}; m_serviceDataUUIDs = {}; m_txPower = 0; @@ -34,8 +35,6 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() { m_haveManufacturerData = false; m_haveName = false; m_haveRSSI = false; - m_haveServiceData = false; - m_haveServiceUUID = false; m_haveTXPower = false; } // BLEAdvertisedDevice @@ -107,11 +106,7 @@ BLEScan* BLEAdvertisedDevice::getScan() { * @return Number of service data discovered. */ int BLEAdvertisedDevice::getServiceDataCount() { - if (m_haveServiceData) - return m_serviceData.size(); - else - return 0; - + return m_serviceData.size(); } //getServiceDataCount /** @@ -119,7 +114,7 @@ int BLEAdvertisedDevice::getServiceDataCount() { * @return The ServiceData of the advertised device. */ std::string BLEAdvertisedDevice::getServiceData() { - return m_serviceData[0]; + return m_serviceData.empty() ? std::string() : m_serviceData.front(); } //getServiceData /** @@ -130,12 +125,20 @@ std::string BLEAdvertisedDevice::getServiceData(int i) { return m_serviceData[i]; } //getServiceData +/** + * @brief Get the number of service data UUIDs. + * @return Number of service data UUIDs discovered. + */ +int BLEAdvertisedDevice::getServiceDataUUIDCount() { + return m_serviceDataUUIDs.size(); +} //getServiceDataUUIDCount + /** * @brief Get the service data UUID. * @return The service data UUID. */ BLEUUID BLEAdvertisedDevice::getServiceDataUUID() { - return m_serviceDataUUIDs[0]; + return m_serviceDataUUIDs.empty() ? BLEUUID() : m_serviceDataUUIDs.front(); } // getServiceDataUUID /** @@ -146,12 +149,20 @@ BLEUUID BLEAdvertisedDevice::getServiceDataUUID(int i) { return m_serviceDataUUIDs[i]; } // getServiceDataUUID +/** + * @brief Get the number of service UUIDs. + * @return Number of service UUIDs discovered. + */ +int BLEAdvertisedDevice::getServiceUUIDCount() { + return m_serviceUUIDs.size(); +} //getServiceUUIDCount + /** * @brief Get the Service UUID. * @return The Service UUID of the advertised device. */ BLEUUID BLEAdvertisedDevice::getServiceUUID() { - return m_serviceUUIDs[0]; + return m_serviceUUIDs.empty() ? BLEUUID() : m_serviceUUIDs.front(); } // getServiceUUID /** @@ -167,7 +178,7 @@ BLEUUID BLEAdvertisedDevice::getServiceUUID(int i) { * @return Return true if service is advertised */ bool BLEAdvertisedDevice::isAdvertisingService(BLEUUID uuid){ - for (int i = 0; i < m_serviceUUIDs.size(); i++) { + for (int i = 0; i < getServiceUUIDCount(); i++) { if (m_serviceUUIDs[i].equals(uuid)) return true; } return false; @@ -224,7 +235,7 @@ bool BLEAdvertisedDevice::haveRSSI() { * @return True if there is a service data value present. */ bool BLEAdvertisedDevice::haveServiceData() { - return m_haveServiceData; + return !m_serviceData.empty(); } // haveServiceData @@ -233,7 +244,7 @@ bool BLEAdvertisedDevice::haveServiceData() { * @return True if there is a service UUID value present. */ bool BLEAdvertisedDevice::haveServiceUUID() { - return m_haveServiceUUID; + return !m_serviceUUIDs.empty(); } // haveServiceUUID @@ -486,7 +497,6 @@ void BLEAdvertisedDevice::setServiceUUID(const char* serviceUUID) { */ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) { m_serviceUUIDs.push_back(serviceUUID); - m_haveServiceUUID = true; log_d("- addServiceUUID(): serviceUUID: %s", serviceUUID.toString().c_str()); } // setServiceUUID @@ -496,7 +506,6 @@ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) { * @param [in] data ServiceData value. */ void BLEAdvertisedDevice::setServiceData(std::string serviceData) { - m_haveServiceData = true; // Set the flag that indicates we have service data. m_serviceData.push_back(serviceData); // Save the service data that we received. } //setServiceData @@ -506,7 +515,6 @@ void BLEAdvertisedDevice::setServiceData(std::string serviceData) { * @param [in] data ServiceDataUUID value. */ void BLEAdvertisedDevice::setServiceDataUUID(BLEUUID uuid) { - m_haveServiceData = true; // Set the flag that indicates we have service data. m_serviceDataUUIDs.push_back(uuid); log_d("- addServiceDataUUID(): serviceDataUUID: %s", uuid.toString().c_str()); } // setServiceDataUUID @@ -542,7 +550,7 @@ std::string BLEAdvertisedDevice::toString() { free(pHex); } if (haveServiceUUID()) { - for (int i=0; i < m_serviceUUIDs.size(); i++) { + for (int i=0; i < getServiceUUIDCount(); i++) { res += ", serviceUUID: " + getServiceUUID(i).toString(); } } diff --git a/libraries/BLE/src/BLEAdvertisedDevice.h b/libraries/BLE/src/BLEAdvertisedDevice.h index 4cfa494e..3bd0eaa2 100644 --- a/libraries/BLE/src/BLEAdvertisedDevice.h +++ b/libraries/BLE/src/BLEAdvertisedDevice.h @@ -42,6 +42,8 @@ public: BLEUUID getServiceUUID(); BLEUUID getServiceUUID(int i); int getServiceDataCount(); + int getServiceDataUUIDCount(); + int getServiceUUIDCount(); int8_t getTXPower(); uint8_t* getPayload(); size_t getPayloadLength(); @@ -83,8 +85,6 @@ private: bool m_haveManufacturerData; bool m_haveName; bool m_haveRSSI; - bool m_haveServiceData; - bool m_haveServiceUUID; bool m_haveTXPower;