Browse Source

🎨 Apply F() to some ExtUI functions

Scott Lahteine 2 years ago
parent
commit
12b5d997a2
37 changed files with 277 additions and 278 deletions
  1. 1
    1
      Marlin/src/feature/mmu/mmu2.cpp
  2. 6
    6
      Marlin/src/feature/pause.cpp
  3. 1
    1
      Marlin/src/gcode/config/M43.cpp
  4. 1
    1
      Marlin/src/gcode/lcd/M0_M1.cpp
  5. 1
    1
      Marlin/src/gcode/sd/M1001.cpp
  6. 1
    1
      Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp
  7. 43
    42
      Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp
  8. 5
    5
      Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h
  9. 47
    47
      Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h
  10. 29
    29
      Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp
  11. 34
    34
      Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp
  12. 14
    17
      Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp
  13. 1
    1
      Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h
  14. 5
    5
      Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp
  15. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/status_screen.cpp
  16. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp
  17. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp
  18. 6
    6
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp
  19. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp
  20. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp
  21. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/confirm_auto_calibration_dialog_box.cpp
  22. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp
  23. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp
  24. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp
  25. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/restore_failsafe_dialog_box.cpp
  26. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/save_settings_dialog_box.cpp
  27. 7
    7
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.cpp
  28. 2
    2
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/stress_test_screen.cpp
  29. 18
    18
      Marlin/src/lcd/extui/nextion/FileNavigator.cpp
  30. 7
    7
      Marlin/src/lcd/extui/nextion/nextion_tft.cpp
  31. 3
    3
      Marlin/src/lcd/extui/nextion/nextion_tft.h
  32. 7
    7
      Marlin/src/lcd/extui/nextion/nextion_tft_defs.h
  33. 6
    6
      Marlin/src/lcd/extui/ui_api.cpp
  34. 3
    2
      Marlin/src/lcd/extui/ui_api.h
  35. 11
    11
      Marlin/src/lcd/marlinui.cpp
  36. 1
    1
      Marlin/src/lcd/menu/menu_delta_calibrate.cpp
  37. 1
    1
      Marlin/src/module/probe.cpp

+ 1
- 1
Marlin/src/feature/mmu/mmu2.cpp View File

961
     LCD_MESSAGE(MSG_MMU2_EJECT_RECOVER);
961
     LCD_MESSAGE(MSG_MMU2_EJECT_RECOVER);
962
     BUZZ(200, 404);
962
     BUZZ(200, 404);
963
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("MMU2 Eject Recover"), FPSTR(CONTINUE_STR)));
963
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("MMU2 Eject Recover"), FPSTR(CONTINUE_STR)));
964
-    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("MMU2 Eject Recover")));
964
+    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("MMU2 Eject Recover")));
965
     TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
965
     TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
966
     BUZZ(200, 404);
966
     BUZZ(200, 404);
967
     BUZZ(200, 404);
967
     BUZZ(200, 404);

+ 6
- 6
Marlin/src/feature/pause.cpp View File

194
     KEEPALIVE_STATE(PAUSED_FOR_USER);
194
     KEEPALIVE_STATE(PAUSED_FOR_USER);
195
     wait_for_user = true;    // LCD click or M108 will clear this
195
     wait_for_user = true;    // LCD click or M108 will clear this
196
 
196
 
197
-    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("Load Filament")));
197
+    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Load Filament")));
198
 
198
 
199
     #if ENABLED(HOST_PROMPT_SUPPORT)
199
     #if ENABLED(HOST_PROMPT_SUPPORT)
200
       const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, active_extruder);
200
       const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, active_extruder);
252
 
252
 
253
     if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_PURGE);
253
     if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_PURGE);
254
 
254
 
255
-    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE)));
255
+    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE)));
256
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE), FPSTR(CONTINUE_STR)));
256
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE), FPSTR(CONTINUE_STR)));
257
     TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_Popup_Confirm(ICON_BLTouch, GET_TEXT(MSG_FILAMENT_CHANGE_PURGE), CONTINUE_STR));
257
     TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_Popup_Confirm(ICON_BLTouch, GET_TEXT(MSG_FILAMENT_CHANGE_PURGE), CONTINUE_STR));
258
     wait_for_user = true; // A click or M108 breaks the purge_length loop
258
     wait_for_user = true; // A click or M108 breaks the purge_length loop
513
   // Wait for filament insert by user and press button
513
   // Wait for filament insert by user and press button
514
   KEEPALIVE_STATE(PAUSED_FOR_USER);
514
   KEEPALIVE_STATE(PAUSED_FOR_USER);
515
   TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_NOZZLE_PARKED), FPSTR(CONTINUE_STR)));
515
   TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_NOZZLE_PARKED), FPSTR(CONTINUE_STR)));
516
-  TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_NOZZLE_PARKED)));
516
+  TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_NOZZLE_PARKED)));
517
   wait_for_user = true;    // LCD click or M108 will clear this
517
   wait_for_user = true;    // LCD click or M108 will clear this
518
   while (wait_for_user) {
518
   while (wait_for_user) {
519
     impatient_beep(max_beep_count);
519
     impatient_beep(max_beep_count);
530
 
530
 
531
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_HEATER_TIMEOUT), GET_TEXT_F(MSG_REHEAT)));
531
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_HEATER_TIMEOUT), GET_TEXT_F(MSG_REHEAT)));
532
 
532
 
533
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_HEATER_TIMEOUT)));
533
+      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_HEATER_TIMEOUT)));
534
 
534
 
535
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(0, true)); // Wait for LCD click or M108
535
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(0, true)); // Wait for LCD click or M108
536
 
536
 
537
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_INFO, GET_TEXT_F(MSG_REHEATING)));
537
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_INFO, GET_TEXT_F(MSG_REHEATING)));
538
 
538
 
539
-      TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged_P(GET_TEXT(MSG_REHEATING)));
539
+      TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(GET_TEXT_F(MSG_REHEATING)));
540
 
540
 
541
       TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_REHEATING));
541
       TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_REHEATING));
542
 
542
 
555
       HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout);
555
       HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout);
556
 
556
 
557
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_REHEATDONE), FPSTR(CONTINUE_STR)));
557
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_REHEATDONE), FPSTR(CONTINUE_STR)));
558
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_REHEATDONE)));
558
+      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE)));
559
       TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_REHEATDONE));
559
       TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_REHEATDONE));
560
 
560
 
561
       IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true);
561
       IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true);

+ 1
- 1
Marlin/src/gcode/config/M43.cpp View File

345
       KEEPALIVE_STATE(PAUSED_FOR_USER);
345
       KEEPALIVE_STATE(PAUSED_FOR_USER);
346
       wait_for_user = true;
346
       wait_for_user = true;
347
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("M43 Wait Called"), FPSTR(CONTINUE_STR)));
347
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("M43 Wait Called"), FPSTR(CONTINUE_STR)));
348
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("M43 Wait Called")));
348
+      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("M43 Wait Called")));
349
     #endif
349
     #endif
350
 
350
 
351
     for (;;) {
351
     for (;;) {

+ 1
- 1
Marlin/src/gcode/lcd/M0_M1.cpp View File

69
     if (parser.string_arg)
69
     if (parser.string_arg)
70
       ExtUI::onUserConfirmRequired(parser.string_arg); // Can this take an SRAM string??
70
       ExtUI::onUserConfirmRequired(parser.string_arg); // Can this take an SRAM string??
71
     else
71
     else
72
-      ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_USERWAIT));
72
+      ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_USERWAIT));
73
   #elif ENABLED(DWIN_CREALITY_LCD_ENHANCED)
73
   #elif ENABLED(DWIN_CREALITY_LCD_ENHANCED)
74
     if (parser.string_arg)
74
     if (parser.string_arg)
75
       DWIN_Popup_Confirm(ICON_BLTouch, parser.string_arg, GET_TEXT_F(MSG_USERWAIT));
75
       DWIN_Popup_Confirm(ICON_BLTouch, parser.string_arg, GET_TEXT_F(MSG_USERWAIT));

+ 1
- 1
Marlin/src/gcode/sd/M1001.cpp View File

95
   #if HAS_LEDS_OFF_FLAG
95
   #if HAS_LEDS_OFF_FLAG
96
     if (long_print) {
96
     if (long_print) {
97
       printerEventLEDs.onPrintCompleted();
97
       printerEventLEDs.onPrintCompleted();
98
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_PRINT_DONE)));
98
+      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PRINT_DONE)));
99
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_PRINT_DONE), FPSTR(CONTINUE_STR)));
99
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_PRINT_DONE), FPSTR(CONTINUE_STR)));
100
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(SEC_TO_MS(TERN(HAS_LCD_MENU, PE_LEDS_COMPLETED_TIME, 30))));
100
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(SEC_TO_MS(TERN(HAS_LCD_MENU, PE_LEDS_COMPLETED_TIME, 30))));
101
       printerEventLEDs.onResumeAfterWait();
101
       printerEventLEDs.onResumeAfterWait();

+ 1
- 1
Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp View File

157
       // The new panel ignores entries that don't end in .GCO or .gcode so add and pad them.
157
       // The new panel ignores entries that don't end in .GCO or .gcode so add and pad them.
158
       if (paneltype == AC_panel_new) {
158
       if (paneltype == AC_panel_new) {
159
         TFTSer.println("<<.GCO");
159
         TFTSer.println("<<.GCO");
160
-        Chiron.SendtoTFTLN(PSTR("..                  .gcode"));
160
+        Chiron.SendtoTFTLN(F("..                  .gcode"));
161
       }
161
       }
