diff --git a/lib/hal/HalGPIO.cpp b/lib/hal/HalGPIO.cpp index ce2b3591..836dea1e 100644 --- a/lib/hal/HalGPIO.cpp +++ b/lib/hal/HalGPIO.cpp @@ -300,13 +300,6 @@ void HalGPIO::verifyPowerButtonWakeup(uint16_t requiredDurationMs, bool shortPre // Fast path - no duration check needed return; } - // TODO: Intermittent edge case remains: a single tap followed by another single tap - // can still power on the device. Tighten wake debounce/state handling here. - - // Calibrate: subtract boot time already elapsed, assuming button held since boot - const uint16_t calibration = millis(); - const uint16_t calibratedDuration = (calibration < requiredDurationMs) ? (requiredDurationMs - calibration) : 1; - const auto start = millis(); inputMgr.update(); // inputMgr.isPressed() may take up to ~500ms to return correct state @@ -315,11 +308,12 @@ void HalGPIO::verifyPowerButtonWakeup(uint16_t requiredDurationMs, bool shortPre inputMgr.update(); } if (inputMgr.isPressed(BTN_POWER)) { + const auto holdStart = millis(); do { delay(10); inputMgr.update(); - } while (inputMgr.isPressed(BTN_POWER) && inputMgr.getPowerButtonHeldTime() < calibratedDuration); - if (inputMgr.getPowerButtonHeldTime() < calibratedDuration) { + } while (inputMgr.isPressed(BTN_POWER) && millis() - holdStart < requiredDurationMs); + if (millis() - holdStart < requiredDurationMs) { startDeepSleep(); } } else { diff --git a/src/SettingsList.h b/src/SettingsList.h index a780fad5..90bf41c7 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -268,6 +269,13 @@ inline std::vector getSettingsList(const SdCardFontRegistry* regist } } } + if (BoardConfig::hasTouch()) { + v.erase(std::remove_if(v.begin(), v.end(), + [](const SettingInfo& s) { + return s.nameId == StrId::STR_FRONT_BTN_FOLLOW_ORIENTATION; + }), + v.end()); + } // Only show tilt page turn setting when the QMI8658 IMU is present (X3) if (halTiltSensor.isAvailable()) { diff --git a/src/components/themes/lyra/LyraTheme.cpp b/src/components/themes/lyra/LyraTheme.cpp index 9ee7f47c..a8905cf5 100644 --- a/src/components/themes/lyra/LyraTheme.cpp +++ b/src/components/themes/lyra/LyraTheme.cpp @@ -101,6 +101,11 @@ void LyraTheme::fillBatteryIcon(const GfxRenderer& renderer, Rect rect, uint16_t if (percentage > 70) { renderer.fillRect(rect.x + 10, rect.y + 2, 3, rect.height - 4); } + const int extraBarX = rect.x + 14; + const int cavityRight = rect.x + 2 + (rect.width - 5); + if (percentage >= 95 && extraBarX < cavityRight) { + renderer.fillRect(extraBarX, rect.y + 2, std::min(3, cavityRight - extraBarX), rect.height - 4); + } } }