Browse Source

🎨 Apply F() to G-code subcommands

Scott Lahteine 3 years ago
parent
commit
59dac3a7e4

+ 7
- 7
Marlin/src/feature/bedlevel/ubl/ubl.cpp View File

281
       }
281
       }
282
     #endif
282
     #endif
283
 
283
 
284
-    process_subcommands_now_P(G28_STR);               // Home
285
-    process_subcommands_now_P(PSTR(ALIGN_GCODE "\n"   // Align multi z axis if available
286
-                                   PROBE_GCODE "\n"   // Build mesh with available hardware
287
-                                   "G29P3\nG29P3"));  // Ensure mesh is complete by running smart fill twice
284
+    process_subcommands_now(FPSTR(G28_STR));      // Home
285
+    process_subcommands_now(F(ALIGN_GCODE "\n"    // Align multi z axis if available
286
+                              PROBE_GCODE "\n"    // Build mesh with available hardware
287
+                              "G29P3\nG29P3"));   // Ensure mesh is complete by running smart fill twice
288
 
288
 
289
     if (parser.seenval('S')) {
289
     if (parser.seenval('S')) {
290
       char umw_gcode[32];
290
       char umw_gcode[32];
292
       queue.inject(umw_gcode);
292
       queue.inject(umw_gcode);
293
     }
293
     }
294
 
294
 
295
-    process_subcommands_now_P(PSTR("G29A\nG29F10\n"   // Set UBL Active & Fade 10
296
-                                   "M140S0\nM104S0\n" // Turn off heaters
297
-                                   "M500"));          // Store settings
295
+    process_subcommands_now(F("G29A\nG29F10\n"    // Set UBL Active & Fade 10
296
+                              "M140S0\nM104S0\n"  // Turn off heaters
297
+                              "M500"));           // Store settings
298
   }
298
   }
299
 
299
 
300
 #endif // UBL_MESH_WIZARD
300
 #endif // UBL_MESH_WIZARD

+ 1
- 1
Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp View File

656
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Probe End Script: ", Z_PROBE_END_SCRIPT);
656
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Probe End Script: ", Z_PROBE_END_SCRIPT);
657
     if (probe_deployed) {
657
     if (probe_deployed) {
658
       planner.synchronize();
658
       planner.synchronize();
659
-      gcode.process_subcommands_now_P(PSTR(Z_PROBE_END_SCRIPT));
659
+      gcode.process_subcommands_now(F(Z_PROBE_END_SCRIPT));
660
     }
660
     }
661
   #else
661
   #else
662
     UNUSED(probe_deployed);
662
     UNUSED(probe_deployed);

+ 2
- 2
Marlin/src/feature/power.cpp View File

82
   TERN_(HAS_TRINAMIC_CONFIG, safe_delay(PSU_POWERUP_DELAY));
82
   TERN_(HAS_TRINAMIC_CONFIG, safe_delay(PSU_POWERUP_DELAY));
83
 
83
 
84
   #ifdef PSU_POWERUP_GCODE
84
   #ifdef PSU_POWERUP_GCODE
85
-    GcodeSuite::process_subcommands_now_P(PSTR(PSU_POWERUP_GCODE));
85
+    gcode.process_subcommands_now(F(PSU_POWERUP_GCODE));
86
   #endif
86
   #endif
87
 }
87
 }
88
 
88
 
95
   if (!psu_on) return;
95
   if (!psu_on) return;
96
 
96
 
97
   #ifdef PSU_POWEROFF_GCODE
97
   #ifdef PSU_POWEROFF_GCODE
98
-    GcodeSuite::process_subcommands_now_P(PSTR(PSU_POWEROFF_GCODE));
98
+    gcode.process_subcommands_now(F(PSU_POWEROFF_GCODE));
99
   #endif
99
   #endif
100
 
100
 
101
   #if ENABLED(PS_OFF_SOUND)
101
   #if ENABLED(PS_OFF_SOUND)

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

244
 
244
 
245
         #if POWER_LOSS_RETRACT_LEN
245
         #if POWER_LOSS_RETRACT_LEN
246
           // Retract filament now
246
           // Retract filament now
247
-          gcode.process_subcommands_now_P(PSTR("G1 F3000 E-" STRINGIFY(POWER_LOSS_RETRACT_LEN)));
247
+          gcode.process_subcommands_now(F("G1 F3000 E-" STRINGIFY(POWER_LOSS_RETRACT_LEN)));
248
         #endif
248
         #endif
249
 
249
 
250
         #if POWER_LOSS_ZRAISE
250
         #if POWER_LOSS_ZRAISE
337
 
337
 
338
   #if HAS_LEVELING
338
   #if HAS_LEVELING
339
     // Make sure leveling is off before any G92 and G28
339
     // Make sure leveling is off before any G92 and G28
340
-    gcode.process_subcommands_now_P(PSTR("M420 S0 Z0"));
340
+    gcode.process_subcommands_now(F("M420 S0 Z0"));
341
   #endif
341
   #endif
342
 
342
 
343
   #if HAS_HEATED_BED
343
   #if HAS_HEATED_BED
373
   // establish the current position as best we can.
373
   // establish the current position as best we can.
374
   //
374
   //
375
 
375
 
376
-  gcode.process_subcommands_now_P(PSTR("G92.9E0")); // Reset E to 0
376
+  gcode.process_subcommands_now(F("G92.9E0")); // Reset E to 0
377
 
377
 
378
   #if Z_HOME_TO_MAX
378
   #if Z_HOME_TO_MAX
379
 
379
 
410
     }
410
     }
411
 
411
 
412
     // Home XY with no Z raise, and also home Z here if Z isn't homing down below.
412
     // Home XY with no Z raise, and also home Z here if Z isn't homing down below.
413
-    gcode.process_subcommands_now_P(PSTR("G28R0" TERN_(HOME_XY_ONLY, "XY"))); // No raise during G28
413
+    gcode.process_subcommands_now(F("G28R0" TERN_(HOME_XY_ONLY, "XY"))); // No raise during G28
414
 
414
 
415
   #endif
415
   #endif
416
 
416
 
513
 
513
 
514
   // Un-retract if there was a retract at outage
514
   // Un-retract if there was a retract at outage
515
   #if ENABLED(BACKUP_POWER_SUPPLY) && POWER_LOSS_RETRACT_LEN > 0
515
   #if ENABLED(BACKUP_POWER_SUPPLY) && POWER_LOSS_RETRACT_LEN > 0
516
-    gcode.process_subcommands_now_P(PSTR("G1E" STRINGIFY(POWER_LOSS_RETRACT_LEN) "F3000"));
516
+    gcode.process_subcommands_now(F("G1E" STRINGIFY(POWER_LOSS_RETRACT_LEN) "F3000"));
517
   #endif
517
   #endif
518
 
518
 
519
   // Additional purge on resume if configured
519
   // Additional purge on resume if configured
523
   #endif
523
   #endif
524
 
524
 
525
   #if ENABLED(NOZZLE_CLEAN_FEATURE)
525
   #if ENABLED(NOZZLE_CLEAN_FEATURE)
526
-    gcode.process_subcommands_now_P(PSTR("G12"));
526
+    gcode.process_subcommands_now(F("G12"));
527
   #endif
527
   #endif
528
 
528
 
529
   // Move back over to the saved XY
529
   // Move back over to the saved XY

+ 1
- 1
Marlin/src/gcode/bedlevel/G35.cpp View File

92
   TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false));
92
   TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false));
93
 
93
 
94
   // Home only Z axis when X and Y is trusted, otherwise all axes, if needed before this procedure
94
   // Home only Z axis when X and Y is trusted, otherwise all axes, if needed before this procedure
95
-  if (!all_axes_trusted()) process_subcommands_now_P(PSTR("G28Z"));
95
+  if (!all_axes_trusted()) process_subcommands_now(F("G28Z"));
96
 
96
 
97
   bool err_break = false;
97
   bool err_break = false;
98
 
98
 

+ 2
- 2
Marlin/src/gcode/bedlevel/abl/G29.cpp View File

244
 
244
 
245
   // Send 'N' to force homing before G29 (internal only)
245
   // Send 'N' to force homing before G29 (internal only)
246
   if (parser.seen_test('N'))
246
   if (parser.seen_test('N'))
247
-    process_subcommands_now_P(TERN(CAN_SET_LEVELING_AFTER_G28, PSTR("G28L0"), G28_STR));
247
+    process_subcommands_now(TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR)));
248
 
248
 
249
   // Don't allow auto-leveling without homing first
249
   // Don't allow auto-leveling without homing first
250
   if (homing_needed_error()) G29_RETURN(false);
250
   if (homing_needed_error()) G29_RETURN(false);
882
   #ifdef Z_PROBE_END_SCRIPT
882
   #ifdef Z_PROBE_END_SCRIPT
883
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Probe End Script: ", Z_PROBE_END_SCRIPT);
883
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Probe End Script: ", Z_PROBE_END_SCRIPT);
884
     planner.synchronize();
884
     planner.synchronize();
885
-    process_subcommands_now_P(PSTR(Z_PROBE_END_SCRIPT));
885
+    process_subcommands_now(F(Z_PROBE_END_SCRIPT));
886
   #endif
886
   #endif
887
 
887
 
888
   TERN_(HAS_DWIN_E3V2_BASIC, DWIN_CompletedLeveling());
888
   TERN_(HAS_DWIN_E3V2_BASIC, DWIN_CompletedLeveling());

