revert to NimBLE-Arduino v1.4.0 (v2.2.3 caused button crash regression); restore v1.4.0 callback signatures, service->start(), and setScanResponse

This commit is contained in:
ash
2026-07-01 04:47:22 +00:00
parent 993a09fa7c
commit 855c97d8c6
2 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ framework = arduino
lib_deps = lib_deps =
adafruit/Adafruit TinyUSB [email protected] adafruit/Adafruit TinyUSB [email protected]
fastled/FastLED@^3.9.0 fastled/FastLED@^3.9.0
h2zero/NimBLE-Arduino@^2.2.3 h2zero/NimBLE-Arduino@^1.4.0
build_unflags = build_unflags =
-DARDUINO_USB_MODE=1 -DARDUINO_USB_MODE=1
+7 -5
View File
@@ -13,11 +13,11 @@ static NimBLECharacteristic* ble_char = nullptr;
static bool device_connected = false; static bool device_connected = false;
class ServerCallbacks : public NimBLEServerCallbacks { class ServerCallbacks : public NimBLEServerCallbacks {
void onConnect(NimBLEServer* server, NimBLEConnInfo&) override { void onConnect(NimBLEServer* server) override {
device_connected = true; device_connected = true;
Serial.println("[BLE] Client connected"); Serial.println("[BLE] Client connected");
} }
void onDisconnect(NimBLEServer* server, NimBLEConnInfo&, int) override { void onDisconnect(NimBLEServer* server) override {
device_connected = false; device_connected = false;
Serial.println("[BLE] Client disconnected, restarting advertising"); Serial.println("[BLE] Client disconnected, restarting advertising");
NimBLEDevice::startAdvertising(); NimBLEDevice::startAdvertising();
@@ -25,7 +25,7 @@ class ServerCallbacks : public NimBLEServerCallbacks {
}; };
class CharCallbacks : public NimBLECharacteristicCallbacks { class CharCallbacks : public NimBLECharacteristicCallbacks {
void onWrite(NimBLECharacteristic* characteristic, NimBLEConnInfo&) override { void onWrite(NimBLECharacteristic* characteristic) override {
std::string value = characteristic->getValue(); std::string value = characteristic->getValue();
if (value.length() > 0 && instance) { if (value.length() > 0 && instance) {
instance->on_receive((const uint8_t*)value.data(), value.length()); instance->on_receive((const uint8_t*)value.data(), value.length());
@@ -83,13 +83,15 @@ bool BleMidiTransport::begin() {
ble_char->setCallbacks(new CharCallbacks()); ble_char->setCallbacks(new CharCallbacks());
Serial.println("[BLE] Callbacks set"); Serial.println("[BLE] Callbacks set");
Serial.println("[BLE] Service created (auto-starts with server)"); Serial.println("[BLE] Starting service...");
ble_service->start();
Serial.println("[BLE] Service started");
Serial.println("[BLE] Starting advertising..."); Serial.println("[BLE] Starting advertising...");
NimBLEAdvertising* adv = NimBLEDevice::getAdvertising(); NimBLEAdvertising* adv = NimBLEDevice::getAdvertising();
adv->setName("JOC Midi"); adv->setName("JOC Midi");
adv->addServiceUUID(BLE_MIDI_SERVICE_UUID); adv->addServiceUUID(BLE_MIDI_SERVICE_UUID);
adv->enableScanResponse(true); adv->setScanResponse(true);
adv->start(); adv->start();
initialized = true; initialized = true;