From 9b6e1babcb216d7b3b398cfb2a938ccecf298555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 15 Apr 2023 13:40:41 +0000 Subject: [PATCH] many more lcd_putc_at optimisations Changes in lcd_implementation_drawmenu_sdfile and lcd_implementation_drawmenu_sddirectory seem to save the most. Change in memory: Flash: -72 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 3 +-- Firmware/menu.cpp | 9 +++------ Firmware/ultralcd.cpp | 22 +++++++--------------- 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2ac9d1309..d41b2d3bf 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -622,8 +622,7 @@ void crashdet_detected(uint8_t mask) lcd_print(msg); // ask whether to resume printing - lcd_set_cursor(0, 1); - lcd_puts_P(_T(MSG_RESUME_PRINT)); + lcd_puts_at_P(0, 1, _T(MSG_RESUME_PRINT)); lcd_putc('?'); uint8_t yesno = lcd_show_yes_no_and_wait(false); if (yesno == LCD_LEFT_BUTTON_CHOICE) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index 92ccbddd5..283df19b8 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -159,8 +159,7 @@ static char menu_selection_mark(){ static void menu_draw_item_puts_P(char type_char, const char* str) { - lcd_set_cursor(0, menu_row); - lcd_putc(menu_selection_mark()); + lcd_putc_at(0, menu_row, menu_selection_mark()); lcd_print_pad_P(str, LCD_WIDTH - 2); lcd_putc(type_char); } @@ -218,10 +217,9 @@ void menu_format_sheet_select_E(const Sheet &sheet_E, SheetFormatBuffer &buffer) static void menu_draw_item_select_sheet_E(char type_char, const Sheet &sheet) { - lcd_set_cursor(0, menu_row); SheetFormatBuffer buffer; menu_format_sheet_select_E(sheet, buffer); - lcd_putc(menu_selection_mark()); + lcd_putc_at(0, menu_row, menu_selection_mark()); lcd_print_pad(buffer.c, LCD_WIDTH - 2); lcd_putc(type_char); } @@ -229,10 +227,9 @@ static void menu_draw_item_select_sheet_E(char type_char, const Sheet &sheet) static void menu_draw_item_puts_E(char type_char, const Sheet &sheet) { - lcd_set_cursor(0, menu_row); SheetFormatBuffer buffer; menu_format_sheet_E(sheet, buffer); - lcd_putc(menu_selection_mark()); + lcd_putc_at(0, menu_row, menu_selection_mark()); lcd_print_pad(buffer.c, LCD_WIDTH - 2); lcd_putc(type_char); } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 415642d5d..a5acccac5 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -267,22 +267,18 @@ const char STR_SEPARATOR[] PROGMEM = "------------"; static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* longFilename) { uint8_t len = LCD_WIDTH - 1; - lcd_set_cursor(0, row); - lcd_print((lcd_encoder == menu_item)?'>':' '); + lcd_putc_at(0, row, (lcd_encoder == menu_item)?'>':' '); lcd_print_pad(longFilename, len); } static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* longFilename) { uint8_t len = LCD_WIDTH - 2; - lcd_set_cursor(0, row); - lcd_print((lcd_encoder == menu_item)?'>':' '); - lcd_print(LCD_STR_FOLDER[0]); + lcd_putc_at(0, row, (lcd_encoder == menu_item)?'>':' '); + lcd_putc(LCD_STR_FOLDER[0]); lcd_print_pad(longFilename, len); } - - #define MENU_ITEM_SDDIR(str_fn, str_fnl) do { menu_item_sddir(str_fn, str_fnl); } while (0) #define MENU_ITEM_SDFILE(str_fn, str_fnl) do { menu_item_sdfile(str_fn, str_fnl); } while (0) @@ -2935,9 +2931,8 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg) if (multi_screen) { // Display the "next screen" indicator character. lcd_set_custom_characters_nextpage(); - lcd_set_cursor(19, 3); // Display the double down arrow. - lcd_print(LCD_STR_ARROW_2_DOWN[0]); + lcd_putc_at(19, 3, LCD_STR_ARROW_2_DOWN[0]); } return multi_screen ? msgend : NULL; @@ -2969,9 +2964,8 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) // Until confirmed by a button click. for (;;) { if (msg_next == NULL) { - lcd_set_cursor(19, 3); // Display the confirm char. - lcd_print(LCD_STR_CONFIRM[0]); + lcd_putc_at(19, 3, LCD_STR_CONFIRM[0]); } // Wait for 5 seconds before displaying the next text. for (uint8_t i = 0; i < 100; ++ i) { @@ -4785,8 +4779,7 @@ char reset_menu() { }; lcd_clear(); - lcd_set_cursor(0, 0); - lcd_putc('>'); + lcd_putc_at(0, 0, '>'); lcd_consume_click(); while (1) { @@ -5139,8 +5132,7 @@ static void lcd_rename_sheet_menu() { lcd_putc(menuData->name[i]); } - lcd_set_cursor(menuData->selected, 1); - lcd_putc('^'); + lcd_putc_at(menuData->selected, 1, '^'); if (lcd_clicked()) { if ((menuData->selected + 1u) < sizeof(Sheet::name))