From 571783fc04314b0cac57948d343690fc1ea10a06 Mon Sep 17 00:00:00 2001 From: David Buezas Date: Sat, 6 Jul 2024 23:41:02 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20SD=20card=20wake=20on=20insert,?= =?UTF-8?q?=20status=20screen=20on=20remove=20(#27197)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 2 +- Marlin/src/lcd/marlinui.cpp | 15 ++++++++------- Marlin/src/lcd/marlinui.h | 5 +++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index eed2bf2275..5e5267c95a 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -392,7 +392,7 @@ void MarlinUI::clear_for_drawing() { #if HAS_DISPLAY_SLEEP void MarlinUI::sleep_display(const bool sleep/*=true*/) { static bool asleep = false; - if (asleep != sleep){ + if (asleep != sleep) { sleep ? u8g.sleepOn() : u8g.sleepOff(); asleep = sleep; } diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index bf5c43d98f..8b24cd26eb 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1824,13 +1824,14 @@ void MarlinUI::host_notify(const char * const cstr) { #endif void MarlinUI::media_changed(const uint8_t old_status, const uint8_t status) { + TERN_(HAS_DISPLAY_SLEEP, refresh_screen_timeout()); if (old_status == status) { TERN_(EXTENSIBLE_UI, ExtUI::onMediaError()); // Failed to mount/unmount return; } - if (status) { - if (old_status < 2) { + if (old_status < 2) { // Skip this section on first boot check + if (status) { // Media Mounted #if ENABLED(EXTENSIBLE_UI) ExtUI::onMediaMounted(); #elif ENABLED(BROWSE_MEDIA_ON_INSERT) @@ -1841,16 +1842,16 @@ void MarlinUI::host_notify(const char * const cstr) { LCD_MESSAGE(MSG_MEDIA_INSERTED); #endif } - } - else { - if (old_status < 2) { + else { // Media Removed #if ENABLED(EXTENSIBLE_UI) ExtUI::onMediaRemoved(); - #elif HAS_SD_DETECT + #elif HAS_SD_DETECT // Q: Does "Media Removed" need to be shown for manual release too? LCD_MESSAGE(MSG_MEDIA_REMOVED); #if HAS_MARLINUI_MENU - if (!defer_return_to_status) return_to_status(); + if (ENABLED(HAS_WIRED_LCD) || !defer_return_to_status) return_to_status(); #endif + #elif HAS_WIRED_LCD + return_to_status(); #endif } } diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index cc130327a9..14bf42700f 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -304,6 +304,7 @@ public: static void refresh_screen_timeout(); #endif + // Sleep or wake the display (e.g., by turning the backlight off/on). static void sleep_display(const bool=true) IF_DISABLED(HAS_DISPLAY_SLEEP, {}); static void wake_display() { sleep_display(false); } @@ -743,7 +744,7 @@ public: static void draw_select_screen_prompt(FSTR_P const fpre, const char * const string=nullptr, FSTR_P const fsuf=nullptr); - #else + #else // !HAS_MARLINUI_MENU static void return_to_status() {} @@ -753,7 +754,7 @@ public: FORCE_INLINE static void run_current_screen() { status_screen(); } #endif - #endif + #endif // !HAS_MARLINUI_MENU #if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI) static bool lcd_clicked;