mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-29 23:07:42 +00:00
Merge 'bugfix-2.0.x' into 2.0.x
This commit is contained in:
commit
b29aae6c0c
@ -784,6 +784,8 @@
|
||||
#define DEFAULT_YJERK 10.0
|
||||
#define DEFAULT_ZJERK 0.3
|
||||
|
||||
//#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves
|
||||
|
||||
//#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2
|
||||
#if ENABLED(LIMITED_JERK_EDITING)
|
||||
#define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits
|
||||
|
@ -1044,7 +1044,7 @@
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
//#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
|
||||
//#define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS)
|
||||
//#define POWER_LOSS_PIN 44 // Pin to detect power loss
|
||||
//#define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module.
|
||||
//#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
|
||||
//#define POWER_LOSS_PULL // Set pullup / pulldown as appropriate
|
||||
//#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
|
||||
@ -1172,18 +1172,16 @@
|
||||
// Add an optimized binary file transfer mode, initiated with 'M28 B1'
|
||||
//#define BINARY_FILE_TRANSFER
|
||||
|
||||
#if HAS_SDCARD_CONNECTION
|
||||
/**
|
||||
* Set this option to one of the following (or the board's defaults apply):
|
||||
*
|
||||
* LCD - Use the SD drive in the external LCD controller.
|
||||
* ONBOARD - Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)
|
||||
* CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
|
||||
*
|
||||
* :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
|
||||
*/
|
||||
//#define SDCARD_CONNECTION LCD
|
||||
#endif
|
||||
/**
|
||||
* Set this option to one of the following (or the board's defaults apply):
|
||||
*
|
||||
* LCD - Use the SD drive in the external LCD controller.
|
||||
* ONBOARD - Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)
|
||||
* CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
|
||||
*
|
||||
* :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
|
||||
*/
|
||||
//#define SDCARD_CONNECTION LCD
|
||||
|
||||
#endif // SDSUPPORT
|
||||
|
||||
@ -1260,6 +1258,7 @@
|
||||
#define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
|
||||
#define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
|
||||
#define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
|
||||
//#define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active
|
||||
//#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
|
||||
//#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
|
||||
//#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
|
||||
@ -2791,6 +2790,8 @@
|
||||
//#define GCODE_QUOTED_STRINGS // Support for quoted string parameters
|
||||
#endif
|
||||
|
||||
//#define GCODE_CASE_INSENSITIVE // Accept G-code sent to the firmware in lowercase
|
||||
|
||||
/**
|
||||
* CNC G-code options
|
||||
* Support CNC-style G-code dialects used by laser cutters, drawing machine cams, etc.
|
||||
|
@ -39,7 +39,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ void watchdog_init() {
|
||||
#if ENABLED(WATCHDOG_RESET_MANUAL)
|
||||
ISR(WDT_vect) {
|
||||
sei(); // With the interrupt driven serial we need to allow interrupts.
|
||||
SERIAL_ERROR_MSG(MSG_WATCHDOG_FIRED);
|
||||
SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
|
||||
minkill(); // interrupt-safe final kill and infinite loop
|
||||
}
|
||||
#endif
|
||||
|
@ -54,7 +54,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
eeprom_write_byte(p, v);
|
||||
delay(2);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -32,21 +32,21 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT) && SERIAL_PORT == 1) || (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == 1) || (defined(DGUS_SERIAL_PORT) && DGUS_SERIAL_PORT == 1)
|
||||
#if SERIAL_PORT == 1 || SERIAL_PORT_2 == 1 || DGUS_SERIAL_PORT == 1
|
||||
MarlinSerial MSerial1((LPC_UART_TypeDef *) LPC_UART1);
|
||||
extern "C" void UART1_IRQHandler() {
|
||||
MSerial1.IRQHandler();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT) && SERIAL_PORT == 2) || (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == 2) || (defined(DGUS_SERIAL_PORT) && DGUS_SERIAL_PORT == 2)
|
||||
#if SERIAL_PORT == 2 || SERIAL_PORT_2 == 2 || DGUS_SERIAL_PORT == 2
|
||||
MarlinSerial MSerial2(LPC_UART2);
|
||||
extern "C" void UART2_IRQHandler() {
|
||||
MSerial2.IRQHandler();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT) && SERIAL_PORT == 3) || (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == 3) || (defined(DGUS_SERIAL_PORT) && DGUS_SERIAL_PORT == 3)
|
||||
#if SERIAL_PORT == 3 || SERIAL_PORT_2 == 3 || DGUS_SERIAL_PORT == 3
|
||||
MarlinSerial MSerial3(LPC_UART3);
|
||||
extern "C" void UART3_IRQHandler() {
|
||||
MSerial3.IRQHandler();
|
||||
|
@ -76,3 +76,52 @@
|
||||
#if ENABLED(BAUD_RATE_GCODE)
|
||||
#error "BAUD_RATE_GCODE is not yet supported on LPC176x."
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Flag any serial port conflicts
|
||||
*
|
||||
* Port | TX | RX |
|
||||
* --- | --- | --- |
|
||||
* Serial | P0_02 | P0_03 |
|
||||
* Serial1 | P0_15 | P0_16 |
|
||||
* Serial2 | P0_10 | P0_11 |
|
||||
* Serial3 | P0_00 | P0_01 |
|
||||
*/
|
||||
#if (defined(SERIAL_PORT) && SERIAL_PORT == 0) || (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == 0) || (defined(DGUS_SERIAL_PORT) && DGUS_SERIAL_PORT == 0)
|
||||
#if X_CS_PIN == P0_02 || TMC_SW_MISO == P0_02 || (E_STEPPERS && E_MUX1_PIN == P0_02) \
|
||||
|| Y_CS_PIN == P0_03 || TMC_SW_MOSI == P0_03 || (E_STEPPERS && E_MUX0_PIN == P0_03)
|
||||
#error "Serial port assignment (0) conflicts with other pins!"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SERIAL_PORT == 1 || SERIAL_PORT_2 == 1 || DGUS_SERIAL_PORT == 1
|
||||
#if TMC_SW_SCK == P0_15
|
||||
#error "Serial port assignment (1) conflicts with other pins!"
|
||||
#elif HAS_SPI_LCD
|
||||
#if BTN_EN2 == P0_15 || SCK_PIN == P0_15 || LCD_PINS_D4 == P0_15 || DOGLCD_SCK == P0_15 || LCD_RESET_PIN == P0_15 || LCD_PINS_RS == P0_15 || SHIFT_CLK == P0_15 \
|
||||
|| BTN_EN1 == P0_16 || LCD_SDSS == P0_16 || LCD_PINS_RS == P0_16 || MISO_PIN == P0_16 || DOGLCD_A0 == P0_16 || SS_PIN == P0_16 || LCD_SDSS == P0_16 || DOGLCD_CS == P0_16 || LCD_RESET_PIN == P0_16 || LCD_BACKLIGHT_PIN == P0_16
|
||||
#error "Serial port assignment (1) conflicts with other pins!"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SERIAL_PORT == 2 || SERIAL_PORT_2 == 2 || DGUS_SERIAL_PORT == 2
|
||||
#if Y_MIN_PIN == P0_10 || Z_MIN_PROBE_PIN == P0_10 \
|
||||
|| X_ENABLE_PIN == P0_10 || Y_ENABLE_PIN == P0_10 || X2_ENABLE_PIN == P0_10 || Y2_ENABLE_PIN == P0_10 || Z2_ENABLE_PIN == P0_10 || Z3_ENABLE_PIN == P0_10 || Z4_ENABLE_PIN == P0_10 \
|
||||
|| X2_CS_PIN == P0_10 || Y2_CS_PIN == P0_10 || Z2_CS_PIN == P0_10 || Z3_CS_PIN == P0_10 || Z4_CS_PIN == P0_10 \
|
||||
|| X_DIR_PIN == P0_11 || Y_DIR_PIN == P0_11 || X2_DIR_PIN == P0_11 || Y2_DIR_PIN == P0_11 || Z2_DIR_PIN == P0_11 || Z3_DIR_PIN == P0_11 || Z4_DIR_PIN == P0_11 \
|
||||
|| X2_STEP_PIN == P0_11 || Y2_STEP_PIN == P0_11 || Z2_STEP_PIN == P0_11 || Z3_STEP_PIN == P0_11 || Z4_STEP_PIN == P0_11
|
||||
#error "Serial port assignment (2) conflicts with other pins!"
|
||||
#elif (E_STEPPERS > 1 && (E1_ENABLE_PIN == P0_10 || E1_CS_PIN == P0_10)) || (E_STEPPERS > 0 && (E0_DIR_PIN == P0_11 || E0_STEP_PIN == P0_11))
|
||||
#error "Serial port assignment (2) conflicts with other pins!"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SERIAL_PORT == 3 || SERIAL_PORT_2 == 3 || DGUS_SERIAL_PORT == 3
|
||||
#if X_MIN_PIN == P0_00 || Y_SERIAL_TX_PIN == P0_00 || Y_SERIAL_RX_PIN == P0_00 \
|
||||
|| X_MAX_PIN == P0_01 || X_SERIAL_TX_PIN == P0_01 || X_SERIAL_RX_PIN == P0_01
|
||||
#error "Serial port assignment (2) conflicts with other pins!"
|
||||
#elif E_STEPPERS > 1 && (E1_DIR_PIN == P0_00 || E1_STEP_PIN == P0_01)
|
||||
#error "Serial port assignment (2) conflicts with other pins!"
|
||||
#endif
|
||||
#endif
|
||||
|
@ -72,7 +72,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
eeprom_write_byte(p, v);
|
||||
delay(2);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
|
||||
if (v != eeprom_read_byte(p)) {
|
||||
eeprom_write_byte(p, v);
|
||||
if (eeprom_read_byte(p) != v) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
|
||||
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -278,7 +278,7 @@ bool pin_is_protected(const pin_t pin) {
|
||||
}
|
||||
|
||||
void protected_pin_err() {
|
||||
SERIAL_ERROR_MSG(MSG_ERR_PROTECTED_PIN);
|
||||
SERIAL_ERROR_MSG(STR_ERR_PROTECTED_PIN);
|
||||
}
|
||||
|
||||
void quickstop_stepper() {
|
||||
@ -390,8 +390,8 @@ void startOrResumeJob() {
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
void abortSDPrinting() {
|
||||
card.stopSDPrint(
|
||||
inline void abortSDPrinting() {
|
||||
card.endFilePrint(
|
||||
#if SD_RESORT
|
||||
true
|
||||
#endif
|
||||
@ -412,10 +412,58 @@ void startOrResumeJob() {
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
inline void finishSDPrinting() {
|
||||
bool did_state = true;
|
||||
switch (card.sdprinting_done_state) {
|
||||
|
||||
#if HAS_RESUME_CONTINUE // Display "Click to Continue..."
|
||||
case 1:
|
||||
did_state = queue.enqueue_P(PSTR("M0Q1S"
|
||||
#if HAS_LCD_MENU
|
||||
"1800" // ...for 30 minutes with LCD
|
||||
#else
|
||||
"60" // ...for 1 minute with no LCD
|
||||
#endif
|
||||
));
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 2: print_job_timer.stop(); break;
|
||||
|
||||
case 3:
|
||||
did_state = print_job_timer.duration() < 60 || queue.enqueue_P(PSTR("M31"));
|
||||
break;
|
||||
|
||||
case 4:
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
recovery.purge();
|
||||
#endif
|
||||
|
||||
#if ENABLED(SD_FINISHED_STEPPERRELEASE) && defined(SD_FINISHED_RELEASECOMMAND)
|
||||
planner.finish_and_disable();
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||
ui.set_progress_done();
|
||||
#endif
|
||||
|
||||
#if ENABLED(SD_REPRINT_LAST_SELECTED_FILE)
|
||||
ui.reselect_last_file();
|
||||
#endif
|
||||
|
||||
SERIAL_ECHOLNPGM(STR_FILE_PRINTED);
|
||||
|
||||
default:
|
||||
did_state = false;
|
||||
card.sdprinting_done_state = 0;
|
||||
}
|
||||
if (did_state) ++card.sdprinting_done_state;
|
||||
}
|
||||
|
||||
#endif // SDSUPPORT
|
||||
|
||||
/**
|
||||
* Manage several activities:
|
||||
* Minimal management of Marlin's core activities:
|
||||
* - Check for Filament Runout
|
||||
* - Keep the command buffer full
|
||||
* - Check for maximum inactive time between commands
|
||||
@ -440,7 +488,7 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
|
||||
|
||||
if (max_inactive_time && ELAPSED(ms, gcode.previous_move_ms + max_inactive_time)) {
|
||||
SERIAL_ERROR_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_KILL_INACTIVE_TIME, parser.command_ptr);
|
||||
SERIAL_ECHOLNPAIR(STR_KILL_INACTIVE_TIME, parser.command_ptr);
|
||||
kill();
|
||||
}
|
||||
|
||||
@ -505,7 +553,7 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
|
||||
// KILL the machine
|
||||
// ----------------------------------------------------------------
|
||||
if (killCount >= KILL_DELAY) {
|
||||
SERIAL_ERROR_MSG(MSG_KILL_BUTTON);
|
||||
SERIAL_ERROR_MSG(STR_KILL_BUTTON);
|
||||
kill();
|
||||
}
|
||||
#endif
|
||||
@ -723,7 +771,7 @@ void idle(
|
||||
void kill(PGM_P const lcd_error/*=nullptr*/, PGM_P const lcd_component/*=nullptr*/, const bool steppers_off/*=false*/) {
|
||||
thermalManager.disable_all_heaters();
|
||||
|
||||
SERIAL_ERROR_MSG(MSG_ERR_KILLED);
|
||||
SERIAL_ERROR_MSG(STR_ERR_KILLED);
|
||||
|
||||
#if HAS_DISPLAY
|
||||
ui.kill_screen(lcd_error ?: GET_TEXT(MSG_KILLED), lcd_component ?: NUL_STR);
|
||||
@ -794,7 +842,7 @@ void stop() {
|
||||
#endif
|
||||
|
||||
if (IsRunning()) {
|
||||
SERIAL_ERROR_MSG(MSG_ERR_STOPPED);
|
||||
SERIAL_ERROR_MSG(STR_ERR_STOPPED);
|
||||
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||
safe_delay(350); // allow enough time for messages to get out before stopping
|
||||
Running = false;
|
||||
@ -900,11 +948,11 @@ void setup() {
|
||||
|
||||
// Check startup - does nothing if bootloader sets MCUSR to 0
|
||||
byte mcu = HAL_get_reset_source();
|
||||
if (mcu & 1) SERIAL_ECHOLNPGM(MSG_POWERUP);
|
||||
if (mcu & 2) SERIAL_ECHOLNPGM(MSG_EXTERNAL_RESET);
|
||||
if (mcu & 4) SERIAL_ECHOLNPGM(MSG_BROWNOUT_RESET);
|
||||
if (mcu & 8) SERIAL_ECHOLNPGM(MSG_WATCHDOG_RESET);
|
||||
if (mcu & 32) SERIAL_ECHOLNPGM(MSG_SOFTWARE_RESET);
|
||||
if (mcu & 1) SERIAL_ECHOLNPGM(STR_POWERUP);
|
||||
if (mcu & 2) SERIAL_ECHOLNPGM(STR_EXTERNAL_RESET);
|
||||
if (mcu & 4) SERIAL_ECHOLNPGM(STR_BROWNOUT_RESET);
|
||||
if (mcu & 8) SERIAL_ECHOLNPGM(STR_WATCHDOG_RESET);
|
||||
if (mcu & 32) SERIAL_ECHOLNPGM(STR_SOFTWARE_RESET);
|
||||
HAL_clear_reset_source();
|
||||
|
||||
serialprintPGM(GET_TEXT(MSG_MARLIN));
|
||||
@ -914,15 +962,15 @@ void setup() {
|
||||
|
||||
#if defined(STRING_DISTRIBUTION_DATE) && defined(STRING_CONFIG_H_AUTHOR)
|
||||
SERIAL_ECHO_MSG(
|
||||
MSG_CONFIGURATION_VER
|
||||
STR_CONFIGURATION_VER
|
||||
STRING_DISTRIBUTION_DATE
|
||||
MSG_AUTHOR STRING_CONFIG_H_AUTHOR
|
||||
STR_AUTHOR STRING_CONFIG_H_AUTHOR
|
||||
);
|
||||
SERIAL_ECHO_MSG("Compiled: " __DATE__);
|
||||
#endif
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_FREE_MEMORY, freeMemory(), MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t) * (BLOCK_BUFFER_SIZE));
|
||||
SERIAL_ECHOLNPAIR(STR_FREE_MEMORY, freeMemory(), STR_PLANNER_BUFFER_BYTES, (int)sizeof(block_t) * (BLOCK_BUFFER_SIZE));
|
||||
|
||||
// UI must be initialized before EEPROM
|
||||
// (because EEPROM code calls the UI).
|
||||
@ -937,32 +985,28 @@ void setup() {
|
||||
ui.show_bootscreen();
|
||||
#endif
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
card.mount(); // Mount the SD card before settings.first_load
|
||||
#endif
|
||||
ui.reset_status(); // Load welcome message early. (Retained if no errors exist.)
|
||||
|
||||
// Load data from EEPROM if available (or use defaults)
|
||||
// This also updates variables in the planner, elsewhere
|
||||
settings.first_load();
|
||||
#if ENABLED(SDSUPPORT)
|
||||
card.mount(); // Mount the SD card before settings.first_load
|
||||
#endif
|
||||
// Load data from EEPROM if available (or use defaults)
|
||||
settings.first_load(); // This also updates variables in the planner, elsewhere
|
||||
|
||||
#if ENABLED(TOUCH_BUTTONS)
|
||||
touch.init();
|
||||
#endif
|
||||
|
||||
#if HAS_M206_COMMAND
|
||||
// Initialize current position based on home_offset
|
||||
#if HAS_M206_COMMAND // Initialize current position based on home_offset
|
||||
current_position += home_offset;
|
||||
#endif
|
||||
|
||||
// Vital to init stepper/planner equivalent for current_position
|
||||
sync_plan_position();
|
||||
sync_plan_position(); // Vital to init stepper/planner equivalent for current_position
|
||||
|
||||
thermalManager.init(); // Initialize temperature loop
|
||||
|
||||
print_job_timer.init(); // Initial setup of print job timer
|
||||
|
||||
ui.reset_status(); // Print startup message after print statistics are loaded
|
||||
|
||||
endstops.init(); // Init endstops and pullups
|
||||
|
||||
stepper.init(); // Init stepper. This enables interrupts!
|
||||
@ -1117,15 +1161,24 @@ void setup() {
|
||||
#if ENABLED(PRUSA_MMU2)
|
||||
mmu2.init();
|
||||
#endif
|
||||
|
||||
#if HAS_SERVICE_INTERVALS
|
||||
ui.reset_status(true); // Show service messages or keep current status
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* The main Marlin program loop
|
||||
*
|
||||
* - Save or log commands to SD
|
||||
* - Process available commands (if not saving)
|
||||
* - Call endstop manager
|
||||
* - Call inactivity manager
|
||||
* - Call idle() to handle all tasks between G-code commands
|
||||
* Note that no G-codes from the queue can be executed during idle()
|
||||
* but many G-codes can be called directly anytime like macros.
|
||||
* - Check whether SD card auto-start is needed now.
|
||||
* - Check whether SD print finishing is needed now.
|
||||
* - Run one G-code command from the immediate or main command queue
|
||||
* and open up one space. Commands in the main queue may come from sd
|
||||
* card, host, or by direct injection. The queue will continue to fill
|
||||
* as long as idle() or manage_inactivity() are being called.
|
||||
*/
|
||||
void loop() {
|
||||
do {
|
||||
@ -1135,6 +1188,7 @@ void loop() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
card.checkautostart();
|
||||
if (card.flag.abort_sd_printing) abortSDPrinting();
|
||||
if (card.sdprinting_done_state) finishSDPrinting();
|
||||
#endif
|
||||
|
||||
queue.advance();
|
||||
|
@ -97,6 +97,210 @@
|
||||
// #define STRING_SPLASH_LINE3 WEBSITE_URL
|
||||
//#endif
|
||||
|
||||
//
|
||||
// Common Serial Console Messages
|
||||
// Don't change these strings because serial hosts look for them.
|
||||
//
|
||||
|
||||
#define STR_ENQUEUEING "enqueueing \""
|
||||
#define STR_POWERUP "PowerUp"
|
||||
#define STR_EXTERNAL_RESET " External Reset"
|
||||
#define STR_BROWNOUT_RESET " Brown out Reset"
|
||||
#define STR_WATCHDOG_RESET " Watchdog Reset"
|
||||
#define STR_SOFTWARE_RESET " Software Reset"
|
||||
#define STR_AUTHOR " | Author: "
|
||||
#define STR_CONFIGURATION_VER " Last Updated: "
|
||||
#define STR_FREE_MEMORY " Free Memory: "
|
||||
#define STR_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
|
||||
#define STR_OK "ok"
|
||||
#define STR_WAIT "wait"
|
||||
#define STR_STATS "Stats: "
|
||||
#define STR_FILE_SAVED "Done saving file."
|
||||
#define STR_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
|
||||
#define STR_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
|
||||
#define STR_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
|
||||
#define STR_FILE_PRINTED "Done printing file"
|
||||
#define STR_BEGIN_FILE_LIST "Begin file list"
|
||||
#define STR_END_FILE_LIST "End file list"
|
||||
#define STR_INVALID_EXTRUDER "Invalid extruder"
|
||||
#define STR_INVALID_E_STEPPER "Invalid E stepper"
|
||||
#define STR_E_STEPPER_NOT_SPECIFIED "E stepper not specified"
|
||||
#define STR_INVALID_SOLENOID "Invalid solenoid"
|
||||
#define STR_M115_REPORT "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID
|
||||
#define STR_COUNT_X " Count X:"
|
||||
#define STR_COUNT_A " Count A:"
|
||||
#define STR_WATCHDOG_FIRED "Watchdog timeout. Reset required."
|
||||
#define STR_ERR_KILLED "Printer halted. kill() called!"
|
||||
#define STR_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
|
||||
#define STR_BUSY_PROCESSING "busy: processing"
|
||||
#define STR_BUSY_PAUSED_FOR_USER "busy: paused for user"
|
||||
#define STR_BUSY_PAUSED_FOR_INPUT "busy: paused for input"
|
||||
#define STR_Z_MOVE_COMP "Z_move_comp"
|
||||
#define STR_RESEND "Resend: "
|
||||
#define STR_UNKNOWN_COMMAND "Unknown command: \""
|
||||
#define STR_ACTIVE_EXTRUDER "Active Extruder: "
|
||||
#define STR_X_MIN "x_min"
|
||||
#define STR_X_MAX "x_max"
|
||||
#define STR_X2_MIN "x2_min"
|
||||
#define STR_X2_MAX "x2_max"
|
||||
#define STR_Y_MIN "y_min"
|
||||
#define STR_Y_MAX "y_max"
|
||||
#define STR_Y2_MIN "y2_min"
|
||||
#define STR_Y2_MAX "y2_max"
|
||||
#define STR_Z_MIN "z_min"
|
||||
#define STR_Z_MAX "z_max"
|
||||
#define STR_Z2_MIN "z2_min"
|
||||
#define STR_Z2_MAX "z2_max"
|
||||
#define STR_Z3_MIN "z3_min"
|
||||
#define STR_Z3_MAX "z3_max"
|
||||
#define STR_Z4_MIN "z4_min"
|
||||
#define STR_Z4_MAX "z4_max"
|
||||
#define STR_Z_PROBE "z_probe"
|
||||
#define STR_FILAMENT_RUNOUT_SENSOR "filament"
|
||||
#define STR_PROBE_OFFSET "Probe Offset"
|
||||
#define STR_SKEW_MIN "min_skew_factor: "
|
||||
#define STR_SKEW_MAX "max_skew_factor: "
|
||||
#define STR_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
||||
#define STR_ERR_M421_PARAMETERS "M421 incorrect parameter usage"
|
||||
#define STR_ERR_BAD_PLANE_MODE "G5 requires XY plane mode"
|
||||
#define STR_ERR_MESH_XY "Mesh point cannot be resolved"
|
||||
#define STR_ERR_ARC_ARGS "G2/G3 bad parameters"
|
||||
#define STR_ERR_PROTECTED_PIN "Protected Pin"
|
||||
#define STR_ERR_M420_FAILED "Failed to enable Bed Leveling"
|
||||
#define STR_ERR_M428_TOO_FAR "Too far from reference point"
|
||||
#define STR_ERR_M303_DISABLED "PIDTEMP disabled"
|
||||
#define STR_M119_REPORT "Reporting endstop status"
|
||||
#define STR_ON "ON"
|
||||
#define STR_OFF "OFF"
|
||||
#define STR_ENDSTOP_HIT "TRIGGERED"
|
||||
#define STR_ENDSTOP_OPEN "open"
|
||||
#define STR_HOTEND_OFFSET "Hotend offsets:"
|
||||
#define STR_DUPLICATION_MODE "Duplication mode: "
|
||||
#define STR_SOFT_ENDSTOPS "Soft endstops: "
|
||||
#define STR_SOFT_MIN " Min: "
|
||||
#define STR_SOFT_MAX " Max: "
|
||||
|
||||
#define STR_SAVED_POS "Position saved"
|
||||
#define STR_RESTORING_POS "Restoring position"
|
||||
#define STR_INVALID_POS_SLOT "Invalid slot. Total: "
|
||||
|
||||
#define STR_SD_CANT_OPEN_SUBDIR "Cannot open subdir "
|
||||
#define STR_SD_INIT_FAIL "SD init fail"
|
||||
#define STR_SD_VOL_INIT_FAIL "volume.init failed"
|
||||
#define STR_SD_OPENROOT_FAIL "openRoot failed"
|
||||
#define STR_SD_CARD_OK "SD card ok"
|
||||
#define STR_SD_WORKDIR_FAIL "workDir open failed"
|
||||
#define STR_SD_OPEN_FILE_FAIL "open failed, File: "
|
||||
#define STR_SD_FILE_OPENED "File opened: "
|
||||
#define STR_SD_SIZE " Size: "
|
||||
#define STR_SD_FILE_SELECTED "File selected"
|
||||
#define STR_SD_WRITE_TO_FILE "Writing to file: "
|
||||
#define STR_SD_PRINTING_BYTE "SD printing byte "
|
||||
#define STR_SD_NOT_PRINTING "Not SD printing"
|
||||
#define STR_SD_ERR_WRITE_TO_FILE "error writing to file"
|
||||
#define STR_SD_ERR_READ "SD read error"
|
||||
#define STR_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: "
|
||||
|
||||
#define STR_ENDSTOPS_HIT "endstops hit: "
|
||||
#define STR_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
|
||||
#define STR_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
|
||||
#define STR_ERR_HOTEND_TOO_COLD "Hotend too cold"
|
||||
#define STR_ERR_Z_HOMING_SER "Home XY first"
|
||||
#define STR_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
||||
|
||||
#define STR_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
|
||||
#define STR_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"
|
||||
#define STR_FILAMENT_CHANGE_WAIT_LCD "Press button to resume"
|
||||
#define STR_FILAMENT_CHANGE_HEAT_M108 "Send M108 to heat nozzle"
|
||||
#define STR_FILAMENT_CHANGE_INSERT_M108 "Insert filament and send M108"
|
||||
#define STR_FILAMENT_CHANGE_WAIT_M108 "Send M108 to resume"
|
||||
|
||||
#define STR_STOP_BLTOUCH "!! STOP called because of BLTouch error - restart with M999"
|
||||
#define STR_STOP_UNHOMED "!! STOP called because of unhomed error - restart with M999"
|
||||
#define STR_KILL_INACTIVE_TIME "!! KILL caused by too much inactive time - current command: "
|
||||
#define STR_KILL_BUTTON "!! KILL caused by KILL button/pin"
|
||||
|
||||
// temperature.cpp strings
|
||||
#define STR_PID_AUTOTUNE_PREFIX "PID Autotune"
|
||||
#define STR_PID_AUTOTUNE_START STR_PID_AUTOTUNE_PREFIX " start"
|
||||
#define STR_PID_AUTOTUNE_FAILED STR_PID_AUTOTUNE_PREFIX " failed!"
|
||||
#define STR_PID_BAD_EXTRUDER_NUM STR_PID_AUTOTUNE_FAILED " Bad extruder number"
|
||||
#define STR_PID_TEMP_TOO_HIGH STR_PID_AUTOTUNE_FAILED " Temperature too high"
|
||||
#define STR_PID_TIMEOUT STR_PID_AUTOTUNE_FAILED " timeout"
|
||||
#define STR_BIAS " bias: "
|
||||
#define STR_D_COLON " d: "
|
||||
#define STR_T_MIN " min: "
|
||||
#define STR_T_MAX " max: "
|
||||
#define STR_KU " Ku: "
|
||||
#define STR_TU " Tu: "
|
||||
#define STR_CLASSIC_PID " Classic PID "
|
||||
#define STR_KP " Kp: "
|
||||
#define STR_KI " Ki: "
|
||||
#define STR_KD " Kd: "
|
||||
#define STR_PID_AUTOTUNE_FINISHED STR_PID_AUTOTUNE_PREFIX " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
|
||||
#define STR_PID_DEBUG " PID_DEBUG "
|
||||
#define STR_PID_DEBUG_INPUT ": Input "
|
||||
#define STR_PID_DEBUG_OUTPUT " Output "
|
||||
#define STR_PID_DEBUG_PTERM " pTerm "
|
||||
#define STR_PID_DEBUG_ITERM " iTerm "
|
||||
#define STR_PID_DEBUG_DTERM " dTerm "
|
||||
#define STR_PID_DEBUG_CTERM " cTerm "
|
||||
#define STR_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
|
||||
|
||||
#define STR_HEATER_BED "bed"
|
||||
#define STR_HEATER_CHAMBER "chamber"
|
||||
|
||||
#define STR_STOPPED_HEATER ", system stopped! Heater_ID: "
|
||||
#define STR_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !"
|
||||
#define STR_T_HEATING_FAILED "Heating failed"
|
||||
#define STR_T_THERMAL_RUNAWAY "Thermal Runaway"
|
||||
#define STR_T_MAXTEMP "MAXTEMP triggered"
|
||||
#define STR_T_MINTEMP "MINTEMP triggered"
|
||||
#define STR_ERR_PROBING_FAILED "Probing Failed"
|
||||
#define STR_ZPROBE_OUT_SER "Z Probe Past Bed"
|
||||
|
||||
// Debug
|
||||
#define STR_DEBUG_PREFIX "DEBUG:"
|
||||
#define STR_DEBUG_OFF "off"
|
||||
#define STR_DEBUG_ECHO "ECHO"
|
||||
#define STR_DEBUG_INFO "INFO"
|
||||
#define STR_DEBUG_ERRORS "ERRORS"
|
||||
#define STR_DEBUG_DRYRUN "DRYRUN"
|
||||
#define STR_DEBUG_COMMUNICATION "COMMUNICATION"
|
||||
#define STR_DEBUG_LEVELING "LEVELING"
|
||||
|
||||
// LCD Menu Messages
|
||||
|
||||
#define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
|
||||
#define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
|
||||
|
||||
#define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
|
||||
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
|
||||
|
||||
#define STR_X "X"
|
||||
#define STR_Y "Y"
|
||||
#define STR_Z "Z"
|
||||
#define STR_E "E"
|
||||
#if IS_KINEMATIC
|
||||
#define STR_A "A"
|
||||
#define STR_B "B"
|
||||
#define STR_C "C"
|
||||
#else
|
||||
#define STR_A "X"
|
||||
#define STR_B "Y"
|
||||
#define STR_C "Z"
|
||||
#endif
|
||||
#define STR_X2 "X2"
|
||||
#define STR_Y2 "Y2"
|
||||
#define STR_Z2 "Z2"
|
||||
#define STR_Z3 "Z3"
|
||||
#define STR_Z4 "Z4"
|
||||
|
||||
#define LCD_STR_A STR_A
|
||||
#define LCD_STR_B STR_B
|
||||
#define LCD_STR_C STR_C
|
||||
#define LCD_STR_E STR_E
|
||||
|
||||
#if HAS_CHARACTER_LCD
|
||||
|
||||
// Custom characters defined in the first 8 characters of the LCD
|
||||
@ -135,210 +339,6 @@
|
||||
|
||||
#endif
|
||||
|
||||
// Common Serial Console Messages (do not translate those!)
|
||||
|
||||
#define MSG_ENQUEUEING "enqueueing \""
|
||||
#define MSG_POWERUP "PowerUp"
|
||||
#define MSG_EXTERNAL_RESET " External Reset"
|
||||
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
||||
#define MSG_WATCHDOG_RESET " Watchdog Reset"
|
||||
#define MSG_SOFTWARE_RESET " Software Reset"
|
||||
#define MSG_AUTHOR " | Author: "
|
||||
#define MSG_CONFIGURATION_VER " Last Updated: "
|
||||
#define MSG_FREE_MEMORY " Free Memory: "
|
||||
#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
|
||||
#define MSG_OK "ok"
|
||||
#define MSG_WAIT "wait"
|
||||
#define MSG_STATS "Stats: "
|
||||
#define MSG_FILE_SAVED "Done saving file."
|
||||
#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
|
||||
#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
|
||||
#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
|
||||
#define MSG_FILE_PRINTED "Done printing file"
|
||||
#define MSG_BEGIN_FILE_LIST "Begin file list"
|
||||
#define MSG_END_FILE_LIST "End file list"
|
||||
#define MSG_INVALID_EXTRUDER "Invalid extruder"
|
||||
#define MSG_INVALID_E_STEPPER "Invalid E stepper"
|
||||
#define MSG_E_STEPPER_NOT_SPECIFIED "E stepper not specified"
|
||||
#define MSG_INVALID_SOLENOID "Invalid solenoid"
|
||||
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID
|
||||
#define MSG_COUNT_X " Count X:"
|
||||
#define MSG_COUNT_A " Count A:"
|
||||
#define MSG_WATCHDOG_FIRED "Watchdog timeout. Reset required."
|
||||
#define MSG_ERR_KILLED "Printer halted. kill() called!"
|
||||
#define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
|
||||
#define MSG_BUSY_PROCESSING "busy: processing"
|
||||
#define MSG_BUSY_PAUSED_FOR_USER "busy: paused for user"
|
||||
#define MSG_BUSY_PAUSED_FOR_INPUT "busy: paused for input"
|
||||
#define MSG_Z_MOVE_COMP "Z_move_comp"
|
||||
#define MSG_RESEND "Resend: "
|
||||
#define MSG_UNKNOWN_COMMAND "Unknown command: \""
|
||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||
#define MSG_X_MIN "x_min"
|
||||
#define MSG_X_MAX "x_max"
|
||||
#define MSG_X2_MIN "x2_min"
|
||||
#define MSG_X2_MAX "x2_max"
|
||||
#define MSG_Y_MIN "y_min"
|
||||
#define MSG_Y_MAX "y_max"
|
||||
#define MSG_Y2_MIN "y2_min"
|
||||
#define MSG_Y2_MAX "y2_max"
|
||||
#define MSG_Z_MIN "z_min"
|
||||
#define MSG_Z_MAX "z_max"
|
||||
#define MSG_Z2_MIN "z2_min"
|
||||
#define MSG_Z2_MAX "z2_max"
|
||||
#define MSG_Z3_MIN "z3_min"
|
||||
#define MSG_Z3_MAX "z3_max"
|
||||
#define MSG_Z4_MIN "z4_min"
|
||||
#define MSG_Z4_MAX "z4_max"
|
||||
#define MSG_Z_PROBE "z_probe"
|
||||
#define MSG_FILAMENT_RUNOUT_SENSOR "filament"
|
||||
#define MSG_PROBE_OFFSET "Probe Offset"
|
||||
#define MSG_SKEW_MIN "min_skew_factor: "
|
||||
#define MSG_SKEW_MAX "max_skew_factor: "
|
||||
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
||||
#define MSG_ERR_M421_PARAMETERS "M421 incorrect parameter usage"
|
||||
#define MSG_ERR_BAD_PLANE_MODE "G5 requires XY plane mode"
|
||||
#define MSG_ERR_MESH_XY "Mesh point cannot be resolved"
|
||||
#define MSG_ERR_ARC_ARGS "G2/G3 bad parameters"
|
||||
#define MSG_ERR_PROTECTED_PIN "Protected Pin"
|
||||
#define MSG_ERR_M420_FAILED "Failed to enable Bed Leveling"
|
||||
#define MSG_ERR_M428_TOO_FAR "Too far from reference point"
|
||||
#define MSG_ERR_M303_DISABLED "PIDTEMP disabled"
|
||||
#define MSG_M119_REPORT "Reporting endstop status"
|
||||
#define MSG_ON "ON"
|
||||
#define MSG_OFF "OFF"
|
||||
#define MSG_ENDSTOP_HIT "TRIGGERED"
|
||||
#define MSG_ENDSTOP_OPEN "open"
|
||||
#define MSG_HOTEND_OFFSET "Hotend offsets:"
|
||||
#define MSG_DUPLICATION_MODE "Duplication mode: "
|
||||
#define MSG_SOFT_ENDSTOPS "Soft endstops: "
|
||||
#define MSG_SOFT_MIN " Min: "
|
||||
#define MSG_SOFT_MAX " Max: "
|
||||
|
||||
#define MSG_SAVED_POS "Position saved"
|
||||
#define MSG_RESTORING_POS "Restoring position"
|
||||
#define MSG_INVALID_POS_SLOT "Invalid slot. Total: "
|
||||
|
||||
#define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir "
|
||||
#define MSG_SD_INIT_FAIL "SD init fail"
|
||||
#define MSG_SD_VOL_INIT_FAIL "volume.init failed"
|
||||
#define MSG_SD_OPENROOT_FAIL "openRoot failed"
|
||||
#define MSG_SD_CARD_OK "SD card ok"
|
||||
#define MSG_SD_WORKDIR_FAIL "workDir open failed"
|
||||
#define MSG_SD_OPEN_FILE_FAIL "open failed, File: "
|
||||
#define MSG_SD_FILE_OPENED "File opened: "
|
||||
#define MSG_SD_SIZE " Size: "
|
||||
#define MSG_SD_FILE_SELECTED "File selected"
|
||||
#define MSG_SD_WRITE_TO_FILE "Writing to file: "
|
||||
#define MSG_SD_PRINTING_BYTE "SD printing byte "
|
||||
#define MSG_SD_NOT_PRINTING "Not SD printing"
|
||||
#define MSG_SD_ERR_WRITE_TO_FILE "error writing to file"
|
||||
#define MSG_SD_ERR_READ "SD read error"
|
||||
#define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: "
|
||||
|
||||
#define MSG_STEPPER_TOO_HIGH "Steprate too high: "
|
||||
#define MSG_ENDSTOPS_HIT "endstops hit: "
|
||||
#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
|
||||
#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
|
||||
#define MSG_ERR_HOTEND_TOO_COLD "Hotend too cold"
|
||||
#define MSG_ERR_Z_HOMING_SER "Home XY first"
|
||||
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"
|
||||
#define MSG_FILAMENT_CHANGE_WAIT_LCD "Press button to resume"
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_M108 "Send M108 to heat nozzle"
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_M108 "Insert filament and send M108"
|
||||
#define MSG_FILAMENT_CHANGE_WAIT_M108 "Send M108 to resume"
|
||||
|
||||
#define MSG_STOP_BLTOUCH "!! STOP called because of BLTouch error - restart with M999"
|
||||
#define MSG_STOP_UNHOMED "!! STOP called because of unhomed error - restart with M999"
|
||||
#define MSG_KILL_INACTIVE_TIME "!! KILL caused by too much inactive time - current command: "
|
||||
#define MSG_KILL_BUTTON "!! KILL caused by KILL button/pin"
|
||||
|
||||
// temperature.cpp strings
|
||||
#define MSG_PID_AUTOTUNE_PREFIX "PID Autotune"
|
||||
#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE_PREFIX " start"
|
||||
#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE_PREFIX " failed!"
|
||||
#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number"
|
||||
#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high"
|
||||
#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout"
|
||||
#define MSG_BIAS " bias: "
|
||||
#define MSG_D " d: "
|
||||
#define MSG_T_MIN " min: "
|
||||
#define MSG_T_MAX " max: "
|
||||
#define MSG_KU " Ku: "
|
||||
#define MSG_TU " Tu: "
|
||||
#define MSG_CLASSIC_PID " Classic PID "
|
||||
#define MSG_KP " Kp: "
|
||||
#define MSG_KI " Ki: "
|
||||
#define MSG_KD " Kd: "
|
||||
#define MSG_AT " @:"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE_PREFIX " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
|
||||
#define MSG_PID_DEBUG " PID_DEBUG "
|
||||
#define MSG_PID_DEBUG_INPUT ": Input "
|
||||
#define MSG_PID_DEBUG_OUTPUT " Output "
|
||||
#define MSG_PID_DEBUG_PTERM " pTerm "
|
||||
#define MSG_PID_DEBUG_ITERM " iTerm "
|
||||
#define MSG_PID_DEBUG_DTERM " dTerm "
|
||||
#define MSG_PID_DEBUG_CTERM " cTerm "
|
||||
#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
|
||||
|
||||
#define MSG_HEATER_BED "bed"
|
||||
#define MSG_HEATER_CHAMBER "chamber"
|
||||
|
||||
#define MSG_STOPPED_HEATER ", system stopped! Heater_ID: "
|
||||
#define MSG_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !"
|
||||
#define MSG_T_HEATING_FAILED "Heating failed"
|
||||
#define MSG_T_THERMAL_RUNAWAY "Thermal Runaway"
|
||||
#define MSG_T_MAXTEMP "MAXTEMP triggered"
|
||||
#define MSG_T_MINTEMP "MINTEMP triggered"
|
||||
#define MSG_ERR_PROBING_FAILED "Probing Failed"
|
||||
#define MSG_ZPROBE_OUT_SER "Z Probe Past Bed"
|
||||
|
||||
// Debug
|
||||
#define MSG_DEBUG_PREFIX "DEBUG:"
|
||||
#define MSG_DEBUG_OFF "off"
|
||||
#define MSG_DEBUG_ECHO "ECHO"
|
||||
#define MSG_DEBUG_INFO "INFO"
|
||||
#define MSG_DEBUG_ERRORS "ERRORS"
|
||||
#define MSG_DEBUG_DRYRUN "DRYRUN"
|
||||
#define MSG_DEBUG_COMMUNICATION "COMMUNICATION"
|
||||
#define MSG_DEBUG_LEVELING "LEVELING"
|
||||
|
||||
// LCD Menu Messages
|
||||
|
||||
#define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
|
||||
#define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
|
||||
|
||||
#define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
|
||||
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
|
||||
|
||||
// Never translate these strings
|
||||
#define MSG_X "X"
|
||||
#define MSG_Y "Y"
|
||||
#define MSG_Z "Z"
|
||||
#define MSG_E "E"
|
||||
#if IS_KINEMATIC
|
||||
#define MSG_A "A"
|
||||
#define MSG_B "B"
|
||||
#define MSG_C "C"
|
||||
#else
|
||||
#define MSG_A "X"
|
||||
#define MSG_B "Y"
|
||||
#define MSG_C "Z"
|
||||
#endif
|
||||
#define MSG_X2 "X2"
|
||||
#define MSG_Y2 "Y2"
|
||||
#define MSG_Z2 "Z2"
|
||||
#define MSG_Z3 "Z3"
|
||||
#define MSG_Z4 "Z4"
|
||||
|
||||
#define LCD_STR_A MSG_A
|
||||
#define LCD_STR_B MSG_B
|
||||
#define LCD_STR_C MSG_C
|
||||
#define LCD_STR_E MSG_E
|
||||
|
||||
/**
|
||||
* Tool indexes for LCD display only
|
||||
*
|
||||
|
@ -54,7 +54,7 @@ void serial_ternary(const bool onoff, PGM_P const pre, PGM_P const on, PGM_P con
|
||||
serialprintPGM(onoff ? on : off);
|
||||
if (post) serialprintPGM(post);
|
||||
}
|
||||
void serialprint_onoff(const bool onoff) { serialprintPGM(onoff ? PSTR(MSG_ON) : PSTR(MSG_OFF)); }
|
||||
void serialprint_onoff(const bool onoff) { serialprintPGM(onoff ? PSTR(STR_ON) : PSTR(STR_OFF)); }
|
||||
void serialprintln_onoff(const bool onoff) { serialprint_onoff(onoff); SERIAL_EOL(); }
|
||||
void serialprint_truefalse(const bool tf) { serialprintPGM(tf ? PSTR("true") : PSTR("false")); }
|
||||
|
||||
|
@ -124,7 +124,7 @@ bool BLTouch::deploy_proc() {
|
||||
// The deploy might have failed or the probe is actually triggered (nozzle too low?) again
|
||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("BLTouch Recovery Failed");
|
||||
|
||||
SERIAL_ERROR_MSG(MSG_STOP_BLTOUCH); // Tell the user something is wrong, needs action
|
||||
SERIAL_ERROR_MSG(STR_STOP_BLTOUCH); // Tell the user something is wrong, needs action
|
||||
stop(); // but it's not too bad, no need to kill, allow restart
|
||||
|
||||
return true; // Tell our caller we goofed in case he cares to know
|
||||
@ -169,7 +169,7 @@ bool BLTouch::stow_proc() {
|
||||
|
||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("BLTouch Recovery Failed");
|
||||
|
||||
SERIAL_ERROR_MSG(MSG_STOP_BLTOUCH); // Tell the user something is wrong, needs action
|
||||
SERIAL_ERROR_MSG(STR_STOP_BLTOUCH); // Tell the user something is wrong, needs action
|
||||
stop(); // but it's not too bad, no need to kill, allow restart
|
||||
|
||||
return true; // Tell our caller we goofed in case he cares to know
|
||||
|
@ -105,7 +105,4 @@ private:
|
||||
static void mode_conv_proc(const bool M5V);
|
||||
};
|
||||
|
||||
// Deploy/stow angles for use by servo.cpp / servo.h
|
||||
#define BLTOUCH_ANGLES { BLTOUCH_DEPLOY, BLTOUCH_STOW }
|
||||
|
||||
extern BLTouch bltouch;
|
||||
|
@ -120,7 +120,7 @@ static bool ensure_safe_temperature(const PauseMode mode=PAUSE_MODE_SAME) {
|
||||
|
||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||
if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_HOTEND_TOO_COLD);
|
||||
SERIAL_ECHO_MSG(STR_ERR_HOTEND_TOO_COLD);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@ -175,7 +175,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||
#if HAS_LCD_MENU
|
||||
if (show_lcd) lcd_pause_show_message(PAUSE_MESSAGE_INSERT, mode);
|
||||
#endif
|
||||
SERIAL_ECHO_MSG(_PMSG(MSG_FILAMENT_CHANGE_INSERT));
|
||||
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_INSERT));
|
||||
|
||||
#if HAS_BUZZER
|
||||
filament_change_beep(max_beep_count, true);
|
||||
@ -400,7 +400,7 @@ bool pause_print(const float &retract, const xyz_pos_t &park_point, const float
|
||||
#endif
|
||||
|
||||
if (!DEBUGGING(DRYRUN) && unload_length && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
||||
SERIAL_ECHO_MSG(MSG_ERR_HOTEND_TOO_COLD);
|
||||
SERIAL_ECHO_MSG(STR_ERR_HOTEND_TOO_COLD);
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
if (show_lcd) { // Show status screen
|
||||
@ -480,7 +480,7 @@ void show_continue_prompt(const bool is_reload) {
|
||||
lcd_pause_show_message(is_reload ? PAUSE_MESSAGE_INSERT : PAUSE_MESSAGE_WAITING);
|
||||
#endif
|
||||
SERIAL_ECHO_START();
|
||||
serialprintPGM(is_reload ? PSTR(_PMSG(MSG_FILAMENT_CHANGE_INSERT) "\n") : PSTR(_PMSG(MSG_FILAMENT_CHANGE_WAIT) "\n"));
|
||||
serialprintPGM(is_reload ? PSTR(_PMSG(STR_FILAMENT_CHANGE_INSERT) "\n") : PSTR(_PMSG(STR_FILAMENT_CHANGE_WAIT) "\n"));
|
||||
}
|
||||
|
||||
void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep_count/*=0*/ DXC_ARGS) {
|
||||
@ -530,7 +530,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
|
||||
#if HAS_LCD_MENU
|
||||
lcd_pause_show_message(PAUSE_MESSAGE_HEAT);
|
||||
#endif
|
||||
SERIAL_ECHO_MSG(_PMSG(MSG_FILAMENT_CHANGE_HEAT));
|
||||
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_HEAT));
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("HeaterTimeout"), PSTR("Reheat"));
|
||||
|
@ -141,7 +141,7 @@ void PrintJobRecovery::prepare() {
|
||||
/**
|
||||
* Save the current machine state to the power-loss recovery file
|
||||
*/
|
||||
void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*=true*/) {
|
||||
void PrintJobRecovery::save(const bool force/*=false*/) {
|
||||
|
||||
#if SAVE_INFO_INTERVAL_MS > 0
|
||||
static millis_t next_save_ms; // = 0
|
||||
|
@ -159,13 +159,10 @@ class PrintJobRecovery {
|
||||
static inline void cancel() { purge(); card.autostart_index = 0; }
|
||||
|
||||
static void load();
|
||||
static void save(const bool force=
|
||||
static void save(const bool force=false
|
||||
#if ENABLED(SAVE_EACH_CMD_MODE)
|
||||
true
|
||||
#else
|
||||
false
|
||||
|| true
|
||||
#endif
|
||||
, const bool save_queue=true
|
||||
);
|
||||
|
||||
#if PIN_EXISTS(POWER_LOSS)
|
||||
|
@ -57,7 +57,7 @@ class ProbeTempComp {
|
||||
static const temp_calib_t cali_info[TSI_COUNT];
|
||||
|
||||
// Where to park nozzle to wait for probe cooldown
|
||||
static constexpr xyz_pos_t park_point = { PTC_PARK_POS_X, PTC_PARK_POS_Y, PTC_PARK_POS_Z };
|
||||
static constexpr xyz_pos_t park_point = xyz_pos_t({ PTC_PARK_POS_X, PTC_PARK_POS_Y, PTC_PARK_POS_Z });
|
||||
|
||||
static constexpr int max_bed_temp = PTC_MAX_BED_TEMP, // Max temperature to avoid heating errors
|
||||
|
||||
|
@ -462,7 +462,7 @@ void MMU2::tool_change(uint8_t index) {
|
||||
ENABLE_AXIS_E0();
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, int(extruder));
|
||||
SERIAL_ECHOLNPAIR(STR_ACTIVE_EXTRUDER, int(extruder));
|
||||
|
||||
ui.reset_status();
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ static void set_solenoid(const uint8_t num, const bool active) {
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
SERIAL_ECHO_MSG(MSG_INVALID_SOLENOID);
|
||||
SERIAL_ECHO_MSG(STR_INVALID_SOLENOID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ void GcodeSuite::G42() {
|
||||
const int8_t iy = hasJ ? parser.value_int() : 0;
|
||||
|
||||
if ((hasI && !WITHIN(ix, 0, GRID_MAX_POINTS_X - 1)) || (hasJ && !WITHIN(iy, 0, GRID_MAX_POINTS_Y - 1))) {
|
||||
SERIAL_ECHOLNPGM(MSG_ERR_MESH_XY);
|
||||
SERIAL_ECHOLNPGM(STR_ERR_MESH_XY);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -235,7 +235,7 @@ void GcodeSuite::M420() {
|
||||
|
||||
// Error if leveling failed to enable or reenable
|
||||
if (to_enable && !planner.leveling_active)
|
||||
SERIAL_ERROR_MSG(MSG_ERR_M420_FAILED);
|
||||
SERIAL_ERROR_MSG(STR_ERR_M420_FAILED);
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM("Bed Leveling ");
|
||||
@ -247,7 +247,7 @@ void GcodeSuite::M420() {
|
||||
if (planner.z_fade_height > 0.0)
|
||||
SERIAL_ECHOLN(planner.z_fade_height);
|
||||
else
|
||||
SERIAL_ECHOLNPGM(MSG_OFF);
|
||||
SERIAL_ECHOLNPGM(STR_OFF);
|
||||
#endif
|
||||
|
||||
// Report change in position
|
||||
|
@ -50,9 +50,9 @@ void GcodeSuite::M421() {
|
||||
hasQ = !hasZ && parser.seen('Q');
|
||||
|
||||
if (!hasI || !hasJ || !(hasZ || hasQ))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_M421_PARAMETERS);
|
||||
SERIAL_ERROR_MSG(STR_ERR_M421_PARAMETERS);
|
||||
else if (!WITHIN(ix, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(iy, 0, GRID_MAX_POINTS_Y - 1))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_MESH_XY);
|
||||
SERIAL_ERROR_MSG(STR_ERR_MESH_XY);
|
||||
else {
|
||||
z_values[ix][iy] = parser.value_linear_units() + (hasQ ? z_values[ix][iy] : 0);
|
||||
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
|
||||
|
@ -49,9 +49,9 @@ void GcodeSuite::M421() {
|
||||
const bool hasZ = parser.seen('Z'), hasQ = !hasZ && parser.seen('Q');
|
||||
|
||||
if (int(hasI && hasJ) + int(hasX && hasY) != 1 || !(hasZ || hasQ))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_M421_PARAMETERS);
|
||||
SERIAL_ERROR_MSG(STR_ERR_M421_PARAMETERS);
|
||||
else if (ix < 0 || iy < 0)
|
||||
SERIAL_ERROR_MSG(MSG_ERR_MESH_XY);
|
||||
SERIAL_ERROR_MSG(STR_ERR_MESH_XY);
|
||||
else
|
||||
mbl.set_z(ix, iy, parser.value_linear_units() + (hasQ ? mbl.z_values[ix][iy] : 0));
|
||||
}
|
||||
|
@ -57,9 +57,9 @@ void GcodeSuite::M421() {
|
||||
if (hasC) ij = ubl.find_closest_mesh_point_of_type(REAL, current_position);
|
||||
|
||||
if (int(hasC) + int(hasI && hasJ) != 1 || !(hasZ || hasQ || hasN))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_M421_PARAMETERS);
|
||||
SERIAL_ERROR_MSG(STR_ERR_M421_PARAMETERS);
|
||||
else if (!WITHIN(ij.x, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(ij.y, 0, GRID_MAX_POINTS_Y - 1))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_MESH_XY);
|
||||
SERIAL_ERROR_MSG(STR_ERR_MESH_XY);
|
||||
else {
|
||||
float &zval = ubl.z_values[ij.x][ij.y];
|
||||
zval = hasN ? NAN : parser.value_linear_units() + (hasQ ? zval : 0);
|
||||
|
@ -106,6 +106,8 @@
|
||||
#if AXIS_HAS_STALLGUARD(Y2)
|
||||
tmc_disable_stallguard(stepperY2, stealth_states.y2);
|
||||
#endif
|
||||
do_blocking_move_to_xy(-0.5 * x_axis_home_dir, -0.5 * home_dir(Y_AXIS), fr_mm_s / 2);
|
||||
safe_delay(100);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -118,7 +120,7 @@
|
||||
// Disallow Z homing if X or Y are unknown
|
||||
if (!TEST(axis_known_position, X_AXIS) || !TEST(axis_known_position, Y_AXIS)) {
|
||||
LCD_MESSAGEPGM(MSG_ERR_Z_HOMING);
|
||||
SERIAL_ECHO_MSG(MSG_ERR_Z_HOMING_SER);
|
||||
SERIAL_ECHO_MSG(STR_ERR_Z_HOMING_SER);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -154,7 +156,7 @@
|
||||
}
|
||||
else {
|
||||
LCD_MESSAGEPGM(MSG_ZPROBE_OUT);
|
||||
SERIAL_ECHO_MSG(MSG_ZPROBE_OUT_SER);
|
||||
SERIAL_ECHO_MSG(STR_ZPROBE_OUT_SER);
|
||||
}
|
||||
|
||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("<<< home_z_safely");
|
||||
@ -529,7 +531,7 @@ void GcodeSuite::G28(const bool always_home_all) {
|
||||
#define _HOME_SYNC doZ // Only for Z-axis
|
||||
#endif
|
||||
if (_HOME_SYNC)
|
||||
SERIAL_ECHOLNPGM(MSG_Z_MOVE_COMP);
|
||||
SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP);
|
||||
#endif
|
||||
|
||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("<<< G28");
|
||||
|
@ -190,7 +190,7 @@ static float std_dev_points(float z_pt[NPP + 1], const bool _0p_cal, const bool
|
||||
*/
|
||||
static float calibration_probe(const xy_pos_t &xy, const bool stow) {
|
||||
#if HAS_BED_PROBE
|
||||
return probe.probe_at_point(xy, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, true);
|
||||
return probe.probe_at_point(xy, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, true, false);
|
||||
#else
|
||||
UNUSED(stow);
|
||||
return lcd_probe_pt(xy);
|
||||
|
@ -82,7 +82,7 @@ void GcodeSuite::M852() {
|
||||
#endif
|
||||
|
||||
if (badval)
|
||||
SERIAL_ECHOLNPGM(MSG_SKEW_MIN " " STRINGIFY(SKEW_FACTOR_MIN) " " MSG_SKEW_MAX " " STRINGIFY(SKEW_FACTOR_MAX));
|
||||
SERIAL_ECHOLNPGM(STR_SKEW_MIN " " STRINGIFY(SKEW_FACTOR_MIN) " " STR_SKEW_MAX " " STRINGIFY(SKEW_FACTOR_MAX));
|
||||
|
||||
// When skew is changed the current position changes
|
||||
if (setval) {
|
||||
|
@ -50,7 +50,7 @@ void GcodeSuite::M218() {
|
||||
|
||||
if (!parser.seen("XYZ")) {
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM(MSG_HOTEND_OFFSET);
|
||||
SERIAL_ECHOPGM(STR_HOTEND_OFFSET);
|
||||
HOTEND_LOOP() {
|
||||
SERIAL_CHAR(' ');
|
||||
SERIAL_ECHO(hotend_offset[e].x);
|
||||
|
@ -30,6 +30,12 @@ void GcodeSuite::M281() {
|
||||
if (!parser.seenval('P')) return;
|
||||
const int servo_index = parser.value_int();
|
||||
if (WITHIN(servo_index, 0, NUM_SERVOS - 1)) {
|
||||
#if ENABLED(BLTOUCH)
|
||||
if (servo_index == Z_PROBE_SERVO_NR) {
|
||||
SERIAL_ERROR_MSG("BLTouch angles can't be changed.");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
bool angle_change = false;
|
||||
if (parser.seen('L')) {
|
||||
servo_angles[servo_index][0] = parser.value_int();
|
||||
|
@ -82,7 +82,7 @@ void GcodeSuite::M301() {
|
||||
SERIAL_EOL();
|
||||
}
|
||||
else
|
||||
SERIAL_ERROR_MSG(MSG_INVALID_EXTRUDER);
|
||||
SERIAL_ERROR_MSG(STR_INVALID_EXTRUDER);
|
||||
}
|
||||
|
||||
#endif // PIDTEMP
|
||||
|
@ -28,13 +28,13 @@
|
||||
void GcodeSuite::M111() {
|
||||
if (parser.seen('S')) marlin_debug_flags = parser.byteval('S');
|
||||
|
||||
static const char str_debug_1[] PROGMEM = MSG_DEBUG_ECHO,
|
||||
str_debug_2[] PROGMEM = MSG_DEBUG_INFO,
|
||||
str_debug_4[] PROGMEM = MSG_DEBUG_ERRORS,
|
||||
str_debug_8[] PROGMEM = MSG_DEBUG_DRYRUN,
|
||||
str_debug_16[] PROGMEM = MSG_DEBUG_COMMUNICATION
|
||||
static const char str_debug_1[] PROGMEM = STR_DEBUG_ECHO,
|
||||
str_debug_2[] PROGMEM = STR_DEBUG_INFO,
|
||||
str_debug_4[] PROGMEM = STR_DEBUG_ERRORS,
|
||||
str_debug_8[] PROGMEM = STR_DEBUG_DRYRUN,
|
||||
str_debug_16[] PROGMEM = STR_DEBUG_COMMUNICATION
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
, str_debug_lvl[] PROGMEM = MSG_DEBUG_LEVELING
|
||||
, str_debug_lvl[] PROGMEM = STR_DEBUG_LEVELING
|
||||
#endif
|
||||
;
|
||||
|
||||
@ -46,7 +46,7 @@ void GcodeSuite::M111() {
|
||||
};
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM(MSG_DEBUG_PREFIX);
|
||||
SERIAL_ECHOPGM(STR_DEBUG_PREFIX);
|
||||
if (marlin_debug_flags) {
|
||||
uint8_t comma = 0;
|
||||
for (uint8_t i = 0; i < COUNT(debug_strings); i++) {
|
||||
@ -57,7 +57,7 @@ void GcodeSuite::M111() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
SERIAL_ECHOPGM(MSG_DEBUG_OFF);
|
||||
SERIAL_ECHOPGM(STR_DEBUG_OFF);
|
||||
#if !defined(__AVR__) || !defined(USBCON)
|
||||
#if ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS)
|
||||
SERIAL_ECHOPAIR("\nBuffer Overruns: ", MYSERIAL0.buffer_overruns());
|
||||
|
@ -36,11 +36,11 @@ void GcodeSuite::M211() {
|
||||
const xyz_pos_t l_soft_min = soft_endstop.min.asLogical(),
|
||||
l_soft_max = soft_endstop.max.asLogical();
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM(MSG_SOFT_ENDSTOPS);
|
||||
SERIAL_ECHOPGM(STR_SOFT_ENDSTOPS);
|
||||
if (parser.seen('S')) soft_endstops_enabled = parser.value_bool();
|
||||
serialprint_onoff(soft_endstops_enabled);
|
||||
print_xyz(l_soft_min, PSTR(MSG_SOFT_MIN), PSTR(" "));
|
||||
print_xyz(l_soft_max, PSTR(MSG_SOFT_MAX));
|
||||
print_xyz(l_soft_min, PSTR(STR_SOFT_MIN), PSTR(" "));
|
||||
print_xyz(l_soft_max, PSTR(STR_SOFT_MAX));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -167,7 +167,7 @@
|
||||
extruder_duplication_enabled = ena && (duplication_e_mask >= 3);
|
||||
}
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM(MSG_DUPLICATION_MODE);
|
||||
SERIAL_ECHOPGM(STR_DUPLICATION_MODE);
|
||||
serialprint_onoff(extruder_duplication_enabled);
|
||||
if (ena) {
|
||||
SERIAL_ECHOPGM(" ( ");
|
||||
|
@ -110,6 +110,6 @@ void GcodeSuite::M81() {
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
LCD_MESSAGEPGM_P(PSTR(MACHINE_NAME " " MSG_OFF "."));
|
||||
LCD_MESSAGEPGM_P(PSTR(MACHINE_NAME " " STR_OFF "."));
|
||||
#endif
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ void GcodeSuite::G60() {
|
||||
const uint8_t slot = parser.byteval('S');
|
||||
|
||||
if (slot >= SAVED_POSITIONS) {
|
||||
SERIAL_ERROR_MSG(MSG_INVALID_POS_SLOT STRINGIFY(SAVED_POSITIONS));
|
||||
SERIAL_ERROR_MSG(STR_INVALID_POS_SLOT STRINGIFY(SAVED_POSITIONS));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ void GcodeSuite::G60() {
|
||||
|
||||
#if ENABLED(SAVED_POSITIONS_DEBUG)
|
||||
const xyze_pos_t &pos = stored_position[slot];
|
||||
DEBUG_ECHOPAIR_F(MSG_SAVED_POS " S", slot);
|
||||
DEBUG_ECHOPAIR_F(STR_SAVED_POS " S", slot);
|
||||
DEBUG_ECHOPAIR_F(" : X", pos.x);
|
||||
DEBUG_ECHOPAIR_F_P(SP_Y_STR, pos.y);
|
||||
DEBUG_ECHOLNPAIR_F_P(SP_Z_STR, pos.z);
|
||||
|
@ -42,7 +42,7 @@ void GcodeSuite::G61(void) {
|
||||
|
||||
#if SAVED_POSITIONS < 256
|
||||
if (slot >= SAVED_POSITIONS) {
|
||||
SERIAL_ERROR_MSG(MSG_INVALID_POS_SLOT STRINGIFY(SAVED_POSITIONS));
|
||||
SERIAL_ERROR_MSG(STR_INVALID_POS_SLOT STRINGIFY(SAVED_POSITIONS));
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@ -54,7 +54,7 @@ void GcodeSuite::G61(void) {
|
||||
const float fr = parser.linearval('F');
|
||||
if (fr > 0.0) feedrate_mm_s = MMM_TO_MMS(fr);
|
||||
|
||||
SERIAL_ECHOPAIR(MSG_RESTORING_POS " S", int(slot));
|
||||
SERIAL_ECHOPAIR(STR_RESTORING_POS " S", int(slot));
|
||||
LOOP_XYZ(i) {
|
||||
destination[i] = parser.seen(axis_codes[i])
|
||||
? stored_position[slot][i] + parser.value_axis_units((AxisEnum)i)
|
||||
|
@ -35,6 +35,10 @@
|
||||
#include "../../../lcd/ultralcd.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
#include "../../../feature/power_loss_recovery.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* M125: Store current position and move to parking position.
|
||||
* Called on pause (by M25) to prevent material leaking onto the
|
||||
@ -85,6 +89,9 @@ void GcodeSuite::M125() {
|
||||
#endif
|
||||
|
||||
if (pause_print(retract, park_point, 0, show_lcd)) {
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
if (recovery.enabled) recovery.save(true);
|
||||
#endif
|
||||
if (!sd_printing || show_lcd) {
|
||||
wait_for_confirmation(false, 0);
|
||||
resume_print(0, 0, PAUSE_PARK_RETRACT_LENGTH, 0);
|
||||
|
@ -94,7 +94,7 @@ int8_t GcodeSuite::get_target_extruder_from_command() {
|
||||
if (e < EXTRUDERS) return e;
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_CHAR('M'); SERIAL_ECHO(parser.codenum);
|
||||
SERIAL_ECHOLNPAIR(" " MSG_INVALID_EXTRUDER " ", int(e));
|
||||
SERIAL_ECHOLNPAIR(" " STR_INVALID_EXTRUDER " ", int(e));
|
||||
return -1;
|
||||
}
|
||||
return active_extruder;
|
||||
@ -111,9 +111,9 @@ int8_t GcodeSuite::get_target_e_stepper_from_command() {
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_CHAR('M'); SERIAL_ECHO(parser.codenum);
|
||||
if (e == -1)
|
||||
SERIAL_ECHOLNPGM(" " MSG_E_STEPPER_NOT_SPECIFIED);
|
||||
SERIAL_ECHOLNPGM(" " STR_E_STEPPER_NOT_SPECIFIED);
|
||||
else
|
||||
SERIAL_ECHOLNPAIR(" " MSG_INVALID_E_STEPPER " ", int(e));
|
||||
SERIAL_ECHOLNPAIR(" " STR_INVALID_E_STEPPER " ", int(e));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -951,13 +951,13 @@ void GcodeSuite::process_subcommands_now(char * gcode) {
|
||||
switch (busy_state) {
|
||||
case IN_HANDLER:
|
||||
case IN_PROCESS:
|
||||
SERIAL_ECHO_MSG(MSG_BUSY_PROCESSING);
|
||||
SERIAL_ECHO_MSG(STR_BUSY_PROCESSING);
|
||||
break;
|
||||
case PAUSED_FOR_USER:
|
||||
SERIAL_ECHO_MSG(MSG_BUSY_PAUSED_FOR_USER);
|
||||
SERIAL_ECHO_MSG(STR_BUSY_PAUSED_FOR_USER);
|
||||
break;
|
||||
case PAUSED_FOR_INPUT:
|
||||
SERIAL_ECHO_MSG(MSG_BUSY_PAUSED_FOR_INPUT);
|
||||
SERIAL_ECHO_MSG(STR_BUSY_PAUSED_FOR_INPUT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -69,7 +69,7 @@ void GcodeSuite::M428() {
|
||||
if (!WITHIN(diff[i], -20, 20) && home_dir((AxisEnum)i) > 0)
|
||||
diff[i] = -current_position[i];
|
||||
if (!WITHIN(diff[i], -20, 20)) {
|
||||
SERIAL_ERROR_MSG(MSG_ERR_M428_TOO_FAR);
|
||||
SERIAL_ERROR_MSG(STR_ERR_M428_TOO_FAR);
|
||||
LCD_ALERTMESSAGEPGM_P(PSTR("Err: Too far!"));
|
||||
BUZZ(200, 40);
|
||||
return;
|
||||
|
@ -39,7 +39,7 @@
|
||||
*/
|
||||
void GcodeSuite::M115() {
|
||||
|
||||
SERIAL_ECHOLNPGM(MSG_M115_REPORT);
|
||||
SERIAL_ECHOLNPGM(STR_M115_REPORT);
|
||||
|
||||
#if ENABLED(EXTENDED_CAPABILITIES_REPORT)
|
||||
|
||||
|
@ -67,11 +67,16 @@ void GcodeSuite::M0_M1() {
|
||||
|
||||
planner.synchronize();
|
||||
|
||||
#if HAS_LEDS_OFF_FLAG
|
||||
if (parser.seen('Q'))
|
||||
printerEventLEDs.onPrintCompleted(); // Change LED color for Print Completed
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
|
||||
if (has_message)
|
||||
ui.set_status(args, true);
|
||||
else if (!parser.seenval('Q')) {
|
||||
else {
|
||||
LCD_MESSAGEPGM(MSG_USERWAIT);
|
||||
#if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0
|
||||
ui.reset_progress_bar_timeout();
|
||||
@ -98,11 +103,11 @@ void GcodeSuite::M0_M1() {
|
||||
wait_for_user = true;
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("M0/1 Break Called"), CONTINUE_STR);
|
||||
host_prompt_do(PROMPT_USER_CONTINUE, parser.codenum ? PSTR("M1 Stop") : PSTR("M0 Stop"), CONTINUE_STR);
|
||||
#endif
|
||||
|
||||
if (ms > 0) ms += millis(); // wait until this time for a click
|
||||
while (wait_for_user || (ms > 0 && PENDING(millis(), ms))) idle();
|
||||
while (wait_for_user && (ms == 0 || PENDING(millis(), ms))) idle();
|
||||
|
||||
#if HAS_LEDS_OFF_FLAG
|
||||
printerEventLEDs.onResumeAfterWait();
|
||||
|
@ -38,7 +38,7 @@
|
||||
void GcodeSuite::M145() {
|
||||
const uint8_t material = (uint8_t)parser.intval('S');
|
||||
if (material >= COUNT(ui.preheat_hotend_temp))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_MATERIAL_INDEX);
|
||||
SERIAL_ERROR_MSG(STR_ERR_MATERIAL_INDEX);
|
||||
else {
|
||||
int v;
|
||||
if (parser.seenval('H')) {
|
||||
|
@ -118,7 +118,7 @@ void GcodeSuite::G0_G1(
|
||||
#endif
|
||||
if (_MOVE_SYNC) {
|
||||
planner.synchronize();
|
||||
SERIAL_ECHOLNPGM(MSG_Z_MOVE_COMP);
|
||||
SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -327,7 +327,7 @@ void GcodeSuite::G2_G3(const bool clockwise) {
|
||||
// P indicates number of circles to do
|
||||
int8_t circles_to_do = parser.byteval('P');
|
||||
if (!WITHIN(circles_to_do, 0, 100))
|
||||
SERIAL_ERROR_MSG(MSG_ERR_ARC_ARGS);
|
||||
SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS);
|
||||
|
||||
while (circles_to_do--)
|
||||
plan_arc(current_position, arc_offset, clockwise);
|
||||
@ -338,7 +338,7 @@ void GcodeSuite::G2_G3(const bool clockwise) {
|
||||
reset_stepper_timeout();
|
||||
}
|
||||
else
|
||||
SERIAL_ERROR_MSG(MSG_ERR_ARC_ARGS);
|
||||
SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ void GcodeSuite::G4() {
|
||||
|
||||
planner.synchronize();
|
||||
#if ENABLED(NANODLP_Z_SYNC)
|
||||
SERIAL_ECHOLNPGM(MSG_Z_MOVE_COMP);
|
||||
SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP);
|
||||
#endif
|
||||
|
||||
if (!ui.has_status()) LCD_MESSAGEPGM(MSG_DWELL);
|
||||
|
@ -45,7 +45,7 @@ void GcodeSuite::G5() {
|
||||
|
||||
#if ENABLED(CNC_WORKSPACE_PLANES)
|
||||
if (workspace_plane != PLANE_XY) {
|
||||
SERIAL_ERROR_MSG(MSG_ERR_BAD_PLANE_MODE);
|
||||
SERIAL_ERROR_MSG(STR_ERR_BAD_PLANE_MODE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -48,13 +48,13 @@
|
||||
) {
|
||||
probe.offset.z += offs;
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", probe.offset.z);
|
||||
SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET STR_Z ": ", probe.offset.z);
|
||||
}
|
||||
else {
|
||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||
hotend_offset[active_extruder].z -= offs;
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", hotend_offset[active_extruder].z);
|
||||
SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET STR_Z ": ", hotend_offset[active_extruder].z);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -98,7 +98,7 @@ void GcodeSuite::M290() {
|
||||
SERIAL_ECHO_START();
|
||||
|
||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET " " MSG_Z, probe.offset.z);
|
||||
SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET " " STR_Z, probe.offset.z);
|
||||
#endif
|
||||
|
||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||
|
@ -118,11 +118,18 @@ void GCodeParser::parse(char *p) {
|
||||
|
||||
reset(); // No codes to report
|
||||
|
||||
auto uppercase = [](char c) {
|
||||
#if ENABLED(GCODE_CASE_INSENSITIVE)
|
||||
if (WITHIN(c, 'a', 'z')) c += 'A' - 'a';
|
||||
#endif
|
||||
return c;
|
||||
};
|
||||
|
||||
// Skip spaces
|
||||
while (*p == ' ') ++p;
|
||||
|
||||
// Skip N[-0-9] if included in the command line
|
||||
if (*p == 'N' && NUMERIC_SIGNED(p[1])) {
|
||||
if (uppercase(*p) == 'N' && NUMERIC_SIGNED(p[1])) {
|
||||
#if ENABLED(FASTER_GCODE_PARSER)
|
||||
//set('N', p + 1); // (optional) Set the 'N' parameter value
|
||||
#endif
|
||||
@ -135,7 +142,7 @@ void GCodeParser::parse(char *p) {
|
||||
command_ptr = p;
|
||||
|
||||
// Get the command letter, which must be G, M, or T
|
||||
const char letter = *p++;
|
||||
const char letter = uppercase(*p++);
|
||||
|
||||
// Nullify asterisk and trailing whitespace
|
||||
char *starpos = strchr(p, '*');
|
||||
@ -271,7 +278,7 @@ void GCodeParser::parse(char *p) {
|
||||
bool quoted_string_arg = false;
|
||||
#endif
|
||||
string_arg = nullptr;
|
||||
while (const char param = *p++) { // Get the next parameter. A NUL ends the loop
|
||||
while (const char param = uppercase(*p++)) { // Get the next parameter. A NUL ends the loop
|
||||
|
||||
// Special handling for M32 [P] !/path/to/file.g#
|
||||
// The path must be the last parameter
|
||||
@ -289,14 +296,14 @@ void GCodeParser::parse(char *p) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// Arguments MUST be uppercase for fast GCode parsing
|
||||
#if ENABLED(FASTER_GCODE_PARSER)
|
||||
#define PARAM_TEST WITHIN(param, 'A', 'Z')
|
||||
// Arguments MUST be uppercase for fast GCode parsing
|
||||
#define PARAM_OK(P) WITHIN((P), 'A', 'Z')
|
||||
#else
|
||||
#define PARAM_TEST true
|
||||
#define PARAM_OK(P) true
|
||||
#endif
|
||||
|
||||
if (PARAM_TEST) {
|
||||
if (PARAM_OK(param)) {
|
||||
|
||||
while (*p == ' ') p++; // Skip spaces between parameters & values
|
||||
|
||||
@ -365,7 +372,7 @@ void GCodeParser::parse(char *p) {
|
||||
#endif // CNC_COORDINATE_SYSTEMS
|
||||
|
||||
void GCodeParser::unknown_command_warning() {
|
||||
SERIAL_ECHO_MSG(MSG_UNKNOWN_COMMAND, command_ptr, "\"");
|
||||
SERIAL_ECHO_MSG(STR_UNKNOWN_COMMAND, command_ptr, "\"");
|
||||
}
|
||||
|
||||
#if ENABLED(DEBUG_GCODE_PARSER)
|
||||
|
@ -166,7 +166,6 @@ public:
|
||||
#ifdef CPU_32_BIT
|
||||
FORCE_INLINE static bool seen(const char * const str) { return !!(codebits & letter_bits(str)); }
|
||||
#else
|
||||
// At least one of a list of code letters was seen
|
||||
FORCE_INLINE static bool seen(const char * const str) {
|
||||
const uint32_t letrbits = letter_bits(str);
|
||||
const uint8_t * const cb = (uint8_t*)&codebits;
|
||||
@ -177,14 +176,27 @@ public:
|
||||
|
||||
static inline bool seen_any() { return !!codebits; }
|
||||
|
||||
#define SEEN_TEST(L) TEST32(codebits, LETTER_BIT(L))
|
||||
FORCE_INLINE static bool seen_test(const char c) { return TEST32(codebits, LETTER_BIT(c)); }
|
||||
|
||||
#else // !FASTER_GCODE_PARSER
|
||||
|
||||
#if ENABLED(GCODE_CASE_INSENSITIVE)
|
||||
FORCE_INLINE static char* strgchr(char *p, char g) {
|
||||
auto uppercase = [](char c) {
|
||||
return c + (WITHIN(c, 'a', 'z') ? 'A' - 'a' : 0);
|
||||
};
|
||||
const char d = uppercase(g);
|
||||
for (char cc; (cc = uppercase(*p)); p++) if (cc == d) return p;
|
||||
return nullptr;
|
||||
}
|
||||
#else
|
||||
#define strgchr strchr
|
||||
#endif
|
||||
|
||||
// Code is found in the string. If not found, value_ptr is unchanged.
|
||||
// This allows "if (seen('A')||seen('B'))" to use the last-found value.
|
||||
static inline bool seen(const char c) {
|
||||
char *p = strchr(command_args, c);
|
||||
char *p = strgchr(command_args, c);
|
||||
const bool b = !!p;
|
||||
if (b) value_ptr = valid_float(&p[1]) ? &p[1] : nullptr;
|
||||
return b;
|
||||
@ -192,12 +204,12 @@ public:
|
||||
|
||||
static inline bool seen_any() { return *command_args == '\0'; }
|
||||
|
||||
#define SEEN_TEST(L) !!strchr(command_args, L)
|
||||
FORCE_INLINE static bool seen_test(const char c) { return (bool)strgchr(command_args, c); }
|
||||
|
||||
// At least one of a list of code letters was seen
|
||||
static inline bool seen(const char * const str) {
|
||||
for (uint8_t i = 0; const char c = str[i]; i++)
|
||||
if (SEEN_TEST(c)) return true;
|
||||
if (seen_test(c)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -205,7 +217,7 @@ public:
|
||||
|
||||
// Seen any axis parameter
|
||||
static inline bool seen_axis() {
|
||||
return SEEN_TEST('X') || SEEN_TEST('Y') || SEEN_TEST('Z') || SEEN_TEST('E');
|
||||
return seen_test('X') || seen_test('Y') || seen_test('Z') || seen_test('E');
|
||||
}
|
||||
|
||||
#if ENABLED(GCODE_QUOTED_STRINGS)
|
||||
@ -229,7 +241,7 @@ public:
|
||||
// Seen a parameter with a value
|
||||
static inline bool seenval(const char c) { return seen(c) && has_value(); }
|
||||
|
||||
// Float removes 'E' to prevent scientific notation interpretation
|
||||
// The value as a string
|
||||
static inline char* value_string() { return value_ptr; }
|
||||
|
||||
// Float removes 'E' to prevent scientific notation interpretation
|
||||
|
@ -39,9 +39,9 @@ void GcodeSuite::M851() {
|
||||
if (!parser.seen("XYZ")) {
|
||||
SERIAL_ECHOLNPAIR_P(
|
||||
#if HAS_PROBE_XY_OFFSET
|
||||
PSTR(MSG_PROBE_OFFSET " X"), probe.offset_xy.x, SP_Y_STR, probe.offset_xy.y, SP_Z_STR
|
||||
PSTR(STR_PROBE_OFFSET " X"), probe.offset_xy.x, SP_Y_STR, probe.offset_xy.y, SP_Z_STR
|
||||
#else
|
||||
PSTR(MSG_PROBE_OFFSET " X0 Y0 Z")
|
||||
PSTR(STR_PROBE_OFFSET " X0 Y0 Z")
|
||||
#endif
|
||||
, probe.offset.z
|
||||
);
|
||||
|
@ -163,7 +163,7 @@ bool GCodeQueue::enqueue_one(const char* cmd) {
|
||||
if (*cmd == 0 || *cmd == '\n' || *cmd == '\r') return true;
|
||||
|
||||
if (_enqueue(cmd)) {
|
||||
SERIAL_ECHO_MSG(MSG_ENQUEUEING, cmd, "\"");
|
||||
SERIAL_ECHO_MSG(STR_ENQUEUEING, cmd, "\"");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -244,7 +244,7 @@ void GCodeQueue::ok_to_send() {
|
||||
PORT_REDIRECT(pn); // Reply to the serial port that sent the command
|
||||
#endif
|
||||
if (!send_ok[index_r]) return;
|
||||
SERIAL_ECHOPGM(MSG_OK);
|
||||
SERIAL_ECHOPGM(STR_OK);
|
||||
#if ENABLED(ADVANCED_OK)
|
||||
char* p = command_buffer[index_r];
|
||||
if (*p == 'N') {
|
||||
@ -270,7 +270,7 @@ void GCodeQueue::flush_and_request_resend() {
|
||||
PORT_REDIRECT(pn); // Reply to the serial port that sent the command
|
||||
#endif
|
||||
SERIAL_FLUSH();
|
||||
SERIAL_ECHOPGM(MSG_RESEND);
|
||||
SERIAL_ECHOPGM(STR_RESEND);
|
||||
SERIAL_ECHOLN(last_N + 1);
|
||||
ok_to_send();
|
||||
}
|
||||
@ -397,7 +397,7 @@ void GCodeQueue::get_serial_commands() {
|
||||
static millis_t last_command_time = 0;
|
||||
const millis_t ms = millis();
|
||||
if (length == 0 && !serial_data_available() && ELAPSED(ms, last_command_time + NO_TIMEOUTS)) {
|
||||
SERIAL_ECHOLNPGM(MSG_WAIT);
|
||||
SERIAL_ECHOLNPGM(STR_WAIT);
|
||||
last_command_time = ms;
|
||||
}
|
||||
#endif
|
||||
@ -436,24 +436,24 @@ void GCodeQueue::get_serial_commands() {
|
||||
gcode_N = strtol(npos + 1, nullptr, 10);
|
||||
|
||||
if (gcode_N != last_N + 1 && !M110)
|
||||
return gcode_line_error(PSTR(MSG_ERR_LINE_NO), i);
|
||||
return gcode_line_error(PSTR(STR_ERR_LINE_NO), i);
|
||||
|
||||
char *apos = strrchr(command, '*');
|
||||
if (apos) {
|
||||
uint8_t checksum = 0, count = uint8_t(apos - command);
|
||||
while (count) checksum ^= command[--count];
|
||||
if (strtol(apos + 1, nullptr, 10) != checksum)
|
||||
return gcode_line_error(PSTR(MSG_ERR_CHECKSUM_MISMATCH), i);
|
||||
return gcode_line_error(PSTR(STR_ERR_CHECKSUM_MISMATCH), i);
|
||||
}
|
||||
else
|
||||
return gcode_line_error(PSTR(MSG_ERR_NO_CHECKSUM), i);
|
||||
return gcode_line_error(PSTR(STR_ERR_NO_CHECKSUM), i);
|
||||
|
||||
last_N = gcode_N;
|
||||
}
|
||||
#if ENABLED(SDSUPPORT)
|
||||
// Pronterface "M29" and "M29 " has no line number
|
||||
else if (card.flag.saving && !is_M29(command))
|
||||
return gcode_line_error(PSTR(MSG_ERR_NO_CHECKSUM), i);
|
||||
return gcode_line_error(PSTR(STR_ERR_NO_CHECKSUM), i);
|
||||
#endif
|
||||
|
||||
//
|
||||
@ -472,7 +472,7 @@ void GCodeQueue::get_serial_commands() {
|
||||
case 5:
|
||||
#endif
|
||||
PORT_REDIRECT(i); // Reply to the serial port that sent the command
|
||||
SERIAL_ECHOLNPGM(MSG_ERR_STOPPED);
|
||||
SERIAL_ECHOLNPGM(STR_ERR_STOPPED);
|
||||
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||
break;
|
||||
}
|
||||
@ -512,9 +512,10 @@ void GCodeQueue::get_serial_commands() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
/**
|
||||
* Get commands from the SD Card until the command buffer is full
|
||||
* or until the end of the file is reached. The special character '#'
|
||||
* can also interrupt buffering.
|
||||
* Get lines from the SD Card until the command buffer is full
|
||||
* or until the end of the file is reached. Because this method
|
||||
* always receives complete command-lines, they can go directly
|
||||
* into the main command queue.
|
||||
*/
|
||||
inline void GCodeQueue::get_sdcard_commands() {
|
||||
static uint8_t sd_input_state = PS_NORMAL;
|
||||
@ -526,38 +527,22 @@ void GCodeQueue::get_serial_commands() {
|
||||
while (length < BUFSIZE && !card_eof) {
|
||||
const int16_t n = card.get();
|
||||
card_eof = card.eof();
|
||||
if (n < 0 && !card_eof) { SERIAL_ERROR_MSG(MSG_SD_ERR_READ); continue; }
|
||||
if (n < 0 && !card_eof) { SERIAL_ERROR_MSG(STR_SD_ERR_READ); continue; }
|
||||
|
||||
const char sd_char = (char)n;
|
||||
if (sd_char == '\n' || sd_char == '\r' || card_eof) {
|
||||
const bool is_eol = sd_char == '\n' || sd_char == '\r';
|
||||
if (is_eol || card_eof) {
|
||||
|
||||
// Reset stream state, terminate the buffer, and commit a non-empty command
|
||||
if (!is_eol && sd_count) ++sd_count; // End of file with no newline
|
||||
if (!process_line_done(sd_input_state, command_buffer[index_w], sd_count)) {
|
||||
_commit_command(false); // Can handle last line missing a newline terminator
|
||||
_commit_command(false);
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
recovery.cmd_sdpos = card.getIndex(); // Prime for the next _commit_command
|
||||
recovery.cmd_sdpos = card.getIndex(); // Prime for the NEXT _commit_command
|
||||
#endif
|
||||
}
|
||||
|
||||
if (card_eof) {
|
||||
|
||||
card.fileHasFinished(); // Handle end of file reached
|
||||
|
||||
if (!IS_SD_PRINTING()) { // Was it the main job file?
|
||||
SERIAL_ECHOLNPGM(MSG_FILE_PRINTED); // Tell the host the file is printed.
|
||||
#if ENABLED(PRINTER_EVENT_LEDS)
|
||||
printerEventLEDs.onPrintCompleted(); // Change LED color for Print Completed
|
||||
#if HAS_RESUME_CONTINUE
|
||||
enqueue_now_P(PSTR("M0 S" // Display "Click to Continue..."
|
||||
#if HAS_LCD_MENU
|
||||
"1800" // ...for 30 minutes with LCD
|
||||
#else
|
||||
"60" // ...for 1 minute with no LCD
|
||||
#endif
|
||||
));
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (card_eof) card.fileHasFinished(); // Handle end of file reached
|
||||
}
|
||||
else
|
||||
process_stream_char(sd_char, sd_input_state, command_buffer[index_w], sd_count);
|
||||
@ -600,7 +585,7 @@ void GCodeQueue::advance() {
|
||||
if (is_M29(command)) {
|
||||
// M29 closes the file
|
||||
card.closefile();
|
||||
SERIAL_ECHOLNPGM(MSG_FILE_SAVED);
|
||||
SERIAL_ECHOLNPGM(STR_FILE_SAVED);
|
||||
|
||||
#if !defined(__AVR__) || !defined(USBCON)
|
||||
#if ENABLED(SERIAL_STATS_DROPPED_RX)
|
||||
@ -633,9 +618,7 @@ void GCodeQueue::advance() {
|
||||
#endif // SDSUPPORT
|
||||
|
||||
// The queue may be reset by a command handler or by code invoked by idle() within a handler
|
||||
if (length) {
|
||||
--length;
|
||||
if (++index_r >= BUFSIZE) index_r = 0;
|
||||
}
|
||||
--length;
|
||||
if (++index_r >= BUFSIZE) index_r = 0;
|
||||
|
||||
}
|
||||
|
@ -117,6 +117,12 @@ public:
|
||||
*/
|
||||
static void flush_and_request_resend();
|
||||
|
||||
/**
|
||||
* Attempt to enqueue a single G-code command
|
||||
* and return 'true' if successful.
|
||||
*/
|
||||
FORCE_INLINE static bool enqueue_P(const char* cmd) { return _enqueue(cmd); }
|
||||
|
||||
private:
|
||||
|
||||
static uint8_t index_w; // Ring buffer write position
|
||||
|
@ -31,9 +31,9 @@
|
||||
* M20: List SD card to serial output
|
||||
*/
|
||||
void GcodeSuite::M20() {
|
||||
SERIAL_ECHOLNPGM(MSG_BEGIN_FILE_LIST);
|
||||
SERIAL_ECHOLNPGM(STR_BEGIN_FILE_LIST);
|
||||
card.ls();
|
||||
SERIAL_ECHOLNPGM(MSG_END_FILE_LIST);
|
||||
SERIAL_ECHOLNPGM(STR_END_FILE_LIST);
|
||||
}
|
||||
|
||||
#endif // SDSUPPORT
|
||||
|
@ -86,10 +86,6 @@ void GcodeSuite::M24() {
|
||||
*/
|
||||
void GcodeSuite::M25() {
|
||||
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
if (recovery.enabled) recovery.save(true, false);
|
||||
#endif
|
||||
|
||||
// Set initial pause flag to prevent more commands from landing in the queue while we try to pause
|
||||
#if ENABLED(SDSUPPORT)
|
||||
if (IS_SD_PRINTING()) card.pauseSDPrint();
|
||||
@ -101,6 +97,10 @@ void GcodeSuite::M25() {
|
||||
|
||||
#else
|
||||
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
if (recovery.enabled) recovery.save(true);
|
||||
#endif
|
||||
|
||||
print_job_timer.pause();
|
||||
ui.reset_status();
|
||||
|
||||
|
@ -31,7 +31,7 @@ void GcodeSuite::M105() {
|
||||
const int8_t target_extruder = get_target_extruder_from_command();
|
||||
if (target_extruder < 0) return;
|
||||
|
||||
SERIAL_ECHOPGM(MSG_OK);
|
||||
SERIAL_ECHOPGM(STR_OK);
|
||||
|
||||
#if HAS_TEMP_SENSOR
|
||||
|
||||
|
@ -52,7 +52,7 @@ void GcodeSuite::M303() {
|
||||
#endif
|
||||
const heater_ind_t e = (heater_ind_t)parser.intval('E');
|
||||
if (!WITHIN(e, SI, EI)) {
|
||||
SERIAL_ECHOLNPGM(MSG_PID_BAD_EXTRUDER_NUM);
|
||||
SERIAL_ECHOLNPGM(STR_PID_BAD_EXTRUDER_NUM);
|
||||
#if ENABLED(EXTENSIBLE_UI)
|
||||
ExtUI::OnPidTuning(ExtUI::result_t::PID_BAD_EXTRUDER_NUM);
|
||||
#endif
|
||||
|
@ -502,6 +502,10 @@
|
||||
* Set a flag for a servo probe (or BLTouch)
|
||||
*/
|
||||
#define HAS_Z_SERVO_PROBE (defined(Z_PROBE_SERVO_NR) && Z_PROBE_SERVO_NR >= 0)
|
||||
#define HAS_SERVO_ANGLES (HAS_Z_SERVO_PROBE || EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE))
|
||||
#if !HAS_SERVO_ANGLES
|
||||
#undef EDITABLE_SERVO_ANGLES
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set flags for enabled probes
|
||||
@ -571,8 +575,6 @@
|
||||
|
||||
#define IS_RE_ARM_BOARD MB(RAMPS_14_RE_ARM_EFB, RAMPS_14_RE_ARM_EEB, RAMPS_14_RE_ARM_EFF, RAMPS_14_RE_ARM_EEF, RAMPS_14_RE_ARM_SF)
|
||||
|
||||
#define HAS_SDCARD_CONNECTION EITHER(TARGET_LPC1768, ADAFRUIT_GRAND_CENTRAL_M4)
|
||||
|
||||
#define HAS_LINEAR_E_JERK (DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE))
|
||||
|
||||
#ifndef SPI_SPEED
|
||||
|
@ -645,7 +645,7 @@
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#elif HAS_DRIVER(A4988) || HAS_DRIVER(A5984)
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#elif TRINAMICS
|
||||
#elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
@ -665,7 +665,7 @@
|
||||
#define MAXIMUM_STEPPER_RATE 500000
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MAXIMUM_STEPPER_RATE 1000000
|
||||
#elif TRINAMICS
|
||||
#elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
|
||||
#define MAXIMUM_STEPPER_RATE 5000000
|
||||
#else
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
@ -1546,16 +1546,6 @@
|
||||
#define HAS_SERVO_3 (PIN_EXISTS(SERVO3) && NUM_SERVOS > 3)
|
||||
#define HAS_SERVOS (NUM_SERVOS > 0)
|
||||
|
||||
#if HAS_SERVOS && !defined(Z_PROBE_SERVO_NR)
|
||||
#define Z_PROBE_SERVO_NR -1
|
||||
#endif
|
||||
|
||||
#define HAS_SERVO_ANGLES (EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE) || (HAS_Z_SERVO_PROBE && defined(Z_PROBE_SERVO_NR)))
|
||||
|
||||
#if !HAS_SERVO_ANGLES || ENABLED(BLTOUCH)
|
||||
#undef EDITABLE_SERVO_ANGLES
|
||||
#endif
|
||||
|
||||
// Sensors
|
||||
#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
* version was tagged.
|
||||
*/
|
||||
#ifndef STRING_DISTRIBUTION_DATE
|
||||
#define STRING_DISTRIBUTION_DATE "2020-02-24"
|
||||
#define STRING_DISTRIBUTION_DATE "2020-02-27"
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -785,7 +785,9 @@
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#else
|
||||
#endif
|
||||
|
||||
#ifndef STATUS_BED_WIDTH
|
||||
#define STATUS_BED_WIDTH 0
|
||||
#endif
|
||||
|
||||
@ -1729,8 +1731,8 @@
|
||||
|
||||
#define DO_DRAW_LOGO (STATUS_LOGO_WIDTH && ENABLED(CUSTOM_STATUS_SCREEN_IMAGE))
|
||||
#define DO_DRAW_HOTENDS (HOTENDS > 0)
|
||||
#define DO_DRAW_CUTTER (HAS_CUTTER)
|
||||
#define DO_DRAW_BED (HAS_HEATED_BED && STATUS_BED_WIDTH && HOTENDS <= 4)
|
||||
#define DO_DRAW_BED (HAS_HEATED_BED && HOTENDS <= 4)
|
||||
#define DO_DRAW_CUTTER (HAS_CUTTER && !DO_DRAW_BED)
|
||||
#define DO_DRAW_CHAMBER (HAS_TEMP_CHAMBER && STATUS_CHAMBER_WIDTH && HOTENDS <= 4)
|
||||
#define DO_DRAW_FAN (HAS_FAN0 && STATUS_FAN_WIDTH && HOTENDS <= 4 && defined(STATUS_FAN_FRAMES))
|
||||
|
||||
|
@ -188,21 +188,6 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(heater, isHeat));
|
||||
#endif
|
||||
|
||||
// Draw a heating progress bar, if specified
|
||||
#if DO_DRAW_BED && ENABLED(STATUS_HEAT_PERCENT)
|
||||
|
||||
if (STATIC_HOTEND && isHeat) {
|
||||
const uint8_t bx = STATUS_HOTEND_X(heater) + STATUS_HOTEND_WIDTH(heater) + 1;
|
||||
u8g.drawFrame(bx, STATUS_HEATERS_Y, 3, STATUS_HEATERS_HEIGHT);
|
||||
if (tall) {
|
||||
const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
|
||||
if (PAGE_OVER(STATUS_HEATERS_Y + ph))
|
||||
u8g.drawVLine(bx + 1, STATUS_HEATERS_Y + ph, tall);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
} // PAGE_CONTAINS
|
||||
|
||||
if (PAGE_UNDER(7)) {
|
||||
@ -240,11 +225,11 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
const float temp = thermalManager.degBed(),
|
||||
target = thermalManager.degTargetBed();
|
||||
|
||||
#if ENABLED(STATUS_HEAT_PERCENT) || (DO_DRAW_BED && DISABLED(STATUS_BED_ANIM))
|
||||
#if ENABLED(STATUS_HEAT_PERCENT) || DISABLED(STATUS_BED_ANIM)
|
||||
const bool isHeat = BED_ALT();
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_BED && DISABLED(STATUS_BED_ANIM)
|
||||
#if DISABLED(STATUS_BED_ANIM)
|
||||
#define STATIC_BED true
|
||||
#define BED_DOT isHeat
|
||||
#else
|
||||
@ -513,7 +498,7 @@ void MarlinUI::draw_status_screen() {
|
||||
u8g.drawBitmapP(STATUS_HEATERS_X, STATUS_HEATERS_Y, STATUS_HEATERS_BYTEWIDTH, STATUS_HEATERS_HEIGHT, status_heaters_bmp);
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_CUTTER
|
||||
#if DO_DRAW_CUTTER && DISABLED(STATUS_COMBINE_HEATERS)
|
||||
#if ANIM_CUTTER
|
||||
#define CUTTER_BITMAP(S) ((S) ? status_cutter_on_bmp : status_cutter_bmp)
|
||||
#else
|
||||
@ -537,7 +522,7 @@ void MarlinUI::draw_status_screen() {
|
||||
u8g.drawBitmapP(STATUS_BED_X, bedy, STATUS_BED_BYTEWIDTH, bedh, BED_BITMAP(BED_ALT()));
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_CHAMBER
|
||||
#if DO_DRAW_CHAMBER && DISABLED(STATUS_COMBINE_HEATERS)
|
||||
#if ANIM_CHAMBER
|
||||
#define CHAMBER_BITMAP(S) ((S) ? status_chamber_on_bmp : status_chamber_bmp)
|
||||
#else
|
||||
|
@ -137,16 +137,16 @@ namespace ExtUI {
|
||||
SERIAL_ECHOLNPAIR("OnPidTuning:", rst);
|
||||
switch (rst) {
|
||||
case PID_BAD_EXTRUDER_NUM:
|
||||
StatusScreen::setStatusMessage(MSG_PID_BAD_EXTRUDER_NUM);
|
||||
StatusScreen::setStatusMessage(STR_PID_BAD_EXTRUDER_NUM);
|
||||
break;
|
||||
case PID_TEMP_TOO_HIGH:
|
||||
StatusScreen::setStatusMessage(MSG_PID_TEMP_TOO_HIGH);
|
||||
StatusScreen::setStatusMessage(STR_PID_TEMP_TOO_HIGH);
|
||||
break;
|
||||
case PID_TUNING_TIMEOUT:
|
||||
StatusScreen::setStatusMessage(MSG_PID_TIMEOUT);
|
||||
StatusScreen::setStatusMessage(STR_PID_TIMEOUT);
|
||||
break;
|
||||
case PID_DONE:
|
||||
StatusScreen::setStatusMessage(MSG_PID_AUTOTUNE_FINISHED);
|
||||
StatusScreen::setStatusMessage(STR_PID_AUTOTUNE_FINISHED);
|
||||
break;
|
||||
}
|
||||
GOTO_SCREEN(StatusScreen);
|
||||
|
@ -84,7 +84,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(12).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
|
||||
.tag(15).button( BTN_POS(2,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISPLAY_MENU))
|
||||
.tag(9) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS))
|
||||
.tag(10).button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE))
|
||||
.tag(10).button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS))
|
||||
.tag(5) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY))
|
||||
.tag(6) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION))
|
||||
#if DISABLED(CLASSIC_JERK)
|
||||
@ -154,7 +154,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(11).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENT))
|
||||
.tag(15).button( BTN_POS(3,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISPLAY_MENU))
|
||||
.tag(9) .button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS))
|
||||
.tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE))
|
||||
.tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS))
|
||||
.colors(action_btn)
|
||||
.tag(1) .button( BTN_POS(3,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACK));
|
||||
#endif
|
||||
|
@ -86,7 +86,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
)
|
||||
.tag(12) .button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_LINEAR_ADVANCE))
|
||||
.tag(13) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS))
|
||||
.tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE))
|
||||
.tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS))
|
||||
.colors(action_btn)
|
||||
.tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
#undef GRID_COLS
|
||||
|
@ -62,34 +62,34 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
.text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
|
||||
.font(font_tiny);
|
||||
#if PIN_EXISTS(X_MAX)
|
||||
PIN_ENABLED (1, 2, PSTR(MSG_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(1, 2, PSTR(MSG_X_MAX), X_MAX)
|
||||
PIN_DISABLED(1, 2, PSTR(STR_X_MAX), X_MAX)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MAX)
|
||||
PIN_ENABLED (3, 2, PSTR(MSG_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(3, 2, PSTR(MSG_Y_MAX), Y_MAX)
|
||||
PIN_DISABLED(3, 2, PSTR(STR_Y_MAX), Y_MAX)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MAX)
|
||||
PIN_ENABLED (5, 2, PSTR(MSG_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(5, 2, PSTR(MSG_Z_MAX), Z_MAX)
|
||||
PIN_DISABLED(5, 2, PSTR(STR_Z_MAX), Z_MAX)
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MIN)
|
||||
PIN_ENABLED (1, 3, PSTR(MSG_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(1, 3, PSTR(MSG_X_MIN), X_MIN)
|
||||
PIN_DISABLED(1, 3, PSTR(STR_X_MIN), X_MIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MIN)
|
||||
PIN_ENABLED (3, 3, PSTR(MSG_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(3, 3, PSTR(MSG_Y_MIN), Y_MIN)
|
||||
PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN)
|
||||
PIN_ENABLED (5, 3, PSTR(MSG_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(5, 3, PSTR(MSG_Z_MIN), Z_MIN)
|
||||
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN)
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT)
|
||||
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT_INVERTING)
|
||||
@ -102,9 +102,9 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
PIN_ENABLED (5, 4, PSTR(MSG_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING)
|
||||
#else
|
||||
PIN_DISABLED(5, 4, PSTR(MSG_Z_PROBE), Z_MIN_PROBE)
|
||||
PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE)
|
||||
#endif
|
||||
|
||||
#if HAS_SOFTWARE_ENDSTOPS
|
||||
|
@ -136,16 +136,16 @@ namespace ExtUI {
|
||||
SERIAL_ECHOLNPAIR("OnPidTuning:",rst);
|
||||
switch(rst) {
|
||||
case PID_BAD_EXTRUDER_NUM:
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_BAD_EXTRUDER_NUM));
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(STR_PID_BAD_EXTRUDER_NUM));
|
||||
break;
|
||||
case PID_TEMP_TOO_HIGH:
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_TEMP_TOO_HIGH));
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(STR_PID_TEMP_TOO_HIGH));
|
||||
break;
|
||||
case PID_TUNING_TIMEOUT:
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_TIMEOUT));
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(STR_PID_TIMEOUT));
|
||||
break;
|
||||
case PID_DONE:
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_AUTOTUNE_FINISHED));
|
||||
ScreenHandler.setstatusmessagePGM(PSTR(STR_PID_AUTOTUNE_FINISHED));
|
||||
break;
|
||||
}
|
||||
ScreenHandler.GotoScreen(DGUSLCD_SCREEN_MAIN);
|
||||
|
@ -125,7 +125,7 @@ namespace Language_an {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Alzar memoria");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar memoria");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaurar memoria");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Restaurar memoria");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Tornar a cargar");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Informacion");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
|
||||
|
@ -110,7 +110,7 @@ namespace Language_bg {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD контраст");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Запази в EPROM");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Зареди от EPROM");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Фабрични настройки");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Фабрични настройки");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Обнови");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Преглед");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Действия");
|
||||
|
@ -120,7 +120,7 @@ namespace Language_ca {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contrast de LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Desa memoria");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carrega memoria");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaura valors");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Restaura valors");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Pantalla Info.");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Prepara");
|
||||
|
@ -310,7 +310,7 @@ namespace Language_cz {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Uložit nastavení");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Načíst nastavení");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Obnovit výchozí");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Obnovit výchozí");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inic. EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aktualizace z SD");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reset tiskárny");
|
||||
|
@ -105,7 +105,7 @@ namespace Language_da {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrast");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gem i EEPROM");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Hent fra EEPROM");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Gendan failsafe");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Gendan Defaults");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Info skærm");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Forbered");
|
||||
|
@ -290,7 +290,7 @@ namespace Language_de {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD-Kontrast");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Konfig. speichern");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Konfig. laden");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Standardwerte laden");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Standardwerte laden");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Werkseinstellungen");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("FW Update vom Medium");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Drucker neustarten");
|
||||
|
@ -136,7 +136,7 @@ namespace Language_el {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Κοντράστ LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Αποθήκευση");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Φόρτωση");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); //SHORTEN
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); //SHORTEN
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Προετοιμασία");
|
||||
|
@ -138,7 +138,7 @@ namespace Language_el_gr {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Κοντράστ LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Αποθήκευση");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Φόρτωση");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Επαναφορά ασφαλούς αντιγράφου");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά ασφαλούς αντιγράφου");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Προετοιμασία");
|
||||
|
@ -312,8 +312,11 @@ namespace Language_en {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD Contrast");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Store Settings");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Load Settings");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restore failsafe");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initialize EEPROM");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_INDEX = _UxGT("Err: EEPROM Index");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Media Update");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reset Printer");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh");
|
||||
|
@ -284,7 +284,7 @@ namespace Language_es {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Guardar EEPROM");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar EEPROM");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Rest. fábrica");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Rest. fábrica");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/USB");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetear Impresora");
|
||||
|
@ -187,7 +187,7 @@ namespace Language_eu {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrastea");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gorde memoria");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Kargatu memoria");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Larri. berriz.");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Larri. berriz.");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM-a hasieratu");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Pantaila info");
|
||||
|
@ -97,7 +97,7 @@ namespace Language_fi {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrasti");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Tallenna muistiin");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Lataa muistista");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Palauta oletus");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Palauta oletus");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Seuraa");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Valmistele");
|
||||
|
@ -282,7 +282,7 @@ namespace Language_fr {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Enregistrer config.");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Charger config.");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaurer défauts");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Restaurer défauts");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("RaZ imprimante");
|
||||
|
@ -117,7 +117,7 @@ namespace Language_gl {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Constraste LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gardar en memo.");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar de memo.");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Cargar de firm.");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Cargar de firm.");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Volver a cargar");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Monitorizacion");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
|
||||
|
@ -98,7 +98,7 @@ namespace Language_hr {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD-a");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Pohrani u memoriju");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Učitaj memoriju");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Učitaj failsafe");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Učitaj Defaults");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Info screen");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Pripremi");
|
||||
|
@ -310,7 +310,7 @@ namespace Language_it {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contrasto LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Salva impostazioni");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carica impostazioni");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Ripristina imp.");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Ripristina imp.");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aggiorna media");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetta stampante");
|
||||
@ -368,7 +368,7 @@ namespace Language_it {
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD = _UxGT("Rimuovi filamento");
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD_E = _UxGT("Rimuovi filamento *");
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Rimuovi tutto");
|
||||
PROGMEM Language_Str MSG_ATTACH_MEDIA = _UxGT("Inizializ. media");
|
||||
PROGMEM Language_Str MSG_ATTACH_MEDIA = _UxGT("Collega media");
|
||||
PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Cambia media");
|
||||
PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Rilascia media");
|
||||
PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z probe fuori piatto");
|
||||
|
@ -141,7 +141,7 @@ namespace Language_jp_kana {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCDコントラスト"); // "LCD contrast"
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // "Store memory"
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // "Load memory"
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("セッテイリセット"); // "Restore failsafe"
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("セッテイリセット"); // "Restore Defaults"
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // "Refresh"
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("ジョウホウガメン"); // "Info screen"
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("ジュンビセッテイ"); // "Prepare"
|
||||
|
@ -84,7 +84,7 @@ namespace Language_ko_KR {
|
||||
PROGMEM Language_Str MSG_MOTION = _UxGT("동작");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("설정 저장하기");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("설정 읽어오기");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("설정 되돌리기");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("설정 되돌리기");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM 초기화");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("처음으로");
|
||||
|
@ -123,7 +123,7 @@ namespace Language_nl {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD contrast");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Geheugen opslaan");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Geheugen laden");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Noodstop reset");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Noodstop reset");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Info scherm");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Voorbereiden");
|
||||
|
@ -298,7 +298,7 @@ namespace Language_pl {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Ustaw. fabryczne");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Ustaw. fabryczne");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę");
|
||||
|
@ -113,7 +113,7 @@ namespace Language_pt {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Guardar na memoria");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carregar da memoria");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Rest. de emergen.");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Rest. de emergen.");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Recarregar");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Monitorizar");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
|
||||
|
@ -252,7 +252,7 @@ namespace Language_pt_br {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Salvar Configuração");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Ler Configuração");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restauro seguro");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Restauro seguro");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Iniciar EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Atualiz. SD");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetar Impressora");
|
||||
|
@ -276,7 +276,7 @@ namespace Language_ru {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Контраст LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Сохранить настройки");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Загрузить настройки");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Вернуть настройки");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Вернуть настройки");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Изначальный EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Сброс принтера");
|
||||
|
@ -67,9 +67,9 @@ namespace Language_sk {
|
||||
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Domov os Z");
|
||||
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto-zarovn. Z");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Parkovanie XYZ");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím spusťte");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím začnete");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Ďalší bod");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Meranie hotové!");
|
||||
PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Vyrovnanie hotové!");
|
||||
PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Výška rovnania");
|
||||
PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Nastaviť ofsety");
|
||||
PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastavené");
|
||||
@ -173,10 +173,10 @@ namespace Language_sk {
|
||||
PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Postranné body");
|
||||
PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Typ siete bodov");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Exportovať sieť");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Exportovať do PC");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Exportovať do CSV");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Záloha do PC");
|
||||
PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Info. o UBL do PC");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export do hosta");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export do CSV");
|
||||
PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externá záloha");
|
||||
PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Info. o výst. UBL");
|
||||
PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mriežky");
|
||||
PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Ručné vyplnenie");
|
||||
PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Chytré vyplnenie");
|
||||
@ -302,8 +302,11 @@ namespace Language_sk {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Uložiť nastavenie");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Načítať nastavenie");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Obnoviť nastavenie");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Obnoviť nastavenie");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inicializ. EEPROM");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_CRC = _UxGT("Chyba: EEPROM CRC");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_INDEX = _UxGT("Chyba: EEPROM Index");
|
||||
PROGMEM Language_Str MSG_ERR_EEPROM_VERSION = _UxGT("Chyba: Verzia EEPROM");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aktualizovať z SD");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reštart. tlačiar.");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť");
|
||||
|
@ -149,7 +149,7 @@ namespace Language_test {
|
||||
PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
|
||||
PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
|
||||
PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = STRG_OKTAL_7;
|
||||
|
||||
PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
|
||||
PROGMEM Language_Str MSG_NOZZLE_N = STRG_OKTAL_8 " ~";
|
||||
@ -186,7 +186,7 @@ namespace Language_test {
|
||||
PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
|
||||
PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
|
||||
PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = STRG_OKTAL_7;
|
||||
|
||||
PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
|
||||
PROGMEM Language_Str MSG_NOZZLE_N = STRG_OKTAL_8 " ~";
|
||||
@ -222,7 +222,7 @@ namespace Language_test {
|
||||
PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
|
||||
PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
|
||||
PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = STRG_OKTAL_7;
|
||||
|
||||
PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
|
||||
PROGMEM Language_Str MSG_NOZZLE_N = STRG_OKTAL_8 " ~";
|
||||
|
@ -266,7 +266,7 @@ namespace Language_tr {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD Kontrast");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Hafızaya Al");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Hafızadan Yükle");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Fabrika Ayarları");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Fabrika Ayarları");
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat");
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("SD Güncellemesi");
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle");
|
||||
|
@ -139,7 +139,7 @@ namespace Language_uk {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("контраст LCD");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Зберегти в ПЗП");
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Зчитати з ПЗП");
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Відновити базові");
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Відновити базові");
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Поновити");
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Інформація");
|
||||
PROGMEM Language_Str MSG_PREPARE = _UxGT("Підготувати");
|
||||
|
@ -266,7 +266,7 @@ namespace Language_vi {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD contrast
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store settings
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load settings
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Khôi phục phòng hư"); // Restore failsafe
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Khôi phục phòng hư"); // Restore Defaults
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM
|
||||
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Cập Nhật phương tiện"); // Update media
|
||||
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Bặt Lại Máy In");
|
||||
@ -309,7 +309,7 @@ namespace Language_vi {
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD = _UxGT("Dỡ dây nhựa"); // unload filament
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD_E = _UxGT("Dỡ dây nhựa *"); // unload filament
|
||||
PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All
|
||||
PROGMEM Language_Str MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Init. media
|
||||
PROGMEM Language_Str MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Attach media
|
||||
PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Thay phương tiện"); // Change midea
|
||||
PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Phát hành phương tiện");
|
||||
PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe past bed
|
||||
|
@ -240,7 +240,7 @@ namespace Language_zh_CN {
|
||||
PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD对比度"); //"LCD contrast"
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("保存设置"); //"Store memory"
|
||||
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("装载设置"); //"Load memory"
|
||||
PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("恢复安全值"); //"Restore failsafe"
|
||||
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); //"Restore Defaults"
|
||||
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM"
|
||||
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); //"Refresh"
|
||||
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("信息屏"); //"Info screen"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user