162
       else {
162
       else {
163
         TFTSer.println("<<");
163
         TFTSer.println("<<");

+ 43
- 42
Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp View File

99
 
99
 
100
   // Enable leveling and Disable end stops during print
100
   // Enable leveling and Disable end stops during print
101
   // as Z home places nozzle above the bed so we need to allow it past the end stops
101
   // as Z home places nozzle above the bed so we need to allow it past the end stops
102
-  injectCommands_P(AC_cmnd_enable_leveling);
102
+  injectCommands(AC_cmnd_enable_leveling);
103
 
103
 
104
   // Startup tunes are defined in Tunes.h
104
   // Startup tunes are defined in Tunes.h
105
   PlayTune(BEEPER_PIN, TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1);
105
   PlayTune(BEEPER_PIN, TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1);
244
       // If probing completes ok save the mesh and park
244
       // If probing completes ok save the mesh and park
245
       // Ignore the custom machine name
245
       // Ignore the custom machine name
246
       if (strcmp_P(msg + strlen(CUSTOM_MACHINE_NAME), MARLIN_msg_ready) == 0) {
246
       if (strcmp_P(msg + strlen(CUSTOM_MACHINE_NAME), MARLIN_msg_ready) == 0) {
247
-        injectCommands_P(PSTR("M500\nG27"));
247
+        injectCommands(F("M500\nG27"));
248
         SendtoTFTLN(AC_msg_probing_complete);
248
         SendtoTFTLN(AC_msg_probing_complete);
249
         printer_state = AC_printer_idle;
249
         printer_state = AC_printer_idle;
250
         msg_matched = true;
250
         msg_matched = true;
252
       // If probing fails don't save the mesh raise the probe above the bad point
252
       // If probing fails don't save the mesh raise the probe above the bad point
253
       if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) {
253
       if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) {
254
         PlayTune(BEEPER_PIN, BeepBeepBeeep, 1);
254
         PlayTune(BEEPER_PIN, BeepBeepBeeep, 1);
255
-        injectCommands_P(PSTR("G1 Z50 F500"));
255
+        injectCommands(F("G1 Z50 F500"));
256
         SendtoTFTLN(AC_msg_probing_complete);
256
         SendtoTFTLN(AC_msg_probing_complete);
257
         printer_state = AC_printer_idle;
257
         printer_state = AC_printer_idle;
258
         msg_matched = true;
258
         msg_matched = true;
315
   setSoftEndstopState(true); // enable endstops
315
   setSoftEndstopState(true); // enable endstops
316
 }
316
 }
317
 
317
 
318
-void ChironTFT::SendtoTFT(PGM_P str) {  // A helper to print PROGMEM string to the panel
318
+void ChironTFT::SendtoTFT(FSTR_P const fstr) {  // A helper to print PROGMEM string to the panel
319
   #if ACDEBUG(AC_SOME)
319
   #if ACDEBUG(AC_SOME)
320
-    SERIAL_ECHOPGM_P(str);
320
+    SERIAL_ECHOF(fstr);
321
   #endif
321
   #endif
322
+  PGM_P str = FTOP(fstr);
322
   while (const char c = pgm_read_byte(str++)) TFTSer.write(c);
323
   while (const char c = pgm_read_byte(str++)) TFTSer.write(c);
323
 }
324
 }
324
 
325
 
325
-void ChironTFT::SendtoTFTLN(PGM_P str = nullptr) {
326
-  if (str) {
326
+void ChironTFT::SendtoTFTLN(FSTR_P const fstr) {
327
+  if (fstr) {
327
     #if ACDEBUG(AC_SOME)
328
     #if ACDEBUG(AC_SOME)
328
       SERIAL_ECHOPGM("> ");
329
       SERIAL_ECHOPGM("> ");
329
     #endif
330
     #endif
330
-    SendtoTFT(str);
331
+    SendtoTFT(fstr);
331
     #if ACDEBUG(AC_SOME)
332
     #if ACDEBUG(AC_SOME)
332
       SERIAL_EOL();
333
       SERIAL_EOL();
333
     #endif
334
     #endif
426
   #if ACDEBUG(AC_INFO)
427
   #if ACDEBUG(AC_INFO)
427
     SERIAL_ECHOLNPGM("## SendFileList ## ", startindex);
428
     SERIAL_ECHOLNPGM("## SendFileList ## ", startindex);
428
   #endif
429
   #endif
429
-  SendtoTFTLN(PSTR("FN "));
430
+  SendtoTFTLN(F("FN "));
430
   filenavigator.getFiles(startindex, panel_type, 4);
431
   filenavigator.getFiles(startindex, panel_type, 4);
431
-  SendtoTFTLN(PSTR("END"));
432
+  SendtoTFTLN(F("END"));
432
 }
433
 }
433
 
434
 
434
 void ChironTFT::SelectFile() {
435
 void ChironTFT::SelectFile() {
512
   // information requests A0-A8 and A33
513
   // information requests A0-A8 and A33
513
   switch (req) {
514
   switch (req) {
514
     case 0:   // A0 Get HOTEND Temp
515
     case 0:   // A0 Get HOTEND Temp
515
-      SendtoTFT(PSTR("A0V "));
516
+      SendtoTFT(F("A0V "));
516
       TFTSer.println(getActualTemp_celsius(E0));
517
       TFTSer.println(getActualTemp_celsius(E0));
517
       break;
518
       break;
518
 
519
 
519
     case 1:   // A1 Get HOTEND Target Temp
520
     case 1:   // A1 Get HOTEND Target Temp
520
-      SendtoTFT(PSTR("A1V "));
521
+      SendtoTFT(F("A1V "));
521
       TFTSer.println(getTargetTemp_celsius(E0));
522
       TFTSer.println(getTargetTemp_celsius(E0));
522
       break;
523
       break;
523
 
524
 
524
     case 2:   // A2 Get BED Temp
525
     case 2:   // A2 Get BED Temp
525
-      SendtoTFT(PSTR("A2V "));
526
+      SendtoTFT(F("A2V "));
526
       TFTSer.println(getActualTemp_celsius(BED));
527
       TFTSer.println(getActualTemp_celsius(BED));
527
       break;
528
       break;
528
 
529
 
529
     case 3:   // A3 Get BED Target Temp
530
     case 3:   // A3 Get BED Target Temp
530
-      SendtoTFT(PSTR("A3V "));
531
+      SendtoTFT(F("A3V "));
531
       TFTSer.println(getTargetTemp_celsius(BED));
532
       TFTSer.println(getTargetTemp_celsius(BED));
532
       break;
533
       break;
533
 
534
 
534
     case 4:   // A4 Get FAN Speed
535
     case 4:   // A4 Get FAN Speed
535
-      SendtoTFT(PSTR("A4V "));
536
+      SendtoTFT(F("A4V "));
536
       TFTSer.println(getActualFan_percent(FAN0));
537
       TFTSer.println(getActualFan_percent(FAN0));
537
       break;
538
       break;
538
 
539
 
539
     case 5:   // A5 Get Current Coordinates
540
     case 5:   // A5 Get Current Coordinates
540
-      SendtoTFT(PSTR("A5V X: "));
541
+      SendtoTFT(F("A5V X: "));
541
       TFTSer.print(getAxisPosition_mm(X));
542
       TFTSer.print(getAxisPosition_mm(X));
542
-      SendtoTFT(PSTR(" Y: "));
543
+      SendtoTFT(F(" Y: "));
543
       TFTSer.print(getAxisPosition_mm(Y));
544
       TFTSer.print(getAxisPosition_mm(Y));
544
-      SendtoTFT(PSTR(" Z: "));
545
+      SendtoTFT(F(" Z: "));
545
       TFTSer.println(getAxisPosition_mm(Z));
546
       TFTSer.println(getAxisPosition_mm(Z));
546
       break;
547
       break;
547
 
548
 
548
     case 6:   // A6 Get printing progress
549
     case 6:   // A6 Get printing progress
549
       if (isPrintingFromMedia()) {
550
       if (isPrintingFromMedia()) {
550
-        SendtoTFT(PSTR("A6V "));
551
+        SendtoTFT(F("A6V "));
551
         TFTSer.println(ui8tostr2(getProgress_percent()));
552
         TFTSer.println(ui8tostr2(getProgress_percent()));
552
       }
553
       }
553
       else
554
       else
554
-        SendtoTFTLN(PSTR("A6V ---"));
555
+        SendtoTFTLN(F("A6V ---"));
555
       break;
556
       break;
556
 
557
 
557
     case 7: { // A7 Get Printing Time
558
     case 7: { // A7 Get Printing Time
558
       uint32_t time = getProgress_seconds_elapsed() / 60;
559
       uint32_t time = getProgress_seconds_elapsed() / 60;
559
-      SendtoTFT(PSTR("A7V "));
560
+      SendtoTFT(F("A7V "));
560
       TFTSer.print(ui8tostr2(time / 60));
561
       TFTSer.print(ui8tostr2(time / 60));
561
-      SendtoTFT(PSTR(" H "));
562
+      SendtoTFT(F(" H "));
562
       TFTSer.print(ui8tostr2(time % 60));
563
       TFTSer.print(ui8tostr2(time % 60));
563
-      SendtoTFT(PSTR(" M"));
564
+      SendtoTFT(F(" M"));
564
       #if ACDEBUG(AC_ALL)
565
       #if ACDEBUG(AC_ALL)
565
         SERIAL_ECHOLNPGM("Print time ", ui8tostr2(time / 60), ":", ui8tostr2(time % 60));
566
         SERIAL_ECHOLNPGM("Print time ", ui8tostr2(time / 60), ":", ui8tostr2(time % 60));
566
       #endif
567
       #endif
575
       break;
576
       break;
576
 
577
 
577
     case 33:   // A33 Get firmware info
578
     case 33:   // A33 Get firmware info
578
-      SendtoTFT(PSTR("J33 "));
579
+      SendtoTFT(F("J33 "));
579
       // If there is an error recorded, show that instead of the FW version
580
       // If there is an error recorded, show that instead of the FW version
580
-      if (!GetLastError()) SendtoTFTLN(PSTR(SHORT_BUILD_VERSION));
581
+      if (!GetLastError()) SendtoTFTLN(F(SHORT_BUILD_VERSION));
581
       break;
582
       break;
582
   }
583
   }
583
 }
584
 }
608
       }
609
       }
609
       else {
610
       else {
610
         if (printer_state == AC_printer_resuming_from_power_outage)
611
         if (printer_state == AC_printer_resuming_from_power_outage)
611
-          injectCommands_P(PSTR("M1000 C")); // Cancel recovery
612
+          injectCommands(F("M1000 C")); // Cancel recovery
612
         SendtoTFTLN(AC_msg_stop);
613
         SendtoTFTLN(AC_msg_stop);
613
         printer_state = AC_printer_idle;
614
         printer_state = AC_printer_idle;
614
       }
615
       }
625
     case 14: { // A14 Start Printing
626
     case 14: { // A14 Start Printing
626
       // Allows printer to restart the job if we don't want to recover
627
       // Allows printer to restart the job if we don't want to recover
627
       if (printer_state == AC_printer_resuming_from_power_outage) {
628
       if (printer_state == AC_printer_resuming_from_power_outage) {
628
-        injectCommands_P(PSTR("M1000 C")); // Cancel recovery
629
+        injectCommands(F("M1000 C")); // Cancel recovery
629
         printer_state = AC_printer_idle;
630
         printer_state = AC_printer_idle;
630
       }
631
       }
631
       #if ACDebugLevel >= 1
632
       #if ACDebugLevel >= 1
638
     case 15:   // A15 Resuming from outage
639
     case 15:   // A15 Resuming from outage
639
       if (printer_state == AC_printer_resuming_from_power_outage) {
640
       if (printer_state == AC_printer_resuming_from_power_outage) {
640
         // Need to home here to restore the Z position
641
         // Need to home here to restore the Z position
641
-        injectCommands_P(AC_cmnd_power_loss_recovery);
642
-        injectCommands_P(PSTR("M1000"));  // home and start recovery
642
+        injectCommands(AC_cmnd_power_loss_recovery);
643
+        injectCommands(F("M1000"));  // home and start recovery
643
       }
644
       }
644
       break;
645
       break;
645
 
646
 
675
       if (panel_command[4] == 'S')
676
       if (panel_command[4] == 'S')
676
         setFeedrate_percent(atoi(&panel_command[5]));
677
         setFeedrate_percent(atoi(&panel_command[5]));
677
       else {
678
       else {
678
-        SendtoTFT(PSTR("A20V "));
679
+        SendtoTFT(F("A20V "));
679
         TFTSer.println(getFeedrate_percent());
680
         TFTSer.println(getFeedrate_percent());
680
       }
681
       }
681
       break;
682
       break;
683
     case 21:   // A21 Home Axis  A21 X
684
     case 21:   // A21 Home Axis  A21 X
684
       if (!isPrinting()) {
685
       if (!isPrinting()) {
685
         switch ((char)panel_command[4]) {
686
         switch ((char)panel_command[4]) {
686
-          case 'X': injectCommands_P(PSTR("G28X")); break;
687
-          case 'Y': injectCommands_P(PSTR("G28Y")); break;
688
-          case 'Z': injectCommands_P(PSTR("G28Z")); break;
687
+          case 'X': injectCommands(F("G28X")); break;
688
+          case 'Y': injectCommands(F("G28Y")); break;
689
+          case 'Z': injectCommands(F("G28Z")); break;
689
           case 'C': injectCommands_P(G28_STR); break;
690
           case 'C': injectCommands_P(G28_STR); break;
690
         }
691
         }
691
       }
692
       }
771
       pos.y = atoi(&panel_command[FindToken('Y')+1]);
772
       pos.y = atoi(&panel_command[FindToken('Y')+1]);
772
       pos_z = getMeshPoint(pos);
773
       pos_z = getMeshPoint(pos);
773
 
774
 
774
-      SendtoTFT(PSTR("A29V "));
775
+      SendtoTFT(F("A29V "));
775
       TFTSer.println(pos_z * 100);
776
       TFTSer.println(pos_z * 100);
776
       if (!isPrinting()) {
777
       if (!isPrinting()) {
777
         setSoftEndstopState(true);  // disable endstops
778
         setSoftEndstopState(true);  // disable endstops
809
 
810
 
810
 
811
 
811
           SendtoTFTLN(AC_msg_start_probing);
812
           SendtoTFTLN(AC_msg_start_probing);
812
-          injectCommands_P(PSTR("G28\nG29"));
813
+          injectCommands(F("G28\nG29"));
813
           printer_state = AC_printer_probing;
814
           printer_state = AC_printer_probing;
814
         }
815
         }
815
       }
816
       }
823
 
824
 
824
       if (FindToken('C') != -1) { // Restore and apply original offsets
825
       if (FindToken('C') != -1) { // Restore and apply original offsets
825
         if (!isPrinting()) {
826
         if (!isPrinting()) {
826
-          injectCommands_P(PSTR("M501\nM420 S1"));
827
+          injectCommands(F("M501\nM420 S1"));
827
           selectedmeshpoint.x = selectedmeshpoint.y = 99;
828
           selectedmeshpoint.x = selectedmeshpoint.y = 99;
828
           SERIAL_ECHOLNF(AC_msg_mesh_changes_abandoned);
829
           SERIAL_ECHOLNF(AC_msg_mesh_changes_abandoned);
829
         }
830
         }
832
       else if (FindToken('D') != -1) { // Save Z Offset tables and restore leveling state
833
       else if (FindToken('D') != -1) { // Save Z Offset tables and restore leveling state
833
         if (!isPrinting()) {
834
         if (!isPrinting()) {
834
           setAxisPosition_mm(1.0,Z); // Lift nozzle before any further movements are made
835
           setAxisPosition_mm(1.0,Z); // Lift nozzle before any further movements are made
835
-          injectCommands_P(PSTR("M500"));
836
+          injectCommands(F("M500"));
836
           SERIAL_ECHOLNF(AC_msg_mesh_changes_saved);
837
           SERIAL_ECHOLNF(AC_msg_mesh_changes_saved);
837
           selectedmeshpoint.x = selectedmeshpoint.y = 99;
838
           selectedmeshpoint.x = selectedmeshpoint.y = 99;
838
         }
839
         }
839
       }
840
       }
840
 
841
 
841
       else if (FindToken('G') != -1) { // Get current offset
842
       else if (FindToken('G') != -1) { // Get current offset
842
-        SendtoTFT(PSTR("A31V "));
843
+        SendtoTFT(F("A31V "));
843
         // When printing use the live z Offset position
844
         // When printing use the live z Offset position
844
         // we will use babystepping to move the print head
845
         // we will use babystepping to move the print head
845
         if (isPrinting())
846
         if (isPrinting())
874
               babystepAxis_steps(steps, Z);
875
               babystepAxis_steps(steps, Z);
875
               live_Zoffset += Zshift;
876
               live_Zoffset += Zshift;
876
             }
877
             }
877
-            SendtoTFT(PSTR("A31V "));
878
+            SendtoTFT(F("A31V "));
878
             TFTSer.println(live_Zoffset);
879
             TFTSer.println(live_Zoffset);
879
           }
880
           }
880
           else {
881
           else {
892
             #endif
893
             #endif
893
 
894
 
894
             setZOffset_mm(currZOffset + Zshift);
895
             setZOffset_mm(currZOffset + Zshift);
895
-            SendtoTFT(PSTR("A31V "));
896
+            SendtoTFT(F("A31V "));
896
             TFTSer.println(getZOffset_mm());
897
             TFTSer.println(getZOffset_mm());
897
 
898
 
898
             if (isAxisPositionKnown(Z)) {
899
             if (isAxisPositionKnown(Z)) {
911
     case 32: { // A32 clean leveling beep flag
912
     case 32: { // A32 clean leveling beep flag
912
       // Ignore request if printing
913
       // Ignore request if printing
913
       //if (isPrinting()) break;
914
       //if (isPrinting()) break;
914
-      //injectCommands_P(PSTR("M500\nM420 S1\nG1 Z10 F240\nG1 X0 Y0 F6000"));
915
+      //injectCommands(F("M500\nM420 S1\nG1 Z10 F240\nG1 X0 Y0 F6000"));
915
       //TFTSer.println();
916
       //TFTSer.println();
916
     } break;
917
     } break;
917
 
918
 
919
 
920
 
920
     case 34: {  // A34 Adjust single mesh point A34 C/S X1 Y1 V123
921
     case 34: {  // A34 Adjust single mesh point A34 C/S X1 Y1 V123
921
       if (panel_command[3] == 'C') { // Restore original offsets
922
       if (panel_command[3] == 'C') { // Restore original offsets
922
-        injectCommands_P(PSTR("M501\nM420 S1"));
923
+        injectCommands(F("M501\nM420 S1"));
923
         selectedmeshpoint.x = selectedmeshpoint.y = 99;
924
         selectedmeshpoint.x = selectedmeshpoint.y = 99;
924
         //printer_state = AC_printer_idle;
925
         //printer_state = AC_printer_idle;
925
       }
926
       }

+ 5
- 5
Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h View File

59
   public:
59
   public:
60
     static void Startup();
60
     static void Startup();
61
     static void IdleLoop();
61
     static void IdleLoop();
62
-    static void PrinterKilled(PGM_P,PGM_P);
62
+    static void PrinterKilled(PGM_P, PGM_P);
63
     static void MediaEvent(media_event_t);
63
     static void MediaEvent(media_event_t);
64
     static void TimerEvent(timer_event_t);
64
     static void TimerEvent(timer_event_t);
65
     static void FilamentRunout();
65
     static void FilamentRunout();
66
-    static void ConfirmationRequest(const char * const );
67
-    static void StatusChange(const char * const );
66
+    static void ConfirmationRequest(const char * const);
67
+    static void StatusChange(const char * const);
68
     static void PowerLossRecovery();
68
     static void PowerLossRecovery();
69
     static void PrintComplete();
69
     static void PrintComplete();
70
-    static void SendtoTFT(PGM_P);
71
-    static void SendtoTFTLN(PGM_P);
70
+    static void SendtoTFT(FSTR_P const);
71
+    static void SendtoTFTLN(FSTR_P const);
72
   private:
72
   private:
73
     static void DetectPanelType();
73
     static void DetectPanelType();
74
     static bool ReadTFTCommand();
74
     static bool ReadTFTCommand();

+ 47
- 47
Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h View File

57
 #define AC_LOWEST_MESHPOINT_VAL         -10  // The lowest value you can set for a single mesh point offset
57
 #define AC_LOWEST_MESHPOINT_VAL         -10  // The lowest value you can set for a single mesh point offset
58
 
58
 
59
  // TFT panel commands
59
  // TFT panel commands
60
-#define  AC_msg_sd_card_inserted       PSTR("J00")
61
-#define  AC_msg_sd_card_removed        PSTR("J01")
62
-#define  AC_msg_no_sd_card             PSTR("J02")
63
-#define  AC_msg_usb_connected          PSTR("J03")
64
-#define  AC_msg_print_from_sd_card     PSTR("J04")
65
-#define  AC_msg_pause                  PSTR("J05")
66
-#define  AC_msg_nozzle_heating         PSTR("J06")
67
-#define  AC_msg_nozzle_heating_done    PSTR("J07")
68
-#define  AC_msg_bed_heating            PSTR("J08")
69
-#define  AC_msg_bed_heating_done       PSTR("J09")
70
-#define  AC_msg_nozzle_temp_abnormal   PSTR("J10")
71
-#define  AC_msg_kill_lcd               PSTR("J11")
72
-#define  AC_msg_ready                  PSTR("J12")
73
-#define  AC_msg_low_nozzle_temp        PSTR("J13")
74
-#define  AC_msg_print_complete         PSTR("J14")
75
-#define  AC_msg_filament_out_alert     PSTR("J15")
76
-#define  AC_msg_stop                   PSTR("J16")
77
-#define  AC_msg_main_board_has_reset   PSTR("J17")
78
-#define  AC_msg_paused                 PSTR("J18")
79
-#define  AC_msg_j19_unknown            PSTR("J19")
80
-#define  AC_msg_sd_file_open_success   PSTR("J20")
81
-#define  AC_msg_sd_file_open_failed    PSTR("J21")
82
-#define  AC_msg_level_monitor_finished PSTR("J22")
83
-#define  AC_msg_filament_out_block     PSTR("J23")
84
-#define  AC_msg_probing_not_allowed    PSTR("J24")
85
-#define  AC_msg_probing_complete       PSTR("J25")
86
-#define  AC_msg_start_probing          PSTR("J26")
87
-#define  AC_msg_version                PSTR("J27")
88
-#define  AC_msg_mesh_changes_abandoned PSTR("Mesh changes abandoned, previous mesh restored.")
89
-#define  AC_msg_mesh_changes_saved     PSTR("Mesh changes saved.")
90
-#define  AC_msg_old_panel_detected     PSTR("Standard TFT panel detected!")
91
-#define  AC_msg_new_panel_detected     PSTR("New TFT panel detected!")
92
-#define  AC_msg_powerloss_recovery     PSTR("Resuming from power outage! select the same SD file then press resume")
60
+#define AC_msg_sd_card_inserted        F("J00")
61
+#define AC_msg_sd_card_removed         F("J01")
62
+#define AC_msg_no_sd_card              F("J02")
63
+#define AC_msg_usb_connected           F("J03")
64
+#define AC_msg_print_from_sd_card      F("J04")
65
+#define AC_msg_pause                   F("J05")
66
+#define AC_msg_nozzle_heating          F("J06")
67
+#define AC_msg_nozzle_heating_done     F("J07")
68
+#define AC_msg_bed_heating             F("J08")
69
+#define AC_msg_bed_heating_done        F("J09")
70
+#define AC_msg_nozzle_temp_abnormal    F("J10")
71
+#define AC_msg_kill_lcd                F("J11")
72
+#define AC_msg_ready                   F("J12")
73
+#define AC_msg_low_nozzle_temp         F("J13")
74
+#define AC_msg_print_complete          F("J14")
75
+#define AC_msg_filament_out_alert      F("J15")
76
+#define AC_msg_stop                    F("J16")
77
+#define AC_msg_main_board_has_reset    F("J17")
78
+#define AC_msg_paused                  F("J18")
79
+#define AC_msg_j19_unknown             F("J19")
80
+#define AC_msg_sd_file_open_success    F("J20")
81
+#define AC_msg_sd_file_open_failed     F("J21")
82
+#define AC_msg_level_monitor_finished  F("J22")
83
+#define AC_msg_filament_out_block      F("J23")
84
+#define AC_msg_probing_not_allowed     F("J24")
85
+#define AC_msg_probing_complete        F("J25")
86
+#define AC_msg_start_probing           F("J26")
87
+#define AC_msg_version                 F("J27")
88
+#define AC_msg_mesh_changes_abandoned  F("Mesh changes abandoned, previous mesh restored.")
89
+#define AC_msg_mesh_changes_saved      F("Mesh changes saved.")
90
+#define AC_msg_old_panel_detected      F("Standard TFT panel detected!")
91
+#define AC_msg_new_panel_detected      F("New TFT panel detected!")
92
+#define AC_msg_powerloss_recovery      F("Resuming from power outage! select the same SD file then press resume")
93
 // Error messages must not contain spaces
93
 // Error messages must not contain spaces
94
-#define  AC_msg_error_bed_temp         PSTR("Abnormal_bed_temp")
95
-#define  AC_msg_error_hotend_temp      PSTR("Abnormal_hotend_temp")
96
-#define  AC_msg_error_sd_card          PSTR("SD_card_error")
97
-#define  AC_msg_filament_out           PSTR("Filament_runout")
98
-#define  AC_msg_power_loss             PSTR("Power_failure")
99
-#define  AC_msg_eeprom_version         PSTR("EEPROM_ver_wrong")
94
+#define AC_msg_error_bed_temp          F("Abnormal_bed_temp")
95
+#define AC_msg_error_hotend_temp       F("Abnormal_hotend_temp")
96
+#define AC_msg_error_sd_card           F("SD_card_error")
97
+#define AC_msg_filament_out            F("Filament_runout")
98
+#define AC_msg_power_loss              F("Power_failure")
99
+#define AC_msg_eeprom_version          F("EEPROM_ver_wrong")
100
 
100
 
101
 #define MARLIN_msg_start_probing       PSTR("Probing Point 1/25")
101
 #define MARLIN_msg_start_probing       PSTR("Probing Point 1/25")
102
 #define MARLIN_msg_probing_failed      PSTR("Probing Failed")
102
 #define MARLIN_msg_probing_failed      PSTR("Probing Failed")
113
 #define MARLIN_msg_filament_purging    PSTR("Filament Purging...")
113
 #define MARLIN_msg_filament_purging    PSTR("Filament Purging...")
114
 #define MARLIN_msg_special_pause       PSTR("PB")
114
 #define MARLIN_msg_special_pause       PSTR("PB")
115
 
115
 
116
-#define AC_cmnd_auto_unload_filament   PSTR("M701")                    // Use Marlin unload routine
117
-#define AC_cmnd_auto_load_filament     PSTR("M702 M0 PB")              // Use Marlin load routing then pause for user to clean nozzle
116
+#define AC_cmnd_auto_unload_filament   F("M701")                    // Use Marlin unload routine
117
+#define AC_cmnd_auto_load_filament     F("M702 M0 PB")              // Use Marlin load routing then pause for user to clean nozzle
118
 
118
 
119
-#define AC_cmnd_manual_load_filament   PSTR("M83\nG1 E50 F700\nM82")   // replace the manual panel commands with something a little faster
120
-#define AC_cmnd_manual_unload_filament PSTR("M83\nG1 E-50 F1200\nM82")
121
-#define AC_cmnd_enable_leveling        PSTR("M420SV")
122
-#define AC_cmnd_power_loss_recovery    PSTR("G28XYR5\nG28Z")           // Lift, home X and Y then home Z when in 'safe' position
119
+#define AC_cmnd_manual_load_filament   F("M83\nG1 E50 F700\nM82")   // replace the manual panel commands with something a little faster
120
+#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82")
121
+#define AC_cmnd_enable_leveling        F("M420SV")
122
+#define AC_cmnd_power_loss_recovery    F("G28XYR5\nG28Z")           // Lift, home X and Y then home Z when in 'safe' position
123
 
123
 
124
-#define AC_Test_for_OldPanel           PSTR("SIZE")                    // An old panel will respond with 'SXY 480 320' a new panel wont respond.
125
-#define AC_Test_for_NewPanel           PSTR("J200")                    // A new panel will respond with '[0]=0   [1]=0' to '[19]=0   '  an old panel wont respond
124
+#define AC_Test_for_OldPanel           F("SIZE")                    // An old panel will respond with 'SXY 480 320' a new panel wont respond.
125
+#define AC_Test_for_NewPanel           F("J200")                    // A new panel will respond with '[0]=0   [1]=0' to '[19]=0   '  an old panel wont respond
126
 
126
 
127
 namespace Anycubic {
127
 namespace Anycubic {
128
   enum heater_state_t : uint8_t {
128
   enum heater_state_t : uint8_t {

+ 29
- 29
Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp View File

104
   SelectedFile[0] = 0;
104
   SelectedFile[0] = 0;
105
 
105
 
106
   #if ENABLED(STARTUP_CHIME)
106
   #if ENABLED(STARTUP_CHIME)
107
-    injectCommands_P(PSTR("M300 P250 S554\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P500 S831"));
107
+    injectCommands(F("M300 P250 S554\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P500 S831"));
108
   #endif
108
   #endif
109
   #if ENABLED(ANYCUBIC_LCD_DEBUG)
109
   #if ENABLED(ANYCUBIC_LCD_DEBUG)
110
     SERIAL_ECHOLNPGM("TFT Serial Debug: Finished startup");
110
     SERIAL_ECHOLNPGM("TFT Serial Debug: Finished startup");
122
       #endif
122
       #endif
123
       mediaPrintingState = AMPRINTSTATE_NOT_PRINTING;
123
       mediaPrintingState = AMPRINTSTATE_NOT_PRINTING;
124
       mediaPauseState = AMPAUSESTATE_NOT_PAUSED;
124
       mediaPauseState = AMPAUSESTATE_NOT_PAUSED;
125
-      injectCommands_P(PSTR("M84\nM27")); // disable stepper motors and force report of SD status
125
+      injectCommands(F("M84\nM27")); // disable stepper motors and force report of SD status
126
       delay_ms(200);
126
       delay_ms(200);
127
       // tell printer to release resources of print to indicate it is done
127
       // tell printer to release resources of print to indicate it is done
128
       SENDLINE_DBG_PGM("J14", "TFT Serial Debug: SD Print Stopped... J14");
128
       SENDLINE_DBG_PGM("J14", "TFT Serial Debug: SD Print Stopped... J14");
249
             switch (SelectedDirectory[2]) {
249
             switch (SelectedDirectory[2]) {
250
               case '1': // "<01ZUp0.1>"
250
               case '1': // "<01ZUp0.1>"
251
                 SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1");
251
                 SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1");
252
-                injectCommands_P(PSTR("G91\nG1 Z+0.1\nG90"));
252
+                injectCommands(F("G91\nG1 Z+0.1\nG90"));
253
                 break;
253
                 break;
254
 
254
 
255
               case '2': // "<02ZUp0.02>"
255
               case '2': // "<02ZUp0.02>"
256
                 SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02");
256
                 SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02");
257
-                injectCommands_P(PSTR("G91\nG1 Z+0.02\nG90"));
257
+                injectCommands(F("G91\nG1 Z+0.02\nG90"));
258
                 break;
258
                 break;
259
 
259
 
260
               case '3': // "<03ZDn0.02>"
260
               case '3': // "<03ZDn0.02>"
261
                 SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02");
261
                 SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02");
262
-                injectCommands_P(PSTR("G91\nG1 Z-0.02\nG90"));
262
+                injectCommands(F("G91\nG1 Z-0.02\nG90"));
263
                 break;
263
                 break;
264
 
264
 
265
               case '4': // "<04ZDn0.1>"
265
               case '4': // "<04ZDn0.1>"
266
                 SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1");
266
                 SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1");
267
-                injectCommands_P(PSTR("G91\nG1 Z-0.1\nG90"));
267
+                injectCommands(F("G91\nG1 Z-0.1\nG90"));
268
                 break;
268
                 break;
269
 
269
 
270
               case '5': // "<05PrehtBed>"
270
               case '5': // "<05PrehtBed>"
271
                 SERIAL_ECHOLNPGM("Special Menu: Preheat Bed");
271
                 SERIAL_ECHOLNPGM("Special Menu: Preheat Bed");
272
-                injectCommands_P(PSTR("M140 S65"));
272
+                injectCommands(F("M140 S65"));
273
                 break;
273
                 break;
274
 
274
 
275
               case '6': // "<06SMeshLvl>"
275
               case '6': // "<06SMeshLvl>"
276
                 SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling");
276
                 SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling");
277
-                injectCommands_P(PSTR("G29S1"));
277
+                injectCommands(F("G29S1"));
278
                 break;
278
                 break;
279
 
279
 
280
               case '7': // "<07MeshNPnt>"
280
               case '7': // "<07MeshNPnt>"
281
                 SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point");
281
                 SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point");
282
-                injectCommands_P(PSTR("G29S2"));
282
+                injectCommands(F("G29S2"));
283
                 break;
283
                 break;
284
 
284
 
285
               case '8': // "<08HtEndPID>"
285
               case '8': // "<08HtEndPID>"
286
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID");
286
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID");
287
                 // need to dwell for half a second to give the fan a chance to start before the pid tuning starts
287
                 // need to dwell for half a second to give the fan a chance to start before the pid tuning starts
288
-                injectCommands_P(PSTR("M106 S204\nG4 P500\nM303 E0 S215 C15 U1"));
288
+                injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1"));
289
                 break;
289
                 break;
290
 
290
 
291
               case '9': // "<09HtBedPID>"
291
               case '9': // "<09HtBedPID>"
292
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid");
292
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid");
293
-                injectCommands_P(PSTR("M303 E-1 S65 C6 U1"));
293
+                injectCommands(F("M303 E-1 S65 C6 U1"));
294
                 break;
294
                 break;
295
 
295
 
296
               default:
296
               default:
302
             switch (SelectedDirectory[2]) {
302
             switch (SelectedDirectory[2]) {
303
               case '0': // "<10FWDeflts>"
303
               case '0': // "<10FWDeflts>"
304
                 SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
304
                 SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
305
-                injectCommands_P(PSTR("M502\nM300 P105 S1661\nM300 P210 S1108"));
305
+                injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108"));
306
                 break;
306
                 break;
307
 
307
 
308
               case '1': // "<11SvEEPROM>"
308
               case '1': // "<11SvEEPROM>"
309
                 SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
309
                 SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
310
-                injectCommands_P(PSTR("M500\nM300 P105 S1108\nM300 P210 S1661"));
310
+                injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661"));
311
                 break;
311
                 break;
312
 
312
 
313
               default:
313
               default:
319
             switch (SelectedDirectory[2]) {
319
             switch (SelectedDirectory[2]) {
320
               case '1': // "<01PrehtBed>"
320
               case '1': // "<01PrehtBed>"
321
                 SERIAL_ECHOLNPGM("Special Menu: Preheat Bed");
321
                 SERIAL_ECHOLNPGM("Special Menu: Preheat Bed");
322
-                injectCommands_P(PSTR("M140 S65"));
322
+                injectCommands(F("M140 S65"));
323
                 break;
323
                 break;
324
 
324
 
325
               case '2': // "<02ABL>"
325
               case '2': // "<02ABL>"
326
                 SERIAL_ECHOLNPGM("Special Menu: Auto Bed Leveling");
326
                 SERIAL_ECHOLNPGM("Special Menu: Auto Bed Leveling");
327
-                injectCommands_P(PSTR("G29N"));
327
+                injectCommands(F("G29N"));
328
                 break;
328
                 break;
329
 
329
 
330
               case '3': // "<03HtendPID>"
330
               case '3': // "<03HtendPID>"
331
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID");
331
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID");
332
                 // need to dwell for half a second to give the fan a chance to start before the pid tuning starts
332
                 // need to dwell for half a second to give the fan a chance to start before the pid tuning starts
333
-                injectCommands_P(PSTR("M106 S204\nG4 P500\nM303 E0 S215 C15 U1"));
333
+                injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1"));
334
                 break;
334
                 break;
335
 
335
 
336
               case '4': // "<04HtbedPID>"
336
               case '4': // "<04HtbedPID>"
337
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid");
337
                 SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid");
338
-                injectCommands_P(PSTR("M303 E-1 S65 C6 U1"));
338
+                injectCommands(F("M303 E-1 S65 C6 U1"));
339
                 break;
339
                 break;
340
 
340
 
341
               case '5': // "<05FWDeflts>"
341
               case '5': // "<05FWDeflts>"
342
                 SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
342
                 SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
343
-                injectCommands_P(PSTR("M502\nM300 P105 S1661\nM300 P210 S1108"));
343
+                injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108"));
344
                 break;
344
                 break;
345
 
345
 
346
               case '6': // "<06SvEEPROM>"
346
               case '6': // "<06SvEEPROM>"
347
                 SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
347
                 SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
348
-                injectCommands_P(PSTR("M500\nM300 P105 S1108\nM300 P210 S1661"));
348
+                injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661"));
349
                 break;
349
                 break;
350
 
350
 
351
               case '7': // <07SendM108>
351
               case '7': // <07SendM108>
352
                 SERIAL_ECHOLNPGM("Special Menu: Send User Confirmation");
352
                 SERIAL_ECHOLNPGM("Special Menu: Send User Confirmation");
353
-                injectCommands_P(PSTR("M108"));
353
+                injectCommands(F("M108"));
354
                 break;
354
                 break;
355
 
355
 
356
               default:
356
               default:
705
             }
705
             }
706
             else if (CodeSeen('C') && !isPrinting()) {
706
             else if (CodeSeen('C') && !isPrinting()) {
707
               if (getAxisPosition_mm(Z) < 10)
707
               if (getAxisPosition_mm(Z) < 10)
708
-                injectCommands_P(PSTR("G1 Z10")); // RASE Z AXIS
708
+                injectCommands(F("G1 Z10")); // RASE Z AXIS
709
               tempvalue = constrain(CodeValue(), 0, 275);
709
               tempvalue = constrain(CodeValue(), 0, 275);
710
               setTargetTemp_celsius(tempvalue, (extruder_t)E0);
710
               setTargetTemp_celsius(tempvalue, (extruder_t)E0);
711
             }
711
             }
756
             if (!isPrinting() && !isPrintingFromMediaPaused()) {
756
             if (!isPrinting() && !isPrintingFromMediaPaused()) {
757
               if (CodeSeen('X') || CodeSeen('Y') || CodeSeen('Z')) {
757
               if (CodeSeen('X') || CodeSeen('Y') || CodeSeen('Z')) {
758
                 if (CodeSeen('X'))
758
                 if (CodeSeen('X'))
759
-                  injectCommands_P(PSTR("G28X"));
759
+                  injectCommands(F("G28X"));
760
                 if (CodeSeen('Y'))
760
                 if (CodeSeen('Y'))
761
-                  injectCommands_P(PSTR("G28Y"));
761
+                  injectCommands(F("G28Y"));
762
                 if (CodeSeen('Z'))
762
                 if (CodeSeen('Z'))
763
-                  injectCommands_P(PSTR("G28Z"));
763
+                  injectCommands(F("G28Z"));
764
               }
764
               }
765
               else if (CodeSeen('C')) {
765
               else if (CodeSeen('C')) {
766
                 injectCommands_P(G28_STR);
766
                 injectCommands_P(G28_STR);
831
           case 23: // A23 preheat pla
831
           case 23: // A23 preheat pla
832
             if (!isPrinting()) {
832
             if (!isPrinting()) {
833
               if (getAxisPosition_mm(Z) < 10)
833
               if (getAxisPosition_mm(Z) < 10)
834
-                injectCommands_P(PSTR("G1 Z10")); // RASE Z AXIS
834
+                injectCommands(F("G1 Z10")); // RASE Z AXIS
835
 
835
 
836
               setTargetTemp_celsius(PREHEAT_1_TEMP_BED, (heater_t)BED);
836
               setTargetTemp_celsius(PREHEAT_1_TEMP_BED, (heater_t)BED);
837
               setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, (extruder_t)E0);
837
               setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, (extruder_t)E0);
842
           case 24:// A24 preheat abs
842
           case 24:// A24 preheat abs
843
             if (!isPrinting()) {
843
             if (!isPrinting()) {
844
               if (getAxisPosition_mm(Z) < 10)
844
               if (getAxisPosition_mm(Z) < 10)
845
-                injectCommands_P(PSTR("G1 Z10")); // RASE Z AXIS
845
+                injectCommands(F("G1 Z10")); // RASE Z AXIS
846
 
846
 
847
               setTargetTemp_celsius(PREHEAT_2_TEMP_BED, (heater_t)BED);
847
               setTargetTemp_celsius(PREHEAT_2_TEMP_BED, (heater_t)BED);
848
               setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, (extruder_t)E0);
848
               setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, (extruder_t)E0);
933
     if (READ(FIL_RUNOUT1_PIN)) {
933
     if (READ(FIL_RUNOUT1_PIN)) {
934
       if (mediaPrintingState == AMPRINTSTATE_PRINTING || mediaPrintingState == AMPRINTSTATE_PAUSED || mediaPrintingState == AMPRINTSTATE_PAUSE_REQUESTED) {
934
       if (mediaPrintingState == AMPRINTSTATE_PRINTING || mediaPrintingState == AMPRINTSTATE_PAUSED || mediaPrintingState == AMPRINTSTATE_PAUSE_REQUESTED) {
935
         // play tone to indicate filament is out
935
         // play tone to indicate filament is out
936
-        injectCommands_P(PSTR("\nM300 P200 S1567\nM300 P200 S1174\nM300 P200 S1567\nM300 P200 S1174\nM300 P2000 S1567"));
936
+        injectCommands(F("\nM300 P200 S1567\nM300 P200 S1174\nM300 P200 S1567\nM300 P200 S1174\nM300 P2000 S1567"));
937
 
937
 
938
         // tell the user that the filament has run out and wait
938
         // tell the user that the filament has run out and wait
939
         SENDLINE_DBG_PGM("J23", "TFT Serial Debug: Blocking filament prompt... J23");
939
         SENDLINE_DBG_PGM("J23", "TFT Serial Debug: Blocking filament prompt... J23");
969
       SENDLINE_DBG_PGM("J05", "TFT Serial Debug: SD print pause started... J05"); // J05 printing pause
969
       SENDLINE_DBG_PGM("J05", "TFT Serial Debug: SD print pause started... J05"); // J05 printing pause
970
 
970
 
971
       // for some reason pausing the print doesn't retract the extruder so force a manual one here
971
       // for some reason pausing the print doesn't retract the extruder so force a manual one here
972
-      injectCommands_P(PSTR("G91\nG1 E-2 F1800\nG90"));
972
+      injectCommands(F("G91\nG1 E-2 F1800\nG90"));
973
       pausePrint();
973
       pausePrint();
974
     }
974
     }
975
   #endif
975
   #endif
1018
     SENDLINE_DBG_PGM("J16", "TFT Serial Debug: SD print stop called... J16");
1018
     SENDLINE_DBG_PGM("J16", "TFT Serial Debug: SD print stop called... J16");
1019
 
1019
 
1020
     // for some reason stopping the print doesn't retract the extruder so force a manual one here
1020
     // for some reason stopping the print doesn't retract the extruder so force a manual one here
1021
-    injectCommands_P(PSTR("G91\nG1 E-2 F1800\nG90"));
1021
+    injectCommands(F("G91\nG1 E-2 F1800\nG90"));
1022
     stopPrint();
1022
     stopPrint();
1023
   #endif
1023
   #endif
1024
 }
1024
 }

+ 34
- 34
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp View File

52
       #endif
52
       #endif
53
 
53
 
54
       if (!ExtUI::isMediaInserted()) {
54
       if (!ExtUI::isMediaInserted()) {
55
-        dgus_screen_handler.SetStatusMessagePGM(GET_TEXT(MSG_NO_MEDIA));
55
+        dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));
56
         return;
56
         return;
57
       }
57
       }
58
 
58
 
59
       card.cdroot();
59
       card.cdroot();
60
     #else
60
     #else
61
-      dgus_screen_handler.SetStatusMessagePGM(GET_TEXT(MSG_NO_MEDIA));
61
+      dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));
62
       return;
62
       return;
63
     #endif
63
     #endif
64
   }
64
   }
65
 
65
 
66
   if (vp.addr == DGUS_Addr::SCREENCHANGE_Idle
66
   if (vp.addr == DGUS_Addr::SCREENCHANGE_Idle
67
       && (ExtUI::isPrinting() || ExtUI::isPrintingPaused())) {
67
       && (ExtUI::isPrinting() || ExtUI::isPrintingPaused())) {
68
-    dgus_screen_handler.SetStatusMessagePGM(PSTR("Impossible while printing"));
68
+    dgus_screen_handler.SetStatusMessage(F("Impossible while printing"));
69
     return;
69
     return;
70
   }
70
   }
71
 
71
 
72
   if (vp.addr == DGUS_Addr::SCREENCHANGE_Printing
72
   if (vp.addr == DGUS_Addr::SCREENCHANGE_Printing
73
       && (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused())) {
73
       && (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused())) {
74
-    dgus_screen_handler.SetStatusMessagePGM(PSTR("Impossible while idle"));
74
+    dgus_screen_handler.SetStatusMessage(F("Impossible while idle"));
75
     return;
75
     return;
76
   }
76
   }
77
 
77
 
139
     UNUSED(data_ptr);
139
     UNUSED(data_ptr);
140
 
140
 
141
     if (dgus_screen_handler.filelist_selected < 0) {
141
     if (dgus_screen_handler.filelist_selected < 0) {
142
-      dgus_screen_handler.SetStatusMessagePGM(PSTR("No file selected"));
142
+      dgus_screen_handler.SetStatusMessage(F("No file selected"));
143
       return;
143
       return;
144
     }
144
     }
145
 
145
 
149
     }
149
     }
150
 
150
 
151
     if (!dgus_screen_handler.IsPrinterIdle()) {
151
     if (!dgus_screen_handler.IsPrinterIdle()) {
152
-      dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
152
+      dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
153
       return;
153
       return;
154
     }
154
     }
155
 
155
 
207
   }
207
   }
208
 
208
 
209
   if (!dgus_screen_handler.IsPrinterIdle()) {
209
   if (!dgus_screen_handler.IsPrinterIdle()) {
210
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
210
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
211
     return;
211
     return;
212
   }
212
   }
213
 
213
 
364
     #endif
364
     #endif
365
   }
365
   }
366
 
366
 
367
-  dgus_screen_handler.SetStatusMessagePGM(PSTR("Cooling..."));
367
+  dgus_screen_handler.SetStatusMessage(F("Cooling..."));
368
 
368
 
369
   dgus_screen_handler.TriggerFullUpdate();
369
   dgus_screen_handler.TriggerFullUpdate();
370
 }
370
 }
390
   UNUSED(vp);
390
   UNUSED(vp);
391
 
391
 
392
   if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
392
   if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
393
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
393
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
394
     return;
394
     return;
395
   }
395
   }
396
 
396
 
397
   if (!dgus_screen_handler.IsPrinterIdle()) {
397
   if (!dgus_screen_handler.IsPrinterIdle()) {
398
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
398
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
399
     return;
399
     return;
400
   }
400
   }
401
 
401
 
414
   UNUSED(vp);
414
   UNUSED(vp);
415
 
415
 
416
   if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
416
   if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
417
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
417
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
418
     return;
418
     return;
419
   }
419
   }
420
 
420
 
421
   if (!dgus_screen_handler.IsPrinterIdle()) {
421
   if (!dgus_screen_handler.IsPrinterIdle()) {
422
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
422
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
423
     return;
423
     return;
424
   }
424
   }
425
 
425
 
456
   UNUSED(vp);
456
   UNUSED(vp);
457
 
457
 
458
   if (!ExtUI::isPositionKnown()) {
458
   if (!ExtUI::isPositionKnown()) {
459
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
459
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
460
     return;
460
     return;
461
   }
461
   }
462
 
462
 
463
   if (!dgus_screen_handler.IsPrinterIdle()) {
463
   if (!dgus_screen_handler.IsPrinterIdle()) {
464
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
464
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
465
     return;
465
     return;
466
   }
466
   }
467
 
467
 
506
   UNUSED(data_ptr);
506
   UNUSED(data_ptr);
507
 
507
 
508
   #if ENABLED(MESH_BED_LEVELING)
508
   #if ENABLED(MESH_BED_LEVELING)
509
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_ABL_REQUIRED);
509
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_ABL_REQUIRED));
510
     return;
510
     return;
511
   #endif
511
   #endif
512
 
512
 
513
   if (!ExtUI::isPositionKnown()) {
513
   if (!ExtUI::isPositionKnown()) {
514
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
514
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
515
     return;
515
     return;
516
   }
516
   }
517
 
517
 
518
   if (!dgus_screen_handler.IsPrinterIdle()) {
518
   if (!dgus_screen_handler.IsPrinterIdle()) {
519
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
519
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
520
     return;
520
     return;
521
   }
521
   }
522
 
522
 
535
   UNUSED(data_ptr);
535
   UNUSED(data_ptr);
536
 
536
 
537
   if (!dgus_screen_handler.IsPrinterIdle()) {
537
   if (!dgus_screen_handler.IsPrinterIdle()) {
538
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
538
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
539
     return;
539
     return;
540
   }
540
   }
541
 
541
 
576
   UNUSED(vp);
576
   UNUSED(vp);
577
 
577
 
578
   if (!dgus_screen_handler.IsPrinterIdle()) {
578
   if (!dgus_screen_handler.IsPrinterIdle()) {
579
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
579
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
580
     return;
580
     return;
581
   }
581
   }
582
 
582
 
600
   }
