diff --git a/examples/companion_radio/UITask.cpp b/examples/companion_radio/UITask.cpp index f57d5f80e..1eb5be8e4 100644 --- a/examples/companion_radio/UITask.cpp +++ b/examples/companion_radio/UITask.cpp @@ -59,17 +59,12 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no buzzer.begin(); #endif - // Initialize button with appropriate configuration -#if defined(PIN_USER_BTN) || defined(PIN_USER_BTN_ANA) - #ifdef PIN_USER_BTN - _userButton = new Button(PIN_USER_BTN, USER_BTN_PRESSED); - #else - _userButton = new Button(PIN_USER_BTN_ANA, USER_BTN_PRESSED, true, 20); - #endif - + // Initialize digital button if available +#ifdef PIN_USER_BTN + _userButton = new Button(PIN_USER_BTN, USER_BTN_PRESSED); _userButton->begin(); - // Set up button callbacks + // Set up digital button callbacks _userButton->onShortPress([this]() { handleButtonShortPress(); }); _userButton->onDoublePress([this]() { handleButtonDoublePress(); }); _userButton->onTriplePress([this]() { handleButtonTriplePress(); }); @@ -77,6 +72,20 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no _userButton->onLongPress([this]() { handleButtonLongPress(); }); _userButton->onAnyPress([this]() { handleButtonAnyPress(); }); #endif + + // Initialize analog button if available +#ifdef PIN_USER_BTN_ANA + _userButtonAnalog = new Button(PIN_USER_BTN_ANA, USER_BTN_PRESSED, true, 20); + _userButtonAnalog->begin(); + + // Set up analog button callbacks + _userButtonAnalog->onShortPress([this]() { handleButtonShortPress(); }); + _userButtonAnalog->onDoublePress([this]() { handleButtonDoublePress(); }); + _userButtonAnalog->onTriplePress([this]() { handleButtonTriplePress(); }); + _userButtonAnalog->onQuadruplePress([this]() { handleButtonQuadruplePress(); }); + _userButtonAnalog->onLongPress([this]() { handleButtonLongPress(); }); + _userButtonAnalog->onAnyPress([this]() { handleButtonAnyPress(); }); +#endif ui_started_at = millis(); } @@ -291,11 +300,16 @@ void UITask::shutdown(bool restart){ } void UITask::loop() { - #if defined(PIN_USER_BTN) || defined(PIN_USER_BTN_ANA) + #ifdef PIN_USER_BTN if (_userButton) { _userButton->update(); } #endif + #ifdef PIN_USER_BTN_ANA + if (_userButtonAnalog) { + _userButtonAnalog->update(); + } + #endif userLedHandler(); #ifdef PIN_BUZZER diff --git a/examples/companion_radio/UITask.h b/examples/companion_radio/UITask.h index 664a76598..77ef875ff 100644 --- a/examples/companion_radio/UITask.h +++ b/examples/companion_radio/UITask.h @@ -42,9 +42,12 @@ class UITask { unsigned long ui_started_at; // Button handlers -#if defined(PIN_USER_BTN) || defined(PIN_USER_BTN_ANA) +#ifdef PIN_USER_BTN Button* _userButton = nullptr; #endif +#ifdef PIN_USER_BTN_ANA + Button* _userButtonAnalog = nullptr; +#endif void renderCurrScreen(); void userLedHandler();