+ 2
- 2
Marlin/src/gcode/calibrate/G34.cpp View File

47
   TemporaryGlobalEndstopsState unlock_z(false);
47
   TemporaryGlobalEndstopsState unlock_z(false);
48
 
48
 
49
   #ifdef GANTRY_CALIBRATION_COMMANDS_PRE
49
   #ifdef GANTRY_CALIBRATION_COMMANDS_PRE
50
-    gcode.process_subcommands_now_P(PSTR(GANTRY_CALIBRATION_COMMANDS_PRE));
50
+    process_subcommands_now(F(GANTRY_CALIBRATION_COMMANDS_PRE));
51
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Sub Commands Processed");
51
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Sub Commands Processed");
52
   #endif
52
   #endif
53
 
53
 
148
 
148
 
149
   #ifdef GANTRY_CALIBRATION_COMMANDS_POST
149
   #ifdef GANTRY_CALIBRATION_COMMANDS_POST
150
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Running Post Commands");
150
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Running Post Commands");
151
-    gcode.process_subcommands_now_P(PSTR(GANTRY_CALIBRATION_COMMANDS_POST));
151
+    process_subcommands_now(F(GANTRY_CALIBRATION_COMMANDS_POST));
152
   #endif
152
   #endif
153
 
153
 
154
   SET_SOFT_ENDSTOP_LOOSE(false);
154
   SET_SOFT_ENDSTOP_LOOSE(false);

+ 1
- 1
Marlin/src/gcode/calibrate/G34_M422.cpp View File

433
         // After this operation the z position needs correction
433
         // After this operation the z position needs correction
434
         set_axis_never_homed(Z_AXIS);
434
         set_axis_never_homed(Z_AXIS);
435
         // Home Z after the alignment procedure
435
         // Home Z after the alignment procedure
436
-        process_subcommands_now_P(PSTR("G28Z"));
436
+        process_subcommands_now(F("G28Z"));
437
       #else
437
       #else
438
         // Use the probed height from the last iteration to determine the Z height.
438
         // Use the probed height from the last iteration to determine the Z height.
439
         // z_measured_min is used, because all steppers are aligned to z_measured_min.
439
         // z_measured_min is used, because all steppers are aligned to z_measured_min.

+ 2
- 2
Marlin/src/gcode/calibrate/G425.cpp View File

709
 void GcodeSuite::G425() {
709
 void GcodeSuite::G425() {
710
 
710
 
711
   #ifdef CALIBRATION_SCRIPT_PRE
711
   #ifdef CALIBRATION_SCRIPT_PRE
712
-    GcodeSuite::process_subcommands_now_P(PSTR(CALIBRATION_SCRIPT_PRE));
712
+    process_subcommands_now(F(CALIBRATION_SCRIPT_PRE));
713
   #endif
713
   #endif
714
 
714
 
715
   if (homing_needed_error()) return;
715
   if (homing_needed_error()) return;
745
   SET_SOFT_ENDSTOP_LOOSE(false);
745
   SET_SOFT_ENDSTOP_LOOSE(false);
746
 
746
 
747
   #ifdef CALIBRATION_SCRIPT_POST
747
   #ifdef CALIBRATION_SCRIPT_POST
748
-    GcodeSuite::process_subcommands_now_P(PSTR(CALIBRATION_SCRIPT_POST));
748
+    process_subcommands_now(F(CALIBRATION_SCRIPT_POST));
749
   #endif
749
   #endif
750
 }
750
 }
751
 
751
 

+ 1
- 1
Marlin/src/gcode/calibrate/G76_M192_M871.cpp View File

158
       return;
158
       return;
159
     }
159
     }
160
 
160
 
161
-    process_subcommands_now_P(G28_STR);
161
+    process_subcommands_now(FPSTR(G28_STR));
162
   }
162
   }
163
 
163
 
164
   remember_feedrate_scaling_off();
164
   remember_feedrate_scaling_off();

+ 1
- 1
Marlin/src/gcode/control/M605.cpp View File

110
       set_duplication_enabled(false);
110
       set_duplication_enabled(false);
111
 
111
 
112
       #ifdef EVENT_GCODE_IDEX_AFTER_MODECHANGE
112
       #ifdef EVENT_GCODE_IDEX_AFTER_MODECHANGE
113
-        gcode.process_subcommands_now_P(PSTR(EVENT_GCODE_IDEX_AFTER_MODECHANGE));
113
+        process_subcommands_now(F(EVENT_GCODE_IDEX_AFTER_MODECHANGE));
114
       #endif
114
       #endif
115
     }
115
     }
116
     else if (!parser.seen('W'))  // if no S or W parameter, the DXC mode gets reset to the user's default
116
     else if (!parser.seen('W'))  // if no S or W parameter, the DXC mode gets reset to the user's default

+ 7
- 7
Marlin/src/gcode/feature/L6470/M916-918.cpp View File

138
     do {
138
     do {
139
       // turn the motor(s) both directions
139
       // turn the motor(s) both directions
140
       sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(final_feedrate));
140
       sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(final_feedrate));
141
-      gcode.process_subcommands_now_P(gcode_string);
141
+      process_subcommands_now(gcode_string);
142
 
142
 
143
       sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(final_feedrate));
143
       sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(final_feedrate));
144
-      gcode.process_subcommands_now_P(gcode_string);
144
+      process_subcommands_now(gcode_string);
145
 
145
 
146
       // get the status after the motors have stopped
146
       // get the status after the motors have stopped
147
       planner.synchronize();
147
       planner.synchronize();
266
     DEBUG_ECHOLNPGM("   OCD threshold : ", (OCD_TH_val + 1) * 375);
266
     DEBUG_ECHOLNPGM("   OCD threshold : ", (OCD_TH_val + 1) * 375);
267
 
267
 
268
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(final_feedrate));
268
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(final_feedrate));
269
-    gcode.process_subcommands_now_P(gcode_string);
269
+    process_subcommands_now(gcode_string);
270
 
270
 
271
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(final_feedrate));
271
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(final_feedrate));
272
-    gcode.process_subcommands_now_P(gcode_string);
272
+    process_subcommands_now(gcode_string);
273
 
273
 
274
     planner.synchronize();
274
     planner.synchronize();
275
 
275
 
308
             L64xxManager.set_param(axis_index[j], L6470_KVAL_HOLD, kval_hold);
308
             L64xxManager.set_param(axis_index[j], L6470_KVAL_HOLD, kval_hold);
309
         }
309
         }
310
         DEBUG_ECHOLNPGM(".");
310
         DEBUG_ECHOLNPGM(".");
311
-        gcode.reset_stepper_timeout(); // keep steppers powered
311
+        reset_stepper_timeout(); // keep steppers powered
312
         watchdog_refresh();
312
         watchdog_refresh();
313
         safe_delay(5000);
313
         safe_delay(5000);
314
         status_composite_temp = 0;
314
         status_composite_temp = 0;
615
     DEBUG_ECHOLNPGM("...feedrate = ", current_feedrate);
615
     DEBUG_ECHOLNPGM("...feedrate = ", current_feedrate);
616
 
616
 
617
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(current_feedrate));
617
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_min), uint16_t(current_feedrate));
618
-    gcode.process_subcommands_now_P(gcode_string);
618
+    process_subcommands_now(gcode_string);
619
 
619
 
620
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(current_feedrate));
620
     sprintf_P(gcode_string, PSTR("G0 %s%03d F%03d"), temp_axis_string, uint16_t(position_max), uint16_t(current_feedrate));
621
-    gcode.process_subcommands_now_P(gcode_string);
621
+    process_subcommands_now(gcode_string);
622
 
622
 
623
     planner.synchronize();
623
     planner.synchronize();
624
 
624
 

+ 1
- 1
Marlin/src/gcode/feature/clean/G12.cpp View File

50
 
50
 
51
   #ifdef WIPE_SEQUENCE_COMMANDS
51
   #ifdef WIPE_SEQUENCE_COMMANDS
52
     if (!parser.seen_any()) {
52
     if (!parser.seen_any()) {
53
-      gcode.process_subcommands_now_P(PSTR(WIPE_SEQUENCE_COMMANDS));
53
+      process_subcommands_now(F(WIPE_SEQUENCE_COMMANDS));
54
       return;
54
       return;
55
     }
55
     }
56
   #endif
56
   #endif

+ 5
- 4
Marlin/src/gcode/gcode.cpp View File

242
       host_action(PSTR(ACTION_ON_G29_RECOVER));
242
       host_action(PSTR(ACTION_ON_G29_RECOVER));
243
     #endif
243
     #endif
244
     #ifdef G29_RECOVER_COMMANDS
244
     #ifdef G29_RECOVER_COMMANDS
245
-      process_subcommands_now_P(PSTR(G29_RECOVER_COMMANDS));
245
+      process_subcommands_now(F(G29_RECOVER_COMMANDS));
246
     #endif
246
     #endif
247
   }
247
   }
248
 
248
 
255
       host_action(PSTR(ACTION_ON_G29_FAILURE));
255
       host_action(PSTR(ACTION_ON_G29_FAILURE));
256
     #endif
256
     #endif
257
     #ifdef G29_FAILURE_COMMANDS
257
     #ifdef G29_FAILURE_COMMANDS
258
-      process_subcommands_now_P(PSTR(G29_FAILURE_COMMANDS));
258
+      process_subcommands_now(F(G29_FAILURE_COMMANDS));
259
     #endif
