Add immediate response for usb cable plug in / removal

This commit is contained in:
jpirnay
2026-03-18 12:56:35 +01:00
parent a7494c232c
commit ce6676d211
3 changed files with 19 additions and 1 deletions
+8 -1
View File
@@ -7,7 +7,14 @@ void HalGPIO::begin() {
pinMode(UART0_RXD, INPUT);
}
void HalGPIO::update() { inputMgr.update(); }
void HalGPIO::update() {
inputMgr.update();
const bool connected = isUsbConnected();
usbStateChanged = (connected != lastUsbConnected);
lastUsbConnected = connected;
}
bool HalGPIO::wasUsbStateChanged() const { return usbStateChanged; }
bool HalGPIO::isPressed(uint8_t buttonIndex) const { return inputMgr.isPressed(buttonIndex); }
+6
View File
@@ -23,6 +23,9 @@ class HalGPIO {
InputManager inputMgr;
#endif
bool lastUsbConnected = false;
bool usbStateChanged = false;
public:
HalGPIO() = default;
@@ -41,6 +44,9 @@ class HalGPIO {
// Check if USB is connected
bool isUsbConnected() const;
// Returns true once per edge (plug or unplug) since the last update()
bool wasUsbStateChanged() const;
enum class WakeupReason { PowerButton, AfterFlash, AfterUSBPower, Other };
WakeupReason getWakeupReason() const;
+5
View File
@@ -347,6 +347,11 @@ void loop() {
powerManager.setPowerSaving(false); // Restore normal CPU frequency on user activity
}
// Refresh the battery icon immediately when USB is plugged or unplugged
if (gpio.wasUsbStateChanged()) {
activityManager.requestUpdate();
}
static bool screenshotButtonsReleased = true;
if (gpio.isPressed(HalGPIO::BTN_POWER) && gpio.isPressed(HalGPIO::BTN_DOWN)) {
if (screenshotButtonsReleased) {