@@ -25,6 +25,7 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() {
2525 m_manufacturerData = " " ;
2626 m_name = " " ;
2727 m_rssi = -9999 ;
28+ m_serviceUUIDs = {};
2829 m_serviceData = {};
2930 m_serviceDataUUIDs = {};
3031 m_txPower = 0 ;
@@ -34,8 +35,6 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() {
3435 m_haveManufacturerData = false ;
3536 m_haveName = false ;
3637 m_haveRSSI = false ;
37- m_haveServiceData = false ;
38- m_haveServiceUUID = false ;
3938 m_haveTXPower = false ;
4039
4140} // BLEAdvertisedDevice
@@ -107,19 +106,15 @@ BLEScan* BLEAdvertisedDevice::getScan() {
107106 * @return Number of service data discovered.
108107 */
109108int BLEAdvertisedDevice::getServiceDataCount () {
110- if (m_haveServiceData)
111- return m_serviceData.size ();
112- else
113- return 0 ;
114-
109+ return m_serviceData.size ();
115110} // getServiceDataCount
116111
117112/* *
118113 * @brief Get the service data.
119114 * @return The ServiceData of the advertised device.
120115 */
121116std::string BLEAdvertisedDevice::getServiceData () {
122- return m_serviceData[ 0 ] ;
117+ return m_serviceData. empty () ? std::string () : m_serviceData. front () ;
123118} // getServiceData
124119
125120/* *
@@ -130,12 +125,20 @@ std::string BLEAdvertisedDevice::getServiceData(int i) {
130125 return m_serviceData[i];
131126} // getServiceData
132127
128+ /* *
129+ * @brief Get the number of service data UUIDs.
130+ * @return Number of service data UUIDs discovered.
131+ */
132+ int BLEAdvertisedDevice::getServiceDataUUIDCount () {
133+ return m_serviceDataUUIDs.size ();
134+ } // getServiceDataUUIDCount
135+
133136/* *
134137 * @brief Get the service data UUID.
135138 * @return The service data UUID.
136139 */
137140BLEUUID BLEAdvertisedDevice::getServiceDataUUID () {
138- return m_serviceDataUUIDs[ 0 ] ;
141+ return m_serviceDataUUIDs. empty () ? BLEUUID () : m_serviceDataUUIDs. front () ;
139142} // getServiceDataUUID
140143
141144/* *
@@ -146,12 +149,20 @@ BLEUUID BLEAdvertisedDevice::getServiceDataUUID(int i) {
146149 return m_serviceDataUUIDs[i];
147150} // getServiceDataUUID
148151
152+ /* *
153+ * @brief Get the number of service UUIDs.
154+ * @return Number of service UUIDs discovered.
155+ */
156+ int BLEAdvertisedDevice::getServiceUUIDCount () {
157+ return m_serviceUUIDs.size ();
158+ } // getServiceUUIDCount
159+
149160/* *
150161 * @brief Get the Service UUID.
151162 * @return The Service UUID of the advertised device.
152163 */
153164BLEUUID BLEAdvertisedDevice::getServiceUUID () {
154- return m_serviceUUIDs[ 0 ] ;
165+ return m_serviceUUIDs. empty () ? BLEUUID () : m_serviceUUIDs. front () ;
155166} // getServiceUUID
156167
157168/* *
@@ -167,7 +178,7 @@ BLEUUID BLEAdvertisedDevice::getServiceUUID(int i) {
167178 * @return Return true if service is advertised
168179 */
169180bool BLEAdvertisedDevice::isAdvertisingService (BLEUUID uuid){
170- for (int i = 0 ; i < m_serviceUUIDs. size (); i++) {
181+ for (int i = 0 ; i < getServiceUUIDCount (); i++) {
171182 if (m_serviceUUIDs[i].equals (uuid)) return true ;
172183 }
173184 return false ;
@@ -224,7 +235,7 @@ bool BLEAdvertisedDevice::haveRSSI() {
224235 * @return True if there is a service data value present.
225236 */
226237bool BLEAdvertisedDevice::haveServiceData () {
227- return m_haveServiceData ;
238+ return !m_serviceData. empty () ;
228239} // haveServiceData
229240
230241
@@ -233,7 +244,7 @@ bool BLEAdvertisedDevice::haveServiceData() {
233244 * @return True if there is a service UUID value present.
234245 */
235246bool BLEAdvertisedDevice::haveServiceUUID () {
236- return m_haveServiceUUID ;
247+ return !m_serviceUUIDs. empty () ;
237248} // haveServiceUUID
238249
239250
@@ -486,7 +497,6 @@ void BLEAdvertisedDevice::setServiceUUID(const char* serviceUUID) {
486497 */
487498void BLEAdvertisedDevice::setServiceUUID (BLEUUID serviceUUID) {
488499 m_serviceUUIDs.push_back (serviceUUID);
489- m_haveServiceUUID = true ;
490500 log_d (" - addServiceUUID(): serviceUUID: %s" , serviceUUID.toString ().c_str ());
491501} // setServiceUUID
492502
@@ -496,7 +506,6 @@ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
496506 * @param [in] data ServiceData value.
497507 */
498508void BLEAdvertisedDevice::setServiceData (std::string serviceData) {
499- m_haveServiceData = true ; // Set the flag that indicates we have service data.
500509 m_serviceData.push_back (serviceData); // Save the service data that we received.
501510} // setServiceData
502511
@@ -506,7 +515,6 @@ void BLEAdvertisedDevice::setServiceData(std::string serviceData) {
506515 * @param [in] data ServiceDataUUID value.
507516 */
508517void BLEAdvertisedDevice::setServiceDataUUID (BLEUUID uuid) {
509- m_haveServiceData = true ; // Set the flag that indicates we have service data.
510518 m_serviceDataUUIDs.push_back (uuid);
511519 log_d (" - addServiceDataUUID(): serviceDataUUID: %s" , uuid.toString ().c_str ());
512520} // setServiceDataUUID
@@ -542,7 +550,7 @@ std::string BLEAdvertisedDevice::toString() {
542550 free (pHex);
543551 }
544552 if (haveServiceUUID ()) {
545- for (int i=0 ; i < m_serviceUUIDs. size (); i++) {
553+ for (int i=0 ; i < getServiceUUIDCount (); i++) {
546554 res += " , serviceUUID: " + getServiceUUID (i).toString ();
547555 }
548556 }
0 commit comments