Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7cdfb8b

Browse filesBrowse files
authored
Refactor BLEAdvertisedDevice (espressif#4739)
fixes espressif#4596 * Prevent possible undefined behaviour by get methods not taking an index as parameter * Add methods to get the count of service data UUIDs and service UUIDs * Various code improvements
1 parent 8134a42 commit 7cdfb8b
Copy full SHA for 7cdfb8b

File tree

Expand file treeCollapse file tree

2 files changed

+27
-19
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+27
-19
lines changed

‎libraries/BLE/src/BLEAdvertisedDevice.cpp

Copy file name to clipboardExpand all lines: libraries/BLE/src/BLEAdvertisedDevice.cpp
+25-17Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
109108
int 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
*/
121116
std::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
*/
137140
BLEUUID 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
*/
153164
BLEUUID 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
*/
169180
bool 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
*/
226237
bool 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
*/
235246
bool 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
*/
487498
void 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
*/
498508
void 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
*/
508517
void 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
}

‎libraries/BLE/src/BLEAdvertisedDevice.h

Copy file name to clipboardExpand all lines: libraries/BLE/src/BLEAdvertisedDevice.h
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class BLEAdvertisedDevice {
4242
BLEUUID getServiceUUID();
4343
BLEUUID getServiceUUID(int i);
4444
int getServiceDataCount();
45+
int getServiceDataUUIDCount();
46+
int getServiceUUIDCount();
4547
int8_t getTXPower();
4648
uint8_t* getPayload();
4749
size_t getPayloadLength();
@@ -83,8 +85,6 @@ class BLEAdvertisedDevice {
8385
bool m_haveManufacturerData;
8486
bool m_haveName;
8587
bool m_haveRSSI;
86-
bool m_haveServiceData;
87-
bool m_haveServiceUUID;
8888
bool m_haveTXPower;
8989

9090

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.