600
   }
601
 
601
 
602
   if (ExtUI::getActualTemp_celsius(extruder) < (float)EXTRUDE_MINTEMP) {
602
   if (ExtUI::getActualTemp_celsius(extruder) < (float)EXTRUDE_MINTEMP) {
603
-    dgus_screen_handler.SetStatusMessagePGM(PSTR("Temperature too low"));
603
+    dgus_screen_handler.SetStatusMessage(F("Temperature too low"));
604
     return;
604
     return;
605
   }
605
   }
606
 
606
 
620
   UNUSED(vp);
620
   UNUSED(vp);
621
 
621
 
622
   if (!dgus_screen_handler.IsPrinterIdle()) {
622
   if (!dgus_screen_handler.IsPrinterIdle()) {
623
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
623
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
624
     return;
624
     return;
625
   }
625
   }
626
 
626
 
664
   }
664
   }
665
 
665
 
666
   if (!ExtUI::isAxisPositionKnown(axis)) {
666
   if (!ExtUI::isAxisPositionKnown(axis)) {
667
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
667
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
668
     return;
668
     return;
669
   }
669
   }
670
 
670
 
720
   }
720
   }
721
 
721
 
722
   if (!ExtUI::isAxisPositionKnown(axis)) {
722
   if (!ExtUI::isAxisPositionKnown(axis)) {
723
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
723
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
724
     return;
724
     return;
725
   }
725
   }
