From 9427fa1999e0b61d884b4a4fe45b36f9c17b121f Mon Sep 17 00:00:00 2001 From: Jakub <106778416+MarekZegare4@users.noreply.github.com> Date: Wed, 20 May 2026 18:24:55 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20correct=20dual=20serial=20interface=20?= =?UTF-8?q?=E2=80=94=20routing,=20UI=20state,=20debug=20logging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - isConnected() returns true always (USB always available, mesh can send) - isBLEConnected() added to BaseSerialInterface for BLE-specific UI/buzzer state - MyMesh uses isBLEConnected() to update UITask connection indicator - Disable BLE_DEBUG_LOGGING in dual build (would corrupt USB stream) Co-Authored-By: Claude Sonnet 4.6 --- examples/companion_radio/MyMesh.cpp | 2 +- src/helpers/BaseSerialInterface.h | 4 ++++ src/helpers/nrf52/DualSerialInterface.h | 6 ++++-- variants/wio-tracker-l1/platformio.ini | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/companion_radio/MyMesh.cpp b/examples/companion_radio/MyMesh.cpp index 1002fa5e..df467d77 100644 --- a/examples/companion_radio/MyMesh.cpp +++ b/examples/companion_radio/MyMesh.cpp @@ -2216,7 +2216,7 @@ void MyMesh::loop() { } #ifdef DISPLAY_CLASS - if (_ui) _ui->setHasConnection(_serial->isConnected()); + if (_ui) _ui->setHasConnection(_serial->isBLEConnected()); #endif } diff --git a/src/helpers/BaseSerialInterface.h b/src/helpers/BaseSerialInterface.h index e6092765..91d2c8c7 100644 --- a/src/helpers/BaseSerialInterface.h +++ b/src/helpers/BaseSerialInterface.h @@ -14,6 +14,10 @@ public: virtual bool isEnabled() const = 0; virtual bool isConnected() const = 0; + // Returns true when a BLE companion app is connected. Default delegates to + // isConnected(); override in dual-interface wrappers that always report + // isConnected()=true but still need to distinguish BLE from USB state. + virtual bool isBLEConnected() const { return isConnected(); } virtual bool isWriteBusy() const = 0; virtual size_t writeFrame(const uint8_t src[], size_t len) = 0; diff --git a/src/helpers/nrf52/DualSerialInterface.h b/src/helpers/nrf52/DualSerialInterface.h index b7442040..259e41ef 100644 --- a/src/helpers/nrf52/DualSerialInterface.h +++ b/src/helpers/nrf52/DualSerialInterface.h @@ -22,8 +22,10 @@ public: void disable() override { _ble.disable(); _usb.disable(); } bool isEnabled() const override { return _ble.isEnabled() || _usb.isEnabled(); } - // Reports BLE connection state (used for UI indicator and buzzer Auto mode) - bool isConnected() const override { return _ble.isConnected(); } + // Always true — USB is always available as fallback, so the mesh can send. + bool isConnected() const override { return true; } + // True only when a BLE companion app is paired and connected. + bool isBLEConnected() const override { return _ble.isConnected(); } bool isWriteBusy() const override { return _ble.isConnected() ? _ble.isWriteBusy() : _usb.isWriteBusy(); diff --git a/variants/wio-tracker-l1/platformio.ini b/variants/wio-tracker-l1/platformio.ini index 4edb67bd..dc319d05 100644 --- a/variants/wio-tracker-l1/platformio.ini +++ b/variants/wio-tracker-l1/platformio.ini @@ -140,6 +140,7 @@ extra_scripts = post:create-uf2.py extends = WioTrackerL1CompanionBLE build_flags = ${WioTrackerL1CompanionBLE.build_flags} -D DUAL_SERIAL=1 + -U BLE_DEBUG_LOGGING [env:WioTrackerL1_companion_radio_dual] extends = WioTrackerL1CompanionDual