259
     #endif
260
     #if ENABLED(G29_HALT_ON_FAILURE)
260
     #if ENABLED(G29_HALT_ON_FAILURE)
261
       #ifdef ACTION_ON_CANCEL
261
       #ifdef ACTION_ON_CANCEL
285
     TERN_(HOST_PROMPT_SUPPORT, host_action_prompt_end());
285
     TERN_(HOST_PROMPT_SUPPORT, host_action_prompt_end());
286
 
286
 
287
     #ifdef G29_SUCCESS_COMMANDS
287
     #ifdef G29_SUCCESS_COMMANDS
288
-      process_subcommands_now_P(PSTR(G29_SUCCESS_COMMANDS));
288
+      process_subcommands_now(F(G29_SUCCESS_COMMANDS));
289
     #endif
289
     #endif
290
   }
290
   }
291
 
291
 
1100
  * G-code "macros" to be called from within other G-code handlers.
1100
  * G-code "macros" to be called from within other G-code handlers.
1101
  */
1101
  */
1102
 
1102
 
1103
-void GcodeSuite::process_subcommands_now_P(PGM_P pgcode) {
1103
+void GcodeSuite::process_subcommands_now(FSTR_P fgcode) {
1104
+  PGM_P pgcode = FTOP(fgcode);
1104
   char * const saved_cmd = parser.command_ptr;        // Save the parser state
1105
   char * const saved_cmd = parser.command_ptr;        // Save the parser state
1105
   for (;;) {
1106
   for (;;) {
1106
     PGM_P const delim = strchr_P(pgcode, '\n');       // Get address of next newline
1107
     PGM_P const delim = strchr_P(pgcode, '\n');       // Get address of next newline

+ 2
- 2
Marlin/src/gcode/gcode.h View File

397
   static void process_next_command();
397
   static void process_next_command();
398
 
398
 
399
   // Execute G-code in-place, preserving current G-code parameters
399
   // Execute G-code in-place, preserving current G-code parameters
400
-  static void process_subcommands_now_P(PGM_P pgcode);
400
+  static void process_subcommands_now(FSTR_P fgcode);
401
   static void process_subcommands_now(char * gcode);
401
   static void process_subcommands_now(char * gcode);
402
 
402
 
403
   static inline void home_all_axes(const bool keep_leveling=false) {
403
   static inline void home_all_axes(const bool keep_leveling=false) {
404
-    process_subcommands_now_P(keep_leveling ? G28_STR : TERN(CAN_SET_LEVELING_AFTER_G28, PSTR("G28L0"), G28_STR));
404
+    process_subcommands_now(keep_leveling ? FPSTR(G28_STR) : TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR)));
405
   }
405
   }
406
 
406
 
407
   #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE)
407
   #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE)

+ 1
- 1
Marlin/src/gcode/motion/G2_G3.cpp View File

403
     else {
403
     else {
404
       #if ENABLED(CNC_WORKSPACE_PLANES)
404
       #if ENABLED(CNC_WORKSPACE_PLANES)
405
         char achar, bchar;
405
         char achar, bchar;
406
-        switch (gcode.workspace_plane) {
406
+        switch (workspace_plane) {
407
           default:
407
           default:
408
           case GcodeSuite::PLANE_XY: achar = 'I'; bchar = 'J'; break;
408
           case GcodeSuite::PLANE_XY: achar = 'I'; bchar = 'J'; break;
409
           case GcodeSuite::PLANE_YZ: achar = 'J'; bchar = 'K'; break;
409
           case GcodeSuite::PLANE_YZ: achar = 'J'; bchar = 'K'; break;

+ 4
- 4
Marlin/src/gcode/queue.cpp View File

693
 
693
 
694
   void GCodeQueue::report_buffer_statistics() {
694
   void GCodeQueue::report_buffer_statistics() {
695
     SERIAL_ECHOLNPGM("D576"
695
     SERIAL_ECHOLNPGM("D576"
696
-      " P:", planner.moves_free(),         " ", -queue.planner_buffer_underruns, " (", queue.max_planner_buffer_empty_duration, ")"
697
-      " B:", BUFSIZE - ring_buffer.length, " ", -queue.command_buffer_underruns, " (", queue.max_command_buffer_empty_duration, ")"
696
+      " P:", planner.moves_free(),         " ", -planner_buffer_underruns, " (", max_planner_buffer_empty_duration, ")"
697
+      " B:", BUFSIZE - ring_buffer.length, " ", -command_buffer_underruns, " (", max_command_buffer_empty_duration, ")"
698
     );
698
     );
699
     command_buffer_underruns = planner_buffer_underruns = 0;
699
     command_buffer_underruns = planner_buffer_underruns = 0;
700
     max_command_buffer_empty_duration = max_planner_buffer_empty_duration = 0;
700
     max_command_buffer_empty_duration = max_planner_buffer_empty_duration = 0;
717
       NOLESS(max_planner_buffer_empty_duration, planner_buffer_empty_duration); // if it's longer than the currently tracked max duration, replace it
717
       NOLESS(max_planner_buffer_empty_duration, planner_buffer_empty_duration); // if it's longer than the currently tracked max duration, replace it
718
     }
718
     }
719
 
719
 
720
-    if (queue.auto_buffer_report_interval && ELAPSED(ms, queue.next_buffer_report_ms)) {
721
-      queue.next_buffer_report_ms = ms + 1000UL * queue.auto_buffer_report_interval;
720
+    if (auto_buffer_report_interval && ELAPSED(ms, next_buffer_report_ms)) {
721
+      next_buffer_report_ms = ms + 1000UL * auto_buffer_report_interval;
722
       PORT_REDIRECT(SERIAL_BOTH);
722
       PORT_REDIRECT(SERIAL_BOTH);
723
       report_buffer_statistics();
723
       report_buffer_statistics();
724
       PORT_RESTORE();
724
       PORT_RESTORE();

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

77
 
77
 
78
   // Report total print time
78
   // Report total print time
79
   const bool long_print = print_job_timer.duration() > 60;
79
   const bool long_print = print_job_timer.duration() > 60;
80
-  if (long_print) gcode.process_subcommands_now_P(PSTR("M31"));
80
+  if (long_print) process_subcommands_now(F("M31"));
81
 
81
 
82
   // Stop the print job timer
82
   // Stop the print job timer
83
-  gcode.process_subcommands_now_P(PSTR("M77"));
83
+  process_subcommands_now(F("M77"));
84
 
84
 
85
   // Set the progress bar "done" state
85
   // Set the progress bar "done" state
86
   TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress_done());
86
   TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress_done());
104
 
104
 
105
   // Inject SD_FINISHED_RELEASECOMMAND, if any
105
   // Inject SD_FINISHED_RELEASECOMMAND, if any
106
   #ifdef SD_FINISHED_RELEASECOMMAND
106
   #ifdef SD_FINISHED_RELEASECOMMAND
107
-    gcode.process_subcommands_now_P(PSTR(SD_FINISHED_RELEASECOMMAND));
107
+    process_subcommands_now(F(SD_FINISHED_RELEASECOMMAND));
108
   #endif
108
   #endif
109
 
109
 
110
   TERN_(EXTENSIBLE_UI, ExtUI::onPrintFinished());
110
   TERN_(EXTENSIBLE_UI, ExtUI::onPrintFinished());

+ 5
- 5
Marlin/src/lcd/e3v2/enhanced/dwin.cpp View File

2172
       dtostrf(Y_CENTER, 1, 1, str_2)
2172
       dtostrf(Y_CENTER, 1, 1, str_2)
2173
     #endif
2173
     #endif
2174
   );
2174
   );
2175
-  gcode.process_subcommands_now_P(cmd);
2175
+  gcode.process_subcommands_now(cmd);
2176
   planner.synchronize();
2176
   planner.synchronize();
2177
   ui.set_status_P(PSTR("Now adjust Z Offset"));
2177
   ui.set_status_P(PSTR("Now adjust Z Offset"));
2178
   HMI_AudioFeedback(true);
2178
   HMI_AudioFeedback(true);
2185
     dtostrf(X_CENTER, 1, 1, str_1),
2185
     dtostrf(X_CENTER, 1, 1, str_1),
2186
     dtostrf(Y_CENTER, 1, 1, str_2)
2186
     dtostrf(Y_CENTER, 1, 1, str_2)
2187
   );
2187
   );
2188
-  gcode.process_subcommands_now_P(cmd);
2188
+  gcode.process_subcommands_now(cmd);
2189
   planner.synchronize();
2189
   planner.synchronize();
2190
   thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true);
2190
   thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true);
2191
 }
2191
 }
2375
 
2375
 
2376
   #if HAS_ONESTEP_LEVELING
2376
   #if HAS_ONESTEP_LEVELING
2377
     planner.synchronize();
2377
     planner.synchronize();
2378
-    gcode.process_subcommands_now_P(PSTR("M420S0\nG28O"));
2378
+    gcode.process_subcommands_now(F("M420S0\nG28O"));
2379
     planner.synchronize();
2379
     planner.synchronize();
2380
     zval = probe.probe_at_point(xpos, ypos, PROBE_PT_STOW);
2380
     zval = probe.probe_at_point(xpos, ypos, PROBE_PT_STOW);
