From f1e127ace4ee6f4b02ad48bdab1cf1d15599e31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 08:53:36 +0000 Subject: [PATCH 1/3] Initialise status line message in setup() Fixes #3581 --- Firmware/ultralcd.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 18efd1278..86b51ef13 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7518,6 +7518,9 @@ void ultralcd_init() lcd_oldcardstatus = IS_SD_INSERTED; #endif//(SDCARDDETECT > 0) lcd_encoder_diff = 0; + + // Initialise status line + lcd_setstatuspgm(MSG_WELCOME); } void lcd_ignore_click(bool b) From 4d6d267aefe9974176fe68cf0c0dd76da52b85cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 08:57:30 +0000 Subject: [PATCH 2/3] Don't initialise lcd status message in definition static variables are automatically zero initialised. Now that the status line message is initialised in ultralcd_init(), we don't need to set the variable in global scope. Saves 22 bytes of flash and 1 byte of SRAM --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 86b51ef13..91972153e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -94,7 +94,7 @@ static float manual_feedrate[] = MANUAL_FEEDRATE; /* LCD message status */ static LongTimer lcd_status_message_timeout; static uint8_t lcd_status_message_level; -static char lcd_status_message[LCD_WIDTH + 1] = WELCOME_MSG; +static char lcd_status_message[LCD_WIDTH + 1]; /* !Configuration settings */ From be7c1d55c813d6ab04ed809abcef56948bf28ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:13:07 +0000 Subject: [PATCH 3/3] Remove redundant for-loop Now that lcd_status_message is now initialised correctly at boot-up, this for-loop is no longer required. Now lcd_status_message is only set in lcd_updatestatus() which always calls lcd_finishstatus() lcd_finishstatus() makes sure the message does not exceed 20 characters Saves 34 bytes of flash --- Firmware/ultralcd.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 91972153e..cd322b126 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -669,11 +669,6 @@ void lcdui_print_status_line(void) break; } } - - // Fill the rest of line to have nice and clean output - for(uint8_t fillspace = 0; fillspace < LCD_WIDTH; fillspace++) - if ((lcd_status_message[fillspace] <= 31 )) - lcd_print(' '); } //! @brief Show Status Screen