diff --git a/platformio.ini b/platformio.ini index 1696105..f21db17 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,7 +8,7 @@ framework = arduino lib_deps = adafruit/Adafruit TinyUSB Library@3.1.0 fastled/FastLED@^3.9.0 - h2zero/NimBLE-Arduino@^2.2.3 + h2zero/NimBLE-Arduino@^1.4.0 build_unflags = -DARDUINO_USB_MODE=1 diff --git a/src/ble_midi_transport.cpp b/src/ble_midi_transport.cpp index 588dd3a..cd6559c 100644 --- a/src/ble_midi_transport.cpp +++ b/src/ble_midi_transport.cpp @@ -13,11 +13,11 @@ static NimBLECharacteristic* ble_char = nullptr; static bool device_connected = false; class ServerCallbacks : public NimBLEServerCallbacks { - void onConnect(NimBLEServer* server, NimBLEConnInfo&) override { + void onConnect(NimBLEServer* server) override { device_connected = true; Serial.println("[BLE] Client connected"); } - void onDisconnect(NimBLEServer* server, NimBLEConnInfo&, int) override { + void onDisconnect(NimBLEServer* server) override { device_connected = false; Serial.println("[BLE] Client disconnected, restarting advertising"); NimBLEDevice::startAdvertising(); @@ -25,7 +25,7 @@ class ServerCallbacks : public NimBLEServerCallbacks { }; class CharCallbacks : public NimBLECharacteristicCallbacks { - void onWrite(NimBLECharacteristic* characteristic, NimBLEConnInfo&) override { + void onWrite(NimBLECharacteristic* characteristic) override { std::string value = characteristic->getValue(); if (value.length() > 0 && instance) { instance->on_receive((const uint8_t*)value.data(), value.length()); @@ -83,13 +83,15 @@ bool BleMidiTransport::begin() { ble_char->setCallbacks(new CharCallbacks()); 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..."); NimBLEAdvertising* adv = NimBLEDevice::getAdvertising(); adv->setName("JOC Midi"); adv->addServiceUUID(BLE_MIDI_SERVICE_UUID); - adv->enableScanResponse(true); + adv->setScanResponse(true); adv->start(); initialized = true;