diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4d2443dc5..9053472f6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3594,7 +3594,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float // Recover feed rate feedmultiply = feedmultiplyBckp; - enquecommandf(MSG_M220, feedmultiplyBckp); + enquecommandf_P(MSG_M220, feedmultiplyBckp); } lcd_setstatuspgm(MSG_WELCOME); @@ -10776,16 +10776,16 @@ void recover_print(uint8_t automatic) { // and second also so one may remove the excess priming material. if(eeprom_read_byte((uint8_t*)EEPROM_UVLO) == 1) { - enquecommandf(PSTR("G1 Z%.3f F800"), current_position[Z_AXIS] + 25); + enquecommandf_P(PSTR("G1 Z%.3f F800"), current_position[Z_AXIS] + 25); } // Home X and Y axes. Homing just X and Y shall not touch the babystep and the world2machine // transformation status. G28 will not touch Z when MBL is off. enquecommand_P(PSTR("G28 X Y")); // Set the target bed and nozzle temperatures and wait. - enquecommandf(PSTR("M104 S%d"), target_temperature[active_extruder]); - enquecommandf(PSTR("M140 S%d"), target_temperature_bed); - enquecommandf(PSTR("M109 S%d"), target_temperature[active_extruder]); + enquecommandf_P(PSTR("M104 S%d"), target_temperature[active_extruder]); + enquecommandf_P(PSTR("M140 S%d"), target_temperature_bed); + enquecommandf_P(PSTR("M109 S%d"), target_temperature[active_extruder]); enquecommand_P(MSG_M83); //E axis relative mode // If not automatically recoreverd (long power loss) @@ -10793,7 +10793,7 @@ void recover_print(uint8_t automatic) { //Extrude some filament to stabilize the pressure enquecommand_P(PSTR("G1 E5 F120")); // Retract to be consistent with a short pause - enquecommandf(G1_E_F2700, default_retraction); + enquecommandf_P(G1_E_F2700, default_retraction); } printf_P(_N("After waiting for temp:\nCurrent pos X_AXIS:%.3f\nCurrent pos Y_AXIS:%.3f\n"), current_position[X_AXIS], current_position[Y_AXIS]); @@ -10916,7 +10916,7 @@ void restore_print_from_eeprom(bool mbl_was_active) { MYSERIAL.print(filename); strcat_P(filename, PSTR(".gco")); - enquecommandf(MSG_M23, filename); + enquecommandf_P(MSG_M23, filename); uint32_t position = eeprom_read_dword((uint32_t*)(EEPROM_FILE_POSITION)); SERIAL_ECHOPGM("Position read from eeprom:"); MYSERIAL.println(position); @@ -10927,7 +10927,7 @@ void restore_print_from_eeprom(bool mbl_was_active) { float pos_y = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4)); if (pos_x != X_COORD_INVALID) { - enquecommandf(PSTR("G1 X%f Y%f F3000"), pos_x, pos_y); + enquecommandf_P(PSTR("G1 X%f Y%f F3000"), pos_x, pos_y); } // Enable MBL and switch to logical positioning @@ -10935,29 +10935,29 @@ void restore_print_from_eeprom(bool mbl_was_active) { enquecommand_P(PSTR("PRUSA MBL V1")); // Move the Z axis down to the print, in logical coordinates. - enquecommandf(PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z))); + enquecommandf_P(PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z))); // Restore acceleration settings float acceleration = eeprom_read_float((float*)(EEPROM_UVLO_ACCELL)); float retract_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_RETRACT_ACCELL)); float travel_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_TRAVEL_ACCELL)); - enquecommandf(PSTR("M204 P%f R%f T%f"), acceleration, retract_acceleration, travel_acceleration); + enquecommandf_P(PSTR("M204 P%f R%f T%f"), acceleration, retract_acceleration, travel_acceleration); // Unretract. - enquecommandf(G1_E_F2700, default_retraction); + enquecommandf_P(G1_E_F2700, default_retraction); // Recover final E axis position and mode float pos_e = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E)); - enquecommandf(PSTR("G92 E%6.3f"), pos_e); + enquecommandf_P(PSTR("G92 E%6.3f"), pos_e); if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS)) enquecommand_P(PSTR("M82")); //E axis abslute mode // Set the feedrates saved at the power panic. - enquecommandf(PSTR("G1 F%d"), feedrate_rec); - enquecommandf(MSG_M220, feedmultiply_rec); + enquecommandf_P(PSTR("G1 F%d"), feedrate_rec); + enquecommandf_P(MSG_M220, feedmultiply_rec); // Set the fan speed saved at the power panic. - enquecommandf(PSTR("M106 S%u"), fan_speed_rec); + enquecommandf_P(PSTR("M106 S%u"), fan_speed_rec); // Set a position in the file. - enquecommandf(PSTR("M26 S%lu"), position); + enquecommandf_P(PSTR("M26 S%lu"), position); enquecommand_P(PSTR("G4 S0")); enquecommand_P(PSTR("PRUSA uvlo")); } @@ -11141,13 +11141,13 @@ void stop_and_save_print_to_ram(float z_move, float e_move) // A snprintf would have been a safer call, but since it is not used // in the whole program, its implementation would bring more bytes to the total size // The behavior of dtostrf 8,3 should be roughly the same as %-0.3 - enquecommandf(G1_E_F2700, e_move); + enquecommandf_P(G1_E_F2700, e_move); } if(z_move) { // Then lift Z axis - enquecommandf(PSTR("G1 Z%-0.3f F%-0.3f"), saved_pos[Z_AXIS] + z_move, homing_feedrate[Z_AXIS]); + enquecommandf_P(PSTR("G1 Z%-0.3f F%-0.3f"), saved_pos[Z_AXIS] + z_move, homing_feedrate[Z_AXIS]); } // If this call is invoked from the main Arduino loop() function, let the caller know that the command diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 866a8eff4..8b902b703 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -650,7 +650,7 @@ void CardReader::checkautostart(bool force) if(strncmp((char*)p.name,autoname,5)==0) { // M23: Select SD file - enquecommandf(MSG_M23, autoname); + enquecommandf_P(MSG_M23, autoname); // M24: Start/resume SD print enquecommand_P(MSG_M24); found=true; diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index 98a013b37..53f5f5d2b 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -253,7 +253,7 @@ static const char bufferFull[] PROGMEM = "\" failed: Buffer full!"; static const char enqueingFront[] PROGMEM = "Enqueing to the front: \""; -void enquecommandf(const char *fmt, ...) +void enquecommandf_P(const char *fmt, ...) { // MAX_CMD_SIZE is 96, but for formatting // string we usually don't need more than 30 bytes diff --git a/Firmware/cmdqueue.h b/Firmware/cmdqueue.h index 6c7b7a739..2d16b8fb1 100644 --- a/Firmware/cmdqueue.h +++ b/Firmware/cmdqueue.h @@ -64,7 +64,7 @@ extern bool cmd_buffer_empty(); /// @brief Variant of enquecommand which accepts a format string /// @param fmt a format string residing in PROGMEM -void enquecommandf(const char *fmt, ...); +void enquecommandf_P(const char *fmt, ...); extern void enquecommand(const char *cmd, bool from_progmem = false); extern void enquecommand_front(const char *cmd, bool from_progmem = false); extern void repeatcommand_front(); diff --git a/Firmware/first_lay_cal.cpp b/Firmware/first_lay_cal.cpp index 84641ac32..e36c1592a 100644 --- a/Firmware/first_lay_cal.cpp +++ b/Firmware/first_lay_cal.cpp @@ -75,7 +75,7 @@ bool lay1cal_load_filament(uint8_t filament) enquecommand_P(MSG_M702_NO_LIFT); } // perform a toolchange - enquecommandf(PSTR("T%d"), filament); + enquecommandf_P(PSTR("T%d"), filament); return true; } return false; @@ -123,8 +123,8 @@ void lay1cal_intro_line(bool extraPurgeNeeded, float layer_height, float extrusi else { static const char fmt1[] PROGMEM = "G1 X%d E%-.3f F1000"; - enquecommandf(fmt1, 60, count_e(layer_height, extrusion_width * 4.f, 60)); - enquecommandf(fmt1, 100, count_e(layer_height, extrusion_width * 8.f, 40)); + enquecommandf_P(fmt1, 60, count_e(layer_height, extrusion_width * 4.f, 60)); + enquecommandf_P(fmt1, 100, count_e(layer_height, extrusion_width * 8.f, 40)); } } @@ -160,14 +160,14 @@ void lay1cal_meander_start(float layer_height, float extrusion_width) enquecommand_P(PSTR("G1 X50 Y155")); static const char fmt1[] PROGMEM = "G1 Z%-.3f F7200"; - enquecommandf(fmt1, layer_height); + enquecommandf_P(fmt1, layer_height); enquecommand_P(PSTR("G1 F1080")); - enquecommandf(extrude_fmt, 75, 155, count_e(layer_height, extrusion_width * 4.f, 25)); - enquecommandf(extrude_fmt, 100, 155, count_e(layer_height, extrusion_width * 2.f, 25)); - enquecommandf(extrude_fmt, 200, 155, count_e(layer_height, extrusion_width, 100)); - enquecommandf(extrude_fmt, 200, 135, count_e(layer_height, extrusion_width, 20)); + enquecommandf_P(extrude_fmt, 75, 155, count_e(layer_height, extrusion_width * 4.f, 25)); + enquecommandf_P(extrude_fmt, 100, 155, count_e(layer_height, extrusion_width * 2.f, 25)); + enquecommandf_P(extrude_fmt, 200, 155, count_e(layer_height, extrusion_width, 100)); + enquecommandf_P(extrude_fmt, 200, 135, count_e(layer_height, extrusion_width, 20)); } //! @brief Print meander @@ -183,11 +183,11 @@ void lay1cal_meander(float layer_height, float extrusion_width) uint8_t x_pos = 50; for(uint8_t i = 0; i <= 4; ++i) { - enquecommandf(extrude_fmt, x_pos, y_pos, long_extrusion); + enquecommandf_P(extrude_fmt, x_pos, y_pos, long_extrusion); y_pos -= short_length; - enquecommandf(extrude_fmt, x_pos, y_pos, short_extrusion); + enquecommandf_P(extrude_fmt, x_pos, y_pos, short_extrusion); x_pos += long_length; @@ -212,10 +212,10 @@ void lay1cal_square(uint8_t step, float layer_height, float extrusion_width) for (uint8_t i = step; i < step+4; ++i) { - enquecommandf(fmt1, 70, (35 - i*short_length * 2), long_extrusion); - enquecommandf(fmt1, 70, (35 - (2 * i + 1)*short_length), short_extrusion); - enquecommandf(fmt1, 50, (35 - (2 * i + 1)*short_length), long_extrusion); - enquecommandf(fmt1, 50, (35 - (i + 1)*short_length * 2), short_extrusion); + enquecommandf_P(fmt1, 70, (35 - i*short_length * 2), long_extrusion); + enquecommandf_P(fmt1, 70, (35 - (2 * i + 1)*short_length), short_extrusion); + enquecommandf_P(fmt1, 50, (35 - (2 * i + 1)*short_length), long_extrusion); + enquecommandf_P(fmt1, 50, (35 - (i + 1)*short_length * 2), short_extrusion); } } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2b8137b27..d098e614d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -900,7 +900,7 @@ void lcd_commands() if (lcd_commands_step == 3 && !blocks_queued()) { //PID calibration preparePidTuning(); // ensure we don't move to the next step early // setting the correct target temperature (for visualization) is done in PID_autotune - enquecommandf(PSTR("M303 E0 S%3u"), pid_temp); + enquecommandf_P(PSTR("M303 E0 S%3u"), pid_temp); lcd_setstatuspgm(_i("PID cal."));////MSG_PID_RUNNING c=20 lcd_commands_step = 2; } @@ -909,7 +909,7 @@ void lcd_commands() lcd_setstatuspgm(_i("PID cal. finished"));////MSG_PID_FINISHED c=20 setTargetHotend(0); if (_Kp != 0 || _Ki != 0 || _Kd != 0) { - enquecommandf(PSTR("M301 P%.2f I%.2f D%.2f"), _Kp, _Ki, _Kd); + enquecommandf_P(PSTR("M301 P%.2f I%.2f D%.2f"), _Kp, _Ki, _Kd); enquecommand_P(MSG_M500); } else {