726
 
726
 
757
   }
757
   }
758
 
758
 
759
   if (!dgus_screen_handler.IsPrinterIdle()) {
759
   if (!dgus_screen_handler.IsPrinterIdle()) {
760
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
760
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
761
     return;
761
     return;
762
   }
762
   }
763
 
763
 
780
   }
780
   }
781
 
781
 
782
   if (!dgus_screen_handler.IsPrinterIdle()) {
782
   if (!dgus_screen_handler.IsPrinterIdle()) {
783
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
783
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
784
     return;
784
     return;
785
   }
785
   }
786
 
786
 
798
     case DGUS_Data::Extra::BUTTON1:
798
     case DGUS_Data::Extra::BUTTON1:
799
       #if ENABLED(BLTOUCH)
799
       #if ENABLED(BLTOUCH)
800
         if (!dgus_screen_handler.IsPrinterIdle()) {
800
         if (!dgus_screen_handler.IsPrinterIdle()) {
801
-          dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
801
+          dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
802
           return;
802
           return;
803
         }
803
         }
804
 
804
 
844
   UNUSED(vp);
844
   UNUSED(vp);
845
 
845
 
846
   if (!dgus_screen_handler.IsPrinterIdle()) {
846
   if (!dgus_screen_handler.IsPrinterIdle()) {
847
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
847
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
848
     return;
848
     return;
849
   }
849
   }
