Skip to content

Commit eb7b2bf

Browse files
feat: Implement MTU change callback and manufacturer data setting, fix UUID handling, and update PlatformIO build configuration.
1 parent 88d221c commit eb7b2bf

4 files changed

Lines changed: 36 additions & 3 deletions

File tree

examples/BasicProvisioning/BasicProvisioning.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using namespace WiBLE;
3131
// GLOBAL OBJECTS
3232
// ============================================================================
3333

34-
WiBLE provisioner;
34+
WiBLE::WiBLE provisioner;
3535

3636
// ============================================================================
3737
// CONFIGURATION

platformio.ini

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
[env:esp32]
22
platform = espressif32
33
board = esp32dev
4+
board_build.partitions = huge_app.csv
45
framework = arduino
56
monitor_speed = 115200
67
lib_deps =
78
; No external dependencies needed for now as per analysis
9+
build_flags =
10+
-I src
11+
-I src/utils
12+
test_build_src = true
13+
14+
[platformio]
15+
src_dir = examples/BasicProvisioning
16+
lib_dir = .

src/BLEManager.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,13 @@ void BLEManager::ServerCallbacks::onDisconnect(BLEServer* server) {
168168
}
169169
}
170170

171+
void BLEManager::ServerCallbacks::onMtuChanged(BLEServer* server, esp_ble_gatts_cb_param_t* param) {
172+
LogManager::info("BLE MTU Changed: " + String(param->mtu.mtu));
173+
if (manager->mtuChangeCallback) {
174+
manager->mtuChangeCallback(param->mtu.mtu);
175+
}
176+
}
177+
171178
void BLEManager::CharacteristicCallbacks::onWrite(BLECharacteristic* characteristic) {
172179
std::string value = characteristic->getValue();
173180
std::vector<uint8_t> data(value.begin(), value.end());
@@ -231,7 +238,7 @@ void BLEManager::startBeacon(String uuid, uint16_t major, uint16_t minor, int8_t
231238
// Let's use a dummy UUID for now if parsing is complex, or try basic parsing.
232239
// Actually, BLEUUID class can parse it.
233240
BLEUUID bleUUID(uuid.c_str());
234-
esp_bt_uuid_t rawUUID = bleUUID.getNative();
241+
esp_bt_uuid_t rawUUID = *bleUUID.getNative();
235242

236243
// Check if it's 128-bit
237244
if (rawUUID.len == 16) {
@@ -260,6 +267,23 @@ void BLEManager::startBeacon(String uuid, uint16_t major, uint16_t minor, int8_t
260267
LogManager::info("iBeacon started");
261268
}
262269

270+
void BLEManager::setManufacturerData(uint16_t companyId, uint8_t* data, size_t length) {
271+
if (!advertising) return;
272+
273+
std::string mfgData;
274+
mfgData += (char)(companyId & 0xFF);
275+
mfgData += (char)((companyId >> 8) & 0xFF);
276+
277+
for(size_t i=0; i<length; i++) {
278+
mfgData += (char)data[i];
279+
}
280+
281+
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
282+
oAdvertisementData.setFlags(0x04);
283+
oAdvertisementData.setManufacturerData(mfgData);
284+
advertising->setAdvertisementData(oAdvertisementData);
285+
}
286+
263287
void BLEManager::startBroadcasting(uint16_t manufacturerId, const uint8_t* data, size_t length) {
264288
if (!initialized || !advertising) return;
265289

src/BLEManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ class BLEManager::ServerCallbacks : public BLEServerCallbacks {
537537

538538
void onConnect(BLEServer* server) override;
539539
void onDisconnect(BLEServer* server) override;
540-
void onMtuChanged(BLEServer* server, uint16_t mtu) override;
540+
void onMtuChanged(BLEServer* server, esp_ble_gatts_cb_param_t* param) override;
541541

542542
private:
543543
BLEManager* manager;

0 commit comments

Comments
 (0)