Skip to content
This repository was archived by the owner on Nov 18, 2024. It is now read-only.

Commit 3fa2c2e

Browse files
committed
here's the changes from esp32-snippets
1 parent b92c58d commit 3fa2c2e

39 files changed

+934
-1064
lines changed

Diff for: libraries/BLE/src/BLEAddress.cpp

+8-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <iomanip>
1414
#include <string.h>
1515
#include <stdio.h>
16-
#include <malloc.h>
1716
#ifdef ARDUINO_ARCH_ESP32
1817
#include "esp32-hal-log.h"
1918
#endif
@@ -84,11 +83,13 @@ esp_bd_addr_t *BLEAddress::getNative() {
8483
* @return The string representation of the address.
8584
*/
8685
std::string BLEAddress::toString() {
87-
auto size = 18;
88-
char *res = (char*)malloc(size);
89-
snprintf(res, size, "%02x:%02x:%02x:%02x:%02x:%02x", m_address[0], m_address[1], m_address[2], m_address[3], m_address[4], m_address[5]);
90-
std::string ret(res);
91-
free(res);
92-
return ret;
86+
std::stringstream stream;
87+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[0] << ':';
88+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[1] << ':';
89+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[2] << ':';
90+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[3] << ':';
91+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[4] << ':';
92+
stream << std::setfill('0') << std::setw(2) << std::hex << (int) ((uint8_t*) (m_address))[5];
93+
return stream.str();
9394
} // toString
9495
#endif

Diff for: libraries/BLE/src/BLEAdvertisedDevice.cpp

+33-67
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@
1616
#include <sstream>
1717
#include "BLEAdvertisedDevice.h"
1818
#include "BLEUtils.h"
19+
#if defined(ARDUINO_ARCH_ESP32) && defined(CONFIG_ARDUHAL_ESP_LOG)
1920
#include "esp32-hal-log.h"
21+
#define LOG_TAG ""
22+
#else
23+
#include "esp_log.h"
24+
static const char* LOG_TAG="BLEAdvertisedDevice";
25+
#endif
2026

2127
BLEAdvertisedDevice::BLEAdvertisedDevice() {
2228
m_adFlag = 0;
@@ -25,8 +31,7 @@ BLEAdvertisedDevice::BLEAdvertisedDevice() {
2531
m_manufacturerData = "";
2632
m_name = "";
2733
m_rssi = -9999;
28-
m_serviceData = {};
29-
m_serviceDataUUIDs = {};
34+
m_serviceData = "";
3035
m_txPower = 0;
3136
m_pScan = nullptr;
3237

@@ -102,66 +107,33 @@ BLEScan* BLEAdvertisedDevice::getScan() {
102107
return m_pScan;
103108
} // getScan
104109

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
116110

117111
/**
118112
* @brief Get the service data.
119113
* @return The ServiceData of the advertised device.
120114
*/
121115
std::string BLEAdvertisedDevice::getServiceData() {
122-
return m_serviceData[0];
116+
return m_serviceData;
123117
} //getServiceData
124118

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
132119

133120
/**
134121
* @brief Get the service data UUID.
135122
* @return The service data UUID.
136123
*/
137124
BLEUUID BLEAdvertisedDevice::getServiceDataUUID() {
138-
return m_serviceDataUUIDs[0];
125+
return m_serviceDataUUID;
139126
} // getServiceDataUUID
140127

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
148128

149129
/**
150130
* @brief Get the Service UUID.
151131
* @return The Service UUID of the advertised device.
152132
*/
153-
BLEUUID BLEAdvertisedDevice::getServiceUUID() {
133+
BLEUUID BLEAdvertisedDevice::getServiceUUID() { //TODO Remove it eventually, is no longer useful
154134
return m_serviceUUIDs[0];
155135
} // getServiceUUID
156136

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-
165137
/**
166138
* @brief Check advertised serviced for existence required UUID
167139
* @return Return true if service is advertised
@@ -277,7 +249,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload, size_t total_len)
277249
length--;
278250

279251
char* pHex = BLEUtils::buildHexData(nullptr, payload, length);
280-
log_d("Type: 0x%.2x (%s), length: %d, data: %s",
252+
ESP_LOGD(LOG_TAG, "Type: 0x%.2x (%s), length: %d, data: %s",
281253
ad_type, BLEUtils::advTypeToString(ad_type), length, pHex);
282254
free(pHex);
283255

@@ -336,7 +308,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload, size_t total_len)
336308

337309
case ESP_BLE_AD_TYPE_SERVICE_DATA: { // Adv Data Type: 0x16 (Service Data) - 2 byte UUID
338310
if (length < 2) {
339-
log_e("Length too small for ESP_BLE_AD_TYPE_SERVICE_DATA");
311+
ESP_LOGE(LOG_TAG, "Length too small for ESP_BLE_AD_TYPE_SERVICE_DATA");
340312
break;
341313
}
342314
uint16_t uuid = *(uint16_t*)payload;
@@ -349,7 +321,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload, size_t total_len)
349321

350322
case ESP_BLE_AD_TYPE_32SERVICE_DATA: { // Adv Data Type: 0x20 (Service Data) - 4 byte UUID
351323
if (length < 4) {
352-
log_e("Length too small for ESP_BLE_AD_TYPE_32SERVICE_DATA");
324+
ESP_LOGE(LOG_TAG, "Length too small for ESP_BLE_AD_TYPE_32SERVICE_DATA");
353325
break;
354326
}
355327
uint32_t uuid = *(uint32_t*) payload;
@@ -362,7 +334,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload, size_t total_len)
362334

363335
case ESP_BLE_AD_TYPE_128SERVICE_DATA: { // Adv Data Type: 0x21 (Service Data) - 16 byte UUID
364336
if (length < 16) {
365-
log_e("Length too small for ESP_BLE_AD_TYPE_128SERVICE_DATA");
337+
ESP_LOGE(LOG_TAG, "Length too small for ESP_BLE_AD_TYPE_128SERVICE_DATA");
366338
break;
367339
}
368340

@@ -374,7 +346,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload, size_t total_len)
374346
} //ESP_BLE_AD_TYPE_32SERVICE_DATA
375347

376348
default: {
377-
log_d("Unhandled type: adType: %d - 0x%.2x", ad_type, ad_type);
349+
ESP_LOGD(LOG_TAG, "Unhandled type: adType: %d - 0x%.2x", ad_type, ad_type);
378350
break;
379351
}
380352
} // switch
@@ -414,7 +386,7 @@ void BLEAdvertisedDevice::setAdFlag(uint8_t adFlag) {
414386
void BLEAdvertisedDevice::setAppearance(uint16_t appearance) {
415387
m_appearance = appearance;
416388
m_haveAppearance = true;
417-
log_d("- appearance: %d", m_appearance);
389+
ESP_LOGD(LOG_TAG, "- appearance: %d", m_appearance);
418390
} // setAppearance
419391

420392

@@ -426,7 +398,7 @@ void BLEAdvertisedDevice::setManufacturerData(std::string manufacturerData) {
426398
m_manufacturerData = manufacturerData;
427399
m_haveManufacturerData = true;
428400
char* pHex = BLEUtils::buildHexData(nullptr, (uint8_t*) m_manufacturerData.data(), (uint8_t) m_manufacturerData.length());
429-
log_d("- manufacturer data: %s", pHex);
401+
ESP_LOGD(LOG_TAG, "- manufacturer data: %s", pHex);
430402
free(pHex);
431403
} // setManufacturerData
432404

@@ -438,7 +410,7 @@ void BLEAdvertisedDevice::setManufacturerData(std::string manufacturerData) {
438410
void BLEAdvertisedDevice::setName(std::string name) {
439411
m_name = name;
440412
m_haveName = true;
441-
log_d("- setName(): name: %s", m_name.c_str());
413+
ESP_LOGD(LOG_TAG, "- setName(): name: %s", m_name.c_str());
442414
} // setName
443415

444416

@@ -449,7 +421,7 @@ void BLEAdvertisedDevice::setName(std::string name) {
449421
void BLEAdvertisedDevice::setRSSI(int rssi) {
450422
m_rssi = rssi;
451423
m_haveRSSI = true;
452-
log_d("- setRSSI(): rssi: %d", m_rssi);
424+
ESP_LOGD(LOG_TAG, "- setRSSI(): rssi: %d", m_rssi);
453425
} // setRSSI
454426

455427

@@ -478,7 +450,7 @@ void BLEAdvertisedDevice::setServiceUUID(const char* serviceUUID) {
478450
void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
479451
m_serviceUUIDs.push_back(serviceUUID);
480452
m_haveServiceUUID = true;
481-
log_d("- addServiceUUID(): serviceUUID: %s", serviceUUID.toString().c_str());
453+
ESP_LOGD(LOG_TAG, "- addServiceUUID(): serviceUUID: %s", serviceUUID.toString().c_str());
482454
} // setServiceUUID
483455

484456

@@ -488,7 +460,7 @@ void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
488460
*/
489461
void BLEAdvertisedDevice::setServiceData(std::string serviceData) {
490462
m_haveServiceData = true; // Set the flag that indicates we have service data.
491-
m_serviceData.push_back(serviceData); // Save the service data that we received.
463+
m_serviceData = serviceData; // Save the service data that we received.
492464
} //setServiceData
493465

494466

@@ -498,8 +470,7 @@ void BLEAdvertisedDevice::setServiceData(std::string serviceData) {
498470
*/
499471
void BLEAdvertisedDevice::setServiceDataUUID(BLEUUID uuid) {
500472
m_haveServiceData = true; // Set the flag that indicates we have service data.
501-
m_serviceDataUUIDs.push_back(uuid);
502-
log_d("- addServiceDataUUID(): serviceDataUUID: %s", uuid.toString().c_str());
473+
m_serviceDataUUID = uuid;
503474
} // setServiceDataUUID
504475

505476

@@ -510,7 +481,7 @@ void BLEAdvertisedDevice::setServiceDataUUID(BLEUUID uuid) {
510481
void BLEAdvertisedDevice::setTXPower(int8_t txPower) {
511482
m_txPower = txPower;
512483
m_haveTXPower = true;
513-
log_d("- txPower: %d", m_txPower);
484+
ESP_LOGD(LOG_TAG, "- txPower: %d", m_txPower);
514485
} // setTXPower
515486

516487

@@ -519,31 +490,23 @@ void BLEAdvertisedDevice::setTXPower(int8_t txPower) {
519490
* @return A string representation of this device.
520491
*/
521492
std::string BLEAdvertisedDevice::toString() {
522-
std::string res = "Name: " + getName() + ", Address: " + getAddress().toString();
493+
std::stringstream ss;
494+
ss << "Name: " << getName() << ", Address: " << getAddress().toString();
523495
if (haveAppearance()) {
524-
char val[6];
525-
snprintf(val, sizeof(val), "%d", getAppearance());
526-
res += ", appearance: ";
527-
res += val;
496+
ss << ", appearance: " << getAppearance();
528497
}
529498
if (haveManufacturerData()) {
530499
char *pHex = BLEUtils::buildHexData(nullptr, (uint8_t*)getManufacturerData().data(), getManufacturerData().length());
531-
res += ", manufacturer data: ";
532-
res += pHex;
500+
ss << ", manufacturer data: " << pHex;
533501
free(pHex);
534502
}
535503
if (haveServiceUUID()) {
536-
for (int i=0; i < m_serviceUUIDs.size(); i++) {
537-
res += ", serviceUUID: " + getServiceUUID(i).toString();
538-
}
504+
ss << ", serviceUUID: " << getServiceUUID().toString();
539505
}
540506
if (haveTXPower()) {
541-
char val[4];
542-
snprintf(val, sizeof(val), "%d", getTXPower());
543-
res += ", txPower: ";
544-
res += val;
507+
ss << ", txPower: " << (int)getTXPower();
545508
}
546-
return res;
509+
return ss.str();
547510
} // toString
548511

549512
uint8_t* BLEAdvertisedDevice::getPayload() {
@@ -562,5 +525,8 @@ size_t BLEAdvertisedDevice::getPayloadLength() {
562525
return m_payloadLength;
563526
}
564527

528+
void BLEAdvertisedDeviceCallbacks::onResult(BLEAdvertisedDevice dev) {}
529+
void BLEAdvertisedDeviceCallbacks::onResult(BLEAdvertisedDevice* dev) {}
530+
565531
#endif /* CONFIG_BT_ENABLED */
566532

Diff for: libraries/BLE/src/BLEAdvertisedDevice.h

+5-8
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,8 @@ class BLEAdvertisedDevice {
3636
int getRSSI();
3737
BLEScan* getScan();
3838
std::string getServiceData();
39-
std::string getServiceData(int i);
4039
BLEUUID getServiceDataUUID();
41-
BLEUUID getServiceDataUUID(int i);
4240
BLEUUID getServiceUUID();
43-
BLEUUID getServiceUUID(int i);
44-
int getServiceDataCount();
4541
int8_t getTXPower();
4642
uint8_t* getPayload();
4743
size_t getPayloadLength();
@@ -97,9 +93,9 @@ class BLEAdvertisedDevice {
9793
int m_rssi;
9894
std::vector<BLEUUID> m_serviceUUIDs;
9995
int8_t m_txPower;
100-
std::vector<std::string> m_serviceData;
101-
std::vector<BLEUUID> m_serviceDataUUIDs;
102-
uint8_t* m_payload;
96+
std::string m_serviceData;
97+
BLEUUID m_serviceDataUUID;
98+
uint8_t* m_payload = nullptr;
10399
size_t m_payloadLength = 0;
104100
esp_ble_addr_type_t m_addressType;
105101
};
@@ -120,7 +116,8 @@ class BLEAdvertisedDeviceCallbacks {
120116
* As we are scanning, we will find new devices. When found, this call back is invoked with a reference to the
121117
* device that was found. During any individual scan, a device will only be detected one time.
122118
*/
123-
virtual void onResult(BLEAdvertisedDevice advertisedDevice) = 0;
119+
virtual void onResult(BLEAdvertisedDevice advertisedDevice);
120+
virtual void onResult(BLEAdvertisedDevice* advertisedDevice);
124121
};
125122

126123
#endif /* CONFIG_BT_ENABLED */

0 commit comments

Comments
 (0)