diff --git a/examples/companion_radio/AbstractUITask.h b/examples/companion_radio/AbstractUITask.h index 860d0627..cafce3c2 100644 --- a/examples/companion_radio/AbstractUITask.h +++ b/examples/companion_radio/AbstractUITask.h @@ -34,8 +34,13 @@ protected: } public: - void setHasConnection(bool connected) { _connected = connected; } + void setHasConnection(bool connected) { + bool prev = _connected; + _connected = connected; + if (prev && !connected) onBLEDisconnected(); + } bool hasConnection() const { return _connected; } + virtual void onBLEDisconnected() {} // True only when a BLE central is actually bonded/connected. On a dual // (BLE+USB) interface hasConnection() is always true (USB counts), so use // this for BLE-specific UI like the pairing-PIN prompt. diff --git a/examples/companion_radio/ui-new/UITask.h b/examples/companion_radio/ui-new/UITask.h index 5332b40e..8fd6075f 100644 --- a/examples/companion_radio/ui-new/UITask.h +++ b/examples/companion_radio/ui-new/UITask.h @@ -132,6 +132,7 @@ public: curr = NULL; } void begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* node_prefs); + void onBLEDisconnected() override { _next_refresh = 0; } NodePrefs* getNodePrefs() const { return _node_prefs; } uint16_t getBattMilliVolts() const { return _batt_mv > 0 ? _batt_mv : AbstractUITask::getBattMilliVolts(); }