2381
     sprintf_P(cmd, PSTR(fmt),
2381
     sprintf_P(cmd, PSTR(fmt),
2401
 
2401
 
2402
   void ManualMeshStart(){
2402
   void ManualMeshStart(){
2403
     ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
2403
     ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
2404
-    gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
2404
+    gcode.process_subcommands_now(F("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
2405
     planner.synchronize();
2405
     planner.synchronize();
2406
     #ifdef MANUAL_PROBE_START_Z
2406
     #ifdef MANUAL_PROBE_START_Z
2407
       const uint8_t line = CurrentMenu->line(MMeshMoveZItem->pos);
2407
       const uint8_t line = CurrentMenu->line(MMeshMoveZItem->pos);
2419
   void SetMMeshMoveZ() { SetPFloatOnClick(-1, 1, 2, planner.synchronize, LiveMeshMoveZ);}
2419
   void SetMMeshMoveZ() { SetPFloatOnClick(-1, 1, 2, planner.synchronize, LiveMeshMoveZ);}
2420
 
2420
 
2421
   void ManualMeshContinue(){
2421
   void ManualMeshContinue(){
2422
-    gcode.process_subcommands_now_P(PSTR("G29S2"));
2422
+    gcode.process_subcommands_now(F("G29S2"));
2423
     planner.synchronize();
2423
     planner.synchronize();
2424
     MMeshMoveZItem->draw(CurrentMenu->line(MMeshMoveZItem->pos));
2424
     MMeshMoveZItem->draw(CurrentMenu->line(MMeshMoveZItem->pos));
2425
   }
2425
   }

+ 66
- 65
Marlin/src/lcd/e3v2/jyersui/dwin.cpp View File

207
 
207
 
208
       void manual_value_update(bool undefined=false) {
208
       void manual_value_update(bool undefined=false) {
209
         sprintf_P(cmd, PSTR("M421 I%i J%i Z%s %s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1), undefined ? "N" : "");
209
         sprintf_P(cmd, PSTR("M421 I%i J%i Z%s %s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1), undefined ? "N" : "");
210
-        gcode.process_subcommands_now_P(cmd);
210
+        gcode.process_subcommands_now(cmd);
211
         planner.synchronize();
211
         planner.synchronize();
212
       }
212
       }
213
 
213
 
267
 
267
 
268
       void manual_value_update() {
268
       void manual_value_update() {
269
         sprintf_P(cmd, PSTR("G29 I%i J%i Z%s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1));
269
         sprintf_P(cmd, PSTR("G29 I%i J%i Z%s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1));
270
-        gcode.process_subcommands_now_P(cmd);
270
+        gcode.process_subcommands_now(cmd);
271
         planner.synchronize();
271
         planner.synchronize();
272
       }
272
       }
273
 
273
 
283
       else {
283
       else {
284
         CrealityDWIN.Popup_Handler(MoveWait);
284
         CrealityDWIN.Popup_Handler(MoveWait);
285
         sprintf_P(cmd, PSTR("G0 F300 Z%s"), dtostrf(Z_CLEARANCE_BETWEEN_PROBES, 1, 3, str_1));
285
         sprintf_P(cmd, PSTR("G0 F300 Z%s"), dtostrf(Z_CLEARANCE_BETWEEN_PROBES, 1, 3, str_1));
286
-        gcode.process_subcommands_now_P(cmd);
286
+        gcode.process_subcommands_now(cmd);
287
         sprintf_P(cmd, PSTR("G42 F4000 I%i J%i"), mesh_x, mesh_y);
287
         sprintf_P(cmd, PSTR("G42 F4000 I%i J%i"), mesh_x, mesh_y);
288
-        gcode.process_subcommands_now_P(cmd);
288
+        gcode.process_subcommands_now(cmd);
289
         planner.synchronize();
289
         planner.synchronize();
290
         current_position.z = goto_mesh_value ? Z_VALUES_ARR[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES;
290
         current_position.z = goto_mesh_value ? Z_VALUES_ARR[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES;
291
         planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder);
291
         planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder);
1116
                   }
1116
                   }
1117
                   Popup_Handler(FilChange);
1117
                   Popup_Handler(FilChange);
1118
                   sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
1118
                   sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
1119
-                  gcode.process_subcommands_now_P(cmd);
1119
+                  gcode.process_subcommands_now(cmd);
1120
                 }
1120
                 }
1121
               #endif
1121
               #endif
1122
             }
1122
             }
1156
             Draw_Menu_Item(row, ICON_MoveX, "Home X");
1156
             Draw_Menu_Item(row, ICON_MoveX, "Home X");
1157
           else {
1157
           else {
1158
             Popup_Handler(Home);
1158
             Popup_Handler(Home);
1159
-            gcode.process_subcommands_now_P(PSTR("G28 X"));
1159
+            gcode.process_subcommands_now(F("G28 X"));
1160
             planner.synchronize();
1160
             planner.synchronize();
1161
             Redraw_Menu();
1161
             Redraw_Menu();
1162
           }
1162
           }
1166
             Draw_Menu_Item(row, ICON_MoveY, "Home Y");
1166
             Draw_Menu_Item(row, ICON_MoveY, "Home Y");
1167
           else {
1167
           else {
1168
             Popup_Handler(Home);
1168
             Popup_Handler(Home);
1169
-            gcode.process_subcommands_now_P(PSTR("G28 Y"));
1169
+            gcode.process_subcommands_now(F("G28 Y"));
1170
             planner.synchronize();
1170
             planner.synchronize();
1171
             Redraw_Menu();
1171
             Redraw_Menu();
1172
           }
1172
           }
1176
             Draw_Menu_Item(row, ICON_MoveZ,"Home Z");
1176
             Draw_Menu_Item(row, ICON_MoveZ,"Home Z");
1177
           else {
1177
           else {
1178
             Popup_Handler(Home);
1178
             Popup_Handler(Home);
1179
-            gcode.process_subcommands_now_P(PSTR("G28 Z"));
1179
+            gcode.process_subcommands_now(F("G28 Z"));
1180
             planner.synchronize();
1180
             planner.synchronize();
1181
             Redraw_Menu();
1181
             Redraw_Menu();
1182
           }
1182
           }
1185
           if (draw)
1185
           if (draw)
1186
             Draw_Menu_Item(row, ICON_SetHome, "Set Home Position");
1186
             Draw_Menu_Item(row, ICON_SetHome, "Set Home Position");
1187
           else {
1187
           else {
1188
-            gcode.process_subcommands_now_P(PSTR("G92 X0 Y0 Z0"));
1188
+            gcode.process_subcommands_now(F("G92 X0 Y0 Z0"));
1189
             AudioFeedback();
1189
             AudioFeedback();
1190
           }
1190
           }
1191
           break;
1191
           break;
1350
             if (use_probe) {
1350
             if (use_probe) {
1351
               #if HAS_BED_PROBE
1351
               #if HAS_BED_PROBE
1352
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2));
1352
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2));
1353
-                gcode.process_subcommands_now_P(cmd);
1353
+                gcode.process_subcommands_now(cmd);
1354
                 planner.synchronize();
1354
                 planner.synchronize();
1355
                 Popup_Handler(ManualProbing);
1355
                 Popup_Handler(ManualProbing);
1356
               #endif
1356
               #endif
1357
             }
1357
             }
1358
             else {
1358
             else {
1359
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1359
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1360
-              gcode.process_subcommands_now_P(cmd);
1360
+              gcode.process_subcommands_now(cmd);
1361
               planner.synchronize();
1361
               planner.synchronize();
1362
               Redraw_Menu();
1362
               Redraw_Menu();
1363
             }
1363
             }
1371
             if (use_probe) {
1371
             if (use_probe) {
1372
               #if HAS_BED_PROBE
1372
               #if HAS_BED_PROBE
1373
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2));
1373
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2));
1374
-                gcode.process_subcommands_now_P(cmd);
1374
+                gcode.process_subcommands_now(cmd);
1375
                 planner.synchronize();
1375
                 planner.synchronize();
1376
                 Popup_Handler(ManualProbing);
1376
                 Popup_Handler(ManualProbing);
1377
               #endif
1377
               #endif
1378
             }
1378
             }
1379
             else {
1379
             else {
1380
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1380
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1381
-              gcode.process_subcommands_now_P(cmd);
1381
+              gcode.process_subcommands_now(cmd);
1382
               planner.synchronize();
1382
               planner.synchronize();
1383
               Redraw_Menu();
1383
               Redraw_Menu();
1384
             }
1384
             }
1392
             if (use_probe) {
1392
             if (use_probe) {
1393
               #if HAS_BED_PROBE
1393
               #if HAS_BED_PROBE
1394
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2));
1394
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2));
1395
-                gcode.process_subcommands_now_P(cmd);
1395
+                gcode.process_subcommands_now(cmd);
1396
                 planner.synchronize();
1396
                 planner.synchronize();
1397
                 Popup_Handler(ManualProbing);
1397
                 Popup_Handler(ManualProbing);
1398
               #endif
1398
               #endif
1399
             }
1399
             }
1400
             else {
1400
             else {
1401
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1401
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1402
-              gcode.process_subcommands_now_P(cmd);
1402
+              gcode.process_subcommands_now(cmd);
1403
               planner.synchronize();
1403
               planner.synchronize();
1404
               Redraw_Menu();
1404
               Redraw_Menu();
1405
             }
1405
             }
