@@ -25,7 +25,8 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() {
25
25
m_manufacturerData = " " ;
26
26
m_name = " " ;
27
27
m_rssi = -9999 ;
28
- m_serviceData = " " ;
28
+ m_serviceData = {};
29
+ m_serviceDataUUIDs = {};
29
30
m_txPower = 0 ;
30
31
m_pScan = nullptr ;
31
32
@@ -101,33 +102,66 @@ BLEScan* BLEAdvertisedDevice::getScan() {
101
102
return m_pScan;
102
103
} // getScan
103
104
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
104
116
105
117
/* *
106
118
* @brief Get the service data.
107
119
* @return The ServiceData of the advertised device.
108
120
*/
109
121
std::string BLEAdvertisedDevice::getServiceData () {
110
- return m_serviceData;
122
+ return m_serviceData[ 0 ] ;
111
123
} // getServiceData
112
124
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
113
132
114
133
/* *
115
134
* @brief Get the service data UUID.
116
135
* @return The service data UUID.
117
136
*/
118
137
BLEUUID BLEAdvertisedDevice::getServiceDataUUID () {
119
- return m_serviceDataUUID ;
138
+ return m_serviceDataUUIDs[ 0 ] ;
120
139
} // getServiceDataUUID
121
140
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
122
148
123
149
/* *
124
150
* @brief Get the Service UUID.
125
151
* @return The Service UUID of the advertised device.
126
152
*/
127
- BLEUUID BLEAdvertisedDevice::getServiceUUID () { // TODO Remove it eventually, is no longer useful
153
+ BLEUUID BLEAdvertisedDevice::getServiceUUID () {
128
154
return m_serviceUUIDs[0 ];
129
155
} // getServiceUUID
130
156
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
+
131
165
/* *
132
166
* @brief Check advertised serviced for existence required UUID
133
167
* @return Return true if service is advertised
@@ -454,7 +488,7 @@ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
454
488
*/
455
489
void BLEAdvertisedDevice::setServiceData (std::string serviceData) {
456
490
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.
458
492
} // setServiceData
459
493
460
494
@@ -464,7 +498,8 @@ void BLEAdvertisedDevice::setServiceData(std::string serviceData) {
464
498
*/
465
499
void BLEAdvertisedDevice::setServiceDataUUID (BLEUUID uuid) {
466
500
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 ());
468
503
} // setServiceDataUUID
469
504
470
505
@@ -498,7 +533,9 @@ std::string BLEAdvertisedDevice::toString() {
498
533
free (pHex);
499
534
}
500
535
if (haveServiceUUID ()) {
501
- res += " , serviceUUID: " + getServiceUUID ().toString ();
536
+ for (int i=0 ; i < m_serviceUUIDs.size (); i++) {
537
+ res += " , serviceUUID: " + getServiceUUID (i).toString ();
538
+ }
502
539
}
503
540
if (haveTXPower ()) {
504
541
char val[4 ];
0 commit comments