diff --git a/Marlin/Conditionals_LulzBot.h b/Marlin/Conditionals_LulzBot.h index f61f74936..86adecc74 100644 --- a/Marlin/Conditionals_LulzBot.h +++ b/Marlin/Conditionals_LulzBot.h @@ -154,6 +154,7 @@ #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "e5502411-d46d-421d-ba3a-a20126d7930f" + #define LULZBOT_MODERN_UI #endif #if defined(LULZBOT_Hibiscus_EinsyGearedMini2LCD) @@ -174,6 +175,7 @@ #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "e5502411-d46d-421d-ba3a-a20126d7930f" + #define LULZBOT_MODERN_UI #endif #if defined(LULZBOT_Hibiscus_Mini2LCD) @@ -192,6 +194,7 @@ #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "80fed4d6-4d15-4512-a02e-61b1dc4fb072" + #define LULZBOT_MODERN_UI #endif #if defined(LULZBOT_Quiver_TAZ7) @@ -209,6 +212,7 @@ #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "a952577d-8722-483a-999d-acdc9e772b7b" + #define LULZBOT_MODERN_UI #endif /****************************** DEBUGGING OPTIONS *******************************/ @@ -1903,6 +1907,27 @@ #define LULZBOT_ENHANCED_TEMP_ERROR_MSG(msg, e) \ ((e == -1) ? PSTR(LULZBOT_STRINGIFY(msg) " BED") : ((e == 0) ? PSTR(LULZBOT_STRINGIFY(msg) " E0") : PSTR(LULZBOT_STRINGIFY(msg) " E1")) ) +#if defined(LULZBOT_MODERN_UI) + #define LULZBOT_ABOUT_TO_DRAW_SCREEN(a,b) \ + lcd_in_status(a == b); \ + if(a == b) { \ + a(); \ + lcd_clicked = false; \ + NOLESS(max_display_update_time, millis() - ms); \ + return; \ + } + #define LULZBOT_LCD_CLEAR_DECL void lcd_clear_text_buffer(); + #define LULZBOT_LCD_CLEAR lcd_clear_text_buffer(); + #if defined(LULZBOT_IS_MINI) + #define WELCOME_MSG _UxGT("Mini 2 ready.") + #else + #define WELCOME_MSG _UxGT("TAZ 7 ready.") + #endif +#else + #define LULZBOT_ABOUT_TO_DRAW_SCREEN(a) + #define LULZBOT_LCD_CLEAR +#endif + /***************************** CUSTOM SPLASH SCREEN *****************************/ #define LULZBOT_CUSTOM_BOOTSCREEN() \ diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index d9e1da262..f2aa038ed 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -656,6 +656,7 @@ void kill_screen(const char* lcd_msg) { lcd_init(); lcd_setalertstatusPGM(lcd_msg); #if ENABLED(DOGLCD) + LULZBOT_LCD_CLEAR u8g.firstPage(); do { lcd_kill_screen(); @@ -4670,6 +4671,9 @@ void lcd_update() { #endif #if ENABLED(DOGLCD) // Changes due to different driver architecture of the DOGM display + #if defined(LULZBOT_MODERN_UI) + LULZBOT_ABOUT_TO_DRAW_SCREEN(currentScreen, lcd_status_screen) + #endif if (!drawing_screen) { u8g.firstPage(); drawing_screen = 1; diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h index 091fb26f4..6dba9cca7 100644 --- a/Marlin/ultralcd_impl_DOGM.h +++ b/Marlin/ultralcd_impl_DOGM.h @@ -468,6 +468,9 @@ inline void lcd_implementation_status_message(const bool blink) { //#define DOGM_SD_PERCENT +#if defined(LULZBOT_MODERN_UI) +#include "ultralcd_lulzbot.h" +#else static void lcd_implementation_status_screen() { const bool blink = lcd_blink(); @@ -732,6 +735,7 @@ static void lcd_implementation_status_screen() { #endif } } +#endif // LULZBOT_MODERN_UI #if ENABLED(ULTIPANEL) diff --git a/Marlin/ultralcd_st7920_u8glib_rrd.h b/Marlin/ultralcd_st7920_u8glib_rrd.h index 005ee2817..7f5e08614 100644 --- a/Marlin/ultralcd_st7920_u8glib_rrd.h +++ b/Marlin/ultralcd_st7920_u8glib_rrd.h @@ -27,6 +27,8 @@ #if ENABLED(U8GLIB_ST7920) +LULZBOT_LCD_CLEAR_DECL + #define ST7920_CLK_PIN LCD_PINS_D4 #define ST7920_DAT_PIN LCD_PINS_ENABLE #define ST7920_CS_PIN LCD_PINS_RS @@ -136,6 +138,7 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo ST7920_SET_CMD(); } ST7920_WRITE_BYTE(0x0C); //display on, cursor+blink off + LULZBOT_LCD_CLEAR ST7920_NCS(); } break;