Make USB detection pin configurable
Replace hardcoded UART0_RXD pin with configurable BoardConfig::ACTIVE.usbDetect. Also simplify wakeup reason detection logic to prioritize GPIO/EXT1 wakeup from deep sleep as PowerButton event.
This commit is contained in:
+9
-4
@@ -334,8 +334,10 @@ bool HalGPIO::isUsbConnected() const {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// U0RXD/GPIO20 reads HIGH when USB is connected
|
if (BoardConfig::ACTIVE.usbDetect < 0) {
|
||||||
return digitalRead(UART0_RXD) == HIGH;
|
return false;
|
||||||
|
}
|
||||||
|
return digitalRead(BoardConfig::ACTIVE.usbDetect) == HIGH;
|
||||||
}
|
}
|
||||||
|
|
||||||
HalGPIO::WakeupReason HalGPIO::getWakeupReason() const {
|
HalGPIO::WakeupReason HalGPIO::getWakeupReason() const {
|
||||||
@@ -344,8 +346,11 @@ HalGPIO::WakeupReason HalGPIO::getWakeupReason() const {
|
|||||||
|
|
||||||
const bool usbConnected = isUsbConnected();
|
const bool usbConnected = isUsbConnected();
|
||||||
|
|
||||||
if ((wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_POWERON && !usbConnected) ||
|
if (resetReason == ESP_RST_DEEPSLEEP &&
|
||||||
(wakeupCause == ESP_SLEEP_WAKEUP_GPIO && resetReason == ESP_RST_DEEPSLEEP && usbConnected)) {
|
(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;
|
return WakeupReason::PowerButton;
|
||||||
}
|
}
|
||||||
if (wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_UNKNOWN && usbConnected) {
|
if (wakeupCause == ESP_SLEEP_WAKEUP_UNDEFINED && resetReason == ESP_RST_UNKNOWN && usbConnected) {
|
||||||
|
|||||||
Reference in New Issue
Block a user