1413
             if (use_probe) {
1413
             if (use_probe) {
1414
               #if HAS_BED_PROBE
1414
               #if HAS_BED_PROBE
1415
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2));
1415
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2));
1416
-                gcode.process_subcommands_now_P(cmd);
1416
+                gcode.process_subcommands_now(cmd);
1417
                 planner.synchronize();
1417
                 planner.synchronize();
1418
                 Popup_Handler(ManualProbing);
1418
                 Popup_Handler(ManualProbing);
1419
               #endif
1419
               #endif
1420
             }
1420
             }
1421
             else {
1421
             else {
1422
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1422
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1423
-              gcode.process_subcommands_now_P(cmd);
1423
+              gcode.process_subcommands_now(cmd);
1424
               planner.synchronize();
1424
               planner.synchronize();
1425
               Redraw_Menu();
1425
               Redraw_Menu();
1426
             }
1426
             }
1434
             if (use_probe) {
1434
             if (use_probe) {
1435
               #if HAS_BED_PROBE
1435
               #if HAS_BED_PROBE
1436
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(X_MAX_POS / 2.0f - probe.offset.x, 1, 3, str_1), dtostrf(Y_MAX_POS / 2.0f - probe.offset.y, 1, 3, str_2));
1436
                 sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(X_MAX_POS / 2.0f - probe.offset.x, 1, 3, str_1), dtostrf(Y_MAX_POS / 2.0f - probe.offset.y, 1, 3, str_2));
1437
-                gcode.process_subcommands_now_P(cmd);
1437
+                gcode.process_subcommands_now(cmd);
1438
                 planner.synchronize();
1438
                 planner.synchronize();
1439
                 Popup_Handler(ManualProbing);
1439
                 Popup_Handler(ManualProbing);
1440
               #endif
1440
               #endif
1441
             }
1441
             }
1442
             else {
1442
             else {
1443
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1443
               sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3));
1444
-              gcode.process_subcommands_now_P(cmd);
1444
+              gcode.process_subcommands_now(cmd);
1445
               planner.synchronize();
1445
               planner.synchronize();
1446
               Redraw_Menu();
1446
               Redraw_Menu();
1447
             }
1447
             }
1484
               Draw_Menu_Item(row, ICON_Homing, "Home Z Axis");
1484
               Draw_Menu_Item(row, ICON_Homing, "Home Z Axis");
1485
             else {
1485
             else {
1486
               Popup_Handler(Home);
1486
               Popup_Handler(Home);
1487
-              gcode.process_subcommands_now_P(PSTR("G28 Z"));
1487
+              gcode.process_subcommands_now(F("G28 Z"));
1488
               Popup_Handler(MoveWait);
1488
               Popup_Handler(MoveWait);
1489
               #if ENABLED(Z_SAFE_HOMING)
1489
               #if ENABLED(Z_SAFE_HOMING)
1490
                 planner.synchronize();
1490
                 planner.synchronize();
1491
                 sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2));
1491
                 sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2));
1492
-                gcode.process_subcommands_now_P(cmd);
1492
+                gcode.process_subcommands_now(cmd);
1493
               #else
1493
               #else
1494
-                gcode.process_subcommands_now_P(PSTR("G0 F4000 X117.5 Y117.5"));
1494
+                gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5"));
1495
               #endif
1495
               #endif
1496
-              gcode.process_subcommands_now_P(PSTR("G0 F300 Z0"));
1496
+              gcode.process_subcommands_now(F("G0 F300 Z0"));
1497
               planner.synchronize();
1497
               planner.synchronize();
1498
               Redraw_Menu();
1498
               Redraw_Menu();
1499
             }
1499
             }
1513
                 #if ENABLED(Z_SAFE_HOMING)
1513
                 #if ENABLED(Z_SAFE_HOMING)
1514
                   planner.synchronize();
1514
                   planner.synchronize();
1515
                   sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2));
1515
                   sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2));
1516
-                  gcode.process_subcommands_now_P(cmd);
1516
+                  gcode.process_subcommands_now(cmd);
1517
                 #else
1517
                 #else
1518
-                  gcode.process_subcommands_now_P(PSTR("G0 F4000 X117.5 Y117.5"));
1518
+                  gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5"));
1519
                 #endif
1519
                 #endif
1520
-                gcode.process_subcommands_now_P(PSTR("G0 F300 Z0"));
1520
+                gcode.process_subcommands_now(F("G0 F300 Z0"));
1521
                 planner.synchronize();
1521
                 planner.synchronize();
1522
                 Redraw_Menu();
1522
                 Redraw_Menu();
1523
               }
1523
               }
1539
             else {
1539
             else {
1540
               if (zoffsetvalue < MAX_Z_OFFSET) {
1540
               if (zoffsetvalue < MAX_Z_OFFSET) {
1541
                 if (liveadjust) {
1541
                 if (liveadjust) {
1542
-                  gcode.process_subcommands_now_P(PSTR("M290 Z0.01"));
1542
+                  gcode.process_subcommands_now(F("M290 Z0.01"));
1543
                   planner.synchronize();
1543
                   planner.synchronize();
1544
                 }
1544
                 }
1545
                 zoffsetvalue += 0.01;
1545
                 zoffsetvalue += 0.01;
1553
             else {
1553
             else {
1554
               if (zoffsetvalue > MIN_Z_OFFSET) {
1554
               if (zoffsetvalue > MIN_Z_OFFSET) {
1555
                 if (liveadjust) {
1555
                 if (liveadjust) {
1556
-                  gcode.process_subcommands_now_P(PSTR("M290 Z-0.01"));
1556
+                  gcode.process_subcommands_now(F("M290 Z-0.01"));
1557
                   planner.synchronize();
1557
                   planner.synchronize();
1558
                 }
1558
                 }
1559
                 zoffsetvalue -= 0.01;
1559
                 zoffsetvalue -= 0.01;
1721
                   thermalManager.wait_for_hotend(0);
1721
                   thermalManager.wait_for_hotend(0);
1722
                 }
1722
                 }
1723
                 Popup_Handler(FilLoad);
1723
                 Popup_Handler(FilLoad);
1724
-                gcode.process_subcommands_now_P(PSTR("M701"));
1724
+                gcode.process_subcommands_now(F("M701"));
1725
                 planner.synchronize();
1725
                 planner.synchronize();
1726
                 Redraw_Menu();
1726
                 Redraw_Menu();
1727
               }
1727
               }
1740
                   thermalManager.wait_for_hotend(0);
1740
                   thermalManager.wait_for_hotend(0);
1741
                 }
1741
                 }
1742
                 Popup_Handler(FilLoad, true);
1742
                 Popup_Handler(FilLoad, true);
1743
-                gcode.process_subcommands_now_P(PSTR("M702"));
1743
+                gcode.process_subcommands_now(F("M702"));
1744
                 planner.synchronize();
1744
                 planner.synchronize();
1745
                 Redraw_Menu();
1745
                 Redraw_Menu();
1746
               }
1746
               }
1759
                 }
1759
                 }
1760
                 Popup_Handler(FilChange);
1760
                 Popup_Handler(FilChange);
1761
                 sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
1761
                 sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
1762
-                gcode.process_subcommands_now_P(cmd);
1762
+                gcode.process_subcommands_now(cmd);
1763
               }
1763
               }
1764
             }
1764
             }
1765
             break;
1765
             break;
2016
             else {
2016
             else {
2017
               Popup_Handler(PIDWait);
2017
               Popup_Handler(PIDWait);
2018
               sprintf_P(cmd, PSTR("M303 E0 C%i S%i U1"), PID_cycles, PID_e_temp);
2018
               sprintf_P(cmd, PSTR("M303 E0 C%i S%i U1"), PID_cycles, PID_e_temp);
2019
-              gcode.process_subcommands_now_P(cmd);
2019
+              gcode.process_subcommands_now(cmd);
2020
               planner.synchronize();
2020
               planner.synchronize();
2021
               Redraw_Menu();
2021
               Redraw_Menu();
2022
             }
2022
             }
2083
             else {
2083
             else {
2084
               Popup_Handler(PIDWait);
2084
               Popup_Handler(PIDWait);
2085
               sprintf_P(cmd, PSTR("M303 E-1 C%i S%i U1"), PID_cycles, PID_bed_temp);
2085
               sprintf_P(cmd, PSTR("M303 E-1 C%i S%i U1"), PID_cycles, PID_bed_temp);
2086
-              gcode.process_subcommands_now_P(cmd);
2086
+              gcode.process_subcommands_now(cmd);
2087
               planner.synchronize();
2087
               planner.synchronize();
2088
               Redraw_Menu();
2088
               Redraw_Menu();
2089
             }
2089
             }
3029
                 Draw_Menu_Item(row, ICON_StepY, "M48 Probe Test");
3029
                 Draw_Menu_Item(row, ICON_StepY, "M48 Probe Test");
3030
               else {
3030
               else {
3031
                 sprintf_P(cmd, PSTR("G28O\nM48 X%s Y%s P%i"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), testcount);
3031
                 sprintf_P(cmd, PSTR("G28O\nM48 X%s Y%s P%i"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), testcount);
3032
-                gcode.process_subcommands_now_P(cmd);
3032
+                gcode.process_subcommands_now(cmd);
3033
               }
3033
               }
3034
               break;
3034
               break;
3035
             case PROBE_TEST_COUNT:
3035
             case PROBE_TEST_COUNT:
3141
                 Popup_Handler(Home);
3141
                 Popup_Handler(Home);
3142
                 gcode.home_all_axes(true);
