diff --git a/app/include/zmk/battery.h b/app/include/zmk/battery.h index 8d7abc19..112e078e 100644 --- a/app/include/zmk/battery.h +++ b/app/include/zmk/battery.h @@ -8,3 +8,4 @@ uint8_t zmk_battery_state_of_charge(void); bool zmk_battery_is_charging(void); +bool zmk_is_externally_powered(void); diff --git a/app/src/activity.c b/app/src/activity.c index ba9ee5f9..7b8855dd 100644 --- a/app/src/activity.c +++ b/app/src/activity.c @@ -84,14 +84,6 @@ static void zmk_pm_resume_devices(void) { #endif /* !CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE */ #endif /* CONFIG_PM_DEVICE */ -bool is_usb_power_present(void) { -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - return zmk_usb_is_powered(); -#else - return false; -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ -} - static enum zmk_activity_state activity_state; static uint32_t activity_last_uptime; @@ -127,7 +119,7 @@ void activity_work_handler(struct k_work *work) { int32_t current = k_uptime_get(); int32_t inactive_time = current - activity_last_uptime; #if IS_ENABLED(CONFIG_ZMK_SLEEP) - if (inactive_time > MAX_SLEEP_MS && !(is_usb_power_present() || zmk_battery_is_charging())) { + if (inactive_time > MAX_SLEEP_MS && !zmk_is_externally_powered()) { // Put devices in suspend power mode before sleeping set_state(ZMK_ACTIVITY_SLEEP); diff --git a/app/src/battery.c b/app/src/battery.c index 6efb275f..60640565 100644 --- a/app/src/battery.c +++ b/app/src/battery.c @@ -29,6 +29,13 @@ static bool last_battery_is_charging = false; uint8_t zmk_battery_state_of_charge(void) { return last_state_of_charge; } bool zmk_battery_is_charging(void) { return last_battery_is_charging; } +bool zmk_is_externally_powered(void) { + bool ret = zmk_battery_is_charging(); +#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) + ret |= zmk_usb_is_powered(); +#endif + return ret; +} #if DT_HAS_CHOSEN(zmk_battery) static const struct device *const battery = DEVICE_DT_GET(DT_CHOSEN(zmk_battery));