mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-03-30 23:35:45 +00:00
fixing button handling to allow both button types simultaneously
This commit is contained in:
@@ -58,23 +58,31 @@ void UITask::begin(DisplayDriver* display, NodePrefs* node_prefs) {
|
||||
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(); });
|
||||
_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->onLongPress([this]() { handleButtonLongPress(); });
|
||||
_userButtonAnalog->onAnyPress([this]() { handleButtonAnyPress(); });
|
||||
#endif
|
||||
ui_started_at = millis();
|
||||
}
|
||||
|
||||
@@ -289,11 +297,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
|
||||
|
||||
@@ -40,9 +40,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();
|
||||
|
||||
Reference in New Issue
Block a user