3142
                 gcode.home_all_axes(true);
3143
                 Popup_Handler(Level);
3143
                 Popup_Handler(Level);
3144
-                if (mesh_conf.tilt_grid > 1)
3144
+                if (mesh_conf.tilt_grid > 1) {
3145
                   sprintf_P(cmd, PSTR("G29 J%i"), mesh_conf.tilt_grid);
3145
                   sprintf_P(cmd, PSTR("G29 J%i"), mesh_conf.tilt_grid);
3146
+                  gcode.process_subcommands_now(cmd);
3147
+                }
3146
                 else
3148
                 else
3147
-                  sprintf_P(cmd, PSTR("G29 J"));
3148
-                gcode.process_subcommands_now_P(cmd);
3149
+                  gcode.process_subcommands_now(F("G29 J"));
3149
                 planner.synchronize();
3150
                 planner.synchronize();
3150
                 Redraw_Menu();
3151
                 Redraw_Menu();
3151
               }
3152
               }
3173
                 #endif
3174
                 #endif
3174
                 #if HAS_BED_PROBE
3175
                 #if HAS_BED_PROBE
3175
                   Popup_Handler(Level);
3176
                   Popup_Handler(Level);
3176
-                  gcode.process_subcommands_now_P(PSTR("G29 P0\nG29 P1"));
3177
-                  gcode.process_subcommands_now_P(PSTR("G29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nM420 S1"));
3177
+                  gcode.process_subcommands_now(F("G29 P0\nG29 P1"));
3178
+                  gcode.process_subcommands_now(F("G29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nM420 S1"));
3178
                   planner.synchronize();
3179
                   planner.synchronize();
3179
                   Update_Status("Probed all reachable points");
3180
                   Update_Status("Probed all reachable points");
3180
                   Popup_Handler(SaveLevel);
3181
                   Popup_Handler(SaveLevel);
3189
                 #endif
3190
                 #endif
3190
               #elif HAS_BED_PROBE
3191
               #elif HAS_BED_PROBE
3191
                 Popup_Handler(Level);
3192
                 Popup_Handler(Level);
3192
-                gcode.process_subcommands_now_P(PSTR("G29"));
3193
+                gcode.process_subcommands_now(F("G29"));
3193
                 planner.synchronize();
3194
                 planner.synchronize();
3194
                 Popup_Handler(SaveLevel);
3195
                 Popup_Handler(SaveLevel);
3195
               #else
3196
               #else
3197
                 set_bed_leveling_enabled(false);
3198
                 set_bed_leveling_enabled(false);
3198
                 gridpoint = 1;
3199
                 gridpoint = 1;
3199
                 Popup_Handler(MoveWait);
3200
                 Popup_Handler(MoveWait);
3200
-                gcode.process_subcommands_now_P(PSTR("G29"));
3201
+                gcode.process_subcommands_now(F("G29"));
3201
                 planner.synchronize();
3202
                 planner.synchronize();
3202
                 Draw_Menu(ManualMesh);
3203
                 Draw_Menu(ManualMesh);
3203
               #endif
3204
               #endif
3280
                 Popup_Handler(MeshSlot);
3281
                 Popup_Handler(MeshSlot);
3281
                 break;
3282
                 break;
3282
               }
3283
               }
3283
-              gcode.process_subcommands_now_P(PSTR("G29 L"));
3284
+              gcode.process_subcommands_now(F("G29 L"));
3284
               planner.synchronize();
3285
               planner.synchronize();
3285
               AudioFeedback(true);
3286
               AudioFeedback(true);
3286
             }
3287
             }
3293
                 Popup_Handler(MeshSlot);
3294
                 Popup_Handler(MeshSlot);
3294
                 break;
3295
                 break;
3295
               }
3296
               }
3296
-              gcode.process_subcommands_now_P(PSTR("G29 S"));
3297
+              gcode.process_subcommands_now(F("G29 S"));
3297
               planner.synchronize();
3298
               planner.synchronize();
3298
               AudioFeedback(true);
3299
               AudioFeedback(true);
3299
             }
3300
             }
3389
                 Draw_Menu_Item(row, ICON_ResumeEEPROM, "Convert Mesh to Plane");
3390
                 Draw_Menu_Item(row, ICON_ResumeEEPROM, "Convert Mesh to Plane");
3390
               else {
3391
               else {
3391
                 if (mesh_conf.create_plane_from_mesh()) break;
3392
                 if (mesh_conf.create_plane_from_mesh()) break;
3392
-                gcode.process_subcommands_now_P(PSTR("M420 S1"));
3393
+                gcode.process_subcommands_now(F("M420 S1"));
3393
                 planner.synchronize();
3394
                 planner.synchronize();
3394
                 AudioFeedback(true);
3395
                 AudioFeedback(true);
3395
               }
3396
               }
3497
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3498
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3498
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
3499
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
3499
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
3500
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
3500
-              gcode.process_subcommands_now_P(PSTR("M290 Z0.01"));
3501
+              gcode.process_subcommands_now(F("M290 Z0.01"));
3501
               planner.synchronize();
3502
               planner.synchronize();
3502
               current_position.z += 0.01f;
3503
               current_position.z += 0.01f;
3503
               sync_plan_position();
3504
               sync_plan_position();
3509
               Draw_Menu_Item(row, ICON_AxisD, "Microstep Down");
3510
               Draw_Menu_Item(row, ICON_AxisD, "Microstep Down");
3510
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
3511
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
3511
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
3512
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
3512
-              gcode.process_subcommands_now_P(PSTR("M290 Z-0.01"));
3513
+              gcode.process_subcommands_now(F("M290 Z-0.01"));
3513
               planner.synchronize();
3514
               planner.synchronize();
3514
               current_position.z -= 0.01f;
3515
               current_position.z -= 0.01f;
3515
               sync_plan_position();
3516
               sync_plan_position();
3580
                 mesh_conf.manual_move();
3581
                 mesh_conf.manual_move();
3581
               }
3582
               }
