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 =
adafruit/Adafruit TinyUSB [email protected]
fastled/FastLED@^3.9.0
h2zero/NimBLE-Arduino@^2.2.3
h2zero/NimBLE-Arduino@^1.4.0
build_unflags =
-DARDUINO_USB_MODE=1
+7 -5
View File
@@ -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;