diff --git a/lib/hal/HalGPIO.cpp b/lib/hal/HalGPIO.cpp index 836dea1e..3940a4d6 100644 --- a/lib/hal/HalGPIO.cpp +++ b/lib/hal/HalGPIO.cpp @@ -334,8 +334,10 @@ bool HalGPIO::isUsbConnected() const { } return false; } - // U0RXD/GPIO20 reads HIGH when USB is connected - return digitalRead(UART0_RXD) == HIGH; + if (BoardConfig::ACTIVE.usbDetect < 0) { + return false; + } + return digitalRead(BoardConfig::ACTIVE.usbDetect) == HIGH; } HalGPIO::WakeupReason HalGPIO::getWakeupReason() const { @@ -344,8 +346,11 @@ HalGPIO::WakeupReason HalGPIO::getWakeupReason() const { const bool usbConnected = isUsbConnected(); - if ((wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_POWERON && !usbConnected) || - (wakeupCause == ESP_SLEEP_WAKEUP_GPIO && resetReason == ESP_RST_DEEPSLEEP && usbConnected)) { + if (resetReason == ESP_RST_DEEPSLEEP && + (wakeupCause == ESP_SLEEP_WAKEUP_GPIO || wakeupCause == ESP_SLEEP_WAKEUP_EXT1)) { + return WakeupReason::PowerButton; + } + if (wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_POWERON && !usbConnected) { return WakeupReason::PowerButton; } if (wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_UNKNOWN && usbConnected) {