850
 
850
 
875
   UNUSED(data_ptr);
875
   UNUSED(data_ptr);
876
 
876
 
877
   if (!dgus_screen_handler.IsPrinterIdle()) {
877
   if (!dgus_screen_handler.IsPrinterIdle()) {
878
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
878
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
879
     return;
879
     return;
880
   }
880
   }
881
 
881
 
889
         heater = H_BED;
889
         heater = H_BED;
890
         break;
890
         break;
891
       #else
891
       #else
892
-        dgus_screen_handler.SetStatusMessagePGM(PSTR("Bed PID disabled"));
892
+        dgus_screen_handler.SetStatusMessage(F("Bed PID disabled"));
893
         return;
893
         return;
894
       #endif
894
       #endif
895
     case DGUS_Data::Heater::H0:
895
     case DGUS_Data::Heater::H0:
897
         heater = H_E0;
897
         heater = H_E0;
898
         break;
898
         break;
899
       #else
899
       #else
900
-        dgus_screen_handler.SetStatusMessagePGM(PSTR("PID disabled"));
900
+        dgus_screen_handler.SetStatusMessage(F("PID disabled"));
901
         return;
901
         return;
902
       #endif
902
       #endif
903
     #if HOTENDS > 1
903
     #if HOTENDS > 1
906
           heater = H_E1;
906
           heater = H_E1;
907
           break;
907
           break;
908
         #else
908
         #else
909
-          dgus_screen_handler.SetStatusMessagePGM(PSTR("PID disabled"));
909
+          dgus_screen_handler.SetStatusMessage(F("PID disabled"));
910
           return;
910
           return;
911
         #endif
911
         #endif
912
     #endif
912
     #endif
936
     }
936
     }
937
 
937
 
938
     if (!dgus_screen_handler.IsPrinterIdle()) {
938
     if (!dgus_screen_handler.IsPrinterIdle()) {
939
-      dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
939
+      dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
940
       return;
940
       return;
941
     }
941
     }
942
 
942
 
955
     }
955
     }
956
 
956
 
957
     if (!dgus_screen_handler.IsPrinterIdle()) {
957
     if (!dgus_screen_handler.IsPrinterIdle()) {
958
-      dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
958
+      dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
959
       return;
959
       return;
960
     }
960
     }
961
 
961
 
962
     if (!recovery.valid()) {
962
     if (!recovery.valid()) {
963
-      dgus_screen_handler.SetStatusMessagePGM(PSTR("Invalid recovery data"));
963
+      dgus_screen_handler.SetStatusMessage(F("Invalid recovery data"));
964
       return;
964
       return;
965
     }
965
     }
966
 
966
 

+ 14
- 17
Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp View File

135
     return;
135
     return;
136
   }
136
   }
137
 
137
 
138
-  if (current_screen == DGUS_Screen::LEVELING_PROBING
139
-      && IsPrinterIdle()) {
138
+  if (current_screen == DGUS_Screen::LEVELING_PROBING && IsPrinterIdle()) {
140
     dgus_display.PlaySound(3);
139
     dgus_display.PlaySound(3);
141
 
140
 
142
-    SetStatusMessagePGM(ExtUI::getMeshValid() ?
143
-                          PSTR("Probing successful")
144
-                        : PSTR("Probing failed"));
141
+    SetStatusMessage(ExtUI::getMeshValid() ? F("Probing successful") : F("Probing failed"));
145
 
142
 
146
     MoveToScreen(DGUS_Screen::LEVELING_AUTOMATIC);
143
     MoveToScreen(DGUS_Screen::LEVELING_AUTOMATIC);
147
     return;
144
     return;
148
   }
145
   }
149
 
146
 
150
   if (status_expire > 0 && ELAPSED(ms, status_expire)) {
147
   if (status_expire > 0 && ELAPSED(ms, status_expire)) {
151
-    SetStatusMessagePGM(NUL_STR, 0);
148
+    SetStatusMessage(FPSTR(NUL_STR), 0);
152
     return;
149
     return;
153
   }
150
   }
154
 
151
 
194
     Ready();
191
     Ready();
195
   }
192
   }
196
 
193
 
197
-  SetStatusMessagePGM(PSTR("EEPROM reset"));
194
+  SetStatusMessage(F("EEPROM reset"));
198
 }
195
 }
199
 
196
 
