From da5b0f8524aa04be94d4b9106682f344cd85ca5b Mon Sep 17 00:00:00 2001 From: Rob Loranger Date: Wed, 4 Jun 2025 09:51:16 -0700 Subject: [PATCH] add basic alert system to companion UI Adds `_alert[80]` which can be set along with `_needs_refresh` to trigger a simple on screen alert that lasts 1s at this time. Implements POC with double press to advert action --- examples/companion_radio/UITask.cpp | 17 ++++++++++++++++- examples/companion_radio/UITask.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/examples/companion_radio/UITask.cpp b/examples/companion_radio/UITask.cpp index f0f780d6c..deeacdad9 100644 --- a/examples/companion_radio/UITask.cpp +++ b/examples/companion_radio/UITask.cpp @@ -162,7 +162,16 @@ void UITask::renderCurrScreen() { if (_display == NULL) return; // assert() ?? char tmp[80]; - if (_origin[0] && _msg[0]) { // message preview + if (_alert[0]) { + uint16_t textWidth = _display->getTextWidth(_alert); + _display->setCursor((_display->width() - textWidth) / 2, 22); + _display->setTextSize(1.4); + _display->setColor(DisplayDriver::GREEN); + _display->print(_alert); + _alert[0] = 0; + _need_refresh = true; + return; + } else if (_origin[0] && _msg[0]) { // message preview // render message preview _display->setCursor(0, 0); _display->setTextSize(1); @@ -343,11 +352,17 @@ void UITask::handleButtonShortPress() { void UITask::handleButtonDoublePress() { MESH_DEBUG_PRINTLN("UITask: double press triggered, sending advert"); // ADVERT + #ifdef PIN_BUZZER + soundBuzzer(UIEventType::ack); + #endif if (the_mesh.advert()) { MESH_DEBUG_PRINTLN("Advert sent!"); + sprintf(_alert, "Advert sent!"); } else { MESH_DEBUG_PRINTLN("Advert failed!"); + sprintf(_alert, "Advert failed.."); } + _need_refresh = true; } void UITask::handleButtonTriplePress() { diff --git a/examples/companion_radio/UITask.h b/examples/companion_radio/UITask.h index fff0bbe1e..93a2ef893 100644 --- a/examples/companion_radio/UITask.h +++ b/examples/companion_radio/UITask.h @@ -33,6 +33,7 @@ class UITask { char _version_info[32]; char _origin[62]; char _msg[80]; + char _alert[80]; int _msgcount; bool _need_refresh = true; bool _displayWasOn = false; // Track display state before button press