3582
               else {
3583
               else {
3583
-                gcode.process_subcommands_now_P(PSTR("G29 S"));
3584
+                gcode.process_subcommands_now(F("G29 S"));
3584
                 planner.synchronize();
3585
                 planner.synchronize();
3585
                 AudioFeedback(true);
3586
                 AudioFeedback(true);
3586
                 Draw_Menu(Leveling, LEVELING_GET_MESH);
3587
                 Draw_Menu(Leveling, LEVELING_GET_MESH);
3618
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3619
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3619
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
3620
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
3620
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
3621
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
3621
-              gcode.process_subcommands_now_P(PSTR("M290 Z0.01"));
3622
+              gcode.process_subcommands_now(F("M290 Z0.01"));
3622
               planner.synchronize();
3623
               planner.synchronize();
3623
               current_position.z += 0.01f;
3624
               current_position.z += 0.01f;
3624
               sync_plan_position();
3625
               sync_plan_position();
3630
               Draw_Menu_Item(row, ICON_Axis, "Microstep Down");
3631
               Draw_Menu_Item(row, ICON_Axis, "Microstep Down");
3631
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
3632
             else if (Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
3632
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
3633
               Z_VALUES_ARR[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
3633
-              gcode.process_subcommands_now_P(PSTR("M290 Z-0.01"));
3634
+              gcode.process_subcommands_now(F("M290 Z-0.01"));
3634
               planner.synchronize();
3635
               planner.synchronize();
3635
               current_position.z -= 0.01f;
3636
               current_position.z -= 0.01f;
3636
               sync_plan_position();
3637
               sync_plan_position();
3657
             if (draw)
3658
             if (draw)
3658
               Draw_Menu_Item(row, ICON_Back, "Cancel");
3659
               Draw_Menu_Item(row, ICON_Back, "Cancel");
3659
             else {
3660
             else {
3660
-              gcode.process_subcommands_now_P(PSTR("G29 A"));
3661
+              gcode.process_subcommands_now(F("G29 A"));
3661
               planner.synchronize();
3662
               planner.synchronize();
3662
               set_bed_leveling_enabled(level_state);
3663
               set_bed_leveling_enabled(level_state);
3663
               Draw_Menu(Leveling, LEVELING_GET_MESH);
3664
               Draw_Menu(Leveling, LEVELING_GET_MESH);
3672
             }
3673
             }
3673
             else if (gridpoint < GRID_MAX_POINTS) {
3674
             else if (gridpoint < GRID_MAX_POINTS) {
3674
               Popup_Handler(MoveWait);
3675
               Popup_Handler(MoveWait);
3675
-              gcode.process_subcommands_now_P(PSTR("G29"));
3676
+              gcode.process_subcommands_now(F("G29"));
3676
               planner.synchronize();
3677
               planner.synchronize();
3677
               gridpoint++;
3678
               gridpoint++;
3678
               Redraw_Menu();
3679
               Redraw_Menu();
3679
             }
3680
             }
3680
             else {
3681
             else {
3681
-              gcode.process_subcommands_now_P(PSTR("G29"));
3682
+              gcode.process_subcommands_now(F("G29"));
3682
               planner.synchronize();
3683
               planner.synchronize();
3683
               AudioFeedback(settings.save());
3684
               AudioFeedback(settings.save());
3684
               Draw_Menu(Leveling, LEVELING_GET_MESH);
3685
               Draw_Menu(Leveling, LEVELING_GET_MESH);
3697
             if (draw)
3698
             if (draw)
3698
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3699
               Draw_Menu_Item(row, ICON_Axis, "Microstep Up");
3699
             else if (current_position.z < MAX_Z_OFFSET) {
3700
             else if (current_position.z < MAX_Z_OFFSET) {
3700
-              gcode.process_subcommands_now_P(PSTR("M290 Z0.01"));
3701
+              gcode.process_subcommands_now(F("M290 Z0.01"));
3701
               planner.synchronize();
3702
               planner.synchronize();
3702
               current_position.z += 0.01f;
3703
               current_position.z += 0.01f;
3703
               sync_plan_position();
3704
               sync_plan_position();
3708
             if (draw)
3709
             if (draw)
3709
               Draw_Menu_Item(row, ICON_AxisD, "Microstep Down");
3710
               Draw_Menu_Item(row, ICON_AxisD, "Microstep Down");
3710
             else if (current_position.z > MIN_Z_OFFSET) {
3711
             else if (current_position.z > MIN_Z_OFFSET) {
3711
-              gcode.process_subcommands_now_P(PSTR("M290 Z-0.01"));
3712
+              gcode.process_subcommands_now(F("M290 Z-0.01"));
3712
               planner.synchronize();
3713
               planner.synchronize();
3713
               current_position.z -= 0.01f;
3714
               current_position.z -= 0.01f;
3714
               sync_plan_position();
3715
               sync_plan_position();
3829
             if (draw)
3830
             if (draw)
3830
               Draw_Menu_Item(row, ICON_Axis, "Z-Offset Up");
3831
               Draw_Menu_Item(row, ICON_Axis, "Z-Offset Up");
3831
             else if (zoffsetvalue < MAX_Z_OFFSET) {
3832
             else if (zoffsetvalue < MAX_Z_OFFSET) {
3832
-              gcode.process_subcommands_now_P(PSTR("M290 Z0.01"));
3833
+              gcode.process_subcommands_now(F("M290 Z0.01"));
3833
               zoffsetvalue += 0.01;
3834
               zoffsetvalue += 0.01;
3834
               Draw_Float(zoffsetvalue, row - 1, false, 100);
3835
               Draw_Float(zoffsetvalue, row - 1, false, 100);
3835
             }
3836
             }
3838
             if (draw)
3839
             if (draw)
3839
               Draw_Menu_Item(row, ICON_AxisD, "Z-Offset Down");
3840
               Draw_Menu_Item(row, ICON_AxisD, "Z-Offset Down");
3840
             else if (zoffsetvalue > MIN_Z_OFFSET) {
3841
             else if (zoffsetvalue > MIN_Z_OFFSET) {
3841
-              gcode.process_subcommands_now_P(PSTR("M290 Z-0.01"));
3842
+              gcode.process_subcommands_now(F("M290 Z-0.01"));
3842
               zoffsetvalue -= 0.01;
3843
               zoffsetvalue -= 0.01;
3843
               Draw_Float(zoffsetvalue, row - 2, false, 100);
3844
               Draw_Float(zoffsetvalue, row - 2, false, 100);
3844
             }
3845
             }
3916
                 case Prepare:
3917
                 case Prepare:
3917
                   Popup_Handler(FilChange);
3918
                   Popup_Handler(FilChange);
3918
                   sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
3919
                   sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
3919
-                  gcode.process_subcommands_now_P(cmd);
3920
+                  gcode.process_subcommands_now(cmd);
3920
                   break;
3921
                   break;
3921
                 #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
3922
                 #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
3922
                   case ChangeFilament:
3923
                   case ChangeFilament:
3923
                     switch (last_selection) {
3924
                     switch (last_selection) {
3924
                       case CHANGEFIL_LOAD:
3925
                       case CHANGEFIL_LOAD:
3925
                         Popup_Handler(FilLoad);
3926
                         Popup_Handler(FilLoad);
3926
-                        gcode.process_subcommands_now_P("M701");
3927
+                        gcode.process_subcommands_now(F("M701"));
3927
                         planner.synchronize();
3928
                         planner.synchronize();
3928
                         Redraw_Menu(true, true, true);
3929
                         Redraw_Menu(true, true, true);
3929
                         break;
3930
                         break;
3930
                       case CHANGEFIL_UNLOAD:
3931
                       case CHANGEFIL_UNLOAD:
3931
                         Popup_Handler(FilLoad, true);
3932
                         Popup_Handler(FilLoad, true);
3932
-                        gcode.process_subcommands_now_P("M702");
3933
+                        gcode.process_subcommands_now(F("M702"));
3933
                         planner.synchronize();
3934
                         planner.synchronize();
3934
                         Redraw_Menu(true, true, true);
3935
                         Redraw_Menu(true, true, true);
3935
                         break;
3936
                         break;
3936
                       case CHANGEFIL_CHANGE:
3937
                       case CHANGEFIL_CHANGE:
3937
                         Popup_Handler(FilChange);
3938
                         Popup_Handler(FilChange);
3938
                         sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
3939
                         sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
3939
-                        gcode.process_subcommands_now_P(cmd);
3940
+                        gcode.process_subcommands_now(cmd);
3940
                         break;
3941
                         break;
3941
                     }
3942
                     }
3942
                     break;
3943
                     break;
4275
     }
4276
     }
4276
     else if (active_menu == Tune && selection == TUNE_ZOFFSET) {
4277
     else if (active_menu == Tune && selection == TUNE_ZOFFSET) {
4277
       sprintf_P(cmd, PSTR("M290 Z%s"), dtostrf((tempvalue / valueunit - zoffsetvalue), 1, 3, str_1));
4278
       sprintf_P(cmd, PSTR("M290 Z%s"), dtostrf((tempvalue / valueunit - zoffsetvalue), 1, 3, str_1));
4278
-      gcode.process_subcommands_now_P(cmd);
4279
+      gcode.process_subcommands_now(cmd);
4279
     }
4280
     }
4280
     if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki))
4281
     if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki))
4281
       tempvalue = scalePID_i(tempvalue);
4282
       tempvalue = scalePID_i(tempvalue);
4474
               char cmnd[20];
4475
               char cmnd[20];
4475
               #if HAS_HEATED_BED
4476
               #if HAS_HEATED_BED
4476
                 cmnd[sprintf_P(cmnd, PSTR("M140 S%i"), pausebed)] = '\0';
4477
                 cmnd[sprintf_P(cmnd, PSTR("M140 S%i"), pausebed)] = '\0';
4477
-                gcode.process_subcommands_now_P(PSTR(cmnd));
4478
+                gcode.process_subcommands_now(cmnd);
4478
               #endif
4479
               #endif
4479
               #if HAS_EXTRUDERS
4480
               #if HAS_EXTRUDERS
4480
                 cmnd[sprintf_P(cmnd, PSTR("M109 S%i"), pausetemp)] = '\0';
4481
                 cmnd[sprintf_P(cmnd, PSTR("M109 S%i"), pausetemp)] = '\0';
4481
-                gcode.process_subcommands_now_P(PSTR(cmnd));
4482
+                gcode.process_subcommands_now(cmnd);
4482
               #endif
4483
               #endif
4483
               TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan);
4484
               TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan);
4484
               planner.synchronize();
4485
               planner.synchronize();
4603
               }
4604
               }
4604
               Popup_Handler(FilChange);
4605
               Popup_Handler(FilChange);
4605
               sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
4606
               sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target);
4606
-              gcode.process_subcommands_now_P(cmd);
4607
+              gcode.process_subcommands_now(cmd);
4607
             }
4608
             }
4608
           }
4609
           }
4609
           else
4610
           else
4626
         case SaveLevel:
4627
         case SaveLevel:
4627
           if (selection == 0) {
4628
           if (selection == 0) {
4628
             #if ENABLED(AUTO_BED_LEVELING_UBL)
4629
             #if ENABLED(AUTO_BED_LEVELING_UBL)
4629
-              gcode.process_subcommands_now_P(PSTR("G29 S"));
4630
+              gcode.process_subcommands_now(F("G29 S"));
4630
               planner.synchronize();
4631
               planner.synchronize();
4631
               AudioFeedback(true);
4632
               AudioFeedback(true);
4632
             #else
4633
             #else

+ 1
- 1
Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp View File

262
   void DGUSScreenHandler::SDPrintingFinished() {
262
   void DGUSScreenHandler::SDPrintingFinished() {
263
     if (DGUSAutoTurnOff) {
263
     if (DGUSAutoTurnOff) {
264
       queue.exhaust();
264
       queue.exhaust();
265
-      gcode.process_subcommands_now_P(PSTR("M81"));
265
+      gcode.process_subcommands_now(F("M81"));
266
     }
266
     }
267
     GotoScreen(MKSLCD_SCREEN_PrintDone);
267
     GotoScreen(MKSLCD_SCREEN_PrintDone);
268
   }
268
   }

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

99
 }
99
 }
100
 
100
 