200
 void DGUSScreenHandler::StoreSettings(char *buff) {
197
 void DGUSScreenHandler::StoreSettings(char *buff) {
229
 
226
 
230
 void DGUSScreenHandler::ConfigurationStoreWritten(bool success) {
227
 void DGUSScreenHandler::ConfigurationStoreWritten(bool success) {
231
   if (!success) {
228
   if (!success) {
232
-    SetStatusMessagePGM(PSTR("EEPROM write failed"));
229
+    SetStatusMessage(F("EEPROM write failed"));
233
   }
230
   }
234
 }
231
 }
235
 
232
 
236
 void DGUSScreenHandler::ConfigurationStoreRead(bool success) {
233
 void DGUSScreenHandler::ConfigurationStoreRead(bool success) {
237
   if (!success) {
234
   if (!success) {
238
-    SetStatusMessagePGM(PSTR("EEPROM read failed"));
235
+    SetStatusMessage(F("EEPROM read failed"));
239
   }
236
   }
240
   else if (!settings_ready) {
237
   else if (!settings_ready) {
241
     settings_ready = true;
238
     settings_ready = true;
324
   }
321
   }
325
 
322
 
326
   void DGUSScreenHandler::SDCardError() {
323
   void DGUSScreenHandler::SDCardError() {
327
-    SetStatusMessagePGM(GET_TEXT(MSG_MEDIA_READ_ERROR));
324
+    SetStatusMessage(GET_TEXT_F(MSG_MEDIA_READ_ERROR));
328
 
325
 
329
     if (current_screen == DGUS_Screen::PRINT) {
326
     if (current_screen == DGUS_Screen::PRINT) {
330
       TriggerScreenChange(DGUS_Screen::HOME);
327
       TriggerScreenChange(DGUS_Screen::HOME);
346
   void DGUSScreenHandler::PidTuning(const ExtUI::result_t rst) {
343
   void DGUSScreenHandler::PidTuning(const ExtUI::result_t rst) {
347
     switch (rst) {
344
     switch (rst) {
348
       case ExtUI::PID_STARTED:
345
       case ExtUI::PID_STARTED:
349
-        SetStatusMessagePGM(GET_TEXT(MSG_PID_AUTOTUNE));
346
+        SetStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE));
350
         break;
347
         break;
351
       case ExtUI::PID_BAD_EXTRUDER_NUM:
348
       case ExtUI::PID_BAD_EXTRUDER_NUM:
352
-        SetStatusMessagePGM(GET_TEXT(MSG_PID_BAD_EXTRUDER_NUM));
349
+        SetStatusMessage(GET_TEXT_F(MSG_PID_BAD_EXTRUDER_NUM));
353
         break;
350
         break;
354
       case ExtUI::PID_TEMP_TOO_HIGH:
351
       case ExtUI::PID_TEMP_TOO_HIGH:
355
-        SetStatusMessagePGM(GET_TEXT(MSG_PID_TEMP_TOO_HIGH));
352
+        SetStatusMessage(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH));
356
         break;
353
         break;
357
       case ExtUI::PID_TUNING_TIMEOUT:
354
       case ExtUI::PID_TUNING_TIMEOUT:
358
-        SetStatusMessagePGM(GET_TEXT(MSG_PID_TIMEOUT));
355
+        SetStatusMessage(GET_TEXT_F(MSG_PID_TIMEOUT));
359
         break;
356
         break;
360
       case ExtUI::PID_DONE:
357
       case ExtUI::PID_DONE:
361
-        SetStatusMessagePGM(GET_TEXT(MSG_PID_AUTOTUNE_DONE));
358
+        SetStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE));
362
         break;
359
         break;
363
       default:
360
       default:
364
         return;
361
         return;
411
   status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0);
408
   status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0);
412
 }
409
 }
413
 
410
 
414
-void DGUSScreenHandler::SetStatusMessagePGM(PGM_P msg, const millis_t duration) {
415
-  dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Status, msg, DGUS_STATUS_LEN, false, true);
411
+void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t duration) {
412
+  dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Status, FTOP(msg), DGUS_STATUS_LEN, false, true);
416
 
413
 
417
   status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0);
414
   status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0);
418
 }
415
 }

+ 1
- 1
Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h View File

73
   static void SetMessageLinePGM(PGM_P msg, uint8_t line);
73
   static void SetMessageLinePGM(PGM_P msg, uint8_t line);
74
 
74
 
75
   static void SetStatusMessage(const char* msg, const millis_t duration = DGUS_STATUS_EXPIRATION_MS);
75
   static void SetStatusMessage(const char* msg, const millis_t duration = DGUS_STATUS_EXPIRATION_MS);
76
-  static void SetStatusMessagePGM(PGM_P msg, const millis_t duration = DGUS_STATUS_EXPIRATION_MS);
76
+  static void SetStatusMessage(FSTR_P const msg, const millis_t duration = DGUS_STATUS_EXPIRATION_MS);
77
 
77
 
78
   static void ShowWaitScreen(DGUS_Screen return_screen, bool has_continue = false);
78
   static void ShowWaitScreen(DGUS_Screen return_screen, bool has_continue = false);
79
 
79
 

+ 5
- 5
Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp View File

68
   ExtUI::setLevelingActive(dgus_screen_handler.leveling_active);
68
   ExtUI::setLevelingActive(dgus_screen_handler.leveling_active);
69
 
69
 
70
   if (!dgus_screen_handler.IsPrinterIdle()) {
70
   if (!dgus_screen_handler.IsPrinterIdle()) {
71
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
71
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
72
     return false;
72
     return false;
73
   }
73
   }
74
 
74
 
99
   }
99
   }
100
 
100
 
101
   if (!dgus_screen_handler.IsPrinterIdle()) {
101
   if (!dgus_screen_handler.IsPrinterIdle()) {
102
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
102
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
103
     return false;
103
     return false;
104
   }
104
   }
105
 
105
 
118
   dgus_screen_handler.offset_steps = DGUS_Data::StepSize::MMP1;
118
   dgus_screen_handler.offset_steps = DGUS_Data::StepSize::MMP1;
119
 
119
 
120
   if (!dgus_screen_handler.IsPrinterIdle()) {
120
   if (!dgus_screen_handler.IsPrinterIdle()) {
121
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
121
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
122
     return false;
122
     return false;
123
   }
123
   }
124
 
124
 
175
   dgus_screen_handler.move_steps = DGUS_Data::StepSize::MM10;
175
   dgus_screen_handler.move_steps = DGUS_Data::StepSize::MM10;
176
 
176
 
177
   if (!dgus_screen_handler.IsPrinterIdle()) {
177
   if (!dgus_screen_handler.IsPrinterIdle()) {
178
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
178
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
179
     return false;
179
     return false;
180
   }
180
   }
181
 
181
 
186
   ZERO(dgus_screen_handler.gcode);
186
   ZERO(dgus_screen_handler.gcode);
187
 
187
 
188
   if (dgus_display.gui_version < 0x30 || dgus_display.os_version < 0x21) {
188
   if (dgus_display.gui_version < 0x30 || dgus_display.os_version < 0x21) {
189
-    dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_FW_OUTDATED);
189
+    dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_FW_OUTDATED));
190
     return false;
190
     return false;
191
   }
191
   }
192
 
192
 

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/status_screen.cpp View File

52
 bool  StatusScreen::fine_motion;
52
 bool  StatusScreen::fine_motion;
53
 
53
 
54
 void StatusScreen::unlockMotors() {
54
 void StatusScreen::unlockMotors() {
55
-  injectCommands_P(PSTR("M84 XY"));
55
+  injectCommands(F("M84 XY"));
56
   jog_xy = false;
56
   jog_xy = false;
57
 }
57
 }
58
 
58
 
305
     case 12:
305
     case 12:
306
       if (!jog_xy) {
306
       if (!jog_xy) {
307
         jog_xy = true;
307
         jog_xy = true;
308
-        injectCommands_P(PSTR("M17"));
308
+        injectCommands(F("M17"));
309
       }
309
       }
310
       jog({ 0, 0, 0 });
310
       jog({ 0, 0, 0 });
311
       break;
311
       break;

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp View File

81
     case 2: BedMeshViewScreen::doProbe(); break;
81
     case 2: BedMeshViewScreen::doProbe(); break;
82
     case 3: BedMeshViewScreen::show(); break;
82
     case 3: BedMeshViewScreen::show(); break;
83
     case 4: BedMeshEditScreen::show(); break;
83
     case 4: BedMeshEditScreen::show(); break;
84
-    case 5: injectCommands_P(PSTR("M280 P0 S60")); break;
84
+    case 5: injectCommands(F("M280 P0 S60")); break;
85
     case 6: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
85
     case 6: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
86
     default: return false;
86
     default: return false;
87
   }
87
   }

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp View File

86
     case  6: GOTO_SCREEN(FeedratePercentScreen);            break;
86
     case  6: GOTO_SCREEN(FeedratePercentScreen);            break;
87
     case  7: GOTO_SCREEN(FlowPercentScreen);                break;
87
     case  7: GOTO_SCREEN(FlowPercentScreen);                break;
88
     case  8: GOTO_SCREEN(AdvancedSettingsMenu);             break;
88
     case  8: GOTO_SCREEN(AdvancedSettingsMenu);             break;
89
-    case  9: injectCommands_P(PSTR("M84"));                 break;
89
+    case  9: injectCommands(F("M84"));                 break;
90
     #if HAS_LEVELING
90
     #if HAS_LEVELING
91
     case 10:  GOTO_SCREEN(LevelingMenu);                    break;
91
     case 10:  GOTO_SCREEN(LevelingMenu);                    break;
92
     #endif
92
     #endif

+ 6
- 6
Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp View File

74
     case 1: GOTO_PREVIOUS();                   break;
74
     case 1: GOTO_PREVIOUS();                   break;
75
     case 2:
75
     case 2:
76
       #ifdef COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_INT_SCRIPT
76
       #ifdef COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_INT_SCRIPT
77
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_INT_SCRIPT));
77
+        injectCommands(F(COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_INT_SCRIPT));
78
       #endif
78
       #endif
79
       GOTO_SCREEN(PreheatTimerScreen);
79
       GOTO_SCREEN(PreheatTimerScreen);
80
       break;
80
       break;
81
     case 3:
81
     case 3:
82
       #ifdef COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_INT_SCRIPT
82
       #ifdef COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_INT_SCRIPT
83
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_INT_SCRIPT));
83
+        injectCommands(F(COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_INT_SCRIPT));
84
       #endif
84
       #endif
85
       GOTO_SCREEN(PreheatTimerScreen);
85
       GOTO_SCREEN(PreheatTimerScreen);
86
       break;
86
       break;
87
     case 4:
87
     case 4:
88
       #ifdef COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_INT_SCRIPT
88
       #ifdef COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_INT_SCRIPT
89
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_INT_SCRIPT));
89
+        injectCommands(F(COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_INT_SCRIPT));
90
       #endif
90
       #endif
91
       GOTO_SCREEN(PreheatTimerScreen);
91
       GOTO_SCREEN(PreheatTimerScreen);
92
       break;
92
       break;
93
     case 5:
93
     case 5:
94
       #ifdef COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_EXT_SCRIPT
94
       #ifdef COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_EXT_SCRIPT
95
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_EXT_SCRIPT));
95
+        injectCommands(F(COCOA_PRESS_PREHEAT_DARK_CHOCOLATE_EXT_SCRIPT));
96
       #endif
96
       #endif
97
       GOTO_SCREEN(PreheatTimerScreen);
97
       GOTO_SCREEN(PreheatTimerScreen);
98
       break;
98
       break;
99
     case 6:
99
     case 6:
100
       #ifdef COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_EXT_SCRIPT
100
       #ifdef COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_EXT_SCRIPT
101
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_EXT_SCRIPT));
101
+        injectCommands(F(COCOA_PRESS_PREHEAT_MILK_CHOCOLATE_EXT_SCRIPT));
102
       #endif
102
       #endif
103
       GOTO_SCREEN(PreheatTimerScreen);
103
       GOTO_SCREEN(PreheatTimerScreen);
104
       break;
104
       break;
105
     case 7:
105
     case 7:
106
       #ifdef COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_EXT_SCRIPT
106
       #ifdef COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_EXT_SCRIPT
107
-        injectCommands_P(PSTR(COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_EXT_SCRIPT));
107
+        injectCommands(F(COCOA_PRESS_PREHEAT_WHITE_CHOCOLATE_EXT_SCRIPT));
108
       #endif
108
       #endif
109
       GOTO_SCREEN(PreheatTimerScreen);
109
       GOTO_SCREEN(PreheatTimerScreen);
110
       break;
110
       break;

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp View File

174
     case 1:
174
     case 1:
175
       // On Cancel, reload saved mesh, discarding changes
175
       // On Cancel, reload saved mesh, discarding changes
176
       GOTO_PREVIOUS();
176
       GOTO_PREVIOUS();
177
-      injectCommands_P(PSTR("G29 L1"));
177
+      injectCommands(F("G29 L1"));
178
       return true;
178
       return true;
179
     case 2:
179
     case 2:
180
       saveAdjustedHighlightedValue();
180
       saveAdjustedHighlightedValue();
181
-      injectCommands_P(PSTR("G29 S1"));
181
+      injectCommands(F("G29 S1"));
182
       mydata.needSave = false;
182
       mydata.needSave = false;
183
       return true;
183
       return true;
184
     case 3:
184
     case 3:

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp View File

154
 void BedMeshViewScreen::doProbe() {
154
 void BedMeshViewScreen::doProbe() {
155
   GOTO_SCREEN(BedMeshViewScreen);
155
   GOTO_SCREEN(BedMeshViewScreen);
156
   mydata.count = 0;
156
   mydata.count = 0;
157
-  injectCommands_P(PSTR(BED_LEVELING_COMMANDS));
157
+  injectCommands(F(BED_LEVELING_COMMANDS));
158
 }
158
 }
