@@ -25,7 +25,8 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() {
2525 m_manufacturerData = " " ;
2626 m_name = " " ;
2727 m_rssi = -9999 ;
28- m_serviceData = " " ;
28+ m_serviceData = {};
29+ m_serviceDataUUIDs = {};
2930 m_txPower = 0 ;
3031 m_pScan = nullptr ;
3132
@@ -101,33 +102,66 @@ BLEScan* BLEAdvertisedDevice::getScan() {
101102 return m_pScan;
102103} // getScan
103104
105+ /* *
106+ * @brief Get the number of service data.
107+ * @return Number of service data discovered.
108+ */
109+ int BLEAdvertisedDevice::getServiceDataCount () {
110+ if (m_haveServiceData)
111+ return m_serviceData.size ();
112+ else
113+ return 0 ;
114+
115+ } // getServiceDataCount
104116
105117/* *
106118 * @brief Get the service data.
107119 * @return The ServiceData of the advertised device.
108120 */
109121std::string BLEAdvertisedDevice::getServiceData () {
110- return m_serviceData;
122+ return m_serviceData[ 0 ] ;
111123} // getServiceData
112124
125+ /* *
126+ * @brief Get the service data.
127+ * @return The ServiceData of the advertised device.
128+ */
129+ std::string BLEAdvertisedDevice::getServiceData (int i) {
130+ return m_serviceData[i];
131+ } // getServiceData
113132
114133/* *
115134 * @brief Get the service data UUID.
116135 * @return The service data UUID.
117136 */
118137BLEUUID BLEAdvertisedDevice::getServiceDataUUID () {
119- return m_serviceDataUUID ;
138+ return m_serviceDataUUIDs[ 0 ] ;
120139} // getServiceDataUUID
121140
141+ /* *
142+ * @brief Get the service data UUID.
143+ * @return The service data UUID.
144+ */
145+ BLEUUID BLEAdvertisedDevice::getServiceDataUUID (int i) {
146+ return m_serviceDataUUIDs[i];
147+ } // getServiceDataUUID
122148
123149/* *
124150 * @brief Get the Service UUID.
125151 * @return The Service UUID of the advertised device.
126152 */
127- BLEUUID BLEAdvertisedDevice::getServiceUUID () { // TODO Remove it eventually, is no longer useful
153+ BLEUUID BLEAdvertisedDevice::getServiceUUID () {
128154 return m_serviceUUIDs[0 ];
129155} // getServiceUUID
130156
157+ /* *
158+ * @brief Get the Service UUID.
159+ * @return The Service UUID of the advertised device.
160+ */
161+ BLEUUID BLEAdvertisedDevice::getServiceUUID (int i) {
162+ return m_serviceUUIDs[i];
163+ } // getServiceUUID
164+
131165/* *
132166 * @brief Check advertised serviced for existence required UUID
133167 * @return Return true if service is advertised
@@ -454,7 +488,7 @@ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
454488 */
455489void BLEAdvertisedDevice::setServiceData (std::string serviceData) {
456490 m_haveServiceData = true ; // Set the flag that indicates we have service data.
457- m_serviceData = serviceData; // Save the service data that we received.
491+ m_serviceData. push_back ( serviceData); // Save the service data that we received.
458492} // setServiceData
459493
460494
@@ -464,7 +498,8 @@ void BLEAdvertisedDevice::setServiceData(std::string serviceData) {
464498 */
465499void BLEAdvertisedDevice::setServiceDataUUID (BLEUUID uuid) {
466500 m_haveServiceData = true ; // Set the flag that indicates we have service data.
467- m_serviceDataUUID = uuid;
501+ m_serviceDataUUIDs.push_back (uuid);
502+ log_d (" - addServiceDataUUID(): serviceDataUUID: %s" , uuid.toString ().c_str ());
468503} // setServiceDataUUID
469504
470505
@@ -498,7 +533,9 @@ std::string BLEAdvertisedDevice::toString() {
498533 free (pHex);
499534 }
500535 if (haveServiceUUID ()) {
501- res += " , serviceUUID: " + getServiceUUID ().toString ();
536+ for (int i=0 ; i < m_serviceUUIDs.size (); i++) {
537+ res += " , serviceUUID: " + getServiceUUID (i).toString ();
538+ }
502539 }
503540 if (haveTXPower ()) {
504541 char val[4 ];
0 commit comments