101
 void SpinnerDialogBox::onIdle() {
101
 void SpinnerDialogBox::onIdle() {
102
-  if (mydata.auto_hide && !commandsInQueue() && TERN1(HOST_KEEPALIVE_FEATURE, GcodeSuite::busy_state == GcodeSuite::NOT_BUSY)) {
102
+  if (mydata.auto_hide && !commandsInQueue() && TERN1(HOST_KEEPALIVE_FEATURE, gcode.busy_state == gcode.NOT_BUSY)) {
103
     mydata.auto_hide = false;
103
     mydata.auto_hide = false;
104
     hide();
104
     hide();
105
   }
105
   }

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

65
   switch (obj->mks_obj_id) {
65
   switch (obj->mks_obj_id) {
66
     case ID_BABY_STEP_X_P:
66
     case ID_BABY_STEP_X_P:
67
       sprintf_P(baby_buf, PSTR("M290 X%s"), dtostrf(babystep_dist, 1, 3, str_1));
67
       sprintf_P(baby_buf, PSTR("M290 X%s"), dtostrf(babystep_dist, 1, 3, str_1));
68
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
68
+      gcode.process_subcommands_now(F(baby_buf));
69
       has_adjust_z = 1;
69
       has_adjust_z = 1;
70
       break;
70
       break;
71
     case ID_BABY_STEP_X_N:
71
     case ID_BABY_STEP_X_N:
72
       sprintf_P(baby_buf, PSTR("M290 X%s"), dtostrf(-babystep_dist, 1, 3, str_1));
72
       sprintf_P(baby_buf, PSTR("M290 X%s"), dtostrf(-babystep_dist, 1, 3, str_1));
73
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
73
+      gcode.process_subcommands_now(F(baby_buf));
74
       has_adjust_z = 1;
74
       has_adjust_z = 1;
75
       break;
75
       break;
76
     case ID_BABY_STEP_Y_P:
76
     case ID_BABY_STEP_Y_P:
77
       sprintf_P(baby_buf, PSTR("M290 Y%s"), dtostrf(babystep_dist, 1, 3, str_1));
77
       sprintf_P(baby_buf, PSTR("M290 Y%s"), dtostrf(babystep_dist, 1, 3, str_1));
78
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
78
+      gcode.process_subcommands_now(F(baby_buf));
79
       has_adjust_z = 1;
79
       has_adjust_z = 1;
80
       break;
80
       break;
81
     case ID_BABY_STEP_Y_N:
81
     case ID_BABY_STEP_Y_N:
82
       sprintf_P(baby_buf, PSTR("M290 Y%s"), dtostrf(-babystep_dist, 1, 3, str_1));
82
       sprintf_P(baby_buf, PSTR("M290 Y%s"), dtostrf(-babystep_dist, 1, 3, str_1));
83
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
83
+      gcode.process_subcommands_now(F(baby_buf));
84
       has_adjust_z = 1;
84
       has_adjust_z = 1;
85
       break;
85
       break;
86
     case ID_BABY_STEP_Z_P:
86
     case ID_BABY_STEP_Z_P:
87
       sprintf_P(baby_buf, PSTR("M290 Z%s"), dtostrf(babystep_dist, 1, 3, str_1));
87
       sprintf_P(baby_buf, PSTR("M290 Z%s"), dtostrf(babystep_dist, 1, 3, str_1));
88
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
88
+      gcode.process_subcommands_now(F(baby_buf));
89
       has_adjust_z = 1;
89
       has_adjust_z = 1;
90
       break;
90
       break;
91
     case ID_BABY_STEP_Z_N:
91
     case ID_BABY_STEP_Z_N:
92
       sprintf_P(baby_buf, PSTR("M290 Z%s"), dtostrf(-babystep_dist, 1, 3, str_1));
92
       sprintf_P(baby_buf, PSTR("M290 Z%s"), dtostrf(-babystep_dist, 1, 3, str_1));
93
-      gcode.process_subcommands_now_P(PSTR(baby_buf));
93
+      gcode.process_subcommands_now(F(baby_buf));
94
       has_adjust_z = 1;
94
       has_adjust_z = 1;
95
       break;
95
       break;
96
     case ID_BABY_STEP_DIST:
96
     case ID_BABY_STEP_DIST:

+ 1
- 1
Marlin/src/lcd/extui/mks_ui/draw_filament_change.cpp View File

94
     case ID_FILAMNT_RETURN:
94
     case ID_FILAMNT_RETURN:
95
       #if HAS_MULTI_EXTRUDER
95
       #if HAS_MULTI_EXTRUDER
96
         if (uiCfg.print_state != IDLE && uiCfg.print_state != REPRINTED)
96
         if (uiCfg.print_state != IDLE && uiCfg.print_state != REPRINTED)
97
-          gcode.process_subcommands_now_P(uiCfg.extruderIndexBak == 1 ? PSTR("T1") : PSTR("T0"));
97
+          gcode.process_subcommands_now(uiCfg.extruderIndexBak == 1 ? F("T1") : F("T0"));
98
       #endif
98
       #endif
99
       feedrate_mm_s = (float)uiCfg.moveSpeed_bak;
99
       feedrate_mm_s = (float)uiCfg.moveSpeed_bak;
100
       if (uiCfg.print_state == PAUSED)
100
       if (uiCfg.print_state == PAUSED)

+ 1
- 1
Marlin/src/lcd/extui/mks_ui/draw_number_key.cpp View File

404
     case z_sensitivity: TERN_(Z_SENSORLESS, stepperZ.homing_threshold(atoi(key_value))); break;
404
     case z_sensitivity: TERN_(Z_SENSORLESS, stepperZ.homing_threshold(atoi(key_value))); break;
405
     case z2_sensitivity: TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(atoi(key_value))); break;
405
     case z2_sensitivity: TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(atoi(key_value))); break;
406
   }
406
   }
407
-  gcode.process_subcommands_now_P(PSTR("M500"));
407
+  gcode.process_subcommands_now(F("M500"));
408
 }
408
 }
409
 
409
 
410
 static void event_handler(lv_obj_t *obj, lv_event_t event) {
410
 static void event_handler(lv_obj_t *obj, lv_event_t event) {

+ 1
- 1
Marlin/src/lcd/extui/mks_ui/draw_printing.cpp View File

307
 
307
 
308
         #if HAS_SUICIDE
308
         #if HAS_SUICIDE
309
           if (gCfgItems.finish_power_off) {
309
           if (gCfgItems.finish_power_off) {
310
-            gcode.process_subcommands_now_P(PSTR("M1001"));
310
+            gcode.process_subcommands_now(F("M1001"));
311
             queue.inject_P(PSTR("M81"));
311
             queue.inject_P(PSTR("M81"));
312
             marlin_state = MF_RUNNING;
312
             marlin_state = MF_RUNNING;
313
           }
313
           }

+ 2
- 2
Marlin/src/lcd/extui/mks_ui/printer_operation.cpp View File

53
         uiCfg.waitEndMoves = 0;
53
         uiCfg.waitEndMoves = 0;
54
         planner.synchronize();
54
         planner.synchronize();
55
 
55
 
56
-        gcode.process_subcommands_now_P(PSTR("M25"));
56
+        gcode.process_subcommands_now(F("M25"));
57
 
57
 
58
         // save the position
58
         // save the position
59
         uiCfg.current_x_position_bak = current_position.x;
59
         uiCfg.current_x_position_bak = current_position.x;
93
         sprintf_P(public_buf_m, PSTR("G1 Z%s"), dtostrf(uiCfg.current_z_position_bak, 1, 1, str_1));
93
         sprintf_P(public_buf_m, PSTR("G1 Z%s"), dtostrf(uiCfg.current_z_position_bak, 1, 1, str_1));
94
         gcode.process_subcommands_now(public_buf_m);
94
         gcode.process_subcommands_now(public_buf_m);
95
       }
95
       }
96
-      gcode.process_subcommands_now_P(M24_STR);
96
+      gcode.process_subcommands_now(FPSTR(M24_STR));
97
       uiCfg.print_state = WORKING;
97
       uiCfg.print_state = WORKING;
98
       start_print_time();
98
       start_print_time();
99
 
99
 

+ 3
- 3
Marlin/src/module/tool_change.cpp View File

1310
     if (!no_move) {
1310
     if (!no_move) {
1311
       #ifdef EVENT_GCODE_TOOLCHANGE_T0
1311
       #ifdef EVENT_GCODE_TOOLCHANGE_T0
1312
         if (new_tool == 0)
1312
         if (new_tool == 0)
1313
-          gcode.process_subcommands_now_P(PSTR(EVENT_GCODE_TOOLCHANGE_T0));
1313
+          gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T0));
1314
       #endif
1314
       #endif
1315
 
1315
 
1316
       #ifdef EVENT_GCODE_TOOLCHANGE_T1
1316
       #ifdef EVENT_GCODE_TOOLCHANGE_T1
1317
         if (new_tool == 1)
1317
         if (new_tool == 1)
1318
-          gcode.process_subcommands_now_P(PSTR(EVENT_GCODE_TOOLCHANGE_T1));
1318
+          gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T1));
1319
       #endif
1319
       #endif
1320
 
1320
 
1321
       #ifdef EVENT_GCODE_AFTER_TOOLCHANGE
1321
       #ifdef EVENT_GCODE_AFTER_TOOLCHANGE
1322
         if (TERN1(DUAL_X_CARRIAGE, dual_x_carriage_mode == DXC_AUTO_PARK_MODE))
1322
         if (TERN1(DUAL_X_CARRIAGE, dual_x_carriage_mode == DXC_AUTO_PARK_MODE))
1323
-          gcode.process_subcommands_now_P(PSTR(EVENT_GCODE_AFTER_TOOLCHANGE));
1323
+          gcode.process_subcommands_now(F(EVENT_GCODE_AFTER_TOOLCHANGE));
1324
       #endif
1324
       #endif
1325
     }
1325
     }
1326
 
1326
 

Loading…
Cancel
Save