159
 
159
 
160
 void BedMeshViewScreen::show() {
160
 void BedMeshViewScreen::show() {
161
-  injectCommands_P(PSTR("G29 L1"));
161
+  injectCommands(F("G29 L1"));
162
   GOTO_SCREEN(BedMeshViewScreen);
162
   GOTO_SCREEN(BedMeshViewScreen);
163
 }
163
 }
164
 
164
 

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/confirm_auto_calibration_dialog_box.cpp View File

37
   switch (tag) {
37
   switch (tag) {
38
     case 1:
38
     case 1:
39
       GOTO_SCREEN(StatusScreen);
39
       GOTO_SCREEN(StatusScreen);
40
-      injectCommands_P(PSTR("G425"));
40
+      injectCommands(F("G425"));
41
       return true;
41
       return true;
42
     default:
42
     default:
43
       return DialogBoxBaseClass::onTouchEnd(tag);
43
       return DialogBoxBaseClass::onTouchEnd(tag);

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp View File

33
 #define _USER_DESC(N) MAIN_MENU_ITEM_##N##_DESC
33
 #define _USER_DESC(N) MAIN_MENU_ITEM_##N##_DESC
34
 #define _USER_GCODE(N) MAIN_MENU_ITEM_##N##_GCODE
34
 #define _USER_GCODE(N) MAIN_MENU_ITEM_##N##_GCODE
35
 #define _USER_ITEM(N) .tag(_ITEM_TAG(N)).button(USER_ITEM_POS(N), _USER_DESC(N))
35
 #define _USER_ITEM(N) .tag(_ITEM_TAG(N)).button(USER_ITEM_POS(N), _USER_DESC(N))
36
-#define _USER_ACTION(N) case _ITEM_TAG(N): injectCommands_P(PSTR(_USER_GCODE(N))); TERN_(USER_SCRIPT_RETURN, GOTO_SCREEN(StatusScreen)); break;
36
+#define _USER_ACTION(N) case _ITEM_TAG(N): injectCommands(F(_USER_GCODE(N))); TERN_(USER_SCRIPT_RETURN, GOTO_SCREEN(StatusScreen)); break;
37
 
37
 
38
 void CustomUserMenus::onRedraw(draw_mode_t what) {
38
 void CustomUserMenus::onRedraw(draw_mode_t what) {
39
   if (what & BACKGROUND) {
39
   if (what & BACKGROUND) {

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp View File

125
     #if ENABLED(G26_MESH_VALIDATION)
125
     #if ENABLED(G26_MESH_VALIDATION)
126
       case 6:
126
       case 6:
127
         GOTO_SCREEN(StatusScreen);
127
         GOTO_SCREEN(StatusScreen);
128
-        injectCommands_P(PSTR("G28\nM117 Heating...\nG26 R X0 Y0\nG27"));
128
+        injectCommands(F("G28\nM117 Heating...\nG26 R X0 Y0\nG27"));
129
         break;
129
         break;
130
     #endif
130
     #endif
131
     #if ENABLED(BLTOUCH)
131
     #if ENABLED(BLTOUCH)
132
-      case 7: injectCommands_P(PSTR("M280 P0 S60")); break;
132
+      case 7: injectCommands(F("M280 P0 S60")); break;
133
       case 8: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
133
       case 8: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
134
     #endif
134
     #endif
135
     default: return false;
135
     default: return false;

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp View File

106
     case 1:  SaveSettingsDialogBox::promptToSaveSettings();           break;
106
     case 1:  SaveSettingsDialogBox::promptToSaveSettings();           break;
107
     case 2:  SpinnerDialogBox::enqueueAndWait(F("G28"));            break;
107
     case 2:  SpinnerDialogBox::enqueueAndWait(F("G28"));            break;
108
     #if ENABLED(NOZZLE_CLEAN_FEATURE)
108
     #if ENABLED(NOZZLE_CLEAN_FEATURE)
109
-      case 3: injectCommands_P(PSTR("G12")); GOTO_SCREEN(StatusScreen); break;
109
+      case 3: injectCommands(F("G12")); GOTO_SCREEN(StatusScreen); break;
110
     #endif
110
     #endif
111
     case 4:  GOTO_SCREEN(MoveAxisScreen);                             break;
111
     case 4:  GOTO_SCREEN(MoveAxisScreen);                             break;
112
-    case 5:  injectCommands_P(PSTR("M84"));                           break;
112
+    case 5:  injectCommands(F("M84"));                           break;
113
     case 6:  GOTO_SCREEN(TemperatureScreen);                          break;
113
     case 6:  GOTO_SCREEN(TemperatureScreen);                          break;
114
     case 7:  GOTO_SCREEN(ChangeFilamentScreen);                       break;
114
     case 7:  GOTO_SCREEN(ChangeFilamentScreen);                       break;
115
     case 8:  GOTO_SCREEN(AdvancedSettingsMenu);                       break;
115
     case 8:  GOTO_SCREEN(AdvancedSettingsMenu);                       break;

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/restore_failsafe_dialog_box.cpp View File

35
 bool RestoreFailsafeDialogBox::onTouchEnd(uint8_t tag) {
35
 bool RestoreFailsafeDialogBox::onTouchEnd(uint8_t tag) {
36
   switch (tag) {
36
   switch (tag) {
37
     case 1:
37
     case 1:
38
-      ExtUI::injectCommands_P(PSTR("M502"));
38
+      ExtUI::injectCommands(F("M502"));
39
       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_RESET));
39
       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_RESET));
40
       // Remove RestoreFailsafeDialogBox from the stack
40
       // Remove RestoreFailsafeDialogBox from the stack
41
       // so the alert box doesn't return to it.
41
       // so the alert box doesn't return to it.

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/save_settings_dialog_box.cpp View File

38
   needs_save = false;
38
   needs_save = false;
39
   switch (tag) {
39
   switch (tag) {
40
     case 1:
40
     case 1:
41
-      injectCommands_P(PSTR("M500"));
41
+      injectCommands(F("M500"));
42
       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_SAVED));
42
       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_SAVED));
43
       // Remove SaveSettingsDialogBox from the stack
43
       // Remove SaveSettingsDialogBox from the stack
44
       // so the alert box doesn't return to me.
44
       // so the alert box doesn't return to me.

+ 7
- 7
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.cpp View File

60
 void SpinnerDialogBox::onRedraw(draw_mode_t) {
60
 void SpinnerDialogBox::onRedraw(draw_mode_t) {
61
 }
61
 }
62
 
62
 
63
-void SpinnerDialogBox::show(FSTR_P message) {
63
+void SpinnerDialogBox::show(FSTR_P fstr) {
64
   CommandProcessor cmd;
64
   CommandProcessor cmd;
65
   if (AT_SCREEN(SpinnerDialogBox)) cmd.stop().execute();
65
   if (AT_SCREEN(SpinnerDialogBox)) cmd.stop().execute();
66
   cmd.cmd(CMD_DLSTART)
66
   cmd.cmd(CMD_DLSTART)
68
      .cmd(CLEAR(true,true,true))
68
      .cmd(CLEAR(true,true,true))
69
      .cmd(COLOR_RGB(bg_text_enabled))
69
      .cmd(COLOR_RGB(bg_text_enabled))
70
      .tag(0);
70
      .tag(0);
71
-  draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,3), message, OPT_CENTER, font_large);
71
+  draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,3), fstr, OPT_CENTER, font_large);
72
   DLCache dlcache(SPINNER_CACHE);
72
   DLCache dlcache(SPINNER_CACHE);
73
   if (!dlcache.store(SPINNER_DL_SIZE)) {
73
   if (!dlcache.store(SPINNER_DL_SIZE)) {
74
     SERIAL_ECHO_MSG("CachedScreen::storeBackground() failed: not enough DL cache space");
74
     SERIAL_ECHO_MSG("CachedScreen::storeBackground() failed: not enough DL cache space");
86
   GOTO_PREVIOUS();
86
   GOTO_PREVIOUS();
87
 }
87
 }
88
 
88
 
89
-void SpinnerDialogBox::enqueueAndWait(FSTR_P message, FSTR_P commands) {
90
-  show(message);
91
-  ExtUI::injectCommands_P((const char*)commands);
89
+void SpinnerDialogBox::enqueueAndWait(FSTR_P fstr, FSTR_P commands) {
90
+  show(fstr);
91
+  ExtUI::injectCommands(commands);
92
   mydata.auto_hide = true;
92
   mydata.auto_hide = true;
93
 }
93
 }
94
 
94
 
95
-void SpinnerDialogBox::enqueueAndWait(FSTR_P message, char *commands) {
96
-  show(message);
95
+void SpinnerDialogBox::enqueueAndWait(FSTR_P fstr, char *commands) {
96
+  show(fstr);
97
   ExtUI::injectCommands(commands);
97
   ExtUI::injectCommands(commands);
98
   mydata.auto_hide = true;
98
   mydata.auto_hide = true;
99
 }
99
 }

+ 2
- 2
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/stress_test_screen.cpp View File

84
   // whether or not we need to re-run the test
84
   // whether or not we need to re-run the test
85
   // at startup.
85
   // at startup.
86
   LockScreen::set_hash(enable ? 0xDEAD : 0);
86
   LockScreen::set_hash(enable ? 0xDEAD : 0);
87
-  injectCommands_P(PSTR("M500"));
87
+  injectCommands(F("M500"));
88
 }
88
 }
89
 
89
 
90
 void StressTestScreen::startupCheck() {
90
 void StressTestScreen::startupCheck() {
122
       injectCommands_P(G28_STR);
122
       injectCommands_P(G28_STR);
123
     }
123
     }
124
     else {
124
     else {
125
-      injectCommands_P(PSTR(
125
+      injectCommands(F(
126
         "G0 X100 Y100 Z100 F6000\n"
126
         "G0 X100 Y100 Z100 F6000\n"
127
         "T0\nG4 S1"
127
         "T0\nG4 S1"
128
         E_TERN_("\nT1\nG4 S1")
128
         E_TERN_("\nT1\nG4 S1")

+ 18
- 18
Marlin/src/lcd/extui/nextion/FileNavigator.cpp View File

83
   #endif
83
   #endif
84
 
84
 
85
   if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder
85
   if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder
86
-    nextion.SendtoTFT(PSTR("vis p0,1"));
87
-    nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
86
+    nextion.SendtoTFT(F("vis p0,1"));
87
+    nextion.SendtoTFT(F("\xFF\xFF\xFF"));
88
     SEND_VAL("tmpUP", "0");
88
     SEND_VAL("tmpUP", "0");
89
     files--;
89
     files--;
90
   }
90
   }
91
   else {
91
   else {
92
-    nextion.SendtoTFT(PSTR("vis p0,0"));
93
-    nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
92
+    nextion.SendtoTFT(F("vis p0,0"));
93
+    nextion.SendtoTFT(F("\xFF\xFF\xFF"));
94
   }
94
   }
95
 
95
 
96
   for (uint16_t seek = currentindex; seek < currentindex + files; seek++) {
96
   for (uint16_t seek = currentindex; seek < currentindex + files; seek++) {
97
     if (filelist.seek(seek)) {
97
     if (filelist.seek(seek)) {
98
-      nextion.SendtoTFT(PSTR("s"));
98
+      nextion.SendtoTFT(F("s"));
99
       LCD_SERIAL.print(fcnt);
99
       LCD_SERIAL.print(fcnt);
100
-      nextion.SendtoTFT(PSTR(".txt=\""));
100
+      nextion.SendtoTFT(F(".txt=\""));
101
       if (filelist.isDir()) {
101
       if (filelist.isDir()) {
102
         LCD_SERIAL.print(filelist.shortFilename());
102
         LCD_SERIAL.print(filelist.shortFilename());
103
-        nextion.SendtoTFT(PSTR("/\""));
104
-        nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
103
+        nextion.SendtoTFT(F("/\""));
104
+        nextion.SendtoTFT(F("\xFF\xFF\xFF"));
105
 
105
 
106
-        nextion.SendtoTFT(PSTR("l"));
106
+        nextion.SendtoTFT(F("l"));
107
         LCD_SERIAL.print(fcnt);
107
         LCD_SERIAL.print(fcnt);
108
-        nextion.SendtoTFT(PSTR(".txt=\""));
108
+        nextion.SendtoTFT(F(".txt=\""));
109
         LCD_SERIAL.print(filelist.filename());
109
         LCD_SERIAL.print(filelist.filename());
110
-        nextion.SendtoTFT(PSTR("\""));
111
-        nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
110
+        nextion.SendtoTFT(F("\""));
111
+        nextion.SendtoTFT(F("\xFF\xFF\xFF"));
112
         SEND_PCO2("l", fcnt, "1055");
112
         SEND_PCO2("l", fcnt, "1055");
113
       }
113
       }
114
       else {
114
       else {
115
         LCD_SERIAL.print(currentfoldername);
115
         LCD_SERIAL.print(currentfoldername);
116
         LCD_SERIAL.print(filelist.shortFilename());
116
         LCD_SERIAL.print(filelist.shortFilename());
117
-        nextion.SendtoTFT(PSTR("\""));
118
-        nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
117
+        nextion.SendtoTFT(F("\""));
118
+        nextion.SendtoTFT(F("\xFF\xFF\xFF"));
119
 
119
 
120
-        nextion.SendtoTFT(PSTR("l"));
120
+        nextion.SendtoTFT(F("l"));
121
         LCD_SERIAL.print(fcnt);
121
         LCD_SERIAL.print(fcnt);
122
-        nextion.SendtoTFT(PSTR(".txt=\""));
122
+        nextion.SendtoTFT(F(".txt=\""));
123
         LCD_SERIAL.print(filelist.longFilename());
123
         LCD_SERIAL.print(filelist.longFilename());
124
-        nextion.SendtoTFT(PSTR("\""));
125
-        nextion.SendtoTFT(PSTR("\xFF\xFF\xFF"));
124
+        nextion.SendtoTFT(F("\""));
125
+        nextion.SendtoTFT(F("\xFF\xFF\xFF"));
126
       }
126
       }
127
       fcnt++;
127
       fcnt++;
128
       fseek = seek;
128
       fseek = seek;

+ 7
- 7
Marlin/src/lcd/extui/nextion/nextion_tft.cpp View File

110
   SEND_VALasTXT("tmppage.M117", msg);
110
   SEND_VALasTXT("tmppage.M117", msg);
111
 }
111
 }
112
 
112
 
113
-void NextionTFT::SendtoTFT(PGM_P str) { // A helper to print PROGMEM string to the panel
113
+void NextionTFT::SendtoTFT(FSTR_P fstr) { // A helper to print PROGMEM string to the panel
114
   #if NEXDEBUG(N_SOME)
114
   #if NEXDEBUG(N_SOME)
115
-    DEBUG_ECHOPGM_P(str);
115
+    DEBUG_ECHOF(fstr);
116
   #endif
116
   #endif
117
-  while (const char c = pgm_read_byte(str++))
118
-    LCD_SERIAL.write(c);
117
+  PGM_P str = FTOP(fstr);
118
+  while (const char c = pgm_read_byte(str++)) LCD_SERIAL.write(c);
119
 }
119
 }
120
 
120
 
121
 bool NextionTFT::ReadTFTCommand() {
121
 bool NextionTFT::ReadTFTCommand() {
522
 
522
 
523
     case 66: // Refresh SD
523
     case 66: // Refresh SD
524
       if (!isPrinting()) {
524
       if (!isPrinting()) {
525
-        injectCommands_P(PSTR("M21"));
525
+        injectCommands(F("M21"));
526
         filenavigator.reset();
526
         filenavigator.reset();
527
       }
527
       }
528
       break;
528
       break;
546
       #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
546
       #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
547
         if (canMove(getActiveTool())) {
547
         if (canMove(getActiveTool())) {
548
           switch (nextion_command[4]) {
548
           switch (nextion_command[4]) {
549
-            case 'L': injectCommands_P(PSTR("M701")); break;
550
-            case 'U': injectCommands_P(PSTR("M702")); break;
549
+            case 'L': injectCommands(F("M701")); break;
550
+            case 'U': injectCommands(F("M702")); break;
551
           }
551
           }
552
         }
552
         }
553
         else {
553
         else {

+ 3
- 3
Marlin/src/lcd/extui/nextion/nextion_tft.h View File

43
     static void Startup();
43
     static void Startup();
44
     static void IdleLoop();
44
     static void IdleLoop();
45
     static void PrinterKilled(PGM_P, PGM_P);
45
     static void PrinterKilled(PGM_P, PGM_P);
46
-    static void ConfirmationRequest(const char * const );
47
-    static void StatusChange(const char * const );
48
-    static void SendtoTFT(PGM_P);
46
+    static void ConfirmationRequest(const char * const);
47
+    static void StatusChange(const char * const);
48
+    static void SendtoTFT(FSTR_P const);
49
     static void UpdateOnChange();
49
     static void UpdateOnChange();
50
     static void PrintFinished();
50
     static void PrintFinished();
51
     static void PanelInfo(uint8_t);
51
     static void PanelInfo(uint8_t);

+ 7
- 7
Marlin/src/lcd/extui/nextion/nextion_tft_defs.h View File

54
  // TFT panel commands
54
  // TFT panel commands
55
 #define  msg_welcome                MACHINE_NAME " Ready."
55
 #define  msg_welcome                MACHINE_NAME " Ready."
56
 
56
 
57
-#define SEND_TEMP(x,y,t,z)  (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(PSTR(t)), LCD_SERIAL.print(z), nextion.SendtoTFT(PSTR("\"\xFF\xFF\xFF")))
58
-#define SEND_VAL(x,y)       (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR(".val=")),   LCD_SERIAL.print(y), nextion.SendtoTFT(PSTR("\xFF\xFF\xFF")))
59
-#define SEND_TXT(x,y)       (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR(".txt=\"")), nextion.SendtoTFT(PSTR(y)),  nextion.SendtoTFT(PSTR("\"\xFF\xFF\xFF")))
60
-#define SEND_TXT_P(x,y)     (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR(".txt=\"")), nextion.SendtoTFT(y), nextion.SendtoTFT(PSTR("\"\xFF\xFF\xFF")))
61
-#define SEND_VALasTXT(x,y)  (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(PSTR("\"\xFF\xFF\xFF")))
62
-#define SEND_TXT_END(x)     (nextion.SendtoTFT(PSTR(x)), nextion.SendtoTFT(PSTR("\xFF\xFF\xFF")))
63
-#define SEND_PCO2(x,y,z)    (nextion.SendtoTFT(PSTR(x)), LCD_SERIAL.print(y), nextion.SendtoTFT(PSTR(".pco=")), nextion.SendtoTFT(PSTR(z)), nextion.SendtoTFT(PSTR("\xFF\xFF\xFF")))
57
+#define SEND_TEMP(x,y,t,z)  (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(F(t)), LCD_SERIAL.print(z), nextion.SendtoTFT(F("\"\xFF\xFF\xFF")))
58
+#define SEND_VAL(x,y)       (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".val=")),   LCD_SERIAL.print(y), nextion.SendtoTFT(F("\xFF\xFF\xFF")))
59
+#define SEND_TXT(x,y)       (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), nextion.SendtoTFT(F(y)),  nextion.SendtoTFT(F("\"\xFF\xFF\xFF")))
60
+#define SEND_TXT_P(x,y)     (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), nextion.SendtoTFT(y), nextion.SendtoTFT(F("\"\xFF\xFF\xFF")))
61
+#define SEND_VALasTXT(x,y)  (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(F("\"\xFF\xFF\xFF")))
62
+#define SEND_TXT_END(x)     (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F("\xFF\xFF\xFF")))
63
+#define SEND_PCO2(x,y,z)    (nextion.SendtoTFT(F(x)), LCD_SERIAL.print(y), nextion.SendtoTFT(F(".pco=")), nextion.SendtoTFT(F(z)), nextion.SendtoTFT(F("\xFF\xFF\xFF")))

+ 6
- 6
Marlin/src/lcd/extui/ui_api.cpp View File

1077
   void resumePrint() { ui.resume_print(); }
1077
   void resumePrint() { ui.resume_print(); }
1078
   void stopPrint()   { ui.abort_print(); }
1078
   void stopPrint()   { ui.abort_print(); }
1079
 
1079
 
1080
-  void onUserConfirmRequired_P(PGM_P const pstr) {
1081
-    char msg[strlen_P(pstr) + 1];
1082
-    strcpy_P(msg, pstr);
1080
+  void onUserConfirmRequired(FSTR_P const fstr) {
1081
+    char msg[strlen_P(FTOP(fstr)) + 1];
1082
+    strcpy_P(msg, FTOP(fstr));
1083
     onUserConfirmRequired(msg);
1083
     onUserConfirmRequired(msg);
1084
   }
1084
   }
1085
 
1085
 
1086
-  void onStatusChanged_P(PGM_P const pstr) {
1087
-    char msg[strlen_P(pstr) + 1];
1088
-    strcpy_P(msg, pstr);
1086
+  void onStatusChanged(FSTR_P const fstr) {
1087
+    char msg[strlen_P(FTOP(fstr)) + 1];
1088
+    strcpy_P(msg, FTOP(fstr));
1089
     onStatusChanged(msg);
1089
     onStatusChanged(msg);
1090
   }
1090
   }
1091
 
1091
 

+ 3
- 2
Marlin/src/lcd/extui/ui_api.h View File

79
   bool canMove(const axis_t);
79
   bool canMove(const axis_t);
80
   bool canMove(const extruder_t);
80
   bool canMove(const extruder_t);
81
   void injectCommands_P(PGM_P const);
81
   void injectCommands_P(PGM_P const);
82
+  inline void injectCommands(FSTR_P const fstr) { injectCommands_P(FTOP(fstr)); }
82
   void injectCommands(char * const);
83
   void injectCommands(char * const);
83
   bool commandsInQueue();
84
   bool commandsInQueue();
84
 
85
 
400
   void onPrintFinished();
401
   void onPrintFinished();
401
   void onFilamentRunout(const extruder_t extruder);
402
   void onFilamentRunout(const extruder_t extruder);
402
   void onUserConfirmRequired(const char * const msg);
403
   void onUserConfirmRequired(const char * const msg);
403
-  void onUserConfirmRequired_P(PGM_P const pstr);
404
+  void onUserConfirmRequired(FSTR_P const fstr);
404
   void onStatusChanged(const char * const msg);
405
   void onStatusChanged(const char * const msg);
405
-  void onStatusChanged_P(PGM_P const pstr);
406
+  void onStatusChanged(FSTR_P const fstr);
406
   void onHomingStart();
407
   void onHomingStart();
407
   void onHomingComplete();
408
   void onHomingComplete();
408
   void onSteppersDisabled();
409
   void onSteppersDisabled();

+ 11
- 11
Marlin/src/lcd/marlinui.cpp View File

1741
     pause_mode = mode;
1741
     pause_mode = mode;
1742
     ExtUI::pauseModeStatus = message;
1742
     ExtUI::pauseModeStatus = message;
1743
     switch (message) {
1743
     switch (message) {
1744
-      case PAUSE_MESSAGE_PARKING:  ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_PAUSE_PRINT_PARKING));
1745
-      case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_INIT));
1746
-      case PAUSE_MESSAGE_UNLOAD:   ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_UNLOAD));
1747
-      case PAUSE_MESSAGE_WAITING:  ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_ADVANCED_PAUSE_WAITING));
1748
-      case PAUSE_MESSAGE_INSERT:   ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_INSERT));
1749
-      case PAUSE_MESSAGE_LOAD:     ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_LOAD));
1744
+      case PAUSE_MESSAGE_PARKING:  ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING));
1745
+      case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT));
1746
+      case PAUSE_MESSAGE_UNLOAD:   ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD));
1747
+      case PAUSE_MESSAGE_WAITING:  ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING));
1748
+      case PAUSE_MESSAGE_INSERT:   ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT));
1749
+      case PAUSE_MESSAGE_LOAD:     ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD));
1750
       case PAUSE_MESSAGE_PURGE:
1750
       case PAUSE_MESSAGE_PURGE:
1751
-        ExtUI::onUserConfirmRequired_P(GET_TEXT(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE)));
1752
-      case PAUSE_MESSAGE_RESUME:   ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_RESUME));
1753
-      case PAUSE_MESSAGE_HEAT:     ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_HEAT));
1754
-      case PAUSE_MESSAGE_HEATING:  ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_HEATING));
1755
-      case PAUSE_MESSAGE_OPTION:   ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_OPTION_HEADER));
1751
+        ExtUI::onUserConfirmRequired(GET_TEXT_F(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE)));
1752
+      case PAUSE_MESSAGE_RESUME:   ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME));
1753
+      case PAUSE_MESSAGE_HEAT:     ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT));
1754
+      case PAUSE_MESSAGE_HEATING:  ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING));
1755
+      case PAUSE_MESSAGE_OPTION:   ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER));
1756
       case PAUSE_MESSAGE_STATUS:
1756
       case PAUSE_MESSAGE_STATUS:
1757
       default: break;
1757
       default: break;
1758
     }
1758
     }

+ 1
- 1
Marlin/src/lcd/menu/menu_delta_calibrate.cpp View File

65
     _man_probe_pt(xy);
65
     _man_probe_pt(xy);
66
     ui.defer_status_screen();
66
     ui.defer_status_screen();
67
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("Delta Calibration in progress"), FPSTR(CONTINUE_STR)));
67
     TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("Delta Calibration in progress"), FPSTR(CONTINUE_STR)));
68
-    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("Delta Calibration in progress")));
68
+    TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Delta Calibration in progress")));
69
     TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
69
     TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
70
     ui.goto_previous_screen_no_defer();
70
     ui.goto_previous_screen_no_defer();
71
     return current_position.z;
71
     return current_position.z;

+ 1
- 1
Marlin/src/module/probe.cpp View File

296
       SERIAL_ECHOLNF(ds_str);
296
       SERIAL_ECHOLNF(ds_str);
297
 
297
 
298
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("Stow Probe"), FPSTR(CONTINUE_STR)));
298
       TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, F("Stow Probe"), FPSTR(CONTINUE_STR)));
299
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("Stow Probe")));
299
+      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Stow Probe")));
300
       TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_Popup_Confirm(ICON_BLTouch, PSTR("Stow Probe"), CONTINUE_STR));
300
       TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_Popup_Confirm(ICON_BLTouch, PSTR("Stow Probe"), CONTINUE_STR));
301
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
301
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
302
       ui.reset_status();
302
       ui.reset_status();

Loading…
Cancel
Save