From f4dbf424e42e177fa3b121b184441986c66d9614 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 21 Feb 2022 14:43:50 +0100 Subject: [PATCH 001/319] Use PAT9125 new init sequence --- Firmware/config.h | 7 ++- Firmware/pat9125.cpp | 128 ++++++++++++++++++++++--------------------- 2 files changed, 71 insertions(+), 64 deletions(-) diff --git a/Firmware/config.h b/Firmware/config.h index 06d17f700..956d178a4 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -43,7 +43,12 @@ //#define PAT9125_I2C_ADDR 0x73 //ID=NC #define PAT9125_XRES 0 #define PAT9125_YRES 240 // maximum resolution (5*X cpi) -#define PAT9124_YRES_MM (5*PAT9125_YRES/25.4) // counts per mm +#define PAT9125_YRES_MM (5*PAT9125_YRES/25.4) // counts per mm +#define PAT9125_INVERT_X 0 //1 means flipped +#define PAT9125_INVERT_Y 1 //1 means flipped +#define PAT9125_SWAP_XY 0 //X is Y and Y is X +#define PAT9125_12B_RES 1 //8bit or 12bit signed motion data +#define PAT9125_NEW_INIT 1 //set to 1 to use the magic sequence provided by pixart. //SM4 configuration #define SM4_DEFDELAY 500 //default step delay [us] diff --git a/Firmware/pat9125.cpp b/Firmware/pat9125.cpp index 0cfce5684..2c062d521 100644 --- a/Firmware/pat9125.cpp +++ b/Firmware/pat9125.cpp @@ -46,27 +46,26 @@ uint8_t pat9125_s = 0; // Init sequence, address & value. -const PROGMEM uint8_t pat9125_init_seq1[] = { +const PROGMEM uint8_t pat9125_init_bank0[] = { // Disable write protect. PAT9125_WP, 0x5a, // Set the X resolution to zero to let the sensor know that it could safely ignore movement in the X axis. - PAT9125_RES_X, PAT9125_XRES, - // Set the Y resolution to a maximum (or nearly a maximum). - PAT9125_RES_Y, PAT9125_YRES, - // Set 12-bit X/Y data format. - PAT9125_ORIENTATION, 0x04, -// PAT9125_ORIENTATION, 0x04 | (xinv?0x08:0) | (yinv?0x10:0), //!? direction switching does not work - // Now continues the magic sequence from the PAT912EL Application Note: Firmware Guides for Tracking Optimization. - 0x5e, 0x08, - 0x20, 0x64, - 0x2b, 0x6d, - 0x32, 0x2f, - // stopper - 0x0ff + PAT9125_RES_X, PAT9125_XRES, + // Set the Y resolution to a maximum (or nearly a maximum). + PAT9125_RES_Y, PAT9125_YRES, + // Set data format and sensor orientation. + PAT9125_ORIENTATION, ((PAT9125_12B_RES?0x04:0) | (PAT9125_INVERT_X?0x08:0) | (PAT9125_INVERT_Y?0x10:0) | (PAT9125_SWAP_XY?0x20:0)), + + // Now continues the magic sequence from the PAT912EL Application Note: Firmware Guides for Tracking Optimization. + 0x5e, 0x08, + 0x20, 0x64, + 0x2b, 0x6d, + 0x32, 0x2f, + 0xff //end of sequence }; // Init sequence, address & value. -const PROGMEM uint8_t pat9125_init_seq2[] = { +const PROGMEM uint8_t pat9125_init_bank1[] = { // Magic sequence to enforce full frame rate of the sensor. 0x06, 0x028, 0x33, 0x0d0, @@ -93,14 +92,14 @@ const PROGMEM uint8_t pat9125_init_seq2[] = { 0x6e, 0x022, 0x71, 0x007, 0x72, 0x008, - // stopper - 0x0ff + 0xff //end of sequence }; -uint8_t pat9125_rd_reg(uint8_t addr); -void pat9125_wr_reg(uint8_t addr, uint8_t data); -uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data); +static uint8_t pat9125_rd_reg(uint8_t addr); +static void pat9125_wr_reg(uint8_t addr, uint8_t data); +static uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data); +static uint8_t pat9125_wr_seq(const uint8_t* seq); extern FILE _uartout; #define uartout (&_uartout) @@ -128,11 +127,14 @@ uint8_t pat9125_probe() uint8_t pat9125_init(void) { - if (!pat9125_probe()) - return 0; + if (!pat9125_probe()) + return 0; - // Verify that the sensor responds with its correct product ID. - pat9125_PID1 = pat9125_rd_reg(PAT9125_PID1); +// Switch to bank0, not allowed to perform pat9125_wr_reg_verify on this register. + pat9125_wr_reg(PAT9125_BANK_SELECTION, 0); + + // Verify that the sensor responds with its correct product ID. + pat9125_PID1 = pat9125_rd_reg(PAT9125_PID1); pat9125_PID2 = pat9125_rd_reg(PAT9125_PID2); if ((pat9125_PID1 != 0x31) || (pat9125_PID2 != 0x91)) { @@ -142,54 +144,41 @@ uint8_t pat9125_init(void) return 0; } -#ifdef PAT9125_NEW_INIT - // Switch to bank0, not allowed to perform OTS_RegWriteRead. - pat9125_wr_reg(PAT9125_BANK_SELECTION, 0); +#if PAT9125_NEW_INIT // Software reset (i.e. set bit7 to 1). It will reset to 0 automatically. - // After the reset, OTS_RegWriteRead is not allowed. + // pat9125_wr_reg_verify is not allowed because the register contents will change as soon as they are written. No point in verifying those. pat9125_wr_reg(PAT9125_CONFIG, 0x97); // Wait until the sensor reboots. - // Delay 1ms. - _delay_us(1000); - { - const uint8_t *ptr = pat9125_init_seq1; - for (;;) { - const uint8_t addr = pgm_read_byte_near(ptr ++); - if (addr == 0x0ff) - break; - if (! pat9125_wr_reg_verify(addr, pgm_read_byte_near(ptr ++))) - // Verification of the register write failed. - return 0; - } - } - // Delay 10ms. - _delay_ms(10); - // Switch to bank1, not allowed to perform OTS_RegWrite. + _delay_ms(1); + + //Write init sequence in bank0. MUST ALREADY BE IN bank0. + if (!pat9125_wr_seq(pat9125_init_bank0)) + return 0; + + _delay_ms(10); // not sure why this is here. But I'll allow it. + + // Switch to bank1, not allowed to perform pat9125_wr_reg_verify on this register. pat9125_wr_reg(PAT9125_BANK_SELECTION, 0x01); - { - const uint8_t *ptr = pat9125_init_seq2; - for (;;) { - const uint8_t addr = pgm_read_byte_near(ptr ++); - if (addr == 0x0ff) - break; - if (! pat9125_wr_reg_verify(addr, pgm_read_byte_near(ptr ++))) - // Verification of the register write failed. - return 0; - } - } - // Switch to bank0, not allowed to perform OTS_RegWriteRead. + //Write init sequence in bank1. MUST ALREADY BE IN bank1. + if (!pat9125_wr_seq(pat9125_init_bank1)) + return 0; + + // Switch to bank0, not allowed to perform pat9125_wr_reg_verify on this register. pat9125_wr_reg(PAT9125_BANK_SELECTION, 0x00); + // Enable write protect. - pat9125_wr_reg(PAT9125_WP, 0x00); + pat9125_wr_reg(PAT9125_WP, 0x00); //prevents writing to registers over 0x09 pat9125_PID1 = pat9125_rd_reg(PAT9125_PID1); pat9125_PID2 = pat9125_rd_reg(PAT9125_PID2); -#endif //PAT9125_NEW_INIT +#else //PAT9125_NEW_INIT pat9125_wr_reg(PAT9125_RES_X, PAT9125_XRES); pat9125_wr_reg(PAT9125_RES_Y, PAT9125_YRES); - fprintf_P(uartout, PSTR("PAT9125_RES_X=%u\n"), pat9125_rd_reg(PAT9125_RES_X)); - fprintf_P(uartout, PSTR("PAT9125_RES_Y=%u\n"), pat9125_rd_reg(PAT9125_RES_Y)); + printf_P(PSTR("PAT9125_RES_X=%u\n"), pat9125_rd_reg(PAT9125_RES_X)); + printf_P(PSTR("PAT9125_RES_Y=%u\n"), pat9125_rd_reg(PAT9125_RES_Y)); +#endif //PAT9125_NEW_INIT + return 1; } @@ -251,7 +240,7 @@ uint8_t pat9125_update_bs(void) return 0; } -uint8_t pat9125_rd_reg(uint8_t addr) +static uint8_t pat9125_rd_reg(uint8_t addr) { uint8_t data = 0; #if defined(PAT9125_SWSPI) @@ -274,7 +263,7 @@ uint8_t pat9125_rd_reg(uint8_t addr) return 0; } -void pat9125_wr_reg(uint8_t addr, uint8_t data) +static void pat9125_wr_reg(uint8_t addr, uint8_t data) { #if defined(PAT9125_SWSPI) swspi_start(); @@ -296,8 +285,21 @@ void pat9125_wr_reg(uint8_t addr, uint8_t data) return; } -uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data) +static uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data) { pat9125_wr_reg(addr, data); return pat9125_rd_reg(addr) == data; } + +static uint8_t pat9125_wr_seq(const uint8_t* seq) +{ + for (;;) { + const uint8_t addr = pgm_read_byte(seq++); + if (addr == 0xff) + break; + if (!pat9125_wr_reg_verify(addr, pgm_read_byte(seq++))) + // Verification of the register write failed. + return 0; + } + return 1; +} From 8b9bb23652a8d77d6438bacdcd967b04a2e7a0c6 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 21 Feb 2022 14:56:53 +0100 Subject: [PATCH 002/319] Unflip the hardcoded flip of the Y axis --- Firmware/pat9125.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/pat9125.cpp b/Firmware/pat9125.cpp index 2c062d521..d01b50046 100644 --- a/Firmware/pat9125.cpp +++ b/Firmware/pat9125.cpp @@ -201,7 +201,7 @@ uint8_t pat9125_update(void) if (iDX & 0x800) iDX -= 4096; if (iDY & 0x800) iDY -= 4096; pat9125_x += iDX; - pat9125_y -= iDY; //negative number, because direction switching does not work + pat9125_y += iDY; } return 1; } @@ -221,7 +221,7 @@ uint8_t pat9125_update_y(void) if (pat9125_PID1 == 0xff) return 0; int16_t iDY = ucYL | ((ucXYH << 8) & 0xf00); if (iDY & 0x800) iDY -= 4096; - pat9125_y -= iDY; //negative number, because direction switching does not work + pat9125_y += iDY; } return 1; } From 54b98c4e63ad4ff65e37ed51cd5a8534d3573fc8 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 18:59:56 +0100 Subject: [PATCH 003/319] swi2c safe init --- Firmware/swi2c.c | 68 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/Firmware/swi2c.c b/Firmware/swi2c.c index 4b3119aa4..2ec258218 100644 --- a/Firmware/swi2c.c +++ b/Firmware/swi2c.c @@ -15,23 +15,41 @@ #define SWI2C_ASHF 0x01 //address shift (<< 1) #define SWI2C_DMSK 0x7f //device address mask +static void __delay(void); +static void swi2c_start(void); +static void swi2c_stop(void); +// static void swi2c_ack(void); +static void swi2c_nack(void); +static uint8_t swi2c_wait_ack(); +static uint8_t swi2c_read(void); +static void swi2c_write(uint8_t data); -void __delay(void) + +void swi2c_init(void) +{ + SET_INPUT(SWI2C_SDA); + WRITE(SWI2C_SDA, 1); //SDA must be input with pullups while we are not sure if the slave is outputing or not + + WRITE(SWI2C_SCL, 1); + SET_OUTPUT(SWI2C_SCL); //SCL can be an output at all times. The bus is not in a multi-master configuration. + + for (uint8_t i = 0; i < 100; i++) //wait. Not sure what for, but wait anyway. + __delay(); + + for (uint8_t i = 0; i < 10; i++) { //send nack 10 times. This makes sure that the slave gets a nack regardless of it's state when we init the bus. + swi2c_nack(); + } + swi2c_stop(); //"release" the bus by sending a stop condition. + + SET_OUTPUT(SWI2C_SDA); //finally make the SDA line an output since the bus is idle for sure. +} + +static void __delay(void) { _delay_us(1.5); } -void swi2c_init(void) -{ - WRITE(SWI2C_SDA, 1); - WRITE(SWI2C_SCL, 1); - SET_OUTPUT(SWI2C_SDA); - SET_OUTPUT(SWI2C_SCL); - uint8_t i; for (i = 0; i < 100; i++) - __delay(); -} - -void swi2c_start(void) +static void swi2c_start(void) { WRITE(SWI2C_SDA, 0); __delay(); @@ -39,7 +57,7 @@ void swi2c_start(void) __delay(); } -void swi2c_stop(void) +static void swi2c_stop(void) { WRITE(SWI2C_SCL, 1); __delay(); @@ -47,7 +65,8 @@ void swi2c_stop(void) __delay(); } -void swi2c_ack(void) +/* +static void swi2c_ack(void) { WRITE(SWI2C_SDA, 0); __delay(); @@ -56,8 +75,19 @@ void swi2c_ack(void) WRITE(SWI2C_SCL, 0); __delay(); } +*/ -uint8_t swi2c_wait_ack() +static void swi2c_nack(void) +{ + WRITE(SWI2C_SDA, 1); + __delay(); + WRITE(SWI2C_SCL, 1); + __delay(); + WRITE(SWI2C_SCL, 0); + __delay(); +} + +static uint8_t swi2c_wait_ack() { SET_INPUT(SWI2C_SDA); __delay(); @@ -77,13 +107,13 @@ uint8_t swi2c_wait_ack() return ack; } -uint8_t swi2c_read(void) +static uint8_t swi2c_read(void) { WRITE(SWI2C_SDA, 1); __delay(); SET_INPUT(SWI2C_SDA); uint8_t data = 0; - int8_t bit; for (bit = 7; bit >= 0; bit--) + for (uint8_t bit = 8; bit-- > 0;) { WRITE(SWI2C_SCL, 1); __delay(); @@ -95,9 +125,9 @@ uint8_t swi2c_read(void) return data; } -void swi2c_write(uint8_t data) +static void swi2c_write(uint8_t data) { - int8_t bit; for (bit = 7; bit >= 0; bit--) + for (uint8_t bit = 8; bit-- > 0;) { WRITE(SWI2C_SDA, data & _BV(bit)); __delay(); From 28c527fece3c929974bb0fc9d6e6e78498bfe77d Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 19:23:05 +0100 Subject: [PATCH 004/319] Use _check instead of register read for probe() --- Firmware/pat9125.cpp | 10 ++-------- Firmware/swi2c.c | 4 ++-- Firmware/twi.cpp | 19 +++++++++++++++++++ Firmware/twi.h | 8 ++++++++ 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Firmware/pat9125.cpp b/Firmware/pat9125.cpp index d01b50046..433886183 100644 --- a/Firmware/pat9125.cpp +++ b/Firmware/pat9125.cpp @@ -112,16 +112,10 @@ uint8_t pat9125_probe() #error not implemented #elif defined(PAT9125_SWI2C) swi2c_init(); - return swi2c_readByte_A8(PAT9125_I2C_ADDR,0x00,NULL); + return swi2c_check(PAT9125_I2C_ADDR) == 0; #elif defined(PAT9125_I2C) twi_init(); - #ifdef IR_SENSOR - // NOTE: this is called from the MK3S variant, so it should be kept minimal - uint8_t data; - return (twi_r8(PAT9125_I2C_ADDR,PAT9125_PID1,&data) == 0); - #else - return (pat9125_rd_reg(PAT9125_PID1) != 0); - #endif + return twi_check(PAT9125_I2C_ADDR) == 0; #endif } diff --git a/Firmware/swi2c.c b/Firmware/swi2c.c index 2ec258218..4c12642d8 100644 --- a/Firmware/swi2c.c +++ b/Firmware/swi2c.c @@ -142,9 +142,9 @@ uint8_t swi2c_check(uint8_t dev_addr) { swi2c_start(); swi2c_write((dev_addr & SWI2C_DMSK) << SWI2C_ASHF); - if (!swi2c_wait_ack()) { swi2c_stop(); return 0; } + if (!swi2c_wait_ack()) { swi2c_stop(); return 1; } swi2c_stop(); - return 1; + return 0; } #ifdef SWI2C_A8 //8bit address diff --git a/Firmware/twi.cpp b/Firmware/twi.cpp index bbaaa8a00..8dfe48642 100644 --- a/Firmware/twi.cpp +++ b/Firmware/twi.cpp @@ -101,6 +101,25 @@ static uint8_t twi_start(uint8_t address, uint8_t reg) } +uint8_t twi_check(uint8_t address) +{ + // send start condition + TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTA); + if(twi_wait(TW_START)) + return 1; + + // send address + TWDR = TW_WRITE | (address << 1); + TWCR = _BV(TWEN) | _BV(TWINT); + if(twi_wait(TW_MT_SLA_ACK)) + return 2; + + // send stop + twi_stop(); + return 0; +} + + uint8_t twi_r8(uint8_t address, uint8_t reg, uint8_t* data) { if(twi_start(address, reg)) diff --git a/Firmware/twi.h b/Firmware/twi.h index 01b1deb6b..de810954a 100644 --- a/Firmware/twi.h +++ b/Firmware/twi.h @@ -44,6 +44,14 @@ void twi_init(void); */ void twi_disable(void); +/* + * Function twi_check + * Desc checks if a device exists on the bus + * Input address: 7bit i2c device address + * Output 0 on device found at address + */ +uint8_t twi_check(uint8_t address); + /* * Function twi_r8 * Desc read a single byte from a device From abbf2a3927618c02a9adcf4e292f6f341587c42a Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 19:36:55 +0100 Subject: [PATCH 005/319] twi safe init --- Firmware/swi2c.c | 2 +- Firmware/twi.cpp | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Firmware/swi2c.c b/Firmware/swi2c.c index 4c12642d8..aebfe0179 100644 --- a/Firmware/swi2c.c +++ b/Firmware/swi2c.c @@ -30,7 +30,7 @@ void swi2c_init(void) SET_INPUT(SWI2C_SDA); WRITE(SWI2C_SDA, 1); //SDA must be input with pullups while we are not sure if the slave is outputing or not - WRITE(SWI2C_SCL, 1); + WRITE(SWI2C_SCL, 0); SET_OUTPUT(SWI2C_SCL); //SCL can be an output at all times. The bus is not in a multi-master configuration. for (uint8_t i = 0; i < 100; i++) //wait. Not sure what for, but wait anyway. diff --git a/Firmware/twi.cpp b/Firmware/twi.cpp index 8dfe48642..07e0f1e8e 100644 --- a/Firmware/twi.cpp +++ b/Firmware/twi.cpp @@ -21,6 +21,7 @@ #include +#include #include "config.h" #include "fastio.h" #include "twi.h" @@ -29,8 +30,24 @@ void twi_init(void) { - // activate internal pullups for twi. + // activate internal pullups for SDA + SET_INPUT(SDA_PIN); WRITE(SDA_PIN, 1); + + // start with the SDA pulled low + WRITE(SCL_PIN, 0); + SET_OUTPUT(SCL_PIN); + + // clock 10 cycles to make sure that the sensor is not stuck in a register read. + for (uint8_t i = 0; i < 10; i++) { + WRITE(SCL_PIN, 1); + _delay_us((1000000 / TWI_FREQ) / 2); + WRITE(SCL_PIN, 0); + _delay_us((1000000 / TWI_FREQ) / 2); + } + + // activate internal pullups for SCL + SET_INPUT(SCL_PIN); WRITE(SCL_PIN, 1); // initialize twi prescaler and bit rate From 47e610a2c68f7bfc27ac250deb3bf019eba72243 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 19:44:59 +0100 Subject: [PATCH 006/319] Add disable() to swi2c as well --- Firmware/swi2c.c | 8 ++++++++ Firmware/swi2c.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/Firmware/swi2c.c b/Firmware/swi2c.c index aebfe0179..d143ec600 100644 --- a/Firmware/swi2c.c +++ b/Firmware/swi2c.c @@ -44,6 +44,14 @@ void swi2c_init(void) SET_OUTPUT(SWI2C_SDA); //finally make the SDA line an output since the bus is idle for sure. } +void swi2c_disable(void) +{ + SET_INPUT(SWI2C_SDA); + WRITE(SWI2C_SDA, 0); + SET_INPUT(SWI2C_SCL); + WRITE(SWI2C_SCL, 0); +} + static void __delay(void) { _delay_us(1.5); diff --git a/Firmware/swi2c.h b/Firmware/swi2c.h index 7b7837cf7..467c1d57b 100644 --- a/Firmware/swi2c.h +++ b/Firmware/swi2c.h @@ -13,6 +13,9 @@ extern "C" { //initialize extern void swi2c_init(void); +//deinit pins +extern void swi2c_disable(void); + //check device address acknowledge extern uint8_t swi2c_check(uint8_t dev_addr); From 4f08caaa2b36b3ed6266b33f81aa78120c03abf0 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sat, 26 Feb 2022 08:55:57 +0100 Subject: [PATCH 007/319] Shorter TWI timeout --- Firmware/twi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/twi.h b/Firmware/twi.h index de810954a..017c9a042 100644 --- a/Firmware/twi.h +++ b/Firmware/twi.h @@ -26,7 +26,7 @@ #define TWI_FREQ 400000L #endif -#define TWI_TIMEOUT_MS 100 +#define TWI_TIMEOUT_MS 10 /* * Function twi_init From ce0d8f2f12712d8b1a763a518eecfbcec9724a5a Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 28 Feb 2022 13:41:01 +0100 Subject: [PATCH 008/319] Correct sensor orientation for old pat9125 init --- Firmware/pat9125.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Firmware/pat9125.cpp b/Firmware/pat9125.cpp index 433886183..819d70710 100644 --- a/Firmware/pat9125.cpp +++ b/Firmware/pat9125.cpp @@ -167,10 +167,18 @@ uint8_t pat9125_init(void) pat9125_PID2 = pat9125_rd_reg(PAT9125_PID2); #else //PAT9125_NEW_INIT + // Disable write protect. + pat9125_wr_reg(PAT9125_WP, 0x5a); //allows writing to all registers + pat9125_wr_reg(PAT9125_RES_X, PAT9125_XRES); pat9125_wr_reg(PAT9125_RES_Y, PAT9125_YRES); printf_P(PSTR("PAT9125_RES_X=%u\n"), pat9125_rd_reg(PAT9125_RES_X)); printf_P(PSTR("PAT9125_RES_Y=%u\n"), pat9125_rd_reg(PAT9125_RES_Y)); + + pat9125_wr_reg(PAT9125_ORIENTATION, ((PAT9125_12B_RES?0x04:0) | (PAT9125_INVERT_X?0x08:0) | (PAT9125_INVERT_Y?0x10:0) | (PAT9125_SWAP_XY?0x20:0))); + + // Enable write protect. + pat9125_wr_reg(PAT9125_WP, 0x00); //prevents writing to registers over 0x09 #endif //PAT9125_NEW_INIT return 1; From 45e43137a52a37ee594fc9693f8b3e28115aa36c Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 14:17:26 +0100 Subject: [PATCH 009/319] Filament sensor refactoring initial --- Firmware/Filament_sensor.cpp | 3 + Firmware/Filament_sensor.h | 163 +++++++++++++++++++++++++++++++++++ Firmware/Marlin_main.cpp | 115 ++++-------------------- Firmware/menu.cpp | 2 + Firmware/temperature.cpp | 2 + Firmware/ultralcd.cpp | 1 + 6 files changed, 188 insertions(+), 98 deletions(-) create mode 100644 Firmware/Filament_sensor.cpp create mode 100644 Firmware/Filament_sensor.h diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp new file mode 100644 index 000000000..7f8898d44 --- /dev/null +++ b/Firmware/Filament_sensor.cpp @@ -0,0 +1,3 @@ +#include "Filament_sensor.h" + +IR_sensor_analog fsensor; \ No newline at end of file diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h new file mode 100644 index 000000000..52b75dd4f --- /dev/null +++ b/Firmware/Filament_sensor.h @@ -0,0 +1,163 @@ +#pragma once + +#include +#include +#include + +#include "Marlin.h" +#include "ultralcd.h" +#include "menu.h" +#include "cardreader.h" +#include "temperature.h" +#include "cmdqueue.h" +#include "eeprom.h" +#include "pins.h" +#include "fastio.h" + +class Filament_sensor { +public: + virtual void init() = 0; + virtual void update() = 0; + virtual bool getFilamentPresent() = 0; + + enum class SensorActionOnError : uint8_t { + _Continue = 0, + _Pause = 1, + _Undef = EEPROM_EMPTY_VALUE + }; + + void setAutoLoadEnabled(bool state, bool updateEEPROM = false) { + autoLoadEnabled = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENS_AUTOLOAD_ENABLED, state); + } + } + + void setRunoutEnabled(bool state, bool updateEEPROM = false) { + runoutEnabled = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, state); + } + } + +protected: + void settings_init() { + autoLoadEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); + runoutEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); + sensorActionOnError = (SensorActionOnError)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); + if (sensorActionOnError == SensorActionOnError::_Undef) { + sensorActionOnError = SensorActionOnError::_Pause; + } + } + + void checkFilamentEvents() { + if (!ready) + return; + + bool newFilamentPresent = getFilamentPresent(); + if (oldFilamentPresent != newFilamentPresent) { + oldFilamentPresent = newFilamentPresent; + if (newFilamentPresent) { //filament insertion + puts_P(PSTR("filament inserted")); + triggerFilamentInserted(); + } + else { //filament removal + puts_P(PSTR("filament removed")); + triggerFilamentRemoved(); + } + } + }; + + void triggerFilamentInserted() { + if (autoLoadEnabled/* && (eFilamentAction == FilamentAction::None) */ && !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { + eFilamentAction = FilamentAction::AutoLoad; + if(target_temperature[0] >= EXTRUDE_MINTEMP){ + bFilamentPreheatState = true; + menu_submenu(mFilamentItemForce); + } else { + menu_submenu(lcd_generic_preheat_menu); + lcd_timeoutToStatus.start(); + } + } + } + + void triggerFilamentRemoved() { + if (runoutEnabled/* && (eFilamentAction == FilamentAction::None) */ && !saved_printing && (moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { + runoutEnabled = false; + autoLoadEnabled = false; + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); + } + } + + bool autoLoadEnabled; + bool runoutEnabled; + bool oldFilamentPresent; //for creating filament presence switching events. + bool ready; + SensorActionOnError sensorActionOnError; +}; + +class IR_sensor: public Filament_sensor { +public: + void init() { + SET_INPUT(IR_SENSOR_PIN); //input mode + WRITE(IR_SENSOR_PIN, 1); //pullup + settings_init(); + } + + void update() { + if (!ready) { + ready = true; //the IR sensor gets ready instantly as it's just a gpio read operation. + oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. + } + checkFilamentEvents(); + ;// + } + + bool getFilamentPresent() { + return !READ(IR_SENSOR_PIN); + } + + void settings_init() { + Filament_sensor::settings_init(); + } +protected: +}; + +class IR_sensor_analog: public IR_sensor { +public: + void init() { + IR_sensor::init(); + ;// + } + + void update() { + IR_sensor::update(); + ;// + } + + void voltUpdate(uint16_t raw) { //to be called from the ADC ISR when a cycle is finished + voltRaw = raw; + voltReady = true; + } + + void settings_init() { + IR_sensor::settings_init(); + sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); + } + + enum class SensorRevision : uint8_t { + _Old = 0, + _Rev04 = 1, + _Undef = EEPROM_EMPTY_VALUE + }; +private: + SensorRevision sensorRevision; + bool voltReady; //this gets set by the adc ISR + uint16_t voltRaw; +}; + +extern IR_sensor_analog fsensor; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f5199ed41..314d62497 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -96,6 +96,7 @@ #include "spi.h" #ifdef FILAMENT_SENSOR +#include "Filament_sensor.h" #include "fsensor.h" #ifdef IR_SENSOR #include "pat9125.h" // for pat9125_probe @@ -1365,6 +1366,7 @@ void setup() xflash_err_msg(); #ifdef FILAMENT_SENSOR + fsensor.init(); fsensor_init(); #endif //FILAMENT_SENSOR @@ -3608,6 +3610,10 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float fsensor_check_autoload(); #endif //IR_SENSOR +#ifdef FILAMENT_SENSOR + fsensor.settings_init(); +#endif + lcd_setstatuspgm(MSG_WELCOME); custom_message_type = CustomMsg::Status; } @@ -3616,7 +3622,12 @@ void gcode_M701() { printf_P(PSTR("gcode_M701 begin\n")); - prusa_statistics(22); +#ifdef FILAMENT_SENSOR + fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#endif + + prusa_statistics(22); if (mmu_enabled) { @@ -3672,6 +3683,10 @@ void gcode_M701() } #endif //FSENSOR_QUALITY } + +#ifdef FILAMENT_SENSOR + fsensor.settings_init(); //restore filament runout state. +#endif } /** * @brief Get serial number from 32U2 processor @@ -9426,105 +9441,9 @@ void manage_inactivity_IR_ANALOG_Check(uint16_t &nFSCheckCount, ClFsensorPCB isV void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h { #ifdef FILAMENT_SENSOR -bool bInhibitFlag = false; -#ifdef IR_SENSOR_ANALOG -static uint16_t nFSCheckCount=0; + fsensor.update(); #endif // IR_SENSOR_ANALOG - if (mmu_enabled == false) - { -//-// if (mcode_in_progress != 600) //M600 not in progress - if (!printer_active()) bInhibitFlag=(menu_menu==lcd_menu_show_sensors_state); //Block Filament sensor actions if PRINTER is not active and Support::SensorInfo menu active -#ifdef IR_SENSOR_ANALOG - bInhibitFlag=bInhibitFlag||bMenuFSDetect; // Block Filament sensor actions if Settings::HWsetup::FSdetect menu active -#endif // IR_SENSOR_ANALOG - if ((mcode_in_progress != 600) && (eFilamentAction != FilamentAction::AutoLoad) && (!bInhibitFlag) && (menu_menu != lcd_move_e)) //M600 not in progress, preHeat @ autoLoad menu not active - { - if (!moves_planned() && !IS_SD_PRINTING && !usb_timer.running() && (lcd_commands_type != LcdCommands::Layer1Cal) && ! eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)) - { -#ifdef IR_SENSOR_ANALOG - static uint16_t minVolt = Voltage2Raw(6.F), maxVolt = 0; - // detect min-max, some long term sliding window for filtration may be added - // avoiding floating point operations, thus computing in raw - if( current_voltage_raw_IR > maxVolt )maxVolt = current_voltage_raw_IR; - if( current_voltage_raw_IR < minVolt )minVolt = current_voltage_raw_IR; - -#if 0 // Start: IR Sensor debug info - { // debug print - static uint16_t lastVolt = ~0U; - if( current_voltage_raw_IR != lastVolt ){ - printf_P(PSTR("fs volt=%4.2fV (min=%4.2f max=%4.2f)\n"), Raw2Voltage(current_voltage_raw_IR), Raw2Voltage(minVolt), Raw2Voltage(maxVolt) ); - lastVolt = current_voltage_raw_IR; - } - } -#endif // End: IR Sensor debug info - //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage - //! to be detected as the new fsensor - //! We can either fake it by extending the detection window to a looooong time - //! or do some other countermeasures - - //! what we want to detect: - //! if minvolt gets below ~0.3V, it means there is an old fsensor - //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor - //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> - //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor - if( minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD - && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD - ){ - manage_inactivity_IR_ANALOG_Check(nFSCheckCount, ClFsensorPCB::_Old, ClFsensorPCB::_Rev04, _i("FS v0.4 or newer") ); ////MSG_FS_V_04_OR_NEWER c=18 - } - //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor - //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why - //! we need to have both voltages detected correctly to allow switching back to the old fsensor. - else if( minVolt < IRsensor_Ldiode_TRESHOLD - && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD - ){ - manage_inactivity_IR_ANALOG_Check(nFSCheckCount, ClFsensorPCB::_Rev04, oFsensorPCB=ClFsensorPCB::_Old, _i("FS v0.3 or older")); ////MSG_FS_V_03_OR_OLDER c=18 - } -#endif // IR_SENSOR_ANALOG - if (fsensor_check_autoload()) - { -#ifdef PAT9125 - fsensor_autoload_check_stop(); -#endif //PAT9125 -//-// if ((int)degHotend0() > extrude_min_temp) -if(0) - { - Sound_MakeCustom(50,1000,false); - loading_flag = true; - enquecommand_front_P((PSTR("M701"))); - } - else - { -/* - lcd_update_enable(false); - show_preheat_nozzle_warning(); - lcd_update_enable(true); -*/ - eFilamentAction=FilamentAction::AutoLoad; - if(target_temperature[0] >= extrude_min_temp){ - bFilamentPreheatState=true; -// mFilamentItem(target_temperature[0],target_temperature_bed); - menu_submenu(mFilamentItemForce); - } else { - menu_submenu(lcd_generic_preheat_menu); - lcd_timeoutToStatus.start(); - } - } - } - } - else - { -#ifdef PAT9125 - fsensor_autoload_check_stop(); -#endif //PAT9125 - if (fsensor_enabled && !saved_printing) - fsensor_update(); - } - } - } -#endif //FILAMENT_SENSOR - #ifdef SAFETYTIMER handleSafetyTimer(); #endif //SAFETYTIMER diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index b4761304f..dd3c8e84e 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -130,6 +130,8 @@ void menu_back_if_clicked_fb(void) void menu_submenu(menu_func_t submenu) { + if (menu_menu == submenu) + return; //do not enter into the current menu. if (menu_depth < MENU_DEPTH_MAX) { menu_stack[menu_depth].menu = menu_menu; diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index ab4d5d3eb..906c15b0b 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -97,6 +97,8 @@ #include "temp_model.h" #endif +#include "Filament_sensor.h" + //=========================================================================== //=============================public variables============================ //=========================================================================== diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 18efd1278..908084d0d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5186,6 +5186,7 @@ static void mmu_cut_filament_menu() else { eFilamentAction=FilamentAction::MmuCut; + bFilamentFirstRun=false; if(target_temperature[0] >= extrude_min_temp) { bFilamentPreheatState=true; From f03922f7cf036efa403d570f0420761507eb37ff Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 15:26:03 +0100 Subject: [PATCH 010/319] Fix repeated autoload menu --- Firmware/Filament_sensor.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 52b75dd4f..6cd1f7b66 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -69,7 +69,7 @@ protected: }; void triggerFilamentInserted() { - if (autoLoadEnabled/* && (eFilamentAction == FilamentAction::None) */ && !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { + if (autoLoadEnabled && (eFilamentAction == FilamentAction::None) && !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { eFilamentAction = FilamentAction::AutoLoad; if(target_temperature[0] >= EXTRUDE_MINTEMP){ bFilamentPreheatState = true; @@ -82,7 +82,7 @@ protected: } void triggerFilamentRemoved() { - if (runoutEnabled/* && (eFilamentAction == FilamentAction::None) */ && !saved_printing && (moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { + if (runoutEnabled && (eFilamentAction == FilamentAction::None) && !saved_printing && (moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { runoutEnabled = false; autoLoadEnabled = false; stop_and_save_print_to_ram(0, 0); From 338f1f7615baaa33de3cb90ae0b3327d8547bc3e Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 15:26:11 +0100 Subject: [PATCH 011/319] IR volt debugging --- Firmware/Filament_sensor.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 6cd1f7b66..9124f7186 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "Marlin.h" #include "ultralcd.h" @@ -136,6 +137,14 @@ public: void update() { IR_sensor::update(); + if (voltReady) { + uint16_t newVoltRaw; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + newVoltRaw = voltRaw; + voltReady = false; + } + printf_P(PSTR("newVoltRaw:%u\n"), newVoltRaw / OVERSAMPLENR); + } ;// } From d84e6bda6387d35894e2fd6796f4288539f4651b Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 15:26:22 +0100 Subject: [PATCH 012/319] Remove old fsensor init --- Firmware/Marlin_main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 314d62497..de3daa0f2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1367,7 +1367,6 @@ void setup() #ifdef FILAMENT_SENSOR fsensor.init(); - fsensor_init(); #endif //FILAMENT_SENSOR From 7224b5c2b6dc9824cefa156155e1ff65577e2938 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 17:43:29 +0100 Subject: [PATCH 013/319] Remove OQ and add fancy autoload interaction --- Firmware/Filament_sensor.h | 30 +++++++++---- Firmware/Marlin_main.cpp | 42 +++++-------------- Firmware/fsensor.cpp | 2 - Firmware/fsensor.h | 11 ----- Firmware/ultralcd.cpp | 22 +++------- .../variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 2 - .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 2 - .../1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 2 - .../1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 2 - .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 2 - .../variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 2 - 11 files changed, 40 insertions(+), 79 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 9124f7186..40173b925 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -18,7 +18,7 @@ class Filament_sensor { public: virtual void init() = 0; - virtual void update() = 0; + virtual bool update() = 0; virtual bool getFilamentPresent() = 0; enum class SensorActionOnError : uint8_t { @@ -41,6 +41,10 @@ public: } } + bool getFilamentLoadEvent() { + return postponedLoadEvent; + } + protected: void settings_init() { autoLoadEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); @@ -51,9 +55,9 @@ protected: } } - void checkFilamentEvents() { + bool checkFilamentEvents() { if (!ready) - return; + return false; bool newFilamentPresent = getFilamentPresent(); if (oldFilamentPresent != newFilamentPresent) { @@ -61,12 +65,15 @@ protected: if (newFilamentPresent) { //filament insertion puts_P(PSTR("filament inserted")); triggerFilamentInserted(); + postponedLoadEvent = true; } else { //filament removal puts_P(PSTR("filament removed")); triggerFilamentRemoved(); } + return true; } + return false; }; void triggerFilamentInserted() { @@ -98,6 +105,7 @@ protected: bool runoutEnabled; bool oldFilamentPresent; //for creating filament presence switching events. bool ready; + bool postponedLoadEvent; //this event lasts exactly one update cycle. It is long enough to be able to do polling for load event. SensorActionOnError sensorActionOnError; }; @@ -109,13 +117,18 @@ public: settings_init(); } - void update() { + bool update() { if (!ready) { ready = true; //the IR sensor gets ready instantly as it's just a gpio read operation. oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. } - checkFilamentEvents(); + + postponedLoadEvent = false; + bool event = checkFilamentEvents(); + ;// + + return event; } bool getFilamentPresent() { @@ -135,8 +148,8 @@ public: ;// } - void update() { - IR_sensor::update(); + bool update() { + bool event = IR_sensor::update(); if (voltReady) { uint16_t newVoltRaw; ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { @@ -145,7 +158,10 @@ public: } printf_P(PSTR("newVoltRaw:%u\n"), newVoltRaw / OVERSAMPLENR); } + ;// + + return event; } void voltUpdate(uint16_t raw) { //to be called from the ADC ISR when a cycle is finished diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index de3daa0f2..60e9148cc 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3604,11 +3604,6 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); enquecommand(cmd); -#ifdef IR_SENSOR - //this will set fsensor_watch_autoload to correct value and prevent possible M701 gcode enqueuing when M600 is finished - fsensor_check_autoload(); -#endif //IR_SENSOR - #ifdef FILAMENT_SENSOR fsensor.settings_init(); #endif @@ -3657,7 +3652,7 @@ void gcode_M701() load_filament_final_feed(); //slow sequence st_synchronize(); - Sound_MakeCustom(50,500,false); + Sound_MakeCustom(50,500,false); if (!farm_mode && loading_flag) { lcd_load_filament_color_check(); @@ -3679,10 +3674,10 @@ void gcode_M701() lcd_update(2); if (disable) fsensor_disable(); - } -#endif //FSENSOR_QUALITY } - + + eFilamentAction = FilamentAction::None; + #ifdef FILAMENT_SENSOR fsensor.settings_init(); //restore filament runout state. #endif @@ -9440,8 +9435,10 @@ void manage_inactivity_IR_ANALOG_Check(uint16_t &nFSCheckCount, ClFsensorPCB isV void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h { #ifdef FILAMENT_SENSOR - fsensor.update(); -#endif // IR_SENSOR_ANALOG + if (fsensor.update()) { + lcd_draw_update = 1; //cause lcd update so that fsensor event polling can be done from the lcd draw routine. + } +#endif #ifdef SAFETYTIMER handleSafetyTimer(); @@ -11586,9 +11583,8 @@ void M600_load_filament() { manage_heater(); manage_inactivity(true); #ifdef FILAMENT_SENSOR - if (fsensor_check_autoload()) - { - Sound_MakeCustom(50,1000,false); + if (fsensor.getFilamentLoadEvent()) { + Sound_MakeCustom(50,1000,false); break; } #endif //FILAMENT_SENSOR @@ -11598,26 +11594,10 @@ void M600_load_filament() { #endif //PAT9125 KEEPALIVE_STATE(IN_HANDLER); -#ifdef FSENSOR_QUALITY - fsensor_oq_meassure_start(70); -#endif //FSENSOR_QUALITY - M600_load_filament_movements(); - Sound_MakeCustom(50,1000,false); + Sound_MakeCustom(50,1000,false); -#ifdef FSENSOR_QUALITY - fsensor_oq_meassure_stop(); - - if (!fsensor_oq_result()) - { - bool disable = lcd_show_fullscreen_message_yes_no_and_wait_P(_n("Fil. sensor response is poor, disable it?"), false, true); - lcd_update_enable(true); - lcd_update(2); - if (disable) - fsensor_disable(); - } -#endif //FSENSOR_QUALITY lcd_update_enable(false); } diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index 85728001c..f9e114711 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -54,8 +54,6 @@ bool fsensor_not_responding = false; uint8_t fsensor_int_pin_old = 0; //! optical checking "chunk lenght" (already in steps) int16_t fsensor_chunk_len = 0; -//! enable/disable quality meassurement -bool fsensor_oq_meassure_enabled = false; //! number of errors, updated in ISR uint8_t fsensor_err_cnt = 0; //! variable for accumulating step count (updated callbacks from stepper and ISR) diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index 7eb09ab8b..ec357d29f 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -44,7 +44,6 @@ extern void fsensor_disable(bool bUpdateEEPROM=true); extern bool fsensor_autoload_enabled; extern void fsensor_autoload_set(bool State); -extern void fsensor_update(void); #ifdef PAT9125 //! setup pin-change interrupt extern void fsensor_setup_interrupt(void); @@ -55,19 +54,9 @@ extern void fsensor_setup_interrupt(void); extern void fsensor_autoload_check_start(void); extern void fsensor_autoload_check_stop(void); #endif //PAT9125 -extern bool fsensor_check_autoload(void); //! @} #ifdef PAT9125 -//! @name optical quality measurement support -//! @{ -extern bool fsensor_oq_meassure_enabled; -extern void fsensor_oq_meassure_set(bool State); -extern void fsensor_oq_meassure_start(uint8_t skip); -extern void fsensor_oq_meassure_stop(void); -extern bool fsensor_oq_result(void); -//! @} - //! @name callbacks from stepper //! @{ extern void fsensor_st_block_chunk(int cnt); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 908084d0d..9ece17197 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -32,6 +32,7 @@ #ifdef FILAMENT_SENSOR #include "pat9125.h" #include "fsensor.h" +#include "Filament_sensor.h" #endif //FILAMENT_SENSOR #ifdef TMC2130 @@ -1795,14 +1796,6 @@ void lcd_set_filament_autoload() { fsensor_autoload_set(!fsensor_autoload_enabled); } -#if defined(FILAMENT_SENSOR) && defined(PAT9125) -void lcd_set_filament_oq_meass() -{ - fsensor_oq_meassure_set(!fsensor_oq_meassure_enabled); -} -#endif - - FilamentAction eFilamentAction=FilamentAction::None; // must be initialized as 'non-autoLoad' bool bFilamentPreheatState; bool bFilamentAction=false; @@ -1834,7 +1827,7 @@ switch(eFilamentAction) case FilamentAction::Lay1Cal: break; } -if(lcd_clicked()) + if(lcd_clicked() || (((eFilamentAction == FilamentAction::Load) || (eFilamentAction == FilamentAction::AutoLoad)) && fsensor.getFilamentLoadEvent())) { nLevel=2; if(!bFilamentPreheatState) @@ -4253,13 +4246,9 @@ do\ if (mmu_enabled == false)\ {\ if (fsensor_autoload_enabled)\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_ON c=17*/\ else\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);\ - /*if (fsensor_oq_meassure_enabled)*/\ - /*MENU_ITEM_FUNCTION_P(_i("F. OQ meass. [on]"), lcd_set_filament_oq_meass);*//*////MSG_FSENS_OQMEASS_ON c=17*/\ - /*else*/\ - /*MENU_ITEM_FUNCTION_P(_i("F. OQ meass.[off]"), lcd_set_filament_oq_meass);*//*////MSG_FSENS_OQMEASS_OFF c=17*/\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_OFF c=17*/\ }\ }\ }\ @@ -5241,6 +5230,7 @@ void unload_filament(bool automatic) lcd_setstatuspgm(MSG_WELCOME); custom_message_type = CustomMsg::Status; + eFilamentAction = FilamentAction::None; } #include "xflash.h" @@ -7726,7 +7716,7 @@ void menu_lcd_lcdupdate_func(void) } #endif//CARDINSERTED backlight_update(); - if (lcd_next_update_millis < _millis()) + if (lcd_next_update_millis < _millis() || lcd_draw_update) { if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index 1dae05675..cd722e465 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -158,8 +158,6 @@ //#define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - /*------------------------------------ EXTRUDER SETTINGS diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index dfb5eb232..537fa023a 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -159,8 +159,6 @@ //#define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - /*------------------------------------ EXTRUDER SETTINGS diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index e32c6f75e..c5c48a822 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -158,8 +158,6 @@ //#define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - /*------------------------------------ EXTRUDER SETTINGS diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index 3efa2d576..df0b907f0 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -159,8 +159,6 @@ //#define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - /*------------------------------------ EXTRUDER SETTINGS diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index ed5a1c551..f1ebef49f 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -202,8 +202,6 @@ #define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - #define LINEARITY_CORRECTION #define TMC2130_LINEARITY_CORRECTION diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index 5b57bcec4..94c1f430b 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -204,8 +204,6 @@ #define CMD_DIAGNOSTICS //Show cmd queue length on printer display #endif /* DEBUG_BUILD */ -//#define FSENSOR_QUALITY - #define LINEARITY_CORRECTION #define TMC2130_LINEARITY_CORRECTION From 43db24e4fe79e922399ac19e888dd140096f60d1 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 17:48:20 +0100 Subject: [PATCH 014/319] IR_sensor_analog voltage readings --- Firmware/Filament_sensor.h | 21 +++++++++++++-------- Firmware/fsensor.cpp | 10 +++++----- Firmware/fsensor.h | 2 +- Firmware/temperature.cpp | 6 +----- Firmware/ultralcd.cpp | 6 +++--- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 40173b925..9a7c91328 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -151,12 +151,9 @@ public: bool update() { bool event = IR_sensor::update(); if (voltReady) { - uint16_t newVoltRaw; - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - newVoltRaw = voltRaw; - voltReady = false; - } - printf_P(PSTR("newVoltRaw:%u\n"), newVoltRaw / OVERSAMPLENR); + voltReady = false; + printf_P(PSTR("newVoltRaw:%u\n"), getVoltRaw() / OVERSAMPLENR); + ;// } ;// @@ -169,6 +166,14 @@ public: voltReady = true; } + uint16_t getVoltRaw() { + uint16_t newVoltRaw; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + newVoltRaw = voltRaw; + } + return newVoltRaw; + } + void settings_init() { IR_sensor::settings_init(); sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); @@ -181,8 +186,8 @@ public: }; private: SensorRevision sensorRevision; - bool voltReady; //this gets set by the adc ISR - uint16_t voltRaw; + volatile bool voltReady; //this gets set by the adc ISR + volatile uint16_t voltRaw; }; extern IR_sensor_analog fsensor; diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index f9e114711..5fc1b93d7 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -696,8 +696,8 @@ void fsensor_update(void) #ifdef IR_SENSOR_ANALOG /// This is called only upon start of the printer or when switching the fsensor ON in the menu /// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) -bool fsensor_IR_check(){ - if( IRsensor_Lmax_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_Hmin_TRESHOLD ){ +bool fsensor_IR_check(uint16_t raw){ + if( IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD ){ /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual @@ -707,13 +707,13 @@ bool fsensor_IR_check(){ } if( oFsensorPCB == ClFsensorPCB::_Rev04 ){ /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount - if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ + if( IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD ){ puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); return false; } /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure #if 0 //Disabled as it has to be decided if we gonna use this or not. - if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ + if( IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD ){ puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); return false; } @@ -721,7 +721,7 @@ bool fsensor_IR_check(){ } /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false #if 0 - if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){ + if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( raw > IRsensor_Lmax_TRESHOLD ) ){ puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); return false; } diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index ec357d29f..06609bb3a 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -95,7 +95,7 @@ extern ClFsensorPCB oFsensorPCB; extern ClFsensorActionNA oFsensorActionNA; extern const char* FsensorIRVersionText(); -extern bool fsensor_IR_check(); +extern bool fsensor_IR_check(uint16_t raw); constexpr uint16_t Voltage2Raw(float V){ return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; } diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 906c15b0b..c7d9c5549 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -125,10 +125,6 @@ int current_voltage_raw_pwr = 0; int current_voltage_raw_bed = 0; #endif -#ifdef IR_SENSOR_ANALOG -uint16_t current_voltage_raw_IR = 0; -#endif //IR_SENSOR_ANALOG - int current_temperature_bed_raw = 0; float current_temperature_bed = 0.0; @@ -1188,7 +1184,7 @@ FORCE_INLINE static void applyBabysteps() { int curTodo=babystepsTodo[axis]; //get rid of volatile for performance if(curTodo>0) - { +{ ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { babystep(axis,/*fwd*/true); babystepsTodo[axis]--; //less to do next time diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9ece17197..146ec0270 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1443,7 +1443,7 @@ static void lcd_menu_voltages() lcd_home(); lcd_printf_P(PSTR(" PWR: %4.1fV\n" " BED: %4.1fV"), volt_pwr, volt_bed); #ifdef IR_SENSOR_ANALOG - lcd_printf_P(PSTR("\n IR : %3.1fV"), Raw2Voltage(current_voltage_raw_IR)); + lcd_printf_P(PSTR("\n IR : %3.1fV"), Raw2Voltage(fsensor.getVoltRaw())); #endif //IR_SENSOR_ANALOG menu_back_if_clicked(); } @@ -6211,7 +6211,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone) bool bPCBrev04; uint16_t volt_IR_int; - volt_IR_int = current_voltage_raw_IR; + volt_IR_int = fsensor.getVoltRaw(); bPCBrev04=(volt_IR_int < IRsensor_Hopen_TRESHOLD); printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) ); if(volt_IR_int < IRsensor_Hmin_TRESHOLD){ @@ -6220,7 +6220,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone) return(false); } lcd_show_fullscreen_message_and_wait_P(_i("Insert the filament (do not load it) into the extruder and then press the knob."));////MSG_INSERT_FIL c=20 r=6 - volt_IR_int = current_voltage_raw_IR; + volt_IR_int = fsensor.getVoltRaw(); printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), Raw2Voltage(volt_IR_int)); if(volt_IR_int > (IRsensor_Lmax_TRESHOLD)){ if(!bStandalone) From 6663f719f6536f51d81d57d10132f7221f860a6f Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 17:48:29 +0100 Subject: [PATCH 015/319] Remove old fsensor_init() --- Firmware/fsensor.h | 3 --- Firmware/ultralcd.cpp | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index 06609bb3a..b305d31c9 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -26,9 +26,6 @@ extern void fsensor_restore_print_and_continue(void); extern void fsensor_checkpoint_print(void); //! @} -//! initialize -extern void fsensor_init(void); - #ifdef PAT9125 //! update axis resolution extern void fsensor_set_axis_steps_per_unit(float u); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 146ec0270..68c0ae474 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7054,7 +7054,7 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const #ifdef PAT9125 static bool lcd_selftest_fsensor(void) { - fsensor_init(); + // fsensor.init(); if (fsensor_not_responding) { lcd_selftest_error(TestError::WiringFsensor, "", ""); From 241c4cc86cf219476541d1f6e3276669cb520c6b Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 18:03:20 +0100 Subject: [PATCH 016/319] Remove dead code --- Firmware/fsensor.cpp | 31 +++---------------------------- Firmware/fsensor.h | 3 --- 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index 5fc1b93d7..a83c7b1a9 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -15,6 +15,8 @@ #include "temperature.h" #include "config.h" +#include "Filament_sensor.h" //temporary + //! @name Basic parameters //! @{ #define FSENSOR_CHUNK_LEN 1.25 //!< filament sensor chunk length (mm) @@ -34,15 +36,6 @@ const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n"; -// PJ7 can not be used (does not have PinChangeInterrupt possibility) -#define FSENSOR_INT_PIN 75 //!< filament sensor interrupt pin PJ4 -#define FSENSOR_INT_PIN_MASK 0x10 //!< filament sensor interrupt pin mask (bit4) -#define FSENSOR_INT_PIN_PIN_REG PINJ // PIN register @ PJ4 -#define FSENSOR_INT_PIN_VECT PCINT1_vect // PinChange ISR @ PJ4 -#define FSENSOR_INT_PIN_PCMSK_REG PCMSK1 // PinChangeMaskRegister @ PJ4 -#define FSENSOR_INT_PIN_PCMSK_BIT PCINT13 // PinChange Interrupt / PinChange Enable Mask @ PJ4 -#define FSENSOR_INT_PIN_PCICR_BIT PCIE1 // PinChange Interrupt Enable / Flag @ PJ4 - //! enabled = initialized and sampled every chunk event bool fsensor_enabled = true; //! runout watching is done in fsensor_update (called from main loop) @@ -51,7 +44,6 @@ bool fsensor_watch_runout = true; bool fsensor_not_responding = false; #ifdef PAT9125 -uint8_t fsensor_int_pin_old = 0; //! optical checking "chunk lenght" (already in steps) int16_t fsensor_chunk_len = 0; //! number of errors, updated in ISR @@ -125,13 +117,6 @@ bool bIRsensorStateFlag=false; ShortTimer tIRsensorCheckTimer; #endif //IR_SENSOR_ANALOG -void fsensor_stop_and_save_print(void) -{ - puts_P(PSTR("fsensor_stop_and_save_print")); - stop_and_save_print_to_ram(0, 0); - fsensor_watch_runout = false; -} - #ifdef PAT9125 // Reset all internal counters to zero, including stepper callbacks void fsensor_reset_err_cnt() @@ -148,16 +133,6 @@ void fsensor_set_axis_steps_per_unit(float u) #endif -void fsensor_restore_print_and_continue(void) -{ - puts_P(PSTR("fsensor_restore_print_and_continue")); - fsensor_watch_runout = true; -#ifdef PAT9125 - fsensor_reset_err_cnt(); -#endif - restore_print_from_ram_and_continue(0); -} - // fsensor_checkpoint_print cuts the current print job at the current position, // allowing new instructions to be inserted in the middle void fsensor_checkpoint_print(void) @@ -255,7 +230,7 @@ bool fsensor_enable(bool bUpdateEEPROM) } #else // PAT9125 #ifdef IR_SENSOR_ANALOG - if(!fsensor_IR_check()) + if(!fsensor_IR_check(fsensor.getVoltRaw())) { bUpdateEEPROM=true; fsensor_enabled=false; diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index b305d31c9..a4bb29131 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -19,9 +19,6 @@ extern uint8_t fsensor_softfail; //! @name save restore printing //! @{ -extern void fsensor_stop_and_save_print(void); -//! restore print - restore position and heatup to original temperature -extern void fsensor_restore_print_and_continue(void); //! split the current gcode stream to insert new instructions extern void fsensor_checkpoint_print(void); //! @} From b52022f6c6a0ba5b78a108ba887e61baf2605091 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 19:22:41 +0100 Subject: [PATCH 017/319] More dead code removal --- Firmware/ultralcd.cpp | 6 ------ Firmware/ultralcd.h | 1 - 2 files changed, 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 68c0ae474..94efdeba8 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -71,10 +71,6 @@ uint8_t SilentModeMenu_MMU = 1; //activate mmu unit stealth mode int8_t FSensorStateMenu = 1; -#ifdef IR_SENSOR_ANALOG -bool bMenuFSDetect=false; -#endif //IR_SENSOR_ANALOG - LcdCommands lcd_commands_type = LcdCommands::Idle; static uint8_t lcd_commands_step = 0; @@ -6238,7 +6234,6 @@ static bool lcd_selftest_IRsensor(bool bStandalone) static void lcd_detect_IRsensor(){ bool bAction; bool loaded; - bMenuFSDetect = true; // inhibits some code inside "manage_inactivity()" /// Check if filament is loaded. If it is loaded stop detection. /// @todo Add autodetection with MMU2s loaded = ! READ(IR_SENSOR_PIN); @@ -6257,7 +6252,6 @@ static void lcd_detect_IRsensor(){ lcd_show_fullscreen_message_and_wait_P(_i("Verification failed, remove the filament and try again."));////MSG_FIL_FAILED c=20 r=5 // here it is unclear what to to with the fsensor_not_responding flag } - bMenuFSDetect=false; // de-inhibits some code inside "manage_inactivity()" } #endif //IR_SENSOR_ANALOG diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 281a4e2cc..b3602855f 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -143,7 +143,6 @@ extern bool FarmOrUserECool(); #endif #ifdef IR_SENSOR_ANALOG -extern bool bMenuFSDetect; void printf_IRSensorAnalogBoardChange(); #endif //IR_SENSOR_ANALOG From fc49ba115a8dbc11c73a7f089b17c87d3ef31338 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Tue, 22 Feb 2022 20:49:55 +0100 Subject: [PATCH 018/319] Move more IR sensor analog stuff to Filament_sensor.h --- Firmware/Filament_sensor.h | 134 ++++++++++++++++++++++++++++++++++++- Firmware/Marlin_main.cpp | 28 +------- Firmware/fsensor.cpp | 3 +- Firmware/fsensor.h | 25 ------- Firmware/mmu.cpp | 2 - Firmware/ultralcd.cpp | 57 +++++++++------- 6 files changed, 166 insertions(+), 83 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 9a7c91328..4c5f7631f 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -14,6 +14,7 @@ #include "eeprom.h" #include "pins.h" #include "fastio.h" +#include "adc.h" class Filament_sensor { public: @@ -152,7 +153,38 @@ public: bool event = IR_sensor::update(); if (voltReady) { voltReady = false; - printf_P(PSTR("newVoltRaw:%u\n"), getVoltRaw() / OVERSAMPLENR); + uint16_t volt = getVoltRaw(); + printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); + + // detect min-max, some long term sliding window for filtration may be added + // avoiding floating point operations, thus computing in raw + if(volt > maxVolt) { + maxVolt = volt; + } + else if(volt < minVolt) { + minVolt = volt; + } + //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage + //! to be detected as the new fsensor + //! We can either fake it by extending the detection window to a looooong time + //! or do some other countermeasures + + //! what we want to detect: + //! if minvolt gets below ~0.3V, it means there is an old fsensor + //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor + //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> + //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor + if(minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04, _i("FS v0.4 or newer") ); ////MSG_FS_V_04_OR_NEWER c=18 + } + //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor + //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why + //! we need to have both voltages detected correctly to allow switching back to the old fsensor. + else if( minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Rev04, sensorRevision=SensorRevision::_Old, _i("FS v0.3 or older")); ////MSG_FS_V_03_OR_OLDER c=18 + } + + ;// } @@ -184,10 +216,110 @@ public: _Rev04 = 1, _Undef = EEPROM_EMPTY_VALUE }; + + SensorRevision getSensorRevision() { + return sensorRevision; + } + + const char* getIRVersionText() { + switch(sensorRevision) { + case SensorRevision::_Old: + return _T(MSG_IR_03_OR_OLDER); + case SensorRevision::_Rev04: + return _T(MSG_IR_04_OR_NEWER); + default: + return _T(MSG_IR_UNKNOWN); + } + } + + void setSensorRevision(SensorRevision rev, bool updateEEPROM = false) { + sensorRevision = rev; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_PCB, (uint8_t)rev); + } + } + + uint16_t Voltage2Raw(float V) { + return (V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; + } + float Raw2Voltage(uint16_t raw) { + return VOLT_DIV_REF * (raw / (1023.F * OVERSAMPLENR)); + } + + /// This is called only upon start of the printer or when switching the fsensor ON in the menu + /// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) + bool checkVoltage(uint16_t raw){ + if(IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD) { + /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. + /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, + /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual + /// and would have been considered more like a sabotage than normal printer operation + puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); + return false; + } + if(sensorRevision == SensorRevision::_Rev04) { + /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount + if(IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { + puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); + return false; + } + /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure + #if 0 //Disabled as it has to be decided if we gonna use this or not. + if(IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { + puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); + return false; + } + #endif + } + /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false + #if 0 + if((sensorRevision == SensorRevision::_Undef) && (raw > IRsensor_Lmax_TRESHOLD)) { + puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); + return false; + } + #endif + // otherwise the IR fsensor is considered working correctly + return true; + } + + // Voltage2Raw is not constexpr :/ + const uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3f); // ~0.3V, raw value=982 + const uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5f); // ~1.5V (0.3*Vcc), raw value=4910 + const uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0f); // ~3.0V (0.6*Vcc), raw value=9821 + const uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6f); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 + const uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.f); // ~5V, raw value=16368 + private: SensorRevision sensorRevision; volatile bool voltReady; //this gets set by the adc ISR volatile uint16_t voltRaw; + uint16_t minVolt = Voltage2Raw(6.f); + uint16_t maxVolt = 0; + uint16_t nFSCheckCount; + + static constexpr uint16_t FS_CHECK_COUNT = 4; + /// Switching mechanism of the fsensor type. + /// Called from 2 spots which have a very similar behavior + /// 1: SensorRevision::_Old -> SensorRevision::_Rev04 and print _i("FS v0.4 or newer") + /// 2: SensorRevision::_Rev04 -> sensorRevision=SensorRevision::_Old and print _i("FS v0.3 or older") + void IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo, const char *statusLineTxt_P) { + bool bTemp = (!CHECK_ALL_HEATERS); + bTemp = bTemp && (menu_menu == lcd_status_screen); + bTemp = bTemp && ((sensorRevision == isVersion) || (sensorRevision == SensorRevision::_Undef)); + bTemp = bTemp && ready; + if (bTemp) { + nFSCheckCount++; + if (nFSCheckCount > FS_CHECK_COUNT) { + nFSCheckCount = 0; // not necessary + setSensorRevision(switchTo, true); + printf_IRSensorAnalogBoardChange(); + lcd_setstatuspgm(statusLineTxt_P); + } + } + else { + nFSCheckCount = 0; + } + } }; extern IR_sensor_analog fsensor; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 60e9148cc..476e16921 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -876,7 +876,7 @@ static void check_if_fw_is_on_right_printer(){ #ifdef PAT9125 //will return 1 only if IR can detect filament in bondtech extruder so this may fail even when we have IR sensor - const uint8_t ir_detected = !READ(IR_SENSOR_PIN); + const uint8_t ir_detected = fsensor.getFilamentPresent(); if (ir_detected){ lcd_show_fullscreen_message_and_wait_P(_i("MK3 firmware detected on MK3S printer"));}////MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 #endif //PAT9125 @@ -9406,32 +9406,6 @@ static void handleSafetyTimer() } #endif //SAFETYTIMER -#ifdef IR_SENSOR_ANALOG -#define FS_CHECK_COUNT 16 -/// Switching mechanism of the fsensor type. -/// Called from 2 spots which have a very similar behavior -/// 1: ClFsensorPCB::_Old -> ClFsensorPCB::_Rev04 and print _i("FS v0.4 or newer") -/// 2: ClFsensorPCB::_Rev04 -> oFsensorPCB=ClFsensorPCB::_Old and print _i("FS v0.3 or older") -void manage_inactivity_IR_ANALOG_Check(uint16_t &nFSCheckCount, ClFsensorPCB isVersion, ClFsensorPCB switchTo, const char *statusLineTxt_P) { - bool bTemp = (!CHECK_ALL_HEATERS); - bTemp = bTemp && (menu_menu == lcd_status_screen); - bTemp = bTemp && ((oFsensorPCB == isVersion) || (oFsensorPCB == ClFsensorPCB::_Undef)); - bTemp = bTemp && fsensor_enabled; - if (bTemp) { - nFSCheckCount++; - if (nFSCheckCount > FS_CHECK_COUNT) { - nFSCheckCount = 0; // not necessary - oFsensorPCB = switchTo; - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_PCB, (uint8_t)oFsensorPCB); - printf_IRSensorAnalogBoardChange(); - lcd_setstatuspgm(statusLineTxt_P); - } - } else { - nFSCheckCount = 0; - } -} -#endif - void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h { #ifdef FILAMENT_SENSOR diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index a83c7b1a9..a20f1872c 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -111,7 +111,6 @@ uint16_t fsensor_oq_sh_sum; //! @} #ifdef IR_SENSOR_ANALOG -ClFsensorPCB oFsensorPCB; ClFsensorActionNA oFsensorActionNA; bool bIRsensorStateFlag=false; ShortTimer tIRsensorCheckTimer; @@ -230,7 +229,7 @@ bool fsensor_enable(bool bUpdateEEPROM) } #else // PAT9125 #ifdef IR_SENSOR_ANALOG - if(!fsensor_IR_check(fsensor.getVoltRaw())) + if(!fsensor.checkVoltage(fsensor.getVoltRaw())) { bUpdateEEPROM=true; fsensor_enabled=false; diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index a4bb29131..a39c66468 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -66,17 +66,7 @@ extern uint8_t fsensor_log; //! @} #endif //PAT9125 -#define VOLT_DIV_REF 5 - #ifdef IR_SENSOR_ANALOG -#define IR_SENSOR_STEADY 10 // [ms] - -enum class ClFsensorPCB:uint_least8_t -{ - _Old=0, - _Rev04=1, - _Undef=EEPROM_EMPTY_VALUE -}; enum class ClFsensorActionNA:uint_least8_t { @@ -85,22 +75,7 @@ enum class ClFsensorActionNA:uint_least8_t _Undef=EEPROM_EMPTY_VALUE }; -extern ClFsensorPCB oFsensorPCB; extern ClFsensorActionNA oFsensorActionNA; -extern const char* FsensorIRVersionText(); - -extern bool fsensor_IR_check(uint16_t raw); -constexpr uint16_t Voltage2Raw(float V){ - return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; -} -constexpr float Raw2Voltage(uint16_t raw){ - return VOLT_DIV_REF*(raw / (1023.F * OVERSAMPLENR) ); -} -constexpr uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982 -constexpr uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910 -constexpr uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821 -constexpr uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 -constexpr uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368 #endif //IR_SENSOR_ANALOG diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2ad15375c..2c024d93f 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -157,8 +157,6 @@ void mmu_init(void) _delay_ms(10); //wait 10ms for sure mmu_reset(); //reset mmu (HW or SW), do not wait for response mmu_state = S::Init; - SET_INPUT(IR_SENSOR_PIN); //input mode - WRITE(IR_SENSOR_PIN, 1); //pullup } //if IR_SENSOR defined, always returns true diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 94efdeba8..ce88e288e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1439,7 +1439,7 @@ static void lcd_menu_voltages() lcd_home(); lcd_printf_P(PSTR(" PWR: %4.1fV\n" " BED: %4.1fV"), volt_pwr, volt_bed); #ifdef IR_SENSOR_ANALOG - lcd_printf_P(PSTR("\n IR : %3.1fV"), Raw2Voltage(fsensor.getVoltRaw())); + lcd_printf_P(PSTR("\n IR : %3.1fV"), fsensor.Raw2Voltage(fsensor.getVoltRaw())); #endif //IR_SENSOR_ANALOG menu_back_if_clicked(); } @@ -1676,7 +1676,7 @@ static void lcd_support_menu() #ifdef IR_SENSOR_ANALOG MENU_ITEM_BACK_P(STR_SEPARATOR); MENU_ITEM_BACK_P(PSTR("Fil. sensor v.:")); - MENU_ITEM_BACK_P(FsensorIRVersionText()); + MENU_ITEM_BACK_P(fsensor.getIRVersionText()); #endif // IR_SENSOR_ANALOG MENU_ITEM_BACK_P(STR_SEPARATOR); @@ -3444,7 +3444,7 @@ static void lcd_show_sensors_state() } if (ir_sensor_detected) { - idler_state = !READ(IR_SENSOR_PIN); + idler_state = fsensor.getFilamentPresent(); lcd_puts_at_P(0, 1, _T(MSG_FSENSOR)); lcd_set_cursor(LCD_WIDTH - 3, 1); lcd_print_state(idler_state); @@ -3845,7 +3845,7 @@ void lcd_v2_calibration() bool loaded = false; if (fsensor_enabled && ir_sensor_detected) { - loaded = !READ(IR_SENSOR_PIN); + loaded = fsensor.getFilamentPresent(); } else { @@ -6199,36 +6199,41 @@ void lcd_belttest() #ifdef IR_SENSOR_ANALOG // called also from marlin_main.cpp void printf_IRSensorAnalogBoardChange(){ - printf_P(PSTR("Filament sensor board change detected: revision%S\n"), FsensorIRVersionText()); + printf_P(PSTR("Filament sensor board change detected: revision%S\n"), fsensor.getIRVersionText()); } static bool lcd_selftest_IRsensor(bool bStandalone) { - bool bPCBrev04; - uint16_t volt_IR_int; - - volt_IR_int = fsensor.getVoltRaw(); - bPCBrev04=(volt_IR_int < IRsensor_Hopen_TRESHOLD); - printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) ); - if(volt_IR_int < IRsensor_Hmin_TRESHOLD){ + bool ret = false; + fsensor.setAutoLoadEnabled(false); + fsensor.setRunoutEnabled(false); + IR_sensor_analog::SensorRevision oldSensorRevision = fsensor.getSensorRevision(); + IR_sensor_analog::SensorRevision newSensorRevision; + uint16_t volt_IR_int = fsensor.getVoltRaw(); + + newSensorRevision = (volt_IR_int < fsensor.IRsensor_Hopen_TRESHOLD) ? IR_sensor_analog::SensorRevision::_Rev04 : IR_sensor_analog::SensorRevision::_Old; + printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), fsensor.Raw2Voltage(volt_IR_int) ); + if(volt_IR_int < fsensor.IRsensor_Hmin_TRESHOLD){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"HIGH",""); - return(false); + goto exit; } lcd_show_fullscreen_message_and_wait_P(_i("Insert the filament (do not load it) into the extruder and then press the knob."));////MSG_INSERT_FIL c=20 r=6 volt_IR_int = fsensor.getVoltRaw(); - printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), Raw2Voltage(volt_IR_int)); - if(volt_IR_int > (IRsensor_Lmax_TRESHOLD)){ + printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), fsensor.Raw2Voltage(volt_IR_int)); + if(volt_IR_int > (fsensor.IRsensor_Lmax_TRESHOLD)){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"LOW",""); - return(false); + goto exit; } - if((bPCBrev04 ? 1 : 0) != (uint8_t)oFsensorPCB){ // safer then "(uint8_t)bPCBrev04" - oFsensorPCB=bPCBrev04 ? ClFsensorPCB::_Rev04 : ClFsensorPCB::_Old; + if(newSensorRevision != oldSensorRevision) { + fsensor.setSensorRevision(newSensorRevision, true); printf_IRSensorAnalogBoardChange(); - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,(uint8_t)oFsensorPCB); } - return(true); + ret = true; +exit: + fsensor.settings_init(); + return ret; } static void lcd_detect_IRsensor(){ @@ -6236,8 +6241,8 @@ static void lcd_detect_IRsensor(){ bool loaded; /// Check if filament is loaded. If it is loaded stop detection. /// @todo Add autodetection with MMU2s - loaded = ! READ(IR_SENSOR_PIN); - if(loaded ){ + loaded = fsensor.getFilamentPresent(); + if(loaded){ lcd_show_fullscreen_message_and_wait_P(_i("Please unload the filament first, then repeat this action."));////MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4 return; } else { @@ -6269,12 +6274,12 @@ bool lcd_selftest() //! Check if IR sensor is in unknown state, if so run Fsensor Detection //! As the Fsensor Detection isn't yet ready for the mmu2s we set temporarily the IR sensor 0.3 or older for mmu2s //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu - if( oFsensorPCB == ClFsensorPCB::_Undef) { + if(fsensor.getSensorRevision() == IR_sensor_analog::SensorRevision::_Undef) { if (!mmu_enabled) { lcd_detect_IRsensor(); } else { - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,0); + fsensor.setSensorRevision(IR_sensor_analog::SensorRevision::_Old, true); } } #endif //IR_SENSOR_ANALOG @@ -7066,7 +7071,7 @@ static bool lcd_selftest_fsensor(void) //! * Pre-heat to PLA extrude temperature. //! * Unload filament possibly present. //! * Move extruder idler same way as during filament load -//! and sample IR_SENSOR_PIN. +//! and sample the filament sensor. //! * Check that pin doesn't go low. //! //! @retval true passed @@ -7103,7 +7108,7 @@ static bool selftest_irsensor() mmu_load_step(false); while (blocks_queued()) { - if (READ(IR_SENSOR_PIN) == 0) + if (fsensor.getFilamentPresent()) { lcd_selftest_error(TestError::TriggeringFsensor, "", ""); return false; From 8fae5e708e65bce09afa36a50a93a04e82224961 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 23 Feb 2022 07:20:58 +0100 Subject: [PATCH 019/319] Remove unused fsensor variables --- Firmware/fsensor.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index a20f1872c..3c92f9322 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -69,20 +69,6 @@ uint8_t fsensor_log = 1; //! autoload feature enabled bool fsensor_autoload_enabled = true; -//! autoload watching enable/disable flag -bool fsensor_watch_autoload = false; - -#ifdef PAT9125 -// -uint16_t fsensor_autoload_y; -// -uint8_t fsensor_autoload_c; -// -uint32_t fsensor_autoload_last_millis; -// -uint8_t fsensor_autoload_sum; -//! @} -#endif //! @name filament optical quality measurement variables From 5484882758d74a7c073c42ba4358d425a65a08a9 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 23 Feb 2022 12:26:17 +0100 Subject: [PATCH 020/319] Checkpoint after a lot of removal --- Firmware/Filament_sensor.cpp | 2 +- Firmware/Filament_sensor.h | 68 +++++++++--- Firmware/Marlin_main.cpp | 14 +-- Firmware/fsensor.h | 49 --------- Firmware/messages.cpp | 2 + Firmware/messages.h | 2 + Firmware/mmu.cpp | 13 +-- Firmware/ultralcd.cpp | 205 +++++++++++------------------------ 8 files changed, 129 insertions(+), 226 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 7f8898d44..a0b4fa267 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -1,3 +1,3 @@ #include "Filament_sensor.h" -IR_sensor_analog fsensor; \ No newline at end of file +IR_sensor_analog fsensor; diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 4c5f7631f..c54f59d1e 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -22,6 +22,13 @@ public: virtual bool update() = 0; virtual bool getFilamentPresent() = 0; + enum class State : uint8_t { + disabled = 0, + ready, + initializing, + error, + }; + enum class SensorActionOnError : uint8_t { _Continue = 0, _Pause = 1, @@ -35,6 +42,10 @@ public: } } + bool getAutoLoadEnabled() { + return autoLoadEnabled; + } + void setRunoutEnabled(bool state, bool updateEEPROM = false) { runoutEnabled = state; if (updateEEPROM) { @@ -42,22 +53,45 @@ public: } } + bool getRunoutEnabled() { + return runoutEnabled; + } + + void setActionOnError(SensorActionOnError state, bool updateEEPROM = false) { + sensorActionOnError = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_ACTION_NA, (uint8_t)state); + } + } + + SensorActionOnError getActionOnError() { + return sensorActionOnError; + } + bool getFilamentLoadEvent() { return postponedLoadEvent; } + bool isError() { + return state == State::error; + } + + bool isReady() { + return state == State::ready; + } + protected: void settings_init() { autoLoadEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); runoutEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); sensorActionOnError = (SensorActionOnError)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); if (sensorActionOnError == SensorActionOnError::_Undef) { - sensorActionOnError = SensorActionOnError::_Pause; + sensorActionOnError = SensorActionOnError::_Continue; } } bool checkFilamentEvents() { - if (!ready) + if (state != State::ready) return false; bool newFilamentPresent = getFilamentPresent(); @@ -102,10 +136,10 @@ protected: } } + State state; bool autoLoadEnabled; bool runoutEnabled; bool oldFilamentPresent; //for creating filament presence switching events. - bool ready; bool postponedLoadEvent; //this event lasts exactly one update cycle. It is long enough to be able to do polling for load event. SensorActionOnError sensorActionOnError; }; @@ -116,19 +150,18 @@ public: SET_INPUT(IR_SENSOR_PIN); //input mode WRITE(IR_SENSOR_PIN, 1); //pullup settings_init(); + state = State::initializing; } bool update() { - if (!ready) { - ready = true; //the IR sensor gets ready instantly as it's just a gpio read operation. + if (state == State::initializing) { + state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. } postponedLoadEvent = false; bool event = checkFilamentEvents(); - ;// - return event; } @@ -146,7 +179,7 @@ class IR_sensor_analog: public IR_sensor { public: void init() { IR_sensor::init(); - ;// + settings_init(); } bool update() { @@ -175,13 +208,13 @@ public: //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor if(minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04, _i("FS v0.4 or newer") ); ////MSG_FS_V_04_OR_NEWER c=18 + IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04); } //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why //! we need to have both voltages detected correctly to allow switching back to the old fsensor. else if( minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Rev04, sensorRevision=SensorRevision::_Old, _i("FS v0.3 or older")); ////MSG_FS_V_03_OR_OLDER c=18 + IR_ANALOG_Check(SensorRevision::_Rev04, SensorRevision::_Old); } @@ -302,18 +335,27 @@ private: /// Called from 2 spots which have a very similar behavior /// 1: SensorRevision::_Old -> SensorRevision::_Rev04 and print _i("FS v0.4 or newer") /// 2: SensorRevision::_Rev04 -> sensorRevision=SensorRevision::_Old and print _i("FS v0.3 or older") - void IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo, const char *statusLineTxt_P) { + void IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo) { bool bTemp = (!CHECK_ALL_HEATERS); bTemp = bTemp && (menu_menu == lcd_status_screen); bTemp = bTemp && ((sensorRevision == isVersion) || (sensorRevision == SensorRevision::_Undef)); - bTemp = bTemp && ready; + bTemp = bTemp && (state == State::ready); if (bTemp) { nFSCheckCount++; if (nFSCheckCount > FS_CHECK_COUNT) { nFSCheckCount = 0; // not necessary setSensorRevision(switchTo, true); printf_IRSensorAnalogBoardChange(); - lcd_setstatuspgm(statusLineTxt_P); + switch (switchTo) { + case SensorRevision::_Old: + lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 + break; + case SensorRevision::_Rev04: + lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 + break; + default: + break; + } } } else { diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 476e16921..81b7f4f9c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -765,8 +765,8 @@ static void factory_reset(char level) farm_disable(); #ifdef FILAMENT_SENSOR - fsensor_enable(); - fsensor_autoload_set(true); + fsensor.setAutoLoadEnabled(true, true); + fsensor.setRunoutEnabled(true, true); #endif //FILAMENT_SENSOR break; @@ -1498,10 +1498,6 @@ void setup() setup_fan_interrupt(); #endif //DEBUG_DISABLE_FANCHECK -#ifdef PAT9125 - fsensor_setup_interrupt(); -#endif //PAT9125 - #ifndef DEBUG_DISABLE_STARTMSGS KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -11549,9 +11545,6 @@ void M600_load_filament() { //load_filament_time = _millis(); KEEPALIVE_STATE(PAUSED_FOR_USER); -#ifdef PAT9125 - fsensor_autoload_check_start(); -#endif //PAT9125 while(!lcd_clicked()) { manage_heater(); @@ -11563,9 +11556,6 @@ void M600_load_filament() { } #endif //FILAMENT_SENSOR } -#ifdef PAT9125 - fsensor_autoload_check_stop(); -#endif //PAT9125 KEEPALIVE_STATE(IN_HANDLER); M600_load_filament_movements(); diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index a39c66468..5619430c7 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -6,51 +6,15 @@ #include "config.h" -// enable/disable flag -extern bool fsensor_enabled; -// not responding flag -extern bool fsensor_not_responding; #ifdef PAT9125 // optical checking "chunk lenght" (already in steps) extern int16_t fsensor_chunk_len; // count of soft failures extern uint8_t fsensor_softfail; -#endif -//! @name save restore printing -//! @{ -//! split the current gcode stream to insert new instructions -extern void fsensor_checkpoint_print(void); -//! @} - -#ifdef PAT9125 //! update axis resolution extern void fsensor_set_axis_steps_per_unit(float u); -#endif -//! @name enable/disable -//! @{ -extern bool fsensor_enable(bool bUpdateEEPROM=true); -extern void fsensor_disable(bool bUpdateEEPROM=true); -//! @} - -//autoload feature enabled -extern bool fsensor_autoload_enabled; -extern void fsensor_autoload_set(bool State); - -#ifdef PAT9125 -//! setup pin-change interrupt -extern void fsensor_setup_interrupt(void); - -//! @name autoload support -//! @{ - -extern void fsensor_autoload_check_start(void); -extern void fsensor_autoload_check_stop(void); -#endif //PAT9125 -//! @} - -#ifdef PAT9125 //! @name callbacks from stepper //! @{ extern void fsensor_st_block_chunk(int cnt); @@ -66,17 +30,4 @@ extern uint8_t fsensor_log; //! @} #endif //PAT9125 -#ifdef IR_SENSOR_ANALOG - -enum class ClFsensorActionNA:uint_least8_t -{ - _Continue=0, - _Pause=1, - _Undef=EEPROM_EMPTY_VALUE -}; - -extern ClFsensorActionNA oFsensorActionNA; - -#endif //IR_SENSOR_ANALOG - #endif //FSENSOR_H diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 6db00e7a2..efa71c5b0 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -155,6 +155,8 @@ const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////MSG_TIMEOUT c=12 const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////MSG_BRIGHT c=6 const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////MSG_DIM c=6 const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////MSG_AUTO c=6 +const char MSG_FS_V_03_OR_OLDER[] PROGMEM_I1 = ISTR("FS v0.3 or older"); ////c=18 +const char MSG_FS_V_04_OR_NEWER[] PROGMEM_I1 = ISTR("FS v0.4 or newer"); ////c=18 #ifdef IR_SENSOR_ANALOG // Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////MSG_IR_04_OR_NEWER c=18 diff --git a/Firmware/messages.h b/Firmware/messages.h index 8dad4c39d..68859940e 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -166,6 +166,8 @@ extern const char MSG_TIMEOUT[]; extern const char MSG_BRIGHT[]; extern const char MSG_DIM[]; extern const char MSG_AUTO[]; +extern const char MSG_FS_V_03_OR_OLDER[]; +extern const char MSG_FS_V_04_OR_NEWER[]; #ifdef IR_SENSOR_ANALOG extern const char MSG_IR_04_OR_NEWER[]; extern const char MSG_IR_03_OR_OLDER[]; diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2c024d93f..0e78edf76 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -19,6 +19,7 @@ #include "AutoDeplete.h" #include "fastio.h" #include "pins.h" +#include "Filament_sensor.h" //-// #include "util.h" @@ -169,12 +170,7 @@ bool check_for_ir_sensor() bool detected = false; //if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor - if ((READ(IR_SENSOR_PIN) == 0) -#ifdef PAT9125 - && fsensor_not_responding -#endif //PAT9125 - ) - { + if ((READ(IR_SENSOR_PIN) == 0)) { detected = true; //printf_P(PSTR("Idler IR sensor detected\n")); } @@ -380,8 +376,9 @@ void mmu_loop(void) mmu_last_finda_response.start(); FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); //printf_P(PSTR("Eact: %d\n"), int(e_active())); - if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) { - fsensor_checkpoint_print(); + if (!mmu_finda && CHECK_FSENSOR && fsensor.isReady()) { + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); if (mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't deplete unknown extruder. ad_markDepleted(mmu_extruder); if (lcd_autoDepleteEnabled() && !ad_allDepleted() && mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't auto if F=? diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ce88e288e..358316896 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1788,10 +1788,6 @@ void lcd_cutter_enabled() } #endif //MMU_HAS_CUTTER -void lcd_set_filament_autoload() { - fsensor_autoload_set(!fsensor_autoload_enabled); -} - FilamentAction eFilamentAction=FilamentAction::None; // must be initialized as 'non-autoLoad' bool bFilamentPreheatState; bool bFilamentAction=false; @@ -2147,7 +2143,7 @@ void lcd_wait_interact() { lcd_clear(); lcd_puts_at_P(0, 1, _i("Insert filament"));////MSG_INSERT_FILAMENT c=20 - if (!fsensor_autoload_enabled) { + if (!fsensor.getAutoLoadEnabled()) { lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2 } } @@ -3535,34 +3531,6 @@ static void lcd_crash_mode_info2() } #endif //TMC2130 -#ifdef FILAMENT_SENSOR -static void lcd_filament_autoload_info() -{ -uint8_t nlines; - lcd_update_enable(true); - static uint32_t tim = 0; - if ((tim + 1000) < _millis()) - { - lcd_display_message_fullscreen_nonBlocking_P(_i("Autoloading filament available only when filament sensor is turned on..."), nlines); ////MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 - tim = _millis(); - } - menu_back_if_clicked(); -} - -static void lcd_fsensor_fail() -{ -uint8_t nlines; - lcd_update_enable(true); - static uint32_t tim = 0; - if ((tim + 1000) < _millis()) - { - lcd_display_message_fullscreen_nonBlocking_P(_i("ERROR: Filament sensor is not responding, please check connection."), nlines);////MSG_FSENS_NOT_RESPONDING c=20 r=4 - tim = _millis(); - } - menu_back_if_clicked(); -} -#endif //FILAMENT_SENSOR - //-// static void lcd_sound_state_set(void) { @@ -3635,19 +3603,12 @@ static void crash_mode_switch() #ifdef FILAMENT_SENSOR -static void lcd_fsensor_state_set() -{ - FSensorStateMenu = !FSensorStateMenu; //set also from fsensor_enable() and fsensor_disable() - if (!FSensorStateMenu) { - fsensor_disable(); - if (fsensor_autoload_enabled && !mmu_enabled) - menu_submenu(lcd_filament_autoload_info); - } - else { - fsensor_enable(); - if (fsensor_not_responding && !mmu_enabled) - menu_submenu(lcd_fsensor_fail); - } +static void lcd_fsensor_runout_set() { + fsensor.setRunoutEnabled(!fsensor.getRunoutEnabled(), true); +} + +static void lcd_fsensor_autoload_set() { + fsensor.setAutoLoadEnabled(!fsensor.getAutoLoadEnabled(), true); } #endif //FILAMENT_SENSOR @@ -3843,7 +3804,7 @@ void lcd_v2_calibration() else if (!eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)) { bool loaded = false; - if (fsensor_enabled && ir_sensor_detected) + if (fsensor.isReady()) { loaded = fsensor.getFilamentPresent(); } @@ -3950,7 +3911,7 @@ static void lcd_wizard_load() bool lcd_autoDepleteEnabled() { - return (lcd_autoDeplete && fsensor_enabled); + return (lcd_autoDeplete && fsensor.isReady()); } static void wizard_lay1cal_message(bool cold) @@ -4214,44 +4175,22 @@ void lcd_settings_linearity_correction_menu(void) #endif // TMC2130 #ifdef FILAMENT_SENSOR -#define SETTINGS_FILAMENT_SENSOR \ -do\ -{\ - if (FSensorStateMenu == 0)\ - {\ - if (fsensor_not_responding && (mmu_enabled == false))\ - {\ - /* Filament sensor not working*/\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set);\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, lcd_fsensor_fail);\ - }\ - else\ - {\ - /* Filament sensor turned off, working, no problems*/\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_OFF), lcd_fsensor_state_set);\ - if (mmu_enabled == false)\ - {\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, lcd_filament_autoload_info);\ - }\ - }\ - }\ - else\ - {\ - /* Filament sensor turned on, working, no problems*/\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set);\ - if (mmu_enabled == false)\ - {\ - if (fsensor_autoload_enabled)\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_ON c=17*/\ - else\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_OFF c=17*/\ - }\ - }\ -}\ -while(0) -#else //FILAMENT_SENSOR -#define SETTINGS_FILAMENT_SENSOR do{}while(0) +void fsensor_reinit() { + fsensor.init(); +} + +#define SETTINGS_FILAMENT_SENSOR \ +do {\ + if (fsensor.isError()) {\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), NULL, fsensor_reinit);\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, fsensor_reinit);\ + }\ + else {\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.getRunoutEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_runout_set);\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), fsensor.getAutoLoadEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_autoload_set);\ + }\ +} while(0) #endif //FILAMENT_SENSOR static void auto_deplete_switch() @@ -4264,17 +4203,11 @@ static void settingsAutoDeplete() { if (mmu_enabled) { - if (!fsensor_enabled) - { - MENU_ITEM_TOGGLE_P(MSG_AUTO_DEPLETE, _T(MSG_NA), NULL); + if (fsensor.isError()) { + MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), NULL, fsensor_reinit); } - else if (lcd_autoDeplete) - { - MENU_ITEM_TOGGLE_P(MSG_AUTO_DEPLETE, _T(MSG_ON), auto_deplete_switch); - } - else - { - MENU_ITEM_TOGGLE_P(MSG_AUTO_DEPLETE, _T(MSG_OFF), auto_deplete_switch); + else { + MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), lcd_autoDeplete ? _T(MSG_ON) : _T(MSG_OFF), auto_deplete_switch); } } } @@ -4671,40 +4604,35 @@ SETTINGS_VERSION; MENU_END(); } -#ifdef IR_SENSOR_ANALOG static void lcd_fsensor_actionNA_set(void) { -switch(oFsensorActionNA) - { - case ClFsensorActionNA::_Continue: - oFsensorActionNA=ClFsensorActionNA::_Pause; - break; - case ClFsensorActionNA::_Pause: - oFsensorActionNA=ClFsensorActionNA::_Continue; - break; - default: - oFsensorActionNA=ClFsensorActionNA::_Continue; - } -eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA,(uint8_t)oFsensorActionNA); + Filament_sensor::SensorActionOnError act = fsensor.getActionOnError(); + switch(act) { + case Filament_sensor::SensorActionOnError::_Continue: + act = Filament_sensor::SensorActionOnError::_Pause; + break; + case Filament_sensor::SensorActionOnError::_Pause: + act = Filament_sensor::SensorActionOnError::_Continue; + break; + default: + act = Filament_sensor::SensorActionOnError::_Continue; + } + fsensor.setActionOnError(act, true); } #define FSENSOR_ACTION_NA \ -do\ -{\ - switch(oFsensorActionNA)\ - {\ - case ClFsensorActionNA::_Continue:\ - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_CONTINUE_SHORT), lcd_fsensor_actionNA_set);\ +do {\ + switch(fsensor.getActionOnError()) {\ + case Filament_sensor::SensorActionOnError::_Continue:\ + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set);\ break;\ - case ClFsensorActionNA::_Pause:\ - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_PAUSE), lcd_fsensor_actionNA_set);\ + case Filament_sensor::SensorActionOnError::_Pause:\ + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set);\ break;\ default:\ - oFsensorActionNA=ClFsensorActionNA::_Continue;\ + lcd_fsensor_actionNA_set();\ }\ -}\ -while (0) -#endif //IR_SENSOR_ANALOG +} while (0) template static void select_sheet_menu() @@ -4758,7 +4686,6 @@ void lcd_hw_setup_menu(void) // can not be "static" MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu); ////MSG_CHECKS c=18 #ifdef IR_SENSOR_ANALOG - FSENSOR_ACTION_NA; //! Fsensor Detection isn't ready for mmu yet it is temporarily disabled. //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu if(!mmu_enabled) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor); @@ -4795,7 +4722,12 @@ static void lcd_settings_menu() MENU_ITEM_GCODE_P(_i("Disable steppers"), PSTR("M84"));////MSG_DISABLE_STEPPERS c=18 } - SETTINGS_FILAMENT_SENSOR; +#ifdef FILAMENT_SENSOR + SETTINGS_FILAMENT_SENSOR; +#ifdef IR_SENSOR_ANALOG + FSENSOR_ACTION_NA; +#endif //IR_SENSOR_ANALOG +#endif //FILAMENT_SENSOR SETTINGS_AUTO_DEPLETE; @@ -5563,8 +5495,9 @@ static void lcd_main_menu() #endif //MMU_HAS_CUTTER } else { #ifdef FILAMENT_SENSOR - if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false)) + if (fsensor.getAutoLoadEnabled() && (mmu_enabled == false)) { MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18 + } else #endif //FILAMENT_SENSOR { @@ -5726,21 +5659,9 @@ static void lcd_tune_menu() #endif #ifdef FILAMENT_SENSOR - if (FSensorStateMenu == 0) { - if (fsensor_not_responding && (mmu_enabled == false)) { - /* Filament sensor not working*/ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set); - } - else { - /* Filament sensor turned off, working, no problems*/ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_OFF), lcd_fsensor_state_set); - } - } - else { - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set); - } + SETTINGS_FILAMENT_SENSOR; #ifdef IR_SENSOR_ANALOG - FSENSOR_ACTION_NA; + FSENSOR_ACTION_NA; #endif //IR_SENSOR_ANALOG #endif //FILAMENT_SENSOR @@ -6251,11 +6172,9 @@ static void lcd_detect_IRsensor(){ } if(bAction){ lcd_show_fullscreen_message_and_wait_P(_i("Sensor verified, remove the filament now."));////MSG_FS_VERIFIED c=20 r=3 - // the fsensor board has been successfully identified, any previous "not responding" may be cleared now - fsensor_not_responding = false; + fsensor.init(); } else { lcd_show_fullscreen_message_and_wait_P(_i("Verification failed, remove the filament and try again."));////MSG_FIL_FAILED c=20 r=5 - // here it is unclear what to to with the fsensor_not_responding flag } } #endif //IR_SENSOR_ANALOG @@ -7053,12 +6972,12 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const #ifdef PAT9125 static bool lcd_selftest_fsensor(void) { - // fsensor.init(); - if (fsensor_not_responding) + fsensor.init(); + if (fsensor.isError()) { lcd_selftest_error(TestError::WiringFsensor, "", ""); } - return (!fsensor_not_responding); + return (!fsensor.isError()); } #endif //PAT9125 From cfe8444fe3f2270d0ba0b8f90051427df2aec5fb Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 23 Feb 2022 20:34:30 +0100 Subject: [PATCH 021/319] Revert menu hack --- Firmware/menu.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index dd3c8e84e..b4761304f 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -130,8 +130,6 @@ void menu_back_if_clicked_fb(void) void menu_submenu(menu_func_t submenu) { - if (menu_menu == submenu) - return; //do not enter into the current menu. if (menu_depth < MENU_DEPTH_MAX) { menu_stack[menu_depth].menu = menu_menu; From b741707c0e9813591e676758b9d5b80aab749171 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 09:26:55 +0100 Subject: [PATCH 022/319] Fsensor error state --- Firmware/Filament_sensor.h | 136 ++++++++++++++++++++++--------------- Firmware/ultralcd.cpp | 6 +- 2 files changed, 84 insertions(+), 58 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index c54f59d1e..ac2d397df 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -136,6 +136,15 @@ protected: } } + void triggerError() { + state = State::error; + autoLoadEnabled = false; + runoutEnabled = false; + + /// some message, idk + ;// + } + State state; bool autoLoadEnabled; bool runoutEnabled; @@ -154,15 +163,24 @@ public: } bool update() { - if (state == State::initializing) { - state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. - oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. + switch (state) { + case State::initializing: + state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. + oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. + // fallthru + case State::ready: { + postponedLoadEvent = false; + bool event = checkFilamentEvents(); + + ;// + + return event; + } break; + case State::disabled: + case State::error: + default: + return false; } - - postponedLoadEvent = false; - bool event = checkFilamentEvents(); - - return event; } bool getFilamentPresent() { @@ -184,41 +202,44 @@ public: bool update() { bool event = IR_sensor::update(); - if (voltReady) { - voltReady = false; - uint16_t volt = getVoltRaw(); - printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); - - // detect min-max, some long term sliding window for filtration may be added - // avoiding floating point operations, thus computing in raw - if(volt > maxVolt) { - maxVolt = volt; + if (state == State::ready) { + if (voltReady) { + voltReady = false; + uint16_t volt = getVoltRaw(); + printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); + + // detect min-max, some long term sliding window for filtration may be added + // avoiding floating point operations, thus computing in raw + if(volt > maxVolt) { + maxVolt = volt; + } + else if(volt < minVolt) { + minVolt = volt; + } + //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage + //! to be detected as the new fsensor + //! We can either fake it by extending the detection window to a looooong time + //! or do some other countermeasures + + //! what we want to detect: + //! if minvolt gets below ~0.3V, it means there is an old fsensor + //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor + //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> + //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor + if(minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04); + } + //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor + //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why + //! we need to have both voltages detected correctly to allow switching back to the old fsensor. + else if( minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Rev04, SensorRevision::_Old); + } + + if (!checkVoltage(volt)) { + triggerError(); + } } - else if(volt < minVolt) { - minVolt = volt; - } - //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage - //! to be detected as the new fsensor - //! We can either fake it by extending the detection window to a looooong time - //! or do some other countermeasures - - //! what we want to detect: - //! if minvolt gets below ~0.3V, it means there is an old fsensor - //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor - //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> - //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor - if(minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04); - } - //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor - //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why - //! we need to have both voltages detected correctly to allow switching back to the old fsensor. - else if( minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Rev04, SensorRevision::_Old); - } - - - ;// } ;// @@ -279,16 +300,19 @@ public: return VOLT_DIV_REF * (raw / (1023.F * OVERSAMPLENR)); } - /// This is called only upon start of the printer or when switching the fsensor ON in the menu - /// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) - bool checkVoltage(uint16_t raw){ + bool checkVoltage(uint16_t raw) { if(IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD) { /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual /// and would have been considered more like a sabotage than normal printer operation - puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); - return false; + if (voltageErrorCnt++ > 4) { + puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); + return false; + } + } + else { + voltageErrorCnt = 0; } if(sensorRevision == SensorRevision::_Rev04) { /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount @@ -306,6 +330,7 @@ public: } /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false #if 0 + #error "I really think this code can't be enabled anymore because we are constantly checking this voltage." if((sensorRevision == SensorRevision::_Undef) && (raw > IRsensor_Lmax_TRESHOLD)) { puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); return false; @@ -329,6 +354,7 @@ private: uint16_t minVolt = Voltage2Raw(6.f); uint16_t maxVolt = 0; uint16_t nFSCheckCount; + uint8_t voltageErrorCnt; static constexpr uint16_t FS_CHECK_COUNT = 4; /// Switching mechanism of the fsensor type. @@ -347,14 +373,14 @@ private: setSensorRevision(switchTo, true); printf_IRSensorAnalogBoardChange(); switch (switchTo) { - case SensorRevision::_Old: - lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 - break; - case SensorRevision::_Rev04: - lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 - break; - default: - break; + case SensorRevision::_Old: + lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 + break; + case SensorRevision::_Rev04: + lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 + break; + default: + break; } } } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 358316896..7d7d674d1 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4183,8 +4183,8 @@ void fsensor_reinit() { #define SETTINGS_FILAMENT_SENSOR \ do {\ if (fsensor.isError()) {\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), NULL, fsensor_reinit);\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, fsensor_reinit);\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), fsensor_reinit);\ + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_NA), fsensor_reinit);\ }\ else {\ MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.getRunoutEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_runout_set);\ @@ -4204,7 +4204,7 @@ static void settingsAutoDeplete() if (mmu_enabled) { if (fsensor.isError()) { - MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), NULL, fsensor_reinit); + MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_NA), fsensor_reinit); } else { MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), lcd_autoDeplete ? _T(MSG_ON) : _T(MSG_OFF), auto_deplete_switch); From d2bfe422f1100b77409b02134e0ead60dad3aaca Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 10:29:43 +0100 Subject: [PATCH 023/319] Separate runout and enabled settings --- Firmware/Filament_sensor.h | 20 +++++- Firmware/eeprom.h | 8 +-- Firmware/messages.cpp | 5 +- Firmware/messages.h | 1 + Firmware/ultralcd.cpp | 123 +++++++++++++++++++------------------ 5 files changed, 87 insertions(+), 70 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index ac2d397df..3b1d6b9be 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -24,8 +24,8 @@ public: enum class State : uint8_t { disabled = 0, - ready, initializing, + ready, error, }; @@ -35,6 +35,11 @@ public: _Undef = EEPROM_EMPTY_VALUE }; + void setEnabled(bool enabled) { + state = enabled ? State::initializing : State::disabled; + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, enabled); + } + void setAutoLoadEnabled(bool state, bool updateEEPROM = false) { autoLoadEnabled = state; if (updateEEPROM) { @@ -49,7 +54,7 @@ public: void setRunoutEnabled(bool state, bool updateEEPROM = false) { runoutEnabled = state; if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, state); + eeprom_update_byte((uint8_t *)EEPROM_FSENS_RUNOUT_ENABLED, state); } } @@ -80,10 +85,19 @@ public: return state == State::ready; } + bool isEnabled() { + return state != State::disabled; + } + protected: void settings_init() { + bool enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); + if ((state != State::disabled) != enabled) { + state = enabled ? State::initializing : State::disabled; + } + autoLoadEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); - runoutEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); + runoutEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_RUNOUT_ENABLED); sensorActionOnError = (SensorActionOnError)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); if (sensorActionOnError == SensorActionOnError::_Undef) { sensorActionOnError = SensorActionOnError::_Continue; diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index 2d9e2fec8..23c42e1bc 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -218,8 +218,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP | ^ | ^ | ^ | 03h 1 | ^ | Sound mode: __assist__ | ^ | ^ | 0x0ED6 3798 | bool | EEPROM_AUTO_DEPLETE | 01h 1 | ffh 255 | MMU2/s autodeplete: __on__ | ??? | D3 Ax0ed6 C1 | ^ | ^ | ^ | 00h 0 | ^ | MMU2/s autodeplete: __off__ | ^ | ^ -| 0x0ED5 3797 | bool | EEPROM_FSENS_OQ_MEASS_ENABLED | ??? | ffh 255 | PAT1925 ??? | ??? | D3 Ax0ed5 C1 -| ^ | ^ | ^ | ??? | ^ | PAT1925 ??? | ^ | ^ +| 0x0ED5 3797 | bool | EEPROM_FSENS_RUNOUT_ENABLED | 01h 1 | ffh 255 __P__ | Filament runout: __enabled__ | LCD menu | D3 Ax0ed5 C1 +| ^ | ^ | ^ | 00h 0 | ^ | Filament runout: __disabled__ | LCD menu | ^ | 0x0ED3 3795 | uint16 | EEPROM_MMU_FAIL_TOT | ??? | ff ffh 65535 __S/P__ | MMU2/s total failures | ??? | D3 Ax0ed3 C2 | 0x0ED2 3794 | uint8 | EEPROM_MMU_FAIL | ??? | ffh 255 __S/P__ | MMU2/s fails during print | ??? | D3 Ax0ed2 C1 | 0x0ED0 3792 | uint16 | EEPROM_MMU_LOAD_FAIL_TOT | ??? | ff ffh 65535 __S/P__ | MMU2/s total load failures | ??? | D3 Ax0ed0 C2 @@ -494,9 +494,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP #define EEPROM_SOUND_MODE (EEPROM_UVLO_TARGET_HOTEND-1) // uint8 #define EEPROM_AUTO_DEPLETE (EEPROM_SOUND_MODE-1) //bool -#define EEPROM_FSENS_OQ_MEASS_ENABLED (EEPROM_AUTO_DEPLETE - 1) //bool +#define EEPROM_FSENS_RUNOUT_ENABLED (EEPROM_AUTO_DEPLETE - 1) //bool -#define EEPROM_MMU_FAIL_TOT (EEPROM_FSENS_OQ_MEASS_ENABLED - 2) //uint16_t +#define EEPROM_MMU_FAIL_TOT (EEPROM_FSENS_RUNOUT_ENABLED - 2) //uint16_t #define EEPROM_MMU_FAIL (EEPROM_MMU_FAIL_TOT - 1) //uint8_t #define EEPROM_MMU_LOAD_FAIL_TOT (EEPROM_MMU_FAIL - 2) //uint16_t diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index efa71c5b0..cca96a6e1 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -41,6 +41,7 @@ const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////MSG_FINISHING_MOVEMENTS c=20 const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 +const char MSG_FSENSOR_RUNOUT[] PROGMEM_I1 = ISTR("F. runout"); ////c=13 const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////MSG_FSENSOR_AUTOLOAD c=13 const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////MSG_FSENSOR c=12 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////MSG_HEATING c=20 @@ -108,8 +109,8 @@ const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////MSG_STOP_PRINT const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED."); ////MSG_STOPPED c=20 const char MSG_PINDA_CALIBRATION[] PROGMEM_I1 = ISTR("PINDA cal."); ////MSG_PINDA_CALIBRATION c=13 const char MSG_PINDA_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."); ////MSG_PINDA_CALIBRATION_DONE c=20 r=8 -const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////MSG_UNLOAD_FILAMENT c=18 -const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////MSG_UNLOADING_FILAMENT c=20 +const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////Number 1 to 5 is added behind text e.g. "Unload filament" c=16 +const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 const char MSG_INFO_SCREEN[] PROGMEM_I1 = ISTR("Info screen"); ////MSG_INFO_SCREEN c=18 const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////MSG_WIZARD_DONE c=20 r=3 diff --git a/Firmware/messages.h b/Firmware/messages.h index 68859940e..379fc5095 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -47,6 +47,7 @@ extern const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[]; extern const char MSG_FINISHING_MOVEMENTS[]; extern const char MSG_FOLLOW_CALIBRATION_FLOW[]; extern const char MSG_FOLLOW_Z_CALIBRATION_FLOW[]; +extern const char MSG_FSENSOR_RUNOUT[]; extern const char MSG_FSENSOR_AUTOLOAD[]; extern const char MSG_FSENSOR[]; extern const char MSG_HEATING[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7d7d674d1..4a33acafa 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3600,17 +3600,6 @@ static void crash_mode_switch() else menu_goto(lcd_settings_menu, 9, true, true); } #endif //TMC2130 - - -#ifdef FILAMENT_SENSOR -static void lcd_fsensor_runout_set() { - fsensor.setRunoutEnabled(!fsensor.getRunoutEnabled(), true); -} - -static void lcd_fsensor_autoload_set() { - fsensor.setAutoLoadEnabled(!fsensor.getAutoLoadEnabled(), true); -} -#endif //FILAMENT_SENSOR #if (LANG_MODE != 0) @@ -4176,21 +4165,69 @@ void lcd_settings_linearity_correction_menu(void) #ifdef FILAMENT_SENSOR -void fsensor_reinit() { +static void fsensor_reinit() { fsensor.init(); } -#define SETTINGS_FILAMENT_SENSOR \ -do {\ - if (fsensor.isError()) {\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), fsensor_reinit);\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_NA), fsensor_reinit);\ - }\ - else {\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.getRunoutEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_runout_set);\ - MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), fsensor.getAutoLoadEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_autoload_set);\ - }\ -} while(0) +static void lcd_fsensor_enabled_set(void) { + fsensor.setEnabled(!fsensor.isEnabled()); +} + +static void lcd_fsensor_runout_set() { + fsensor.setRunoutEnabled(!fsensor.getRunoutEnabled(), true); +} + +static void lcd_fsensor_autoload_set() { + fsensor.setAutoLoadEnabled(!fsensor.getAutoLoadEnabled(), true); +} + +static void lcd_fsensor_actionNA_set(void) +{ + Filament_sensor::SensorActionOnError act = fsensor.getActionOnError(); + switch(act) { + case Filament_sensor::SensorActionOnError::_Continue: + act = Filament_sensor::SensorActionOnError::_Pause; + break; + case Filament_sensor::SensorActionOnError::_Pause: + act = Filament_sensor::SensorActionOnError::_Continue; + break; + default: + act = Filament_sensor::SensorActionOnError::_Continue; + } + fsensor.setActionOnError(act, true); +} + +static void lcd_fsensor_settings_menu() { + MENU_BEGIN(); + MENU_ITEM_BACK_P(_T(MSG_BACK)); + + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.isEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_enabled_set); + + if (fsensor.isEnabled()) { + if (fsensor.isError()) { + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), _T(MSG_NA), fsensor_reinit); + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_NA), fsensor_reinit); + } + else { + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), fsensor.getRunoutEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_runout_set); + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), fsensor.getAutoLoadEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_autoload_set); + } + + switch(fsensor.getActionOnError()) { + case Filament_sensor::SensorActionOnError::_Continue: + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set); + break; + case Filament_sensor::SensorActionOnError::_Pause: + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set); + break; + default: + lcd_fsensor_actionNA_set(); + } + } + + MENU_END(); +} + #endif //FILAMENT_SENSOR static void auto_deplete_switch() @@ -4604,36 +4641,6 @@ SETTINGS_VERSION; MENU_END(); } -static void lcd_fsensor_actionNA_set(void) -{ - Filament_sensor::SensorActionOnError act = fsensor.getActionOnError(); - switch(act) { - case Filament_sensor::SensorActionOnError::_Continue: - act = Filament_sensor::SensorActionOnError::_Pause; - break; - case Filament_sensor::SensorActionOnError::_Pause: - act = Filament_sensor::SensorActionOnError::_Continue; - break; - default: - act = Filament_sensor::SensorActionOnError::_Continue; - } - fsensor.setActionOnError(act, true); -} - -#define FSENSOR_ACTION_NA \ -do {\ - switch(fsensor.getActionOnError()) {\ - case Filament_sensor::SensorActionOnError::_Continue:\ - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set);\ - break;\ - case Filament_sensor::SensorActionOnError::_Pause:\ - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set);\ - break;\ - default:\ - lcd_fsensor_actionNA_set();\ - }\ -} while (0) - template static void select_sheet_menu() { @@ -4723,10 +4730,7 @@ static void lcd_settings_menu() } #ifdef FILAMENT_SENSOR - SETTINGS_FILAMENT_SENSOR; -#ifdef IR_SENSOR_ANALOG - FSENSOR_ACTION_NA; -#endif //IR_SENSOR_ANALOG + MENU_ITEM_SUBMENU_P(_T(MSG_FSENSOR), lcd_fsensor_settings_menu); #endif //FILAMENT_SENSOR SETTINGS_AUTO_DEPLETE; @@ -5659,10 +5663,7 @@ static void lcd_tune_menu() #endif #ifdef FILAMENT_SENSOR - SETTINGS_FILAMENT_SENSOR; -#ifdef IR_SENSOR_ANALOG - FSENSOR_ACTION_NA; -#endif //IR_SENSOR_ANALOG + MENU_ITEM_SUBMENU_P(_T(MSG_FSENSOR), lcd_fsensor_settings_menu); #endif //FILAMENT_SENSOR SETTINGS_AUTO_DEPLETE; From f9ff929bbe072f2fe0aecd36fd0e92ef05148342 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 11:54:43 +0100 Subject: [PATCH 024/319] Enable fsensor when preparing for shipping --- Firmware/Marlin_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 81b7f4f9c..1d496b8f8 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -765,6 +765,7 @@ static void factory_reset(char level) farm_disable(); #ifdef FILAMENT_SENSOR + fsensor.setEnabled(true); fsensor.setAutoLoadEnabled(true, true); fsensor.setRunoutEnabled(true, true); #endif //FILAMENT_SENSOR From a256370c39facc774d36509980dbddff00aa71a1 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 12:06:31 +0100 Subject: [PATCH 025/319] Remove original marlin fsensor code --- .../variants/obsolete/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 8 -------- .../variants/obsolete/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 8 -------- 2 files changed, 16 deletions(-) diff --git a/Firmware/variants/obsolete/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/obsolete/1_75mm_MK2-RAMBo10a-E3Dv6full.h index f3f94cf39..e7bee2cea 100644 --- a/Firmware/variants/obsolete/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/obsolete/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -180,14 +180,6 @@ CHANGE FILAMENT SETTINGS ADDITIONAL FEATURES SETTINGS *------------------------------------*/ -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - // temperature runaway #define TEMP_RUNAWAY_BED_HYSTERESIS 5 #define TEMP_RUNAWAY_BED_TIMEOUT 360 diff --git a/Firmware/variants/obsolete/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/obsolete/1_75mm_MK2-RAMBo13a-E3Dv6full.h index a5af91404..788ab7906 100644 --- a/Firmware/variants/obsolete/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/obsolete/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -179,14 +179,6 @@ CHANGE FILAMENT SETTINGS ADDITIONAL FEATURES SETTINGS *------------------------------------*/ -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - // temperature runaway #define TEMP_RUNAWAY_BED_HYSTERESIS 5 #define TEMP_RUNAWAY_BED_TIMEOUT 360 From bbe1b1145e42965d06e39ec2e368c36781f87c43 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 12:40:06 +0100 Subject: [PATCH 026/319] Correct ifdefs for all IR sensor types --- Firmware/Filament_sensor.cpp | 6 ++++++ Firmware/Filament_sensor.h | 15 +++++++++++++++ Firmware/ultralcd.cpp | 16 ++++++++-------- Firmware/ultralcd.h | 2 +- .../variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 2 +- 7 files changed, 33 insertions(+), 12 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index a0b4fa267..201503a58 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -1,3 +1,9 @@ #include "Filament_sensor.h" +#ifdef FILAMENT_SENSOR +#if FILAMENT_SENSOR_TYPE == FSENSOR_IR +IR_sensor fsensor; +#elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG IR_sensor_analog fsensor; +#endif +#endif //FILAMENT_SENSOR \ No newline at end of file diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 3b1d6b9be..f25dc1570 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -16,6 +16,11 @@ #include "fastio.h" #include "adc.h" +#define FSENSOR_IR 1 +#define FSENSOR_IR_ANALOG 2 +#define FSENSOR_PAT9125 3 + +#ifdef FILAMENT_SENSOR class Filament_sensor { public: virtual void init() = 0; @@ -167,6 +172,7 @@ protected: SensorActionOnError sensorActionOnError; }; +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) class IR_sensor: public Filament_sensor { public: void init() { @@ -207,6 +213,7 @@ public: protected: }; +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) class IR_sensor_analog: public IR_sensor { public: void init() { @@ -403,5 +410,13 @@ private: } } }; +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +#if FILAMENT_SENSOR_TYPE == FSENSOR_IR +extern IR_sensor fsensor; +#elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG extern IR_sensor_analog fsensor; +#endif + +#endif //FILAMENT_SENSOR diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4a33acafa..7649054ab 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -222,7 +222,7 @@ static FanCheck lcd_selftest_fan_auto(uint8_t _fan); static bool lcd_selftest_fsensor(); #endif //PAT9125 static bool selftest_irsensor(); -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) static bool lcd_selftest_IRsensor(bool bStandalone=false); static void lcd_detect_IRsensor(); #endif //IR_SENSOR_ANALOG @@ -1415,7 +1415,7 @@ static void lcd_menu_temperatures() menu_back_if_clicked(); } -#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || defined(IR_SENSOR_ANALOG) +#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || (defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG)) #define VOLT_DIV_R1 10000 #define VOLT_DIV_R2 2370 #define VOLT_DIV_FAC ((float)VOLT_DIV_R2 / (VOLT_DIV_R2 + VOLT_DIV_R1)) @@ -1673,7 +1673,7 @@ static void lcd_support_menu() MENU_ITEM_BACK_P(_i("Date:"));////MSG_DATE c=17 MENU_ITEM_BACK_P(PSTR(__DATE__)); -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) MENU_ITEM_BACK_P(STR_SEPARATOR); MENU_ITEM_BACK_P(PSTR("Fil. sensor v.:")); MENU_ITEM_BACK_P(fsensor.getIRVersionText()); @@ -4692,7 +4692,7 @@ void lcd_hw_setup_menu(void) // can not be "static" SETTINGS_NOZZLE; MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu); ////MSG_CHECKS c=18 -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) //! Fsensor Detection isn't ready for mmu yet it is temporarily disabled. //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu if(!mmu_enabled) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor); @@ -6118,7 +6118,7 @@ void lcd_belttest() } #endif //TMC2130 -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) // called also from marlin_main.cpp void printf_IRSensorAnalogBoardChange(){ printf_P(PSTR("Filament sensor board change detected: revision%S\n"), fsensor.getIRVersionText()); @@ -6190,7 +6190,7 @@ bool lcd_selftest() uint8_t _progress = 0; bool _result = true; bool _swapped_fan = false; -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) //! Check if IR sensor is in unknown state, if so run Fsensor Detection //! As the Fsensor Detection isn't yet ready for the mmu2s we set temporarily the IR sensor 0.3 or older for mmu2s //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu @@ -6202,7 +6202,7 @@ bool lcd_selftest() fsensor.setSensorRevision(IR_sensor_analog::SensorRevision::_Old, true); } } -#endif //IR_SENSOR_ANALOG +#endif lcd_wait_for_cool_down(); lcd_clear(); lcd_puts_at_P(0, 0, _i("Self test start"));////MSG_SELFTEST_START c=20 @@ -6412,7 +6412,7 @@ bool lcd_selftest() #if 0 // Intentionally disabled - that's why we moved the detection to runtime by just checking the two voltages. // The idea is not to force the user to remove and insert the filament on an assembled printer. -//def IR_SENSOR_ANALOG +//defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) _progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filament sensor _result = lcd_selftest_IRsensor(); if (_result) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index b3602855f..8e6f6e485 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -142,7 +142,7 @@ extern bool FarmOrUserECool(); #define SILENT_MODE_OFF SILENT_MODE_POWER #endif -#ifdef IR_SENSOR_ANALOG +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) void printf_IRSensorAnalogBoardChange(); #endif //IR_SENSOR_ANALOG diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index c5c48a822..0255c4fcc 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -125,7 +125,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define IR_SENSOR +#define FILAMENT_SENSOR_TYPE FSENSOR_IR #define DEBUG_DCODE2 #define DEBUG_DCODE3 diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index df0b907f0..fef1c768f 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -126,7 +126,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define IR_SENSOR +#define FILAMENT_SENSOR_TYPE FSENSOR_IR #define DEBUG_DCODE2 #define DEBUG_DCODE3 diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index 94c1f430b..c910e0835 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -152,7 +152,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define IR_SENSOR +#define FILAMENT_SENSOR_TYPE FSENSOR_IR_ANALOG // Backlash - //#define BACKLASH_X From ea23e6d92405cce16e2d1d8845bb11e13a5fa1bf Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 24 Feb 2022 13:08:15 +0100 Subject: [PATCH 027/319] Fix MK2 build? --- Firmware/mmu.cpp | 6 +++- Firmware/ultralcd.cpp | 31 ++++++++++++++----- .../variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 2 +- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 0e78edf76..892563282 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -376,7 +376,11 @@ void mmu_loop(void) mmu_last_finda_response.start(); FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); //printf_P(PSTR("Eact: %d\n"), int(e_active())); - if (!mmu_finda && CHECK_FSENSOR && fsensor.isReady()) { + if (!mmu_finda +#ifdef FILAMENT_SENSOR ///temporary until refactoring + && CHECK_FSENSOR && fsensor.isReady() +#endif //FILAMENT_SENSOR + ) { stop_and_save_print_to_ram(0, 0); restore_print_from_ram_and_continue(0); if (mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't deplete unknown extruder. diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7649054ab..b663f536d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1819,8 +1819,11 @@ switch(eFilamentAction) case FilamentAction::Lay1Cal: break; } - if(lcd_clicked() || (((eFilamentAction == FilamentAction::Load) || (eFilamentAction == FilamentAction::AutoLoad)) && fsensor.getFilamentLoadEvent())) - { + if(lcd_clicked() +#ifdef FILAMENT_SENSOR + || (((eFilamentAction == FilamentAction::Load) || (eFilamentAction == FilamentAction::AutoLoad)) && fsensor.getFilamentLoadEvent()) +#endif //FILAMENT_SENSOR + ) { nLevel=2; if(!bFilamentPreheatState) { @@ -2143,8 +2146,11 @@ void lcd_wait_interact() { lcd_clear(); lcd_puts_at_P(0, 1, _i("Insert filament"));////MSG_INSERT_FILAMENT c=20 - if (!fsensor.getAutoLoadEnabled()) { - lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2 +#ifdef FILAMENT_SENSOR + if (!fsensor.getAutoLoadEnabled()) +#endif //FILAMENT_SENSOR + { + lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2 } } @@ -3438,14 +3444,14 @@ static void lcd_show_sensors_state() lcd_set_cursor(LCD_WIDTH - 3, 0); lcd_print_state(finda_state); } - +#ifdef FILAMENT_SENSOR if (ir_sensor_detected) { idler_state = fsensor.getFilamentPresent(); lcd_puts_at_P(0, 1, _T(MSG_FSENSOR)); lcd_set_cursor(LCD_WIDTH - 3, 1); lcd_print_state(idler_state); } - +#endif //FILAMENT_SENSOR #ifdef PAT9125 // Display X and Y difference from Filament sensor @@ -3790,6 +3796,7 @@ void lcd_v2_calibration() return; } } +#ifdef FILAMENT_SENSOR else if (!eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)) { bool loaded = false; @@ -3820,6 +3827,7 @@ void lcd_v2_calibration() return; } } +#endif //FILAMENT_SENSOR eFilamentAction = FilamentAction::Lay1Cal; menu_goto(lcd_generic_preheat_menu, 0, true, true); @@ -3900,7 +3908,11 @@ static void lcd_wizard_load() bool lcd_autoDepleteEnabled() { - return (lcd_autoDeplete && fsensor.isReady()); + return (lcd_autoDeplete +#ifdef FILAMENT_SENSOR ///should be removed during mmu2 refactoring + && fsensor.isReady() +#endif + ); } static void wizard_lay1cal_message(bool cold) @@ -4240,10 +4252,13 @@ static void settingsAutoDeplete() { if (mmu_enabled) { +#ifdef FILAMENT_SENSOR if (fsensor.isError()) { MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_NA), fsensor_reinit); } - else { + else +#endif //FILAMENT_SENSOR + { MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), lcd_autoDeplete ? _T(MSG_ON) : _T(MSG_OFF), auto_deplete_switch); } } diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index cd722e465..46e94d60a 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -125,7 +125,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define PAT9125 +#define FILAMENT_SENSOR_TYPE FSENSOR_PAT9125 #define DEBUG_DCODE2 #define DEBUG_DCODE3 diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 537fa023a..989c583a8 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -126,7 +126,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define PAT9125 +#define FILAMENT_SENSOR_TYPE FSENSOR_PAT9125 #define DEBUG_DCODE2 #define DEBUG_DCODE3 diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index f1ebef49f..705a503e0 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -150,7 +150,7 @@ // Filament sensor #define FILAMENT_SENSOR -#define PAT9125 +#define FILAMENT_SENSOR_TYPE FSENSOR_PAT9125 // Backlash - //#define BACKLASH_X From 52b44ad17805c614bd9f1c3de37d10e1f55dc980 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 07:50:48 +0100 Subject: [PATCH 028/319] fsensor add deinit --- Firmware/Filament_sensor.cpp | 2 +- Firmware/Filament_sensor.h | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 201503a58..b7a1fb9d3 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -6,4 +6,4 @@ IR_sensor fsensor; #elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG IR_sensor_analog fsensor; #endif -#endif //FILAMENT_SENSOR \ No newline at end of file +#endif //FILAMENT_SENSOR diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index f25dc1570..153b35b8c 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -24,6 +24,7 @@ class Filament_sensor { public: virtual void init() = 0; + virtual void deinit() = 0; virtual bool update() = 0; virtual bool getFilamentPresent() = 0; @@ -41,8 +42,14 @@ public: }; void setEnabled(bool enabled) { - state = enabled ? State::initializing : State::disabled; eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, enabled); + if (enabled) { + init(); + } + else { + deinit(); + } + state = enabled ? State::initializing : State::disabled; } void setAutoLoadEnabled(bool state, bool updateEEPROM = false) { @@ -156,9 +163,8 @@ protected: } void triggerError() { + // deinit(); //not sure if I should call this here. state = State::error; - autoLoadEnabled = false; - runoutEnabled = false; /// some message, idk ;// @@ -176,10 +182,17 @@ protected: class IR_sensor: public Filament_sensor { public: void init() { + puts_P(PSTR("fsensor::init()")); SET_INPUT(IR_SENSOR_PIN); //input mode WRITE(IR_SENSOR_PIN, 1); //pullup - settings_init(); - state = State::initializing; + settings_init(); //also sets the state to State::initializing + } + + void deinit() { + puts_P(PSTR("fsensor::deinit()")); + SET_INPUT(IR_SENSOR_PIN); //input mode + WRITE(IR_SENSOR_PIN, 0); //no pullup + state = State::disabled; } bool update() { @@ -221,6 +234,10 @@ public: settings_init(); } + void deinit() { + IR_sensor::deinit(); + } + bool update() { bool event = IR_sensor::update(); if (state == State::ready) { From fba6d44f333e3b13ffe928c5d7b10743a075ab27 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 08:02:40 +0100 Subject: [PATCH 029/319] fsensor event blanking --- Firmware/Filament_sensor.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 153b35b8c..5f6f360f7 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -15,6 +15,7 @@ #include "pins.h" #include "fastio.h" #include "adc.h" +#include "Timer.h" #define FSENSOR_IR 1 #define FSENSOR_IR_ANALOG 2 @@ -49,7 +50,6 @@ public: else { deinit(); } - state = enabled ? State::initializing : State::disabled; } void setAutoLoadEnabled(bool state, bool updateEEPROM = false) { @@ -119,10 +119,14 @@ protected: bool checkFilamentEvents() { if (state != State::ready) return false; + if (eventBlankingTimer.running() && !eventBlankingTimer.expired(100)) {// event blanking for 100ms + return false; + } bool newFilamentPresent = getFilamentPresent(); if (oldFilamentPresent != newFilamentPresent) { oldFilamentPresent = newFilamentPresent; + eventBlankingTimer.start(); if (newFilamentPresent) { //filament insertion puts_P(PSTR("filament inserted")); triggerFilamentInserted(); @@ -175,6 +179,7 @@ protected: bool runoutEnabled; bool oldFilamentPresent; //for creating filament presence switching events. bool postponedLoadEvent; //this event lasts exactly one update cycle. It is long enough to be able to do polling for load event. + ShortTimer eventBlankingTimer; SensorActionOnError sensorActionOnError; }; From 90b78616b7a8da92ee5b0600e8ac682ac5267d49 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 08:18:10 +0100 Subject: [PATCH 030/319] Fix reinit on error --- Firmware/Filament_sensor.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 5f6f360f7..8718725b7 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -187,6 +187,9 @@ protected: class IR_sensor: public Filament_sensor { public: void init() { + if (state == State::error) { + deinit(); //deinit first if there was an error. + } puts_P(PSTR("fsensor::init()")); SET_INPUT(IR_SENSOR_PIN); //input mode WRITE(IR_SENSOR_PIN, 1); //pullup From c46b97ec2dfba4845c78bfb98075744e23de7dc7 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 08:20:24 +0100 Subject: [PATCH 031/319] Add base code for PAT9125_sensor --- Firmware/Filament_sensor.cpp | 2 ++ Firmware/Filament_sensor.h | 53 ++++++++++++++++++++++++++++++++++++ Firmware/pat9125.cpp | 4 +++ 3 files changed, 59 insertions(+) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index b7a1fb9d3..ec8045eb0 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -5,5 +5,7 @@ IR_sensor fsensor; #elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG IR_sensor_analog fsensor; +#elif FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 +PAT9125_sensor fsensor; #endif #endif //FILAMENT_SENSOR diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 8718725b7..7eba962e3 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -16,6 +16,7 @@ #include "fastio.h" #include "adc.h" #include "Timer.h" +#include "pat9125.h" #define FSENSOR_IR 1 #define FSENSOR_IR_ANALOG 2 @@ -438,10 +439,62 @@ private: #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +class PAT9125_sensor: public Filament_sensor { +public: + void init() { + if (state == State::error) { + deinit(); //deinit first if there was an error. + } + puts_P(PSTR("fsensor::init()")); + ;// + settings_init(); //also sets the state to State::initializing + } + + void deinit() { + puts_P(PSTR("fsensor::deinit()")); + ;// + state = State::disabled; + } + + bool update() { + switch (state) { + case State::initializing: + // state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. + oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. + // fallthru + case State::ready: { + postponedLoadEvent = false; + bool event = checkFilamentEvents(); + + ;// + + return event; + } break; + case State::disabled: + case State::error: + default: + return false; + } + } + + bool getFilamentPresent() { + return false;/// + } + + void settings_init() { + Filament_sensor::settings_init(); + } +protected: +}; +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + #if FILAMENT_SENSOR_TYPE == FSENSOR_IR extern IR_sensor fsensor; #elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG extern IR_sensor_analog fsensor; +#elif FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 +extern PAT9125_sensor fsensor; #endif #endif //FILAMENT_SENSOR diff --git a/Firmware/pat9125.cpp b/Firmware/pat9125.cpp index 819d70710..18cf7c1ae 100644 --- a/Firmware/pat9125.cpp +++ b/Firmware/pat9125.cpp @@ -4,7 +4,9 @@ #include #include "config.h" #include +#include "Configuration_prusa.h" +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) //PAT9125 registers #define PAT9125_PID1 0x00 @@ -305,3 +307,5 @@ static uint8_t pat9125_wr_seq(const uint8_t* seq) } return 1; } + +#endif From bdfd3305cb804607c002a56c150058168cadf78b Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 25 Feb 2022 18:18:18 +0100 Subject: [PATCH 032/319] Cleanup pat9125.h --- Firmware/pat9125.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Firmware/pat9125.h b/Firmware/pat9125.h index 18518df62..1a08dc76f 100755 --- a/Firmware/pat9125.h +++ b/Firmware/pat9125.h @@ -1,12 +1,7 @@ -//pat9125.h -#ifndef PAT9125_H -#define PAT9125_H +#pragma once #include -extern uint8_t pat9125_PID1; -extern uint8_t pat9125_PID2; - extern int16_t pat9125_x; extern int16_t pat9125_y; extern uint8_t pat9125_b; @@ -17,5 +12,3 @@ extern uint8_t pat9125_init(void); extern uint8_t pat9125_update(void); // update all sensor data extern uint8_t pat9125_update_y(void); // update _y only extern uint8_t pat9125_update_bs(void); // update _b/_s only - -#endif //PAT9125_H From c5c4c2112473c523e6c9cb29e30d75b16dc3f4ad Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 28 Feb 2022 14:08:30 +0100 Subject: [PATCH 033/319] Update Sensor info menu documentation --- Firmware/ultralcd.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b663f536d..63c960f30 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3454,26 +3454,22 @@ static void lcd_show_sensors_state() #endif //FILAMENT_SENSOR #ifdef PAT9125 - // Display X and Y difference from Filament sensor + // Display X and Y difference from Filament sensor // Display Light intensity from Filament sensor // Frame_Avg register represents the average brightness of all pixels within a frame (324 pixels). This // value ranges from 0(darkest) to 255(brightest). // Display LASER shutter time from Filament sensor // Shutter register is an index of LASER shutter time. It is automatically controlled by the chip's internal - // auto-exposure algorithm. When the chip is tracking on a good reflection surface, the Shutter is small. - // When the chip is tracking on a poor reflection surface, the Shutter is large. Value ranges from 0 to 46. - if (mmu_enabled == false) - { - // pat9125_update is already called while printing: only update manually when idling - if (!moves_planned() && !IS_SD_PRINTING && !usb_timer.running() && (lcd_commands_type != LcdCommands::Layer1Cal)) - pat9125_update(); - - lcd_set_cursor(0, 2); - lcd_printf_P(_N(" Int: %3d Xd:%6d\n" - "Shut: %3d Yd:%6d"), - pat9125_b, pat9125_x, - pat9125_s, pat9125_y); - } + // auto-exposure algorithm. When the chip is tracking on a reflective surface, the Shutter is small. + // When the chip is tracking on a surface that absorbs IR (or doesn't reflect it), the Shutter is large. + // The maximum value of the shutter is 17. The value of 16 seems to be reported as 17 even though the + // Brightness value changes correctly as if the shutter changed to 16 (probably some bug with the sensor). + // The shutter algorithm tries to keep the B value in the 70-110 range. + lcd_set_cursor(0, 2); + lcd_printf_P(_N("B: %3d Xd:%6d\n" + "S: %3d Yd:%6d"), + pat9125_b, pat9125_x, + pat9125_s, pat9125_y); #endif //PAT9125 } From 65b2881b064fe66c9dba99b8a646d767989977aa Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 28 Feb 2022 17:47:09 +0100 Subject: [PATCH 034/319] PAT9125 first prototype --- Firmware/Filament_sensor.h | 59 ++++++++++++++++++++++++++++++++++---- Firmware/ultralcd.cpp | 14 ++++----- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 7eba962e3..7342fa7b4 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -168,7 +168,6 @@ protected: } void triggerError() { - // deinit(); //not sure if I should call this here. state = State::error; /// some message, idk @@ -223,6 +222,7 @@ public: default: return false; } + return false; } bool getFilamentPresent() { @@ -447,23 +447,39 @@ public: deinit(); //deinit first if there was an error. } puts_P(PSTR("fsensor::init()")); - ;// + settings_init(); //also sets the state to State::initializing + + if (!pat9125_init()) { + deinit(); + triggerError(); + ;// + } +#ifdef IR_SENSOR_PIN + else if (!READ(IR_SENSOR_PIN)) { + ;// MK3 fw on MK3S printer + } +#endif //IR_SENSOR_PIN } void deinit() { puts_P(PSTR("fsensor::deinit()")); ;// state = State::disabled; + filter = 0; } bool update() { switch (state) { case State::initializing: - // state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. + if (!updatePAT9125()) { + break; // still not stable. Stay in the initialization state. + } oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. - // fallthru + state = State::ready; + break; case State::ready: { + updatePAT9125(); postponedLoadEvent = false; bool event = checkFilamentEvents(); @@ -476,16 +492,47 @@ public: default: return false; } + return false; } bool getFilamentPresent() { - return false;/// + return filterFilPresent; } void settings_init() { Filament_sensor::settings_init(); + jamDetection = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_JAM_DETECTION); + } +private: + static constexpr uint16_t pollingPeriod = 10; //[ms] + static constexpr uint8_t filterCnt = 5; //how many checks need to be done in order to determine the filament presence precisely. + ShortTimer pollingTimer; + uint8_t filter; + uint8_t filterFilPresent; + bool jamDetection; + + bool updatePAT9125() { + + if (!pollingTimer.running() || pollingTimer.expired(pollingPeriod)) { + pollingTimer.start(); + if (!pat9125_update()) { + init(); //try to reinit. + } + + bool present = (pat9125_s < 17) || (pat9125_s >= 17 && pat9125_b >= 50); + if (present != filterFilPresent) { + filter++; + } + else if (filter) { + filter--; + } + if (filter >= filterCnt) { + filter = 0; + filterFilPresent = present; + } + } + return (filter == 0); //return stability } -protected: }; #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 63c960f30..8aa8056cf 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3445,15 +3445,13 @@ static void lcd_show_sensors_state() lcd_print_state(finda_state); } #ifdef FILAMENT_SENSOR - if (ir_sensor_detected) { - idler_state = fsensor.getFilamentPresent(); - lcd_puts_at_P(0, 1, _T(MSG_FSENSOR)); - lcd_set_cursor(LCD_WIDTH - 3, 1); - lcd_print_state(idler_state); - } + idler_state = fsensor.getFilamentPresent(); + lcd_puts_at_P(0, 1, _T(MSG_FSENSOR)); + lcd_set_cursor(LCD_WIDTH - 3, 1); + lcd_print_state(idler_state); #endif //FILAMENT_SENSOR -#ifdef PAT9125 +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) // Display X and Y difference from Filament sensor // Display Light intensity from Filament sensor // Frame_Avg register represents the average brightness of all pixels within a frame (324 pixels). This @@ -3470,7 +3468,7 @@ static void lcd_show_sensors_state() "S: %3d Yd:%6d"), pat9125_b, pat9125_x, pat9125_s, pat9125_y); -#endif //PAT9125 +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } void lcd_menu_show_sensors_state() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") From 340bc871103a4c9037af1d0c7325b2d57191f860 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 28 Feb 2022 19:35:28 +0100 Subject: [PATCH 035/319] Checkpoint: jam detection --- Firmware/Dcodes.cpp | 7 - Firmware/Filament_sensor.h | 119 ++- Firmware/Marlin_main.cpp | 28 +- Firmware/eeprom.h | 5 +- Firmware/fsensor.cpp | 692 ------------------ Firmware/fsensor.h | 33 - Firmware/messages.cpp | 1 + Firmware/messages.h | 1 + Firmware/mmu.cpp | 1 - Firmware/stepper.cpp | 56 +- Firmware/stepper.h | 5 - Firmware/ultralcd.cpp | 34 +- .../variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 2 +- .../1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 2 +- .../1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 2 +- 18 files changed, 169 insertions(+), 825 deletions(-) delete mode 100755 Firmware/fsensor.cpp delete mode 100755 Firmware/fsensor.h diff --git a/Firmware/Dcodes.cpp b/Firmware/Dcodes.cpp index 9302f4ac9..450a61b5c 100644 --- a/Firmware/Dcodes.cpp +++ b/Firmware/Dcodes.cpp @@ -912,13 +912,6 @@ void dcode_9125() pat9125_y = (int)code_value(); LOG("pat9125_y=%d\n", pat9125_y); } -#ifdef DEBUG_FSENSOR_LOG - if (code_seen('L')) - { - fsensor_log = (int)code_value(); - LOG("fsensor_log=%d\n", fsensor_log); - } -#endif //DEBUG_FSENSOR_LOG } #endif //PAT9125 diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 7342fa7b4..1dcaab49e 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -144,29 +144,38 @@ protected: void triggerFilamentInserted() { if (autoLoadEnabled && (eFilamentAction == FilamentAction::None) && !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { - eFilamentAction = FilamentAction::AutoLoad; - if(target_temperature[0] >= EXTRUDE_MINTEMP){ - bFilamentPreheatState = true; - menu_submenu(mFilamentItemForce); - } else { - menu_submenu(lcd_generic_preheat_menu); - lcd_timeoutToStatus.start(); - } + filAutoLoad(); } } void triggerFilamentRemoved() { if (runoutEnabled && (eFilamentAction == FilamentAction::None) && !saved_printing && (moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { - runoutEnabled = false; - autoLoadEnabled = false; - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); - eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); - eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); - enquecommand_front_P((PSTR("M600"))); + filRunout(); } } + void filAutoLoad() { + eFilamentAction = FilamentAction::AutoLoad; + if(target_temperature[0] >= EXTRUDE_MINTEMP){ + bFilamentPreheatState = true; + menu_submenu(mFilamentItemForce); + } + else { + menu_submenu(lcd_generic_preheat_menu); + lcd_timeoutToStatus.start(); + } + } + + void filRunout() { + runoutEnabled = false; + autoLoadEnabled = false; + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); + } + void triggerError() { state = State::error; @@ -450,6 +459,8 @@ public: settings_init(); //also sets the state to State::initializing + calcChunkSteps(cs.axis_steps_per_unit[E_AXIS]); //for jam detection + if (!pat9125_init()) { deinit(); triggerError(); @@ -476,6 +487,7 @@ public: break; // still not stable. Stay in the initialization state. } oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. + oldPos = pat9125_y; state = State::ready; break; case State::ready: { @@ -499,9 +511,28 @@ public: return filterFilPresent; } + void setJamDetectionEnabled(bool state, bool updateEEPROM = false) { + jamDetection = state; + oldPos = pat9125_y; + resetStepCount(); + jamErrCnt = 0; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_JAM_DETECTION, state); + } + } + + bool getJamDetectionEnabled() { + return jamDetection; + } + + void stStep(bool rev) { //from stepper isr + stepCount += rev ? -1 : 1; + } + void settings_init() { + puts_P(PSTR("settings_init")); Filament_sensor::settings_init(); - jamDetection = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_JAM_DETECTION); + setJamDetectionEnabled(eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_JAM_DETECTION)); } private: static constexpr uint16_t pollingPeriod = 10; //[ms] @@ -509,9 +540,65 @@ private: ShortTimer pollingTimer; uint8_t filter; uint8_t filterFilPresent; + bool jamDetection; + int16_t oldPos; + volatile int16_t stepCount; + int16_t chunkSteps; + uint8_t jamErrCnt; + + void calcChunkSteps(float u) { + chunkSteps = (int16_t)(1.25 * u); //[mm] + } + + int16_t getStepCount() { + int16_t st_cnt; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + st_cnt = stepCount; + } + return st_cnt; + } + + void resetStepCount() { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + stepCount = 0; + } + } + + void filJam() { + runoutEnabled = false; + autoLoadEnabled = false; + jamDetection = false; + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); + } bool updatePAT9125() { + if (jamDetection) { + int16_t _stepCount = getStepCount(); + if (abs(_stepCount) >= chunkSteps) { //end of chunk. Check distance + resetStepCount(); + if (!pat9125_update()) { //get up to date data. reinit on error. + init(); //try to reinit. + } + bool fsDir = (pat9125_y - oldPos) > 0; + bool stDir = _stepCount > 0; + if (fsDir != stDir) { + jamErrCnt++; + } + else if (jamErrCnt) { + jamErrCnt--; + } + oldPos = pat9125_y; + } + if (jamErrCnt > 10) { + jamErrCnt = 0; + filJam(); + } + } if (!pollingTimer.running() || pollingTimer.expired(pollingPeriod)) { pollingTimer.start(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1d496b8f8..e788a8160 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -95,13 +95,7 @@ #include "spi.h" -#ifdef FILAMENT_SENSOR #include "Filament_sensor.h" -#include "fsensor.h" -#ifdef IR_SENSOR -#include "pat9125.h" // for pat9125_probe -#endif -#endif //FILAMENT_SENSOR #ifdef TMC2130 #include "tmc2130.h" @@ -768,6 +762,9 @@ static void factory_reset(char level) fsensor.setEnabled(true); fsensor.setAutoLoadEnabled(true, true); fsensor.setRunoutEnabled(true, true); +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(true, true); +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif //FILAMENT_SENSOR break; @@ -3490,7 +3487,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float st_synchronize(); float lastpos[4]; - prusa_statistics(22); + prusa_statistics(22); //First backup current position and settings int feedmultiplyBckp = feedmultiply; @@ -3530,6 +3527,14 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float //finish moves st_synchronize(); +#ifdef FILAMENT_SENSOR + fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +#endif + if (!mmu_enabled) { KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -3616,6 +3621,9 @@ void gcode_M701() #ifdef FILAMENT_SENSOR fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif prusa_statistics(22); @@ -6512,7 +6520,7 @@ Sigma_Exit: } cs.axis_steps_per_unit[i] = value; #if defined(FILAMENT_SENSOR) && defined(PAT9125) - fsensor_set_axis_steps_per_unit(value); + fsensor.init(); #endif } else { @@ -8448,8 +8456,8 @@ Sigma_Exit: position[i] /= fac; } #if defined(FILAMENT_SENSOR) && defined(PAT9125) - if (i == E_AXIS) - fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[i]); + if (i == E_AXIS) + fsensor.init(); #endif } } diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index 23c42e1bc..44b41bfa5 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -333,6 +333,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP | ^ | ^ | ^ | 03h 3 | ^ | bad_isr | ^ | ^ | ^ | ^ | ^ | 04h 4 | ^ | bad_pullup_temp_isr | ^ | ^ | ^ | ^ | ^ | 05h 5 | ^ | bad_pullup_step_isr | ^ | ^ +| 0x0D03 3321 | uint8_t | EEPROM_FW_CRASH_FLAG | 01h 1 | ff/00 | Last FW crash reason (dump_crash_reason) | D21/D22 | D3 Ax0d03 C1 +| 0x0D03 3320 | uint8_t | EEPROM_FSENSOR_JAM_DETECTION | 01h 1 | ff/01 | fsensor pat9125 jam detection feature | LCD menu | D3 Ax0d02 C1 | Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: @@ -556,8 +558,9 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE); #define EEPROM_TEMP_MODEL_W (EEPROM_TEMP_MODEL_Ta_corr-4) // float #define EEPROM_TEMP_MODEL_E (EEPROM_TEMP_MODEL_W-4) // float +#define EEPROM_FSENSOR_JAM_DETECTION (EEPROM_TEMP_MODEL_E-1) // uint8_t //This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items. -#define EEPROM_LAST_ITEM EEPROM_TEMP_MODEL_E +#define EEPROM_LAST_ITEM EEPROM_FSENSOR_JAM_DETECTION // !!!!! // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!! // !!!!! diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp deleted file mode 100755 index 3c92f9322..000000000 --- a/Firmware/fsensor.cpp +++ /dev/null @@ -1,692 +0,0 @@ -//! @file - -#include "Marlin.h" - -#include "fsensor.h" -#include -#include "pat9125.h" -#include "stepper.h" -#include "cmdqueue.h" -#include "ultralcd.h" -#include "mmu.h" -#include "cardreader.h" - -#include "adc.h" -#include "temperature.h" -#include "config.h" - -#include "Filament_sensor.h" //temporary - -//! @name Basic parameters -//! @{ -#define FSENSOR_CHUNK_LEN 1.25 //!< filament sensor chunk length (mm) -#define FSENSOR_ERR_MAX 4 //!< filament sensor maximum error/chunk count for runout detection - -#define FSENSOR_SOFTERR_CMAX 3 //!< number of contiguous soft failures before a triggering a runout -#define FSENSOR_SOFTERR_DELTA 30000 //!< maximum interval (ms) to consider soft failures contiguous -//! @} - -//! @name Optical quality measurement parameters -//! @{ -#define FSENSOR_OQ_MAX_ES 2 //!< maximum sum of error blocks during filament recheck -#define FSENSOR_OQ_MIN_YD 2 //!< minimum yd sum during filament check (counts per inch) -#define FSENSOR_OQ_MIN_BR 80 //!< minimum brightness value -#define FSENSOR_OQ_MAX_SH 10 //!< maximum shutter value -//! @} - -const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n"; - -//! enabled = initialized and sampled every chunk event -bool fsensor_enabled = true; -//! runout watching is done in fsensor_update (called from main loop) -bool fsensor_watch_runout = true; -//! not responding - is set if any communication error occurred during initialization or readout -bool fsensor_not_responding = false; - -#ifdef PAT9125 -//! optical checking "chunk lenght" (already in steps) -int16_t fsensor_chunk_len = 0; -//! number of errors, updated in ISR -uint8_t fsensor_err_cnt = 0; -//! variable for accumulating step count (updated callbacks from stepper and ISR) -int16_t fsensor_st_cnt = 0; -//! count of total sensor "soft" failures (filament status checks) -uint8_t fsensor_softfail = 0; -//! timestamp of last soft failure -unsigned long fsensor_softfail_last = 0; -//! count of soft failures within the configured time -uint8_t fsensor_softfail_ccnt = 0; -#endif - -#ifdef DEBUG_FSENSOR_LOG -//! log flag: 0=log disabled, 1=log enabled -uint8_t fsensor_log = 1; -#endif //DEBUG_FSENSOR_LOG - - -//! @name filament autoload variables -//! @{ - -//! autoload feature enabled -bool fsensor_autoload_enabled = true; - - -//! @name filament optical quality measurement variables -//! @{ - -//! Measurement enable/disable flag -bool fsensor_oq_meassure = false; -//! skip-chunk counter, for accurate measurement is necessary to skip first chunk... -uint8_t fsensor_oq_skipchunk; -//! number of samples from start of measurement -uint8_t fsensor_oq_samples; -//! sum of steps in positive direction movements -uint16_t fsensor_oq_st_sum; -//! sum of deltas in positive direction movements -uint16_t fsensor_oq_yd_sum; -//! sum of errors during measurement -uint16_t fsensor_oq_er_sum; -//! max error counter value during measurement -uint8_t fsensor_oq_er_max; -//! minimum delta value -int16_t fsensor_oq_yd_min; -//! maximum delta value -int16_t fsensor_oq_yd_max; -//! sum of shutter value -uint16_t fsensor_oq_sh_sum; -//! @} - -#ifdef IR_SENSOR_ANALOG -ClFsensorActionNA oFsensorActionNA; -bool bIRsensorStateFlag=false; -ShortTimer tIRsensorCheckTimer; -#endif //IR_SENSOR_ANALOG - -#ifdef PAT9125 -// Reset all internal counters to zero, including stepper callbacks -void fsensor_reset_err_cnt() -{ - fsensor_err_cnt = 0; - pat9125_y = 0; - st_reset_fsensor(); -} - -void fsensor_set_axis_steps_per_unit(float u) -{ - fsensor_chunk_len = (int16_t)(FSENSOR_CHUNK_LEN * u); -} -#endif - - -// fsensor_checkpoint_print cuts the current print job at the current position, -// allowing new instructions to be inserted in the middle -void fsensor_checkpoint_print(void) -{ - puts_P(PSTR("fsensor_checkpoint_print")); - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); -} - -#ifdef IR_SENSOR_ANALOG -const char* FsensorIRVersionText() -{ - switch(oFsensorPCB) - { - case ClFsensorPCB::_Old: - return _T(MSG_IR_03_OR_OLDER); - case ClFsensorPCB::_Rev04: - return _T(MSG_IR_04_OR_NEWER); - default: - return _T(MSG_IR_UNKNOWN); - } -} -#endif //IR_SENSOR_ANALOG - -void fsensor_init(void) -{ -#ifdef PAT9125 - uint8_t pat9125 = pat9125_init(); - printf_P(PSTR("PAT9125_init:%u\n"), pat9125); -#endif //PAT9125 - uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); - fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); - fsensor_not_responding = false; -#ifdef PAT9125 - uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED); - fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false; - fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]); - - if (!pat9125){ - fsensor_enabled = 0; //disable sensor - fsensor_not_responding = true; - } -#endif //PAT9125 -#ifdef IR_SENSOR_ANALOG - bIRsensorStateFlag=false; - oFsensorPCB = (ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); - oFsensorActionNA = (ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); - - // If the fsensor is not responding even at the start of the printer, - // set this flag accordingly to show N/A in Settings->Filament sensor. - // This is even valid for both fsensor board revisions (0.3 or older and 0.4). - // Must be done after reading what type of fsensor board we have - fsensor_not_responding = ! fsensor_IR_check(); -#endif //IR_SENSOR_ANALOG - if (fsensor_enabled){ - fsensor_enable(false); // (in this case) EEPROM update is not necessary - } else { - fsensor_disable(false); // (in this case) EEPROM update is not necessary - } - printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED"))); -#ifdef IR_SENSOR_ANALOG - printf_P(PSTR(" (sensor board revision:%S)\n"), FsensorIRVersionText()); -#else //IR_SENSOR_ANALOG - MYSERIAL.println(); -#endif //IR_SENSOR_ANALOG - if (check_for_ir_sensor()){ - ir_sensor_detected = true; - } -} - -bool fsensor_enable(bool bUpdateEEPROM) -{ -#ifdef PAT9125 - (void)bUpdateEEPROM; // silence unused warning in this variant - - if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working - uint8_t pat9125 = pat9125_init(); - printf_P(PSTR("PAT9125_init:%u\n"), pat9125); - if (pat9125) - fsensor_not_responding = false; - else - fsensor_not_responding = true; - fsensor_enabled = pat9125 ? true : false; - fsensor_watch_runout = true; - fsensor_oq_meassure = false; - fsensor_reset_err_cnt(); - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, fsensor_enabled ? 0x01 : 0x00); - FSensorStateMenu = fsensor_enabled ? 1 : 0; - } - else //filament sensor is FINDA, always enable - { - fsensor_enabled = true; - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x01); - FSensorStateMenu = 1; - } -#else // PAT9125 -#ifdef IR_SENSOR_ANALOG - if(!fsensor.checkVoltage(fsensor.getVoltRaw())) - { - bUpdateEEPROM=true; - fsensor_enabled=false; - fsensor_not_responding=true; - FSensorStateMenu=0; - } - else { -#endif //IR_SENSOR_ANALOG - fsensor_enabled=true; - fsensor_not_responding=false; - FSensorStateMenu=1; -#ifdef IR_SENSOR_ANALOG - } -#endif //IR_SENSOR_ANALOG - if(bUpdateEEPROM) - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, FSensorStateMenu); -#endif //PAT9125 - return fsensor_enabled; -} - -void fsensor_disable(bool bUpdateEEPROM) -{ - fsensor_enabled = false; - FSensorStateMenu = 0; - if(bUpdateEEPROM) - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); -} - -void fsensor_autoload_set(bool State) -{ -#ifdef PAT9125 - if (!State) fsensor_autoload_check_stop(); -#endif //PAT9125 - fsensor_autoload_enabled = State; - eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, fsensor_autoload_enabled); -} - -void pciSetup(byte pin) -{ -// !!! "digitalPinTo?????bit()" does not provide the correct results for some MCU pins - *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin - PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt - PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group -} - -#ifdef PAT9125 -void fsensor_autoload_check_start(void) -{ -// puts_P(_N("fsensor_autoload_check_start\n")); - if (!fsensor_enabled) return; - if (!fsensor_autoload_enabled) return; - if (fsensor_watch_autoload) return; - if (!pat9125_update()) //update sensor - { - fsensor_disable(); - fsensor_not_responding = true; - fsensor_watch_autoload = false; - printf_P(ERRMSG_PAT9125_NOT_RESP, 3); - return; - } - puts_P(_N("fsensor_autoload_check_start - autoload ENABLED")); - fsensor_autoload_y = pat9125_y; //save current y value - fsensor_autoload_c = 0; //reset number of changes counter - fsensor_autoload_sum = 0; - fsensor_autoload_last_millis = _millis(); - fsensor_watch_runout = false; - fsensor_watch_autoload = true; -} - - -void fsensor_autoload_check_stop(void) -{ -// puts_P(_N("fsensor_autoload_check_stop\n")); - if (!fsensor_enabled) return; -// puts_P(_N("fsensor_autoload_check_stop 1\n")); - if (!fsensor_autoload_enabled) return; -// puts_P(_N("fsensor_autoload_check_stop 2\n")); - if (!fsensor_watch_autoload) return; - puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED")); - fsensor_autoload_sum = 0; - fsensor_watch_autoload = false; - fsensor_watch_runout = true; - fsensor_reset_err_cnt(); -} -#endif //PAT9125 - -bool fsensor_check_autoload(void) -{ - if (!fsensor_enabled) return false; - if (!fsensor_autoload_enabled) return false; - if (ir_sensor_detected) { - if (READ(IR_SENSOR_PIN)) { - fsensor_watch_autoload = true; - } - else if (fsensor_watch_autoload == true) { - fsensor_watch_autoload = false; - return true; - } - } -#ifdef PAT9125 - if (!fsensor_watch_autoload) - { - fsensor_autoload_check_start(); - return false; - } -#if 0 - uint8_t fsensor_autoload_c_old = fsensor_autoload_c; -#endif - if ((_millis() - fsensor_autoload_last_millis) < 25) return false; - fsensor_autoload_last_millis = _millis(); - if (!pat9125_update_y()) //update sensor - { - fsensor_disable(); - fsensor_not_responding = true; - printf_P(ERRMSG_PAT9125_NOT_RESP, 2); - return false; - } - int16_t dy = pat9125_y - fsensor_autoload_y; - if (dy) //? dy value is nonzero - { - if (dy > 0) //? delta-y value is positive (inserting) - { - fsensor_autoload_sum += dy; - fsensor_autoload_c += 3; //increment change counter by 3 - } - else if (fsensor_autoload_c > 1) - fsensor_autoload_c -= 2; //decrement change counter by 2 - fsensor_autoload_y = pat9125_y; //save current value - } - else if (fsensor_autoload_c > 0) - fsensor_autoload_c--; - if (fsensor_autoload_c == 0) fsensor_autoload_sum = 0; -#if 0 - puts_P(_N("fsensor_check_autoload\n")); - if (fsensor_autoload_c != fsensor_autoload_c_old) - printf_P(PSTR("fsensor_check_autoload dy=%d c=%d sum=%d\n"), dy, fsensor_autoload_c, fsensor_autoload_sum); -#endif -// if ((fsensor_autoload_c >= 15) && (fsensor_autoload_sum > 30)) - if ((fsensor_autoload_c >= 12) && (fsensor_autoload_sum > 20)) - { -// puts_P(_N("fsensor_check_autoload = true !!!\n")); - return true; - } -#endif //PAT9125 - return false; -} - -#ifdef PAT9125 -void fsensor_oq_meassure_set(bool State) -{ - fsensor_oq_meassure_enabled = State; - eeprom_update_byte((unsigned char *)EEPROM_FSENS_OQ_MEASS_ENABLED, fsensor_oq_meassure_enabled); -} - -void fsensor_oq_meassure_start(uint8_t skip) -{ - if (!fsensor_enabled) return; - if (!fsensor_oq_meassure_enabled) return; - puts_P(PSTR("fsensor_oq_meassure_start")); - fsensor_oq_skipchunk = skip; - fsensor_oq_samples = 0; - fsensor_oq_st_sum = 0; - fsensor_oq_yd_sum = 0; - fsensor_oq_er_sum = 0; - fsensor_oq_er_max = 0; - fsensor_oq_yd_min = INT16_MAX; - fsensor_oq_yd_max = 0; - fsensor_oq_sh_sum = 0; - pat9125_update(); - pat9125_y = 0; - fsensor_oq_meassure = true; -} - -void fsensor_oq_meassure_stop(void) -{ - if (!fsensor_enabled) return; - if (!fsensor_oq_meassure_enabled) return; - printf_P(PSTR("fsensor_oq_meassure_stop, %u samples\n"), fsensor_oq_samples); - printf_P(_N(" st_sum=%u yd_sum=%u er_sum=%u er_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max); - printf_P(_N(" yd_min=%u yd_max=%u yd_avg=%u sh_avg=%u\n"), fsensor_oq_yd_min, fsensor_oq_yd_max, (uint16_t)((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum), (uint16_t)(fsensor_oq_sh_sum / fsensor_oq_samples)); - fsensor_oq_meassure = false; -} - -#ifdef FSENSOR_QUALITY -const char _OK[] PROGMEM = "OK"; -const char _NG[] PROGMEM = "NG!"; - -bool fsensor_oq_result(void) -{ - if (!fsensor_enabled) return true; - if (!fsensor_oq_meassure_enabled) return true; - puts_P(_N("fsensor_oq_result")); - bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES); - printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG)); - bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM); - printf_P(_N(" er_max = %u %S\n"), fsensor_oq_er_max, (res_er_max?_OK:_NG)); - uint8_t yd_avg = ((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum); - bool res_yd_avg = (yd_avg >= FSENSOR_OQ_MIN_YD) && (yd_avg <= FSENSOR_OQ_MAX_YD); - printf_P(_N(" yd_avg = %u %S\n"), yd_avg, (res_yd_avg?_OK:_NG)); - bool res_yd_max = (fsensor_oq_yd_max <= (yd_avg * FSENSOR_OQ_MAX_PD)); - printf_P(_N(" yd_max = %u %S\n"), fsensor_oq_yd_max, (res_yd_max?_OK:_NG)); - bool res_yd_min = (fsensor_oq_yd_min >= (yd_avg / FSENSOR_OQ_MAX_ND)); - printf_P(_N(" yd_min = %u %S\n"), fsensor_oq_yd_min, (res_yd_min?_OK:_NG)); - - uint16_t yd_dev = (fsensor_oq_yd_max - yd_avg) + (yd_avg - fsensor_oq_yd_min); - printf_P(_N(" yd_dev = %u\n"), yd_dev); - - uint16_t yd_qua = 10 * yd_avg / (yd_dev + 1); - printf_P(_N(" yd_qua = %u %S\n"), yd_qua, ((yd_qua >= 8)?_OK:_NG)); - - uint8_t sh_avg = (fsensor_oq_sh_sum / fsensor_oq_samples); - bool res_sh_avg = (sh_avg <= FSENSOR_OQ_MAX_SH); - if (yd_qua >= 8) res_sh_avg = true; - - printf_P(_N(" sh_avg = %u %S\n"), sh_avg, (res_sh_avg?_OK:_NG)); - bool res = res_er_sum && res_er_max && res_yd_avg && res_yd_max && res_yd_min && res_sh_avg; - printf_P(_N("fsensor_oq_result %S\n"), (res?_OK:_NG)); - return res; -} -#endif //FSENSOR_QUALITY - -FORCE_INLINE static void fsensor_isr(int st_cnt) -{ - uint8_t old_err_cnt = fsensor_err_cnt; - uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y(); - if (!pat9125_res) - { - fsensor_disable(); - fsensor_not_responding = true; - printf_P(ERRMSG_PAT9125_NOT_RESP, 1); - } - - if (st_cnt != 0) - { - // movement was planned, check for sensor movement - int8_t st_dir = st_cnt >= 0; - int8_t pat9125_dir = pat9125_y >= 0; - - if (pat9125_y == 0) - { - if (st_dir) - { - // no movement detected: we might be within a blind sensor range, - // update the frame and shutter parameters we didn't earlier - if (!fsensor_oq_meassure) - pat9125_update_bs(); - - // increment the error count only if underexposed: filament likely missing - if ((pat9125_b < FSENSOR_OQ_MIN_BR) && (pat9125_s > FSENSOR_OQ_MAX_SH)) - { - // check for a dark frame (<30% avg brightness) with long exposure - ++fsensor_err_cnt; - } - else - { - // good frame, filament likely present - if(fsensor_err_cnt) --fsensor_err_cnt; - } - } - } - else if (pat9125_dir != st_dir) - { - // detected direction opposite of motor movement - if (st_dir) ++fsensor_err_cnt; - } - else if (pat9125_dir == st_dir) - { - // direction agreeing with planned movement - if (fsensor_err_cnt) --fsensor_err_cnt; - } - - if (st_dir && fsensor_oq_meassure) - { - // extruding with quality assessment - if (fsensor_oq_skipchunk) - { - fsensor_oq_skipchunk--; - fsensor_err_cnt = 0; - } - else - { - if (st_cnt == fsensor_chunk_len) - { - if (pat9125_y > 0) if (fsensor_oq_yd_min > pat9125_y) fsensor_oq_yd_min = (fsensor_oq_yd_min + pat9125_y) / 2; - if (pat9125_y >= 0) if (fsensor_oq_yd_max < pat9125_y) fsensor_oq_yd_max = (fsensor_oq_yd_max + pat9125_y) / 2; - } - fsensor_oq_samples++; - fsensor_oq_st_sum += st_cnt; - if (pat9125_y > 0) fsensor_oq_yd_sum += pat9125_y; - if (fsensor_err_cnt > old_err_cnt) - fsensor_oq_er_sum += (fsensor_err_cnt - old_err_cnt); - if (fsensor_oq_er_max < fsensor_err_cnt) - fsensor_oq_er_max = fsensor_err_cnt; - fsensor_oq_sh_sum += pat9125_s; - } - } - } - -#ifdef DEBUG_FSENSOR_LOG - if (fsensor_log) - { - printf_P(_N("FSENSOR cnt=%d dy=%d err=%u %S\n"), st_cnt, pat9125_y, fsensor_err_cnt, (fsensor_err_cnt > old_err_cnt)?_N("NG!"):_N("OK")); - if (fsensor_oq_meassure) printf_P(_N("FSENSOR st_sum=%u yd_sum=%u er_sum=%u er_max=%u yd_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max, fsensor_oq_yd_max); - } -#endif //DEBUG_FSENSOR_LOG - - pat9125_y = 0; -} - -ISR(FSENSOR_INT_PIN_VECT) -{ - if (mmu_enabled || ir_sensor_detected) return; - if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return; - fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG; - - // prevent isr re-entry - static bool _lock = false; - if (!_lock) - { - // fetch fsensor_st_cnt atomically - int st_cnt = fsensor_st_cnt; - fsensor_st_cnt = 0; - - _lock = true; - sei(); - fsensor_isr(st_cnt); - cli(); - _lock = false; - } -} - -void fsensor_setup_interrupt(void) -{ - WRITE(FSENSOR_INT_PIN, 0); - SET_OUTPUT(FSENSOR_INT_PIN); - fsensor_int_pin_old = 0; - - //pciSetup(FSENSOR_INT_PIN); -// !!! "pciSetup()" does not provide the correct results for some MCU pins -// so interrupt registers settings: - FSENSOR_INT_PIN_PCMSK_REG |= bit(FSENSOR_INT_PIN_PCMSK_BIT); // enable corresponding PinChangeInterrupt (individual pin) - PCIFR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // clear previous occasional interrupt (set of pins) - PCICR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // enable corresponding PinChangeInterrupt (set of pins) -} - -void fsensor_st_block_chunk(int cnt) -{ - if (!fsensor_enabled) return; - fsensor_st_cnt += cnt; - - // !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins - WRITE(FSENSOR_INT_PIN, !READ(FSENSOR_INT_PIN)); -} -#endif //PAT9125 - - -//! Common code for enqueing M600 and supplemental codes into the command queue. -//! Used both for the IR sensor and the PAT9125 -void fsensor_enque_M600(){ - puts_P(PSTR("fsensor_update - M600")); - eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); - eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); - enquecommand_front_P((PSTR("M600"))); -} - -//! @brief filament sensor update (perform M600 on filament runout) -//! -//! Works only if filament sensor is enabled. -//! When the filament sensor error count is larger then FSENSOR_ERR_MAX, pauses print, tries to move filament back and forth. -//! If there is still no plausible signal from filament sensor plans M600 (Filament change). -void fsensor_update(void) -{ -#ifdef PAT9125 - if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX)) - { - fsensor_stop_and_save_print(); - KEEPALIVE_STATE(IN_HANDLER); - - bool autoload_enabled_tmp = fsensor_autoload_enabled; - fsensor_autoload_enabled = false; - bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled; - fsensor_oq_meassure_enabled = true; - - // move the nozzle away while checking the filament - current_position[Z_AXIS] += 0.8; - if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; - plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); - st_synchronize(); - - // check the filament in isolation - fsensor_reset_err_cnt(); - fsensor_oq_meassure_start(0); - float e_tmp = current_position[E_AXIS]; - current_position[E_AXIS] -= 3; - plan_buffer_line_curposXYZE(250/60); - current_position[E_AXIS] = e_tmp; - plan_buffer_line_curposXYZE(200/60); - st_synchronize(); - fsensor_oq_meassure_stop(); - - bool err = false; - err |= (fsensor_err_cnt > 0); // final error count is non-zero - err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit - err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit - - fsensor_restore_print_and_continue(); - fsensor_autoload_enabled = autoload_enabled_tmp; - fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp; - unsigned long now = _millis(); - if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA) - fsensor_softfail_ccnt = 0; - if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX) - { - puts_P(PSTR("fsensor_err_cnt = 0")); - ++fsensor_softfail; - ++fsensor_softfail_ccnt; - fsensor_softfail_last = now; - } - else - { - fsensor_softfail_ccnt = 0; - fsensor_softfail_last = 0; - fsensor_enque_M600(); - } - } -#else //PAT9125 - if (CHECK_FSENSOR && ir_sensor_detected) - { - if (READ(IR_SENSOR_PIN)) - { // IR_SENSOR_PIN ~ H - fsensor_checkpoint_print(); - fsensor_enque_M600(); - } - } -#endif //PAT9125 -} - -#ifdef IR_SENSOR_ANALOG -/// This is called only upon start of the printer or when switching the fsensor ON in the menu -/// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) -bool fsensor_IR_check(uint16_t raw){ - if( IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD ){ - /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. - /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, - /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual - /// and would have been considered more like a sabotage than normal printer operation - puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); - return false; - } - if( oFsensorPCB == ClFsensorPCB::_Rev04 ){ - /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount - if( IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD ){ - puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); - return false; - } - /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure -#if 0 //Disabled as it has to be decided if we gonna use this or not. - if( IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD ){ - puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); - return false; - } -#endif - } - /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false -#if 0 - if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( raw > IRsensor_Lmax_TRESHOLD ) ){ - puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); - return false; - } -#endif - // otherwise the IR fsensor is considered working correctly - return true; -} -#endif //IR_SENSOR_ANALOG diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h deleted file mode 100755 index 5619430c7..000000000 --- a/Firmware/fsensor.h +++ /dev/null @@ -1,33 +0,0 @@ -//! @file -#ifndef FSENSOR_H -#define FSENSOR_H - -#include -#include "config.h" - - -#ifdef PAT9125 -// optical checking "chunk lenght" (already in steps) -extern int16_t fsensor_chunk_len; -// count of soft failures -extern uint8_t fsensor_softfail; - -//! update axis resolution -extern void fsensor_set_axis_steps_per_unit(float u); - -//! @name callbacks from stepper -//! @{ -extern void fsensor_st_block_chunk(int cnt); - -// debugging -extern uint8_t fsensor_log; - -// There's really nothing to do in block_begin: the stepper ISR likely has -// called us already at the end of the last block, making this integration -// redundant. LA1.5 might not always do that during a coasting move, so attempt -// to drain fsensor_st_cnt anyway at the beginning of the new block. -#define fsensor_st_block_begin(rev) fsensor_st_block_chunk(0) -//! @} -#endif //PAT9125 - -#endif //FSENSOR_H diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index cca96a6e1..7752e8083 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -43,6 +43,7 @@ const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 const char MSG_FSENSOR_RUNOUT[] PROGMEM_I1 = ISTR("F. runout"); ////c=13 const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////MSG_FSENSOR_AUTOLOAD c=13 +const char MSG_FSENSOR_JAM_DETECTION[] PROGMEM_I1 = ISTR("F. jam detect"); ////c=13 const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////MSG_FSENSOR c=12 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////MSG_HEATING c=20 const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////MSG_HEATING_COMPLETE c=20 diff --git a/Firmware/messages.h b/Firmware/messages.h index 379fc5095..4c9890b2a 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -49,6 +49,7 @@ extern const char MSG_FOLLOW_CALIBRATION_FLOW[]; extern const char MSG_FOLLOW_Z_CALIBRATION_FLOW[]; extern const char MSG_FSENSOR_RUNOUT[]; extern const char MSG_FSENSOR_AUTOLOAD[]; +extern const char MSG_FSENSOR_JAM_DETECTION[]; extern const char MSG_FSENSOR[]; extern const char MSG_HEATING[]; extern const char MSG_HEATING_COMPLETE[]; diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 892563282..5ba85f130 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -7,7 +7,6 @@ #include "uart2.h" #include "temperature.h" #include "Configuration_prusa.h" -#include "fsensor.h" #include "cardreader.h" #include "cmdqueue.h" #include "stepper.h" diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index d32364606..108f6216a 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -36,10 +36,7 @@ #include "tmc2130.h" #endif //TMC2130 -#if defined(FILAMENT_SENSOR) && defined(PAT9125) -#include "fsensor.h" -int fsensor_counter; //counter for e-steps -#endif //FILAMENT_SENSOR +#include "Filament_sensor.h" #include "mmu.h" #include "ConfigurationStore.h" @@ -457,9 +454,6 @@ FORCE_INLINE void stepper_next_block() #endif /* LIN_ADVANCE */ count_direction[E_AXIS] = 1; } -#if defined(FILAMENT_SENSOR) && defined(PAT9125) - fsensor_st_block_begin(count_direction[E_AXIS] < 0); -#endif //FILAMENT_SENSOR } else { _NEXT_ISR(2000); // 1kHz. @@ -704,9 +698,9 @@ FORCE_INLINE void stepper_tick_lowres() #ifdef LIN_ADVANCE e_steps += count_direction[E_AXIS]; #else - #ifdef FILAMENT_SENSOR - fsensor_counter += count_direction[E_AXIS]; - #endif //FILAMENT_SENSOR +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.stStep(count_direction[E_AXIS] < 0); +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) STEP_NC_LO(E_AXIS); #endif } @@ -766,9 +760,9 @@ FORCE_INLINE void stepper_tick_highres() #ifdef LIN_ADVANCE e_steps += count_direction[E_AXIS]; #else - #ifdef FILAMENT_SENSOR - fsensor_counter += count_direction[E_AXIS]; - #endif //FILAMENT_SENSOR +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.stStep(count_direction[E_AXIS] < 0); +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) STEP_NC_LO(E_AXIS); #endif } @@ -963,21 +957,9 @@ FORCE_INLINE void isr() { // If current block is finished, reset pointer if (step_events_completed.wide >= current_block->step_event_count.wide) { -#if !defined(LIN_ADVANCE) && defined(FILAMENT_SENSOR) - fsensor_st_block_chunk(fsensor_counter); - fsensor_counter = 0; -#endif //FILAMENT_SENSOR - current_block = NULL; plan_discard_current_block(); } -#if !defined(LIN_ADVANCE) && defined(FILAMENT_SENSOR) - else if ((abs(fsensor_counter) >= fsensor_chunk_len)) - { - fsensor_st_block_chunk(fsensor_counter); - fsensor_counter = 0; - } -#endif //FILAMENT_SENSOR } #ifdef TMC2130 @@ -1073,19 +1055,11 @@ FORCE_INLINE void advance_isr_scheduler() { STEP_NC_HI(E_AXIS); e_steps += (rev? 1: -1); STEP_NC_LO(E_AXIS); -#if defined(FILAMENT_SENSOR) && defined(PAT9125) - fsensor_counter += (rev? -1: 1); -#endif +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.stStep(rev); +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } while(--max_ticks); - -#if defined(FILAMENT_SENSOR) && defined(PAT9125) - if (abs(fsensor_counter) >= fsensor_chunk_len) - { - fsensor_st_block_chunk(fsensor_counter); - fsensor_counter = 0; - } -#endif } // Schedule the next closest tick, ignoring advance if scheduled too @@ -1668,13 +1642,3 @@ void microstep_readings() #endif } #endif //TMC2130 - - -#if defined(FILAMENT_SENSOR) && defined(PAT9125) -void st_reset_fsensor() -{ - CRITICAL_SECTION_START; - fsensor_counter = 0; - CRITICAL_SECTION_END; -} -#endif //FILAMENT_SENSOR diff --git a/Firmware/stepper.h b/Firmware/stepper.h index 3b9fb8c24..0fa2811cb 100644 --- a/Firmware/stepper.h +++ b/Firmware/stepper.h @@ -87,9 +87,4 @@ void microstep_readings(); void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention #endif -#if defined(FILAMENT_SENSOR) && defined(PAT9125) -// reset the internal filament sensor state -void st_reset_fsensor(); -#endif - #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8aa8056cf..e75d9063a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6,7 +6,6 @@ #include "temperature.h" #include "ultralcd.h" #include "conv2str.h" -#include "fsensor.h" #include "Marlin.h" #include "language.h" #include "cardreader.h" @@ -29,11 +28,7 @@ //#include "Configuration.h" #include "cmdqueue.h" -#ifdef FILAMENT_SENSOR -#include "pat9125.h" -#include "fsensor.h" #include "Filament_sensor.h" -#endif //FILAMENT_SENSOR #ifdef TMC2130 #include "tmc2130.h" @@ -46,7 +41,6 @@ #include "static_assert.h" #include "first_lay_cal.h" -#include "fsensor.h" #include "adc.h" #include "config.h" @@ -1269,11 +1263,11 @@ static void lcd_menu_fails_stats_print() // On the MK3 include detailed PAT9125 statistics about soft failures lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" - " %-7.7S H %-3d S %-3d\n" + " %-7.7S: %-3d\n" " %-7.7S X %-3d Y %-3d"), _T(MSG_LAST_PRINT_FAILURES), _T(MSG_POWER_FAILURES), power, - _i("Runouts"), filam, fsensor_softfail, ////MSG_RUNOUTS c=7 + _i("Runouts"), filam, //MSG_RUNOUTS c=7 _T(MSG_CRASH), crashX, crashY); #endif menu_back_if_clicked_fb(); @@ -4187,6 +4181,12 @@ static void lcd_fsensor_autoload_set() { fsensor.setAutoLoadEnabled(!fsensor.getAutoLoadEnabled(), true); } +#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 +static void lcd_fsensor_jam_detection_set() { + fsensor.setJamDetectionEnabled(!fsensor.getJamDetectionEnabled(), true); +} +#endif //FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 + static void lcd_fsensor_actionNA_set(void) { Filament_sensor::SensorActionOnError act = fsensor.getActionOnError(); @@ -4213,10 +4213,16 @@ static void lcd_fsensor_settings_menu() { if (fsensor.isError()) { MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), _T(MSG_NA), fsensor_reinit); MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_NA), fsensor_reinit); +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_JAM_DETECTION), _T(MSG_NA), fsensor_reinit); +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } else { MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), fsensor.getRunoutEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_runout_set); MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), fsensor.getAutoLoadEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_autoload_set); +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_JAM_DETECTION), fsensor.getJamDetectionEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_jam_detection_set); +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } switch(fsensor.getActionOnError()) { @@ -5135,6 +5141,14 @@ void unload_filament(bool automatic) custom_message_type = CustomMsg::FilamentLoading; lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); +#ifdef FILAMENT_SENSOR + fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +#endif + raise_z_above(automatic? MIN_Z_FOR_SWAP: MIN_Z_FOR_UNLOAD); // extr_unload2(); @@ -5172,6 +5186,10 @@ void unload_filament(bool automatic) custom_message_type = CustomMsg::Status; eFilamentAction = FilamentAction::None; + +#ifdef FILAMENT_SENSOR + fsensor.settings_init(); //restore filament runout state. +#endif } #include "xflash.h" diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index 46e94d60a..f1741cde7 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -135,7 +135,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 989c583a8..e0ec7d1e1 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -136,7 +136,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index 0255c4fcc..0c1db6d58 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -135,7 +135,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index fef1c768f..f4a87788d 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -136,7 +136,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 705a503e0..454d5ac59 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -177,7 +177,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index c910e0835..c071a6dd8 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -179,7 +179,7 @@ //#define _NO_ASM #define DEBUG_DCODES //D codes #define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD //#define DEBUG_RESUME_PRINT //Resume/save print debug enable //#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output //#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored From 329745368e0d0dedd2b153a94840bc6e7f960ec5 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 2 Mar 2022 12:01:48 +0100 Subject: [PATCH 036/319] Improve PAT9125 UI implementation --- Firmware/Dcodes.cpp | 5 +-- Firmware/Dcodes.h | 4 +- Firmware/Filament_sensor.h | 20 +++++++++ Firmware/Marlin_main.cpp | 39 +++++++----------- Firmware/ultralcd.cpp | 41 +++++++++++-------- .../variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 1 + .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 1 + .../1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 1 + .../1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 1 + .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 2 + .../variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 2 + 11 files changed, 71 insertions(+), 46 deletions(-) diff --git a/Firmware/Dcodes.cpp b/Firmware/Dcodes.cpp index 450a61b5c..85de98bd2 100644 --- a/Firmware/Dcodes.cpp +++ b/Firmware/Dcodes.cpp @@ -865,7 +865,7 @@ void dcode_2130() } #endif //TMC2130 -#ifdef PAT9125 +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) /*! ### D9125 - PAT9125 filament sensor D9125: PAT9125 filament sensor #### Usage @@ -878,7 +878,6 @@ void dcode_2130() - `R` - Resolution. Not active in code - `X` - X values - `Y` - Y values - - `L` - Activate filament sensor log */ void dcode_9125() { @@ -913,7 +912,7 @@ void dcode_9125() LOG("pat9125_y=%d\n", pat9125_y); } } -#endif //PAT9125 +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif //DEBUG_DCODES diff --git a/Firmware/Dcodes.h b/Firmware/Dcodes.h index 964f6d748..c2762830d 100644 --- a/Firmware/Dcodes.h +++ b/Firmware/Dcodes.h @@ -53,9 +53,9 @@ extern void dcode_81(); //D81 - Bed analysis. This command will log data to SD c extern void dcode_2130(); //D2130 - TMC2130 #endif //TMC2130 -#ifdef PAT9125 +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) extern void dcode_9125(); //D9125 - PAT9125 -#endif //PAT9125 +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif //DCODES_H diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 1dcaab49e..cc664d746 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -29,6 +29,9 @@ public: virtual void deinit() = 0; virtual bool update() = 0; virtual bool getFilamentPresent() = 0; +#ifdef FSENSOR_PROBING + virtual bool probeOtherType() = 0; //checks if the wrong fsensor type is detected. +#endif enum class State : uint8_t { disabled = 0, @@ -238,6 +241,12 @@ public: return !READ(IR_SENSOR_PIN); } +#ifdef FSENSOR_PROBING + bool probeOtherType() { + return pat9125_probe(); + } +#endif + void settings_init() { Filament_sensor::settings_init(); } @@ -511,6 +520,17 @@ public: return filterFilPresent; } +#ifdef FSENSOR_PROBING + bool probeOtherType() { + SET_INPUT(IR_SENSOR_PIN); //input mode + WRITE(IR_SENSOR_PIN, 1); //pullup + _delay_us(100); //wait for the pullup to pull the line high (might be needed, not really sure. The internal pullups are quite weak and there might be a long wire attached). + bool fsensorDetected = !READ(IR_SENSOR_PIN); + WRITE(IR_SENSOR_PIN, 0); //no pullup + return fsensorDetected; + } +#endif + void setJamDetectionEnabled(bool state, bool updateEEPROM = false) { jamDetection = state; oldPos = pat9125_y; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index e788a8160..64743f05a 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -690,9 +690,6 @@ void failstats_reset_print() eeprom_update_byte((uint8_t *)EEPROM_POWER_COUNT, 0); eeprom_update_byte((uint8_t *)EEPROM_MMU_FAIL, 0); eeprom_update_byte((uint8_t *)EEPROM_MMU_LOAD_FAIL, 0); -#if defined(FILAMENT_SENSOR) && defined(PAT9125) - fsensor_softfail = 0; -#endif } void softReset() @@ -863,24 +860,14 @@ void show_fw_version_warnings() { lcd_update_enable(true); } +#if defined(FILAMENT_SENSOR) && defined(FSENSOR_PROBING) //! @brief try to check if firmware is on right type of printer -static void check_if_fw_is_on_right_printer(){ -#ifdef FILAMENT_SENSOR - if((PRINTER_TYPE == PRINTER_MK3) || (PRINTER_TYPE == PRINTER_MK3S)){ - #ifdef IR_SENSOR - if (pat9125_probe()){ - lcd_show_fullscreen_message_and_wait_P(_i("MK3S firmware detected on MK3 printer"));}////MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 - #endif //IR_SENSOR - - #ifdef PAT9125 - //will return 1 only if IR can detect filament in bondtech extruder so this may fail even when we have IR sensor - const uint8_t ir_detected = fsensor.getFilamentPresent(); - if (ir_detected){ - lcd_show_fullscreen_message_and_wait_P(_i("MK3 firmware detected on MK3S printer"));}////MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 - #endif //PAT9125 - } -#endif //FILAMENT_SENSOR +static void check_if_fw_is_on_right_printer() { + if (fsensor.probeOtherType()) { + lcd_show_fullscreen_message_and_wait_P(_i((PRINTER_NAME " firmware detected on " PRINTER_NAME_ALTERNATE " printer")));////c=20 r=4 + } } +#endif //defined(FILAMENT_SENSOR) && defined(FSENSOR_PROBING) uint8_t check_printer_version() { @@ -1500,7 +1487,9 @@ void setup() KEEPALIVE_STATE(PAUSED_FOR_USER); if (!farm_mode) { +#if defined(FILAMENT_SENSOR) && defined(FSENSOR_PROBING) check_if_fw_is_on_right_printer(); +#endif //defined(FILAMENT_SENSOR) && defined(FSENSOR_PROBING) show_fw_version_warnings(); } @@ -6519,9 +6508,9 @@ Sigma_Exit: axis_steps_per_sqr_second[i] *= factor; } cs.axis_steps_per_unit[i] = value; -#if defined(FILAMENT_SENSOR) && defined(PAT9125) +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) fsensor.init(); -#endif +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } else { cs.axis_steps_per_unit[i] = code_value(); @@ -8455,10 +8444,10 @@ Sigma_Exit: cs.axis_steps_per_unit[i] /= fac; position[i] /= fac; } -#if defined(FILAMENT_SENSOR) && defined(PAT9125) +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) if (i == E_AXIS) fsensor.init(); -#endif +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) } } } @@ -9089,7 +9078,7 @@ Sigma_Exit: dcode_2130(); break; #endif //TMC2130 -#if (defined (FILAMENT_SENSOR) && defined(PAT9125)) +#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) /*! ### D9125 - PAT9125 filament sensor D9125: PAT9125 filament sensor @@ -9107,7 +9096,7 @@ Sigma_Exit: */ case 9125: dcode_9125(); break; -#endif //FILAMENT_SENSOR +#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif //DEBUG_DCODES diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e75d9063a..c8ea0c113 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -212,14 +212,18 @@ enum class FanCheck : uint_least8_t { static FanCheck lcd_selftest_fan_auto(uint8_t _fan); #endif //FANCHECK -#ifdef PAT9125 +#ifdef FILAMENT_SENSOR +#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 static bool lcd_selftest_fsensor(); -#endif //PAT9125 +#elif FILAMENT_SENSOR_TYPE == FSENSOR_IR +static bool selftest_irsensor(); +#elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG static bool selftest_irsensor(); -#if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) static bool lcd_selftest_IRsensor(bool bStandalone=false); static void lcd_detect_IRsensor(); -#endif //IR_SENSOR_ANALOG +#endif +#endif //FILAMENT_SENSOR + static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2); static void lcd_colorprint_change(); @@ -1253,13 +1257,7 @@ static void lcd_menu_fails_stats_print() uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X); uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y); lcd_home(); -#ifndef PAT9125 - lcd_printf_P(failStatsFmt, - _T(MSG_LAST_PRINT_FAILURES), - _T(MSG_POWER_FAILURES), power, - _T(MSG_FIL_RUNOUTS), filam, - _T(MSG_CRASH), crashX, crashY); -#else +#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 // On the MK3 include detailed PAT9125 statistics about soft failures lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" @@ -1269,6 +1267,14 @@ static void lcd_menu_fails_stats_print() _T(MSG_POWER_FAILURES), power, _i("Runouts"), filam, //MSG_RUNOUTS c=7 _T(MSG_CRASH), crashX, crashY); +#elif (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) + lcd_printf_P(failStatsFmt, + _T(MSG_LAST_PRINT_FAILURES), + _T(MSG_POWER_FAILURES), power, + _T(MSG_FIL_RUNOUTS), filam, + _T(MSG_CRASH), crashX, crashY); +#else +#error This menu should have a filament sensor defined #endif menu_back_if_clicked_fb(); } @@ -6417,7 +6423,7 @@ bool lcd_selftest() #ifdef FILAMENT_SENSOR if (_result) { - +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) if (mmu_enabled) { _progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor @@ -6427,15 +6433,16 @@ bool lcd_selftest() _progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //fil sensor OK } } else +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) { -#ifdef PAT9125 +#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 _progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor _result = lcd_selftest_fsensor(); if (_result) { _progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //fil sensor OK } -#endif //PAT9125 +#endif //FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 #if 0 // Intentionally disabled - that's why we moved the detection to runtime by just checking the two voltages. // The idea is not to force the user to remove and insert the filament on an assembled printer. @@ -6997,7 +7004,7 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const } #ifdef FILAMENT_SENSOR -#ifdef PAT9125 +#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 static bool lcd_selftest_fsensor(void) { fsensor.init(); @@ -7007,8 +7014,9 @@ static bool lcd_selftest_fsensor(void) } return (!fsensor.isError()); } -#endif //PAT9125 +#endif //FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) //! @brief Self-test of infrared barrier filament sensor mounted on MK3S with MMUv2 printer //! //! Test whether sensor is not triggering filament presence when extruder idler is moving without filament. @@ -7076,6 +7084,7 @@ static bool selftest_irsensor() } return true; } +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) #endif //FILAMENT_SENSOR static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite, diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index f1741cde7..ccd88c0e8 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -10,6 +10,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK25 #define PRINTER_NAME PRINTER_MK25_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK25S_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK25_MMU2 #define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK25" diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index e0ec7d1e1..0de301984 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -10,6 +10,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK25 #define PRINTER_NAME PRINTER_MK25_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK25S_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK25_MMU2 #define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK25" diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index 0c1db6d58..a4291ca8d 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -10,6 +10,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK25S #define PRINTER_NAME PRINTER_MK25S_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK25_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2 #define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK25S" diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index f4a87788d..4248fce6f 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -10,6 +10,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK25S #define PRINTER_NAME PRINTER_MK25S_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK25_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2 #define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK25S" diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 454d5ac59..44ec28d82 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -11,6 +11,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK3 #define PRINTER_NAME PRINTER_MK3_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK3S_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK3_MMU2 #define PRINTER_MMU_NAME PRINTER_MK3_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK3" @@ -151,6 +152,7 @@ // Filament sensor #define FILAMENT_SENSOR #define FILAMENT_SENSOR_TYPE FSENSOR_PAT9125 +#define FSENSOR_PROBING // Backlash - //#define BACKLASH_X diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index c071a6dd8..1ac0bebc1 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -10,6 +10,7 @@ // Printer revision #define PRINTER_TYPE PRINTER_MK3S #define PRINTER_NAME PRINTER_MK3S_NAME +#define PRINTER_NAME_ALTERNATE PRINTER_MK3_NAME //the other similar printer to this. #define PRINTER_MMU_TYPE PRINTER_MK3S_MMU2 #define PRINTER_MMU_NAME PRINTER_MK3S_MMU2_NAME #define FILAMENT_SIZE "1_75mm_MK3S" @@ -153,6 +154,7 @@ // Filament sensor #define FILAMENT_SENSOR #define FILAMENT_SENSOR_TYPE FSENSOR_IR_ANALOG +#define FSENSOR_PROBING // Backlash - //#define BACKLASH_X From c27e4623c58f81875adc3bc45057bfd753c3e423 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 2 Mar 2022 12:16:15 +0100 Subject: [PATCH 037/319] Fix build (??) --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 64743f05a..ac5cb8984 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -864,7 +864,7 @@ void show_fw_version_warnings() { //! @brief try to check if firmware is on right type of printer static void check_if_fw_is_on_right_printer() { if (fsensor.probeOtherType()) { - lcd_show_fullscreen_message_and_wait_P(_i((PRINTER_NAME " firmware detected on " PRINTER_NAME_ALTERNATE " printer")));////c=20 r=4 + lcd_show_fullscreen_message_and_wait_P(_i(PRINTER_NAME " firmware detected on " PRINTER_NAME_ALTERNATE " printer"));////c=20 r=4 } } #endif //defined(FILAMENT_SENSOR) && defined(FSENSOR_PROBING) From 2e293e90a0bc8dc1ffb93aa0be31bdbf6e2eac96 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 20 Apr 2022 11:47:58 +0200 Subject: [PATCH 038/319] MMU2 interface overhaul First port of the new MMU2-printer interface into 8bit FW. --- Firmware/Marlin.h | 2 +- Firmware/Marlin_main.cpp | 334 ++++--------- Firmware/Tcodes.cpp | 124 +++++ Firmware/Tcodes.h | 5 + Firmware/first_lay_cal.cpp | 6 +- Firmware/mmu.h | 120 ----- Firmware/mmu2.cpp | 711 +++++++++++++++++++++++++++ Firmware/mmu2.h | 204 ++++++++ Firmware/mmu2/error_codes.h | 97 ++++ Firmware/mmu2/progress_codes.h | 42 ++ Firmware/mmu2_error_converter.cpp | 6 + Firmware/mmu2_error_converter.h | 7 + Firmware/mmu2_fsensor.cpp | 14 + Firmware/mmu2_fsensor.h | 24 + Firmware/mmu2_log.h | 23 + Firmware/mmu2_power.cpp | 12 + Firmware/mmu2_power.h | 11 + Firmware/mmu2_progress_converter.cpp | 6 + Firmware/mmu2_progress_converter.h | 7 + Firmware/mmu2_protocol.cpp | 247 ++++++++++ Firmware/mmu2_protocol.h | 184 +++++++ Firmware/mmu2_protocol_logic.cpp | 564 +++++++++++++++++++++ Firmware/mmu2_protocol_logic.h | 314 ++++++++++++ Firmware/mmu2_reporting.cpp | 21 + Firmware/mmu2_reporting.h | 53 ++ Firmware/mmu2_serial.cpp | 15 + Firmware/mmu2_serial.h | 21 + Firmware/stepper.cpp | 2 +- Firmware/strlen_cx.h | 5 + Firmware/ultralcd.cpp | 184 +++---- 30 files changed, 2907 insertions(+), 458 deletions(-) create mode 100644 Firmware/Tcodes.cpp create mode 100644 Firmware/Tcodes.h delete mode 100644 Firmware/mmu.h create mode 100644 Firmware/mmu2.cpp create mode 100644 Firmware/mmu2.h create mode 100644 Firmware/mmu2/error_codes.h create mode 100644 Firmware/mmu2/progress_codes.h create mode 100644 Firmware/mmu2_error_converter.cpp create mode 100644 Firmware/mmu2_error_converter.h create mode 100644 Firmware/mmu2_fsensor.cpp create mode 100644 Firmware/mmu2_fsensor.h create mode 100644 Firmware/mmu2_log.h create mode 100644 Firmware/mmu2_power.cpp create mode 100644 Firmware/mmu2_power.h create mode 100644 Firmware/mmu2_progress_converter.cpp create mode 100644 Firmware/mmu2_progress_converter.h create mode 100644 Firmware/mmu2_protocol.cpp create mode 100644 Firmware/mmu2_protocol.h create mode 100644 Firmware/mmu2_protocol_logic.cpp create mode 100644 Firmware/mmu2_protocol_logic.h create mode 100644 Firmware/mmu2_reporting.cpp create mode 100644 Firmware/mmu2_reporting.h create mode 100644 Firmware/mmu2_serial.cpp create mode 100644 Firmware/mmu2_serial.h create mode 100644 Firmware/strlen_cx.h diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 12b48782d..da63894db 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -461,7 +461,7 @@ void gcode_M114(); #if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1))))) void gcode_M123(); #endif //FANCHECK and TACH_0 and TACH_1 -void gcode_M701(); +void gcode_M701(uint8_t mmuSlotIndex); #define UVLO !(PINE & (1<<4)) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index ac5cb8984..d7e2e50d2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -86,6 +86,7 @@ #include #include +#include "Tcodes.h" #include "Dcodes.h" #include "AutoDeplete.h" @@ -125,7 +126,7 @@ #include #endif -#include "mmu.h" +#include "mmu2.h" #define VERSION_STRING "1.0.2" @@ -1047,7 +1048,7 @@ void setup() { timer2_init(); // enables functional millis - mmu_init(); + MMU2::mmu2.Start(); ultralcd_init(); @@ -1623,7 +1624,7 @@ void setup() #endif //UVLO_SUPPORT fCheckModeInit(); - fSetMmuMode(mmu_enabled); + fSetMmuMode(MMU2::mmu2.Enabled()); KEEPALIVE_STATE(NOT_BUSY); #ifdef WATCHDOG wdt_enable(WDTO_4S); @@ -1856,7 +1857,7 @@ void loop() } } #endif //TMC2130 - mmu_loop(); + MMU2::mmu2.mmu_loop(); } #define DEFINE_PGM_READ_ANY(type, reader) \ @@ -3469,15 +3470,14 @@ static T gcode_M600_filament_change_z_shift() #else return T(0); #endif -} +} -static void gcode_M600(bool automatic, float x_position, float y_position, float z_shift, float e_shift, float /*e_shift_late*/) -{ +static void gcode_M600(bool automatic, float x_position, float y_position, float z_shift, float e_shift, float /*e_shift_late*/) { st_synchronize(); float lastpos[4]; prusa_statistics(22); - + //First backup current position and settings int feedmultiplyBckp = feedmultiply; float HotendTempBckp = degTargetHotend(active_extruder); @@ -3488,33 +3488,35 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float lastpos[Z_AXIS] = current_position[Z_AXIS]; lastpos[E_AXIS] = current_position[E_AXIS]; - //Retract E + // Retract E current_position[E_AXIS] += e_shift; plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED); st_synchronize(); - //Lift Z + // Lift Z current_position[Z_AXIS] += z_shift; clamp_to_software_endstops(current_position); plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED); st_synchronize(); - //Move XY to side + // Move XY to side current_position[X_AXIS] = x_position; current_position[Y_AXIS] = y_position; plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED); st_synchronize(); - //Beep, manage nozzle heater and wait for user to start unload filament - if(!mmu_enabled) M600_wait_for_user(HotendTempBckp); + // Beep, manage nozzle heater and wait for user to start unload filament + if (!MMU2::mmu2.Enabled()) + M600_wait_for_user(HotendTempBckp); lcd_change_fil_state = 0; // Unload filament - if (mmu_enabled) extr_unload(); //unload just current filament for multimaterial printers (used also in M702) - else unload_filament(true); //unload filament for single material (used also in M702) - //finish moves - st_synchronize(); + if (MMU2::mmu2.Enabled()) + MMU2::mmu2.unload(); // unload just current filament for multimaterial printers (used also in M702) + else + unload_filament(true); // unload filament for single material (used also in M702) + st_synchronize(); // finish moves #ifdef FILAMENT_SENSOR fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. @@ -3524,14 +3526,11 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif - if (!mmu_enabled) - { + if (!MMU2::mmu2.Enabled()) { KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_change_fil_state = lcd_show_fullscreen_message_yes_no_and_wait_P( - _i("Was filament unload successful?"), ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 - false, true); - if (lcd_change_fil_state == 0) - { + lcd_change_fil_state = + lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, true); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 + if (lcd_change_fil_state == 0) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); current_position[X_AXIS] -= 100; @@ -3541,55 +3540,53 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float } } - if (mmu_enabled) - { + if (MMU2::mmu2.Enabled()) { if (!automatic) { - if (saved_printing) mmu_eject_filament(mmu_extruder, false); //if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it - mmu_M600_wait_and_beep(); + if (saved_printing) + MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), + false); // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it +//@@TODO mmu_M600_wait_and_beep(); if (saved_printing) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); - mmu_command(MmuCmd::R0); - manage_response(false, false); +//@@TODO mmu_command(MmuCmd::R0); +// manage_response(false, false); } } - mmu_M600_load_filament(automatic, HotendTempBckp); - } - else +//@@TODO mmu_M600_load_filament(automatic, HotendTempBckp); + } else M600_load_filament(); - if (!automatic) M600_check_state(HotendTempBckp); + if (!automatic) + M600_check_state(HotendTempBckp); - lcd_update_enable(true); + lcd_update_enable(true); - //Not let's go back to print + // Not let's go back to print fanSpeed = fanSpeedBckp; - //Feed a little of filament to stabilize pressure - if (!automatic) - { + // Feed a little of filament to stabilize pressure + if (!automatic) { current_position[E_AXIS] += FILAMENTCHANGE_RECFEED; plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); } - //Move XY back - plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], - FILAMENTCHANGE_XYFEED, active_extruder); + // Move XY back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); st_synchronize(); - //Move Z back - plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], - FILAMENTCHANGE_ZFEED, active_extruder); + // Move Z back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder); st_synchronize(); - //Set E position to original + // Set E position to original plan_set_e_position(lastpos[E_AXIS]); memcpy(current_position, lastpos, sizeof(lastpos)); set_destination_to_current(); - //Recover feed rate + // Recover feed rate feedmultiply = feedmultiplyBckp; char cmd[9]; sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); @@ -3603,33 +3600,26 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float custom_message_type = CustomMsg::Status; } -void gcode_M701() -{ - printf_P(PSTR("gcode_M701 begin\n")); +void gcode_M701(uint8_t mmuSlotIndex){ + printf_P(PSTR("gcode_M701 begin\n")); #ifdef FILAMENT_SENSOR - fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. - fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. + fsensor.setRunoutEnabled(false); // suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); // suppress filament autoloads while loading filament. #if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) - fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. -#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); // suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) #endif - prusa_statistics(22); - - if (mmu_enabled) - { - extr_adj(tmp_extruder);//loads current extruder - mmu_extruder = tmp_extruder; + prusa_statistics(22); } - else - { - enable_z(); - custom_message_type = CustomMsg::FilamentLoading; -#ifdef FSENSOR_QUALITY - fsensor_oq_meassure_start(40); -#endif //FSENSOR_QUALITY + if (MMU2::mmu2.Enabled() && mmuSlotIndex < MMU_FILAMENT_COUNT) { + MMU2::mmu2.load_filament(mmuSlotIndex); // loads current extruder + // mmu_extruder = mmuSlotIndex; // @@TODO shall load filament set current tool to some specific index? We don't do that anymore. + } else { + enable_z(); + custom_message_type = CustomMsg::FilamentLoading; const int feed_mm_before_raising = 30; static_assert(feed_mm_before_raising <= FILAMENTCHANGE_FIRSTFEED); @@ -3639,41 +3629,30 @@ void gcode_M701() plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence st_synchronize(); - raise_z_above(MIN_Z_FOR_LOAD, false); + raise_z_above(MIN_Z_FOR_LOAD, false); current_position[E_AXIS] += feed_mm_before_raising; plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence - - load_filament_final_feed(); //slow sequence - st_synchronize(); - Sound_MakeCustom(50,500,false); + load_filament_final_feed(); // slow sequence + st_synchronize(); - if (!farm_mode && loading_flag) { - lcd_load_filament_color_check(); - } - lcd_update_enable(true); - lcd_update(2); - lcd_setstatuspgm(MSG_WELCOME); - disable_z(); - loading_flag = false; - custom_message_type = CustomMsg::Status; + Sound_MakeCustom(50, 500, false); -#ifdef FSENSOR_QUALITY - fsensor_oq_meassure_stop(); + if (!farm_mode && loading_flag) { + lcd_load_filament_color_check(); + } + lcd_update_enable(true); + lcd_update(2); + lcd_setstatuspgm(MSG_WELCOME); + disable_z(); + loading_flag = false; + custom_message_type = CustomMsg::Status; + } + + eFilamentAction = FilamentAction::None; - if (!fsensor_oq_result()) - { - bool disable = lcd_show_fullscreen_message_yes_no_and_wait_P(_n("Fil. sensor response is poor, disable it?"), false, true); - lcd_update_enable(true); - lcd_update(2); - if (disable) - fsensor_disable(); - } - - eFilamentAction = FilamentAction::None; - #ifdef FILAMENT_SENSOR - fsensor.settings_init(); //restore filament runout state. + fsensor.settings_init(); // restore filament runout state. #endif } /** @@ -4263,7 +4242,7 @@ void process_commands() } else if (code_seen_P(PSTR("MMURES"))) // PRUSA MMURES { - mmu_reset(); + MMU2::mmu2.Reset(MMU2::MMU2::Software); } else if (code_seen_P(PSTR("RESET"))) { // PRUSA RESET #ifdef WATCHDOG @@ -7614,14 +7593,13 @@ Sigma_Exit: { // currently three different materials are needed (default, flex and PVA) // add storing this information for different load/unload profiles etc. in the future - // firmware does not wait for "ok" from mmu - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { uint8_t extruder = 255; uint8_t filament = FILAMENT_UNDEFINED; if(code_seen('E')) extruder = code_value_uint8(); if(code_seen('F')) filament = code_value_uint8(); - mmu_set_filament_type(extruder, filament); + MMU2::mmu2.set_filament_type(extruder, filament); } } break; @@ -7859,7 +7837,7 @@ Sigma_Exit: #endif } - if (mmu_enabled && code_seen_P(PSTR("AUTO"))) + if (MMU2::mmu2.Enabled() && code_seen_P(PSTR("AUTO"))) automatic = true; gcode_M600(automatic, x_position, y_position, z_shift, e_shift_init, e_shift_late); @@ -8509,9 +8487,10 @@ Sigma_Exit: */ case 701: { - if (mmu_enabled && (code_seen('E') || code_seen('T'))) - tmp_extruder = code_value_uint8(); - gcode_M701(); + uint8_t mmuSlotIndex = 0xffU; + if (MMU2::mmu2.Enabled() && code_seen('E')) + mmuSlotIndex = code_value_uint8(); + gcode_M701(mmuSlotIndex); } break; @@ -8528,10 +8507,10 @@ Sigma_Exit: case 702: { if (code_seen('C')) { - if(mmu_enabled) extr_unload(); //! if "C" unload current filament; if mmu is not present no action is performed + if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! if "C" unload current filament; if mmu is not present no action is performed } else { - if(mmu_enabled) extr_unload(); //! unload current filament + if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! unload current filament else unload_filament(); } } @@ -8558,139 +8537,8 @@ Sigma_Exit: @n Tx Same as T?, except nozzle doesn't have to be preheated. Tc must be placed after extruder nozzle is preheated to finish filament load. @n Tc Load to nozzle after filament was prepared by Tc and extruder nozzle is already heated. */ - else if(code_seen('T')) - { - static const char duplicate_Tcode_ignored[] PROGMEM = "Duplicate T-code ignored."; - - int index; - bool load_to_nozzle = false; - for (index = 1; *(strchr_pointer + index) == ' ' || *(strchr_pointer + index) == '\t'; index++); - - *(strchr_pointer + index) = tolower(*(strchr_pointer + index)); - - if ((*(strchr_pointer + index) < '0' || *(strchr_pointer + index) > '4') && *(strchr_pointer + index) != '?' && *(strchr_pointer + index) != 'x' && *(strchr_pointer + index) != 'c') { - SERIAL_ECHOLNPGM("Invalid T code."); - } - else if (*(strchr_pointer + index) == 'x'){ //load to bondtech gears; if mmu is not present do nothing - if (mmu_enabled) - { - tmp_extruder = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT)); - if ((tmp_extruder == mmu_extruder) && mmu_fil_loaded) //dont execute the same T-code twice in a row - { - puts_P(duplicate_Tcode_ignored); - } - else - { - st_synchronize(); - mmu_command(MmuCmd::T0 + tmp_extruder); - manage_response(true, true, MMU_TCODE_MOVE); - } - } - } - else if (*(strchr_pointer + index) == 'c') { //load to from bondtech gears to nozzle (nozzle should be preheated) - if (mmu_enabled) - { - st_synchronize(); - mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); - mmu_extruder = tmp_extruder; //filament change is finished - mmu_load_to_nozzle(); - } - } - else { - if (*(strchr_pointer + index) == '?') - { - if(mmu_enabled) - { - tmp_extruder = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT)); - load_to_nozzle = true; - } else - { - tmp_extruder = choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER)); - } - } - else { - tmp_extruder = code_value(); - if (mmu_enabled && lcd_autoDepleteEnabled()) - { - tmp_extruder = ad_getAlternative(tmp_extruder); - } - } - st_synchronize(); - - if (mmu_enabled) - { - if ((tmp_extruder == mmu_extruder) && mmu_fil_loaded) //dont execute the same T-code twice in a row - { - puts_P(duplicate_Tcode_ignored); - } - else - { -#if defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) - if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) - { - mmu_command(MmuCmd::K0 + tmp_extruder); - manage_response(true, true, MMU_UNLOAD_MOVE); - } -#endif //defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) - mmu_command(MmuCmd::T0 + tmp_extruder); - manage_response(true, true, MMU_TCODE_MOVE); - mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); - - mmu_extruder = tmp_extruder; //filament change is finished - - if (load_to_nozzle)// for single material usage with mmu - { - mmu_load_to_nozzle(); - } - } - } - else - { - if (tmp_extruder >= EXTRUDERS) { - SERIAL_ECHO_START; - SERIAL_ECHO('T'); - SERIAL_PROTOCOLLN((int)tmp_extruder); - SERIAL_ECHOLNRPGM(_n("Invalid extruder"));////MSG_INVALID_EXTRUDER - } - else { -#if EXTRUDERS > 1 - bool make_move = false; -#endif - if (code_seen('F')) { -#if EXTRUDERS > 1 - make_move = true; -#endif - next_feedrate = code_value(); - if (next_feedrate > 0.0) { - feedrate = next_feedrate; - } - } -#if EXTRUDERS > 1 - if (tmp_extruder != active_extruder) { - // Save current position to return to after applying extruder offset - set_destination_to_current(); - // Offset extruder (only by XY) - int i; - for (i = 0; i < 2; i++) { - current_position[i] = current_position[i] - - extruder_offset[i][active_extruder] + - extruder_offset[i][tmp_extruder]; - } - // Set the new active extruder and position - active_extruder = tmp_extruder; - plan_set_position_curposXYZE(); - // Move to the old position if 'F' was in the parameters - if (make_move) { - prepare_move(); - } - } -#endif - SERIAL_ECHO_START; - SERIAL_ECHORPGM(_n("Active Extruder: "));////MSG_ACTIVE_EXTRUDER - SERIAL_PROTOCOLLN((int)active_extruder); - } - } - } + else if(code_seen('T')){ + TCodes(strchr_pointer, code_value()); } // end if(code_seen('T')) (end of T codes) /*! #### End of T-Codes @@ -9491,7 +9339,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s } #endif check_axes_activity(); - mmu_loop(); + MMU2::mmu2.mmu_loop(); // handle longpress if(lcd_longpress_trigger) @@ -11422,10 +11270,12 @@ void M600_check_state(float nozzle_temp) { // Filament failed to load so load it again case 2: - if (mmu_enabled) - mmu_M600_load_filament(false, nozzle_temp); //nonautomatic load; change to "wrong filament loaded" option? - else + if (MMU2::mmu2.Enabled()){ +//@@TODO mmu_M600_load_filament(false, nozzle_temp); //nonautomatic load; change to "wrong filament loaded" option? + + } else { M600_load_filament_movements(); + } break; // Filament loaded properly but color is not clear diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp new file mode 100644 index 000000000..e94dfe8b1 --- /dev/null +++ b/Firmware/Tcodes.cpp @@ -0,0 +1,124 @@ +#include "Tcodes.h" +#include "Marlin.h" +#include "mmu2.h" +#include "stepper.h" +#include +#include +#include +#include "language.h" +#include "messages.h" +#include "ultralcd.h" +#include + +static const char duplicate_Tcode_ignored[] PROGMEM = "Duplicate T-code ignored."; + +inline bool IsInvalidTCode(char *const s, uint8_t i) { + return ((s[i] < '0' || s[i] > '4') && s[i] != '?' && s[i] != 'x' && s[i] != 'c'); +} + +inline void TCodeInvalid() { + SERIAL_ECHOLNPGM("Invalid T code."); +} + +// load to bondtech gears; if mmu is not present do nothing +void TCodeX() { + if (MMU2::mmu2.Enabled()) { + uint8_t selectedSlot = choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT)); + if ((selectedSlot == MMU2::mmu2.get_current_tool()) /*&& mmu_fil_loaded @@TODO */){ + // dont execute the same T-code twice in a row + puts_P(duplicate_Tcode_ignored); + } else { + st_synchronize(); + MMU2::mmu2.tool_change(selectedSlot); + } + } +} + +// load to from bondtech gears to nozzle (nozzle should be preheated) +void TCodeC() { + if (MMU2::mmu2.Enabled()) { + st_synchronize(); +// @@TODO mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); +// mmu_extruder = selectedSlot; // filament change is finished +// MMU2::mmu2.load_filament_to_nozzle(); + } +} + +struct SChooseFromMenu { + uint8_t slot:7; + uint8_t loadToNozzle:1; + inline constexpr SChooseFromMenu(uint8_t slot, bool loadToNozzle):slot(slot), loadToNozzle(loadToNozzle){} + inline constexpr SChooseFromMenu():slot(0), loadToNozzle(false) { } +}; + +SChooseFromMenu TCodeChooseFromMenu() { + if (MMU2::mmu2.Enabled()) { + return SChooseFromMenu( choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT)), true ); + } else { + return SChooseFromMenu( choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER)), false ); + } +} + +void TCodes(char *const strchr_pointer, uint8_t codeValue) { + uint8_t index; + for (index = 1; strchr_pointer[index] == ' ' || strchr_pointer[index] == '\t'; index++) + ; + + strchr_pointer[index] = tolower(strchr_pointer[index]); + + if (IsInvalidTCode(strchr_pointer, index)) + TCodeInvalid(); + else if (strchr_pointer[index] == 'x') + TCodeX(); + else if (strchr_pointer[index] == 'c') + TCodeC(); + else { + SChooseFromMenu selectedSlot; + if (strchr_pointer[index] == '?') + selectedSlot = TCodeChooseFromMenu(); + else { + selectedSlot.slot = codeValue; + if (MMU2::mmu2.Enabled() && lcd_autoDepleteEnabled()) { +// @@TODO selectedSlot.slot = ad_getAlternative(selectedSlot); + } + } + st_synchronize(); + + if (MMU2::mmu2.Enabled()) { + if ((selectedSlot.slot == MMU2::mmu2.get_current_tool()) /*&& mmu_fil_loaded @@TODO*/){ + // don't execute the same T-code twice in a row + puts_P(duplicate_Tcode_ignored); + } else { +#if defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) + if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t *)EEPROM_MMU_CUTTER_ENABLED)) { + mmu_command(MmuCmd::K0 + selectedSlot); + manage_response(true, true, MMU_UNLOAD_MOVE); + } +#endif // defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) + MMU2::mmu2.tool_change(selectedSlot.slot); +// @@TODO mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); + + if (selectedSlot.loadToNozzle){ // for single material usage with mmu + MMU2::mmu2.load_filament_to_nozzle(selectedSlot.slot); + } + } + } else { + if (selectedSlot.slot >= EXTRUDERS) { + SERIAL_ECHO_START; + SERIAL_ECHO('T'); + SERIAL_ECHOLN(selectedSlot.slot + '0'); + SERIAL_ECHOLNRPGM(_n("Invalid extruder")); ////MSG_INVALID_EXTRUDER + } else { +// @@TODO if (code_seen('F')) { +// next_feedrate = code_value(); +// if (next_feedrate > 0.0) { +// feedrate = next_feedrate; +// } +// } + SERIAL_ECHO_START; + SERIAL_ECHORPGM(_n("Active Extruder: ")); ////MSG_ACTIVE_EXTRUDER + SERIAL_ECHOLN(active_extruder + '0'); // this is not changed in our FW at all, can be optimized away + } + } + } +} diff --git a/Firmware/Tcodes.h b/Firmware/Tcodes.h new file mode 100644 index 000000000..684475780 --- /dev/null +++ b/Firmware/Tcodes.h @@ -0,0 +1,5 @@ +/// @file +#pragma once +#include + +void TCodes(char * const strchr_pointer, uint8_t codeValue); diff --git a/Firmware/first_lay_cal.cpp b/Firmware/first_lay_cal.cpp index 0e01794bd..5d7f0aa9b 100644 --- a/Firmware/first_lay_cal.cpp +++ b/Firmware/first_lay_cal.cpp @@ -8,7 +8,7 @@ #include "language.h" #include "Marlin.h" #include "cmdqueue.h" -#include "mmu.h" +#include "mmu2.h" #include //! @brief Wait for preheat @@ -34,7 +34,7 @@ void lay1cal_wait_preheat() //! @param filament filament to use (applies for MMU only) void lay1cal_load_filament(char *cmd_buffer, uint8_t filament) { - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { enquecommand_P(PSTR("M83")); enquecommand_P(PSTR("G1 Y-3.0 F1000.0")); @@ -73,7 +73,7 @@ void lay1cal_intro_line() cmd_intro_mmu_12, }; - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { for (uint8_t i = 0; i < (sizeof(intro_mmu_cmd)/sizeof(intro_mmu_cmd[0])); ++i) { diff --git a/Firmware/mmu.h b/Firmware/mmu.h deleted file mode 100644 index 12dad9d41..000000000 --- a/Firmware/mmu.h +++ /dev/null @@ -1,120 +0,0 @@ -//! @file - -#ifndef MMU_H -#define MMU_H - -#include -#include "Timer.h" - - -extern bool mmu_enabled; -extern bool mmu_fil_loaded; - -extern uint8_t mmu_extruder; - -extern uint8_t tmp_extruder; - -extern int8_t mmu_finda; -extern LongTimer mmu_last_finda_response; -extern bool ir_sensor_detected; - -extern int16_t mmu_version; -extern int16_t mmu_buildnr; - -extern uint16_t mmu_power_failures; - -#define MMU_FILAMENT_UNKNOWN 255 - -#define MMU_NO_MOVE 0 -#define MMU_UNLOAD_MOVE 1 -#define MMU_LOAD_MOVE 2 -#define MMU_TCODE_MOVE 3 - -#define MMU_LOAD_FEEDRATE 19.02f //mm/s -#define MMU_LOAD_TIME_MS 2000 //should be fine tuned to load time for shortest allowed PTFE tubing and maximum loading speed - -enum class MmuCmd : uint_least8_t -{ - None, - T0, - T1, - T2, - T3, - T4, - L0, - L1, - L2, - L3, - L4, - C0, - U0, - E0, - E1, - E2, - E3, - E4, - K0, - K1, - K2, - K3, - K4, - R0, - S3, - W0, //!< Wait and signal load error -}; - -inline MmuCmd operator+ (MmuCmd cmd, uint8_t filament) -{ - return static_cast(static_cast(cmd) + filament ); -} - -inline uint8_t operator- (MmuCmd cmda, MmuCmd cmdb) -{ - return (static_cast(cmda) - static_cast(cmdb)); -} - -extern int mmu_puts_P(const char* str); - -extern int mmu_printf_P(const char* format, ...); - -extern int8_t mmu_rx_ok(void); - -extern bool check_for_ir_sensor(); - -extern void mmu_init(void); - -extern void mmu_loop(void); - - -extern void mmu_reset(void); - -extern int8_t mmu_set_filament_type(uint8_t extruder, uint8_t filament); - -extern void mmu_command(MmuCmd cmd); - -extern bool mmu_get_response(uint8_t move = 0); - -extern void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move = MMU_NO_MOVE); - -extern void mmu_load_to_nozzle(); - -extern void mmu_M600_load_filament(bool automatic, float nozzle_temp); -extern void mmu_M600_wait_and_beep(); - -extern void extr_adj(uint8_t extruder); -extern void extr_unload(); -extern void load_all(); - -extern bool mmu_check_version(); -extern void mmu_show_warning(); -extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr); -extern void mmu_eject_filament(uint8_t filament, bool recover); -#ifdef MMU_HAS_CUTTER -extern void mmu_cut_filament(uint8_t filament_nr); -#endif //MMU_HAS_CUTTER -extern void mmu_continue_loading(bool blocking); -extern void mmu_filament_ramming(); -extern void mmu_wait_for_heater_blocking(); -extern void mmu_load_step(bool synchronize = true); - -#endif //MMU_H diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp new file mode 100644 index 000000000..8ec794914 --- /dev/null +++ b/Firmware/mmu2.cpp @@ -0,0 +1,711 @@ +#include "mmu2.h" +#include "mmu2_fsensor.h" +#include "mmu2_log.h" +#include "mmu2_power.h" +#include "mmu2_reporting.h" + +#include "Marlin.h" +#include "stepper.h" +#include "mmu2_error_converter.h" +#include "mmu2_progress_converter.h" + +// @@TODO remove this and enable it in the configuration files +// Settings for filament load / unload from the LCD menu. +// This is for Prusa MK3-style extruders. Customize for your hardware. +#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 +#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { 7.2, 562 }, \ + { 14.4, 871 }, \ + { 36.0, 1393 }, \ + { 14.4, 871 }, \ + { 50.0, 198 } + +// @@TODO +#define FILAMENT_MMU2_RAMMING_SEQUENCE { 7.2, 562 } + +//@@TODO extract into configuration if it makes sense + +// Nominal distance from the extruder gear to the nozzle tip is 87mm +// However, some slipping may occur and we need separate distances for +// LoadToNozzle and ToolChange. +// - +5mm seemed good for LoadToNozzle, +// - but too much (made blobs) for a ToolChange +static constexpr float MMU2_LOAD_TO_NOZZLE_LENGTH = 87.0F + 5.0F; + +// As discussed with our PrusaSlicer profile specialist +// - ToolChange shall not try to push filament into the very tip of the nozzle +// to have some space for additional G-code to tune the extruded filament length +// in the profile +static constexpr float MMU2_TOOL_CHANGE_LOAD_LENGTH = 30.0F; + +static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; +static constexpr uint8_t MMU2_NO_TOOL = 99; +static constexpr uint32_t MMU_BAUD = 115200; + +typedef uint16_t feedRate_t; + +struct E_Step { + float extrude; ///< extrude distance in mm + feedRate_t feedRate; ///< feed rate in mm/s +}; + +static constexpr E_Step ramming_sequence[] PROGMEM = FILAMENT_MMU2_RAMMING_SEQUENCE; +static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE }; + +namespace MMU2 { + +void execute_extruder_sequence(const E_Step *sequence, int steps); + +MMU2 mmu2; + +MMU2::MMU2() + : logic(&mmu2Serial) + , extruder(MMU2_NO_TOOL) + , resume_position() + , resume_hotend_temp(0) + , logicStepLastStatus(StepStatus::Finished) + , state(xState::Stopped) + , mmu_print_saved(false) + , loadFilamentStarted(false) + , loadingToNozzle(false) +{ +} + +void MMU2::Start() { + mmu2Serial.begin(MMU_BAUD); + + PowerOn(); + mmu2Serial.flush(); // make sure the UART buffer is clear before starting communication + + extruder = MMU2_NO_TOOL; + state = xState::Connecting; + + // start the communication + logic.Start(); +} + +void MMU2::Stop() { + StopKeepPowered(); + PowerOff(); +} + +void MMU2::StopKeepPowered(){ + state = xState::Stopped; + logic.Stop(); + mmu2Serial.close(); +} + +void MMU2::Reset(ResetForm level){ + switch (level) { + case Software: ResetX0(); break; + case ResetPin: TriggerResetPin(); break; + case CutThePower: PowerCycle(); break; + default: break; + } +} + +void MMU2::ResetX0() { + logic.ResetMMU(); // Send soft reset +} + +void MMU2::TriggerResetPin(){ + reset(); +} + +void MMU2::PowerCycle(){ + // cut the power to the MMU and after a while restore it + PowerOff(); + _delay(1000); //@@TODO + PowerOn(); +} + +void MMU2::PowerOff(){ + power_off(); +} + +void MMU2::PowerOn(){ + power_on(); +} + +void MMU2::mmu_loop() { + // We only leave this method if the current command was successfully completed - that's the Marlin's way of blocking operation + // Atomic compare_exchange would have been the most appropriate solution here, but this gets called only in Marlin's task, + // so thread safety should be kept + static bool avoidRecursion = false; + if (avoidRecursion) + return; + avoidRecursion = true; + + logicStepLastStatus = LogicStep(); // it looks like the mmu_loop doesn't need to be a blocking call + + avoidRecursion = false; +} + +struct ReportingRAII { + CommandInProgress cip; + inline ReportingRAII(CommandInProgress cip):cip(cip){ + BeginReport(cip, (uint16_t)ProgressCode::EngagingIdler); + } + inline ~ReportingRAII(){ + EndReport(cip, (uint16_t)ProgressCode::OK); + } +}; + +bool MMU2::WaitForMMUReady(){ + switch(State()){ + case xState::Stopped: + return false; + case xState::Connecting: + // shall we wait until the MMU reconnects? + // fire-up a fsm_dlg and show "MMU not responding"? + default: + return true; + } +} + +bool MMU2::tool_change(uint8_t index) { + if( ! WaitForMMUReady()) + return false; + + if (index != extruder) { + ReportingRAII rep(CommandInProgress::ToolChange); + BlockRunoutRAII blockRunout; + + st_synchronize(); + + logic.ToolChange(index); // let the MMU pull the filament out and push a new one in + manage_response(false, false); // true, true); + + // reset current position to whatever the planner thinks it is + // @@TODO is there some "standard" way of doing this? +//@@TODO current_position[E_AXIS] = Planner::get_machine_position_mm()[3]; + + extruder = index; //filament change is finished + SetActiveExtruder(0); + + // @@TODO really report onto the serial? May be for the Octoprint? Not important now + // SERIAL_ECHO_START(); + // SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, int(extruder)); + } + return true; +} + +/// Handle special T?/Tx/Tc commands +/// +///- T? Gcode to extrude shouldn't have to follow, load to extruder wheels is done automatically +///- Tx Same as T?, except nozzle doesn't have to be preheated. Tc must be placed after extruder nozzle is preheated to finish filament load. +///- Tc Load to nozzle after filament was prepared by Tx and extruder nozzle is already heated. +bool MMU2::tool_change(const char *special) { + if( ! WaitForMMUReady()) + return false; + +#if 0 //@@TODO + BlockRunoutRAII blockRunout; + + switch (*special) { + case '?': { + uint8_t index = 0; // mmu2_choose_filament(); //@@TODO GUI - user selects + while (!thermalManager.wait_for_hotend(active_extruder, false)) + safe_delay(100); + load_filament_to_nozzle(index); + } break; + + case 'x': { + planner.synchronize(); + uint8_t index = 0; //mmu2_choose_filament(); //@@TODO GUI - user selects + disable_E0(); + logic.ToolChange(index); + manage_response(false, false); // true, true); + + enable_E0(); + extruder = index; + SetActiveExtruder(0); + } break; + + case 'c': { + while (!thermalManager.wait_for_hotend(active_extruder, false)) + safe_delay(100); + execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, COUNT(load_to_nozzle_sequence)); + } break; + } + +#endif + return true; +} + +uint8_t MMU2::get_current_tool() { + return extruder == MMU2_NO_TOOL ? -1 : extruder; +} + +bool MMU2::set_filament_type(uint8_t index, uint8_t type) { + if( ! WaitForMMUReady()) + return false; + + // @@TODO - this is not supported in the new MMU yet + // cmd_arg = filamentType; + // command(MMU_CMD_F0 + index); + + manage_response(false, false); // true, true); + + return true; +} + +bool MMU2::unload() { + if( ! WaitForMMUReady()) + return false; + + // @@TODO +// if (thermalManager.tooColdToExtrude(active_extruder)) { +// BUZZ(200, 404); +// LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); +// return false; +// } + + { + ReportingRAII rep(CommandInProgress::UnloadFilament); + filament_ramming(); + + logic.UnloadFilament(); + manage_response(false, false); // false, true); + +// BUZZ(200, 404); + + // no active tool + extruder = MMU2_NO_TOOL; + } + return true; +} + +bool MMU2::cut_filament(uint8_t index){ + if( ! WaitForMMUReady()) + return false; + + ReportingRAII rep(CommandInProgress::CutFilament); + logic.CutFilament(index); + manage_response(false, false); // false, true); + + return true; +} + +bool MMU2::load_filament(uint8_t index) { + if( ! WaitForMMUReady()) + return false; + + ReportingRAII rep(CommandInProgress::LoadFilament); + logic.LoadFilament(index); + manage_response(false, false); +// BUZZ(200, 404); + + return true; +} + +struct LoadingToNozzleRAII { + MMU2 &mmu2; + inline LoadingToNozzleRAII(MMU2 &mmu2):mmu2(mmu2){ + mmu2.loadingToNozzle = true; + } + inline ~LoadingToNozzleRAII(){ + mmu2.loadingToNozzle = false; + } +}; + +bool MMU2::load_filament_to_nozzle(uint8_t index) { + if( ! WaitForMMUReady()) + return false; + + LoadingToNozzleRAII ln(*this); + + // if (0){ // @@TODO DEBUG + + // @@TODO how is this supposed to be done in 8bit FW? +/* if (thermalManager.tooColdToExtrude(active_extruder)) { + BUZZ(200, 404); + LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); + return false; + } else*/ { + // used for MMU-menu operation "Load to Nozzle" + ReportingRAII rep(CommandInProgress::ToolChange); + BlockRunoutRAII blockRunout; + + if( extruder != MMU2_NO_TOOL ){ // we already have some filament loaded - free it + shape its tip properly + filament_ramming(); + } + + logic.ToolChange(index); + manage_response(false, false); // true, true); + + // reset current position to whatever the planner thinks it is + // @@TODO is there some "standard" way of doing this? +//@@TODO current_position[E_AXIS] = Planner::get_machine_position_mm()[3]; + + extruder = index; + SetActiveExtruder(0); + +// BUZZ(200, 404); + return true; + } +} + +bool MMU2::eject_filament(uint8_t index, bool recover) { + if( ! WaitForMMUReady()) + return false; + + //@@TODO +// if (thermalManager.tooColdToExtrude(active_extruder)) { +// BUZZ(200, 404); +// LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); +// return false; +// } + + ReportingRAII rep(CommandInProgress::EjectFilament); + current_position[E_AXIS] -= MMU2_FILAMENTCHANGE_EJECT_FEED; +//@@TODO line_to_current_position(2500 / 60); + st_synchronize(); + logic.EjectFilament(index); + manage_response(false, false); + + if (recover) { + // LCD_MESSAGEPGM(MSG_MMU2_EJECT_RECOVER); +// BUZZ(200, 404); + +//@@TODO wait_for_user = true; + + //#if ENABLED(HOST_PROMPT_SUPPORT) + // host_prompt_do(PROMPT_USER_CONTINUE, PSTR("MMU2 Eject Recover"), PSTR("Continue")); + //#endif + //#if ENABLED(EXTENSIBLE_UI) + // ExtUI::onUserConfirmRequired_P(PSTR("MMU2 Eject Recover")); + //#endif + +//@@TODO while (wait_for_user) idle(true); + +// BUZZ(200, 404); +// BUZZ(200, 404); + + // logic.Command(); //@@TODO command(MMU_CMD_R0); + manage_response(false, false); + } + + //@@TODO ui.reset_status(); + + // no active tool + extruder = MMU2_NO_TOOL; + +// BUZZ(200, 404); + +// disable_E0(); + + return true; +} + +void MMU2::Button(uint8_t index){ + logic.Button(index); +} + +void MMU2::Home(uint8_t mode){ + logic.Home(mode); +} + +void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { +//@@TODO static constexpr xyz_pos_t park_point = NOZZLE_PARK_POINT_M600; +// if (!mmu_print_saved) { // First occurrence. Save current position, park print head, disable nozzle heater. +// LogEchoEvent("Saving and parking"); +// st_synchronize(); + +// mmu_print_saved = true; + +// resume_hotend_temp = thermalManager.degTargetHotend(active_extruder); +// resume_position = current_position; + +// if (move_axes && all_axes_homed()) +// nozzle.park(2, park_point); + +// if (turn_off_nozzle){ +// LogEchoEvent("Heater off"); +// thermalManager.setTargetHotend(0, active_extruder); +// } +// } +// // keep the motors powered forever (until some other strategy is chosen) +// gcode.reset_stepper_timeout(); +} + +void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { + if (mmu_print_saved) { + LogEchoEvent("Resuming print"); + + if (turn_off_nozzle && resume_hotend_temp) { + MMU2_ECHO_MSG("Restoring hotend temperature "); + SERIAL_ECHOLN(resume_hotend_temp); +//@@TODO thermalManager.setTargetHotend(resume_hotend_temp, active_extruder); + +// while (!thermalManager.wait_for_hotend(active_extruder, false)){ +// safe_delay(1000); +// } + LogEchoEvent("Hotend temperature reached"); + } + +//@@TODO if (move_axes && all_axes_homed()) { +// LogEchoEvent("Resuming XYZ"); + +// // Move XY to starting position, then Z +// do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE)); + +// // Move Z_AXIS to saved position +// do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); +// } else { +// LogEchoEvent("NOT resuming XYZ"); +// } + } +} + +void MMU2::CheckUserInput(){ + auto btn = ButtonPressed((uint16_t)lastErrorCode); + switch (btn) { + case Left: + case Middle: + case Right: + Button(btn); + break; + case RestartMMU: + Reset(CutThePower); + break; + case StopPrint: + // @@TODO not sure if we shall handle this high level operation at this spot + break; + default: + break; + } +} + +/// Originally, this was used to wait for response and deal with timeout if necessary. +/// The new protocol implementation enables much nicer and intense reporting, so this method will boil down +/// just to verify the result of an issued command (which was basically the original idea) +/// +/// It is closely related to mmu_loop() (which corresponds to our ProtocolLogic::Step()), which does NOT perform any blocking wait for a command to finish. +/// But - in case of an error, the command is not yet finished, but we must react accordingly - move the printhead elsewhere, stop heating, eat a cat or so. +/// That's what's being done here... +void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { + mmu_print_saved = false; + + KEEPALIVE_STATE(PAUSED_FOR_USER); + + for (;;) { + // in our new implementation, we know the exact state of the MMU at any moment, we do not have to wait for a timeout + // So in this case we shall decide if the operation is: + // - still running -> wait normally in idle() + // - failed -> then do the safety moves on the printer like before + // - finished ok -> proceed with reading other commands + + // @@TODO this needs verification - we need something which matches Marlin2's idle() + manage_inactivity(true); // calls LogicStep() and remembers its return status + + switch (logicStepLastStatus) { + case Finished: + // command/operation completed, let Marlin continue its work + // the E may have some more moves to finish - wait for them + st_synchronize(); + return; + case VersionMismatch: // this basically means the MMU will be disabled until reconnected + return; + case CommunicationTimeout: + case CommandError: + case ProtocolError: + SaveAndPark(move_axes, turn_off_nozzle); // and wait for the user to resolve the problem + CheckUserInput(); + break; + case CommunicationRecovered: // @@TODO communication recovered and may be an error recovered as well + // may be the logic layer can detect the change of state a respond with one "Recovered" to be handled here + ResumeAndUnPark(move_axes, turn_off_nozzle); + break; + case Processing: // wait for the MMU to respond + default: + break; + } + } +} + +StepStatus MMU2::LogicStep() { + StepStatus ss = logic.Step(); + switch (ss) { + case Finished: + case Processing: + OnMMUProgressMsg(logic.Progress()); + break; + case CommandError: + ReportError(logic.Error()); + break; + case CommunicationTimeout: + state = xState::Connecting; + ReportError(ErrorCode::MMU_NOT_RESPONDING); + break; + case ProtocolError: + state = xState::Connecting; + ReportError(ErrorCode::PROTOCOL_ERROR); + break; + case VersionMismatch: + StopKeepPowered(); + ReportError(ErrorCode::VERSION_MISMATCH); + break; + default: + break; + } + + if( logic.Running() ){ + state = xState::Active; + } + return ss; +} + +void MMU2::filament_ramming() { + execute_extruder_sequence((const E_Step *)ramming_sequence, sizeof(ramming_sequence) / sizeof(E_Step)); +} + +void MMU2::execute_extruder_sequence(const E_Step *sequence, int steps) { + + st_synchronize(); + + const E_Step *step = sequence; + + for (uint8_t i = 0; i < steps; i++) { + const float es = pgm_read_float(&(step->extrude)); + const feedRate_t fr_mm_m = pgm_read_float(&(step->feedRate)); + + // DEBUG_ECHO_START(); + // DEBUG_ECHOLNPAIR("E step ", es, "/", fr_mm_m); + + current_position[E_AXIS] += es; +// line_to_current_position(MMM_TO_MMS(fr_mm_m)); + st_synchronize(); + + step++; + } + +// disable_E0(); +} + +void MMU2::SetActiveExtruder(uint8_t ex){ + active_extruder = ex; +} + +constexpr int strlen_constexpr(const char* str){ + return *str ? 1 + strlen_constexpr(str + 1) : 0; +} + +void MMU2::ReportError(ErrorCode ec) { + // Due to a potential lossy error reporting layers linked to this hook + // we'd better report everything to make sure especially the error states + // do not get lost. + // - The good news here is the fact, that the MMU reports the errors repeatedly until resolved. + // - The bad news is, that MMU not responding may repeatedly occur on printers not having the MMU at all. + // + // Not sure how to properly handle this situation, options: + // - skip reporting "MMU not responding" (at least for now) + // - report only changes of states (we can miss an error message) + // - may be some combination of MMUAvailable + UseMMU flags and decide based on their state + // Right now the filtering of MMU_NOT_RESPONDING is done in ReportErrorHook() as it is not a problem if mmu2.cpp + ReportErrorHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)ec); + + if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log + lastErrorCode = ec; + + // Log error format: MMU2:E=32766 TextDescription + char msg[64]; + snprintf(msg, sizeof(msg), "MMU2:E=%hu", (uint16_t)ec); + // Append a human readable form of the error code(s) + TranslateErr((uint16_t)ec, msg, sizeof(msg)); + + // beware - the prefix in the message ("MMU2") will get stripped by the logging subsystem + // and a correct MMU2 component will be assigned accordingly - see appmain.cpp + // Therefore I'm not calling MMU2_ERROR_MSG or MMU2_ECHO_MSG here + SERIAL_ECHO_START; + SERIAL_ECHOLN(msg); + } + + static_assert(mmu2Magic[0] == 'M' + && mmu2Magic[1] == 'M' + && mmu2Magic[2] == 'U' + && mmu2Magic[3] == '2' + && mmu2Magic[4] == ':' + && strlen_constexpr(mmu2Magic) == 5, + "MMU2 logging prefix mismatch, must be updated at various spots" + ); +} + +void MMU2::ReportProgress(ProgressCode pc) { + ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); + + // Log progress - example: MMU2:P=123 EngageIdler + char msg[64]; + snprintf(msg, sizeof(msg), "MMU2:P=%hu", (uint16_t)pc); + // Append a human readable form of the progress code + TranslateProgress((uint16_t)pc, msg, sizeof(msg)); + + SERIAL_ECHO_START; + SERIAL_ECHOLN(msg); +} + +void MMU2::OnMMUProgressMsg(ProgressCode pc){ + if( pc != lastProgressCode){ + ReportProgress(pc); + lastProgressCode = pc; + + // Act accordingly - one-time handling + switch(pc){ + case ProgressCode::FeedingToBondtech: + // prepare for the movement of the E-motor + st_synchronize(); +//@@TODO sync_plan_position(); +// enable_E0(); + loadFilamentStarted = true; + break; + default: + // do nothing yet + break; + } + } else { + // Act accordingly - every status change (even the same state) + switch(pc){ + case ProgressCode::FeedingToBondtech: + if( WhereIsFilament() == FilamentState::AT_FSENSOR && loadFilamentStarted){// fsensor triggered, move the extruder to help loading + // rotate the extruder motor - no planner sync, just add more moves - as long as they are roughly at the same speed as the MMU is pushing, + // it really doesn't matter + // char tmp[64]; // @@TODO this shouldn't be needed anymore, but kept here in case of something strange + // // happens in Marlin again + // snprintf(tmp,sizeof (tmp), "E moveTo=%4.1f f=%4.0f s=%hu\n", current_position.e, feedrate_mm_s, feedrate_percentage); + // MMU2_ECHO_MSG(tmp); + + // Ideally we'd use: + // line_to_current_position(MMU2_LOAD_TO_NOZZLE_FEED_RATE); + // However, as it ignores MBL completely (which I don't care about in case of E-movement), + // we need to take the raw Z coordinates and only add some movement to E + // otherwise we risk planning a very short Z move with an extremely long E-move, + // which obviously ends up in a disaster (over/underflow of E/Z steps). + // The problem becomes obvious in Planner::_populate_block when computing da, db, dc like this: + // const int32_t da = target.a - position.a, db = target.b - position.b, dc = target.c - position.c; + // And since current_position[3] != position_float[3], we get a tiny move in Z, which is something I really want to avoid here + // @@TODO is there a "standard" way of doing this? +//@@TODO xyze_pos_t tgt = Planner::get_machine_position_mm(); + const float e = loadingToNozzle ? MMU2_LOAD_TO_NOZZLE_LENGTH : MMU2_TOOL_CHANGE_LOAD_LENGTH; +//@@TODO tgt[3] += e / planner.e_factor[active_extruder]; +// plan_buffer_line(tgt, MMU2_LOAD_TO_NOZZLE_FEED_RATE, active_extruder); // @@TODO magic constant - must match the feedrate of the MMU + loadFilamentStarted = false; + } + break; + default: + // do nothing yet + break; + } + } +} + +void MMU2::LogErrorEvent(const char *msg){ + MMU2_ERROR_MSG(msg); + SERIAL_ECHOLN(); +} + +void MMU2::LogEchoEvent(const char *msg){ + MMU2_ECHO_MSG(msg); + SERIAL_ECHOLN(); +} + +} // namespace MMU2 diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h new file mode 100644 index 000000000..d3809b727 --- /dev/null +++ b/Firmware/mmu2.h @@ -0,0 +1,204 @@ +/// @file +#pragma once +#include "mmu2_protocol_logic.h" + +struct E_Step; + +namespace MMU2 { + +struct xyz_pos_t { + uint16_t xyz[3]; // @@TODO + xyz_pos_t()=default; +}; + +// general MMU setup for MK3 +enum : uint8_t { + FILAMENT_UNKNOWN = 0xffU +}; + +/// Top-level interface between Logic and Marlin. +/// Intentionally named MMU2 to be (almost) a drop-in replacement for the previous implementation. +/// Most of the public methods share the original naming convention as well. +class MMU2 { +public: + MMU2(); + + /// Powers ON the MMU, then initializes the UART and protocol logic + void Start(); + + /// Stops the protocol logic, closes the UART, powers OFF the MMU + void Stop(); + + /// States of a printer with the MMU: + /// - Active + /// - Connecting + /// - Stopped + /// + /// When the printer's FW starts, the MMU2 mode is either Stopped or NotResponding (based on user's preference). + /// When the MMU successfully establishes communication, the state changes to Active. + enum class xState : uint_fast8_t { + Active, ///< MMU has been detected, connected, communicates and is ready to be worked with. + Connecting, ///< MMU is connected but it doesn't communicate (yet). The user wants the MMU, but it is not ready to be worked with. + Stopped ///< The user doesn't want the printer to work with the MMU. The MMU itself is not powered and does not work at all. + }; + + inline xState State() const { return state; } + + // @@TODO temporary wrappers to make old gcc survive the code + inline bool Enabled()const { return State() == xState::Active; } + + /// Different levels of resetting the MMU + enum ResetForm : uint8_t { + Software = 0, ///< sends a X0 command into the MMU, the MMU will watchdog-reset itself + ResetPin = 1, ///< trigger the reset pin of the MMU + CutThePower = 2 ///< power off and power on (that includes +5V and +24V power lines) + }; + + /// Perform a reset of the MMU + /// @param level physical form of the reset + void Reset(ResetForm level); + + /// Power off the MMU (cut the power) + void PowerOff(); + + /// Power on the MMU + void PowerOn(); + + + /// The main loop of MMU processing. + /// Doesn't loop (block) inside, performs just one step of logic state machines. + /// Also, internally it prevents recursive entries. + void mmu_loop(); + + /// The main MMU command - select a different slot + /// @param index of the slot to be selected + /// @returns false if the operation cannot be performed (Stopped) + bool tool_change(uint8_t index); + + /// Handling of special Tx, Tc, T? commands + bool tool_change(const char *special); + + /// Unload of filament in collaboration with the MMU. + /// That includes rotating the printer's extruder in order to release filament. + /// @returns false if the operation cannot be performed (Stopped or cold extruder) + bool unload(); + + /// Load (insert) filament just into the MMU (not into printer's nozzle) + /// @returns false if the operation cannot be performed (Stopped) + bool load_filament(uint8_t index); + + /// Load (push) filament from the MMU into the printer's nozzle + /// @returns false if the operation cannot be performed (Stopped or cold extruder) + bool load_filament_to_nozzle(uint8_t index); + + /// Move MMU's selector aside and push the selected filament forward. + /// Usable for improving filament's tip or pulling the remaining piece of filament out completely. + bool eject_filament(uint8_t index, bool recover); + + /// Issue a Cut command into the MMU + /// Requires unloaded filament from the printer (obviously) + /// @returns false if the operation cannot be performed (Stopped) + bool cut_filament(uint8_t index); + + /// @returns the active filament slot index (0-4) or 0xff in case of no active tool + uint8_t get_current_tool(); + + bool set_filament_type(uint8_t index, uint8_t type); + + /// Issue a "button" click into the MMU - to be used from Error screens of the MMU + /// to select one of the 3 possible options to resolve the issue + void Button(uint8_t index); + + /// Issue an explicit "homing" command into the MMU + void Home(uint8_t mode); + + /// @returns current state of FINDA (true=filament present, false=filament not present) + inline bool FindaDetectsFilament()const { return logic.FindaPressed(); } + +private: + /// Perform software self-reset of the MMU (sends an X0 command) + void ResetX0(); + + /// Trigger reset pin of the MMU + void TriggerResetPin(); + + /// Perform power cycle of the MMU (cold boot) + /// Please note this is a blocking operation (sleeps for some time inside while doing the power cycle) + void PowerCycle(); + + /// Stop the communication, but keep the MMU powered on (for scenarios with incorrect FW version) + void StopKeepPowered(); + + /// Along with the mmu_loop method, this loops until a response from the MMU is received and acts upon. + /// In case of an error, it parks the print head and turns off nozzle heating + void manage_response(const bool move_axes, const bool turn_off_nozzle); + + /// Performs one step of the protocol logic state machine + /// and reports progress and errors if needed to attached ExtUIs. + /// Updates the global state of MMU (Active/Connecting/Stopped) at runtime, see @ref State + StepStatus LogicStep(); + + void filament_ramming(); + void execute_extruder_sequence(const E_Step *sequence, int steps); + void SetActiveExtruder(uint8_t ex); + + /// Reports an error into attached ExtUIs + /// @param ec error code, see ErrorCode + void ReportError(ErrorCode ec); + + /// Reports progress of operations into attached ExtUIs + /// @param pc progress code, see ProgressCode + void ReportProgress(ProgressCode pc); + + /// Responds to a change of MMU's progress + /// - plans additional steps, e.g. starts the E-motor after fsensor trigger + void OnMMUProgressMsg(ProgressCode pc); + + /// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) + void LogErrorEvent(const char *msg); + + /// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) + void LogEchoEvent(const char *msg); + + /// Save print and park the print head + void SaveAndPark(bool move_axes, bool turn_off_nozzle); + + /// Resume print (unpark, turn on heating etc.) + void ResumeAndUnPark(bool move_axes, bool turn_off_nozzle); + + /// Check for any button/user input coming from the printer's UI + void CheckUserInput(); + + /// Entry check of all external commands. + /// It can wait until the MMU becomes ready. + /// Optionally, it can also emit/display an error screen and the user can decide what to do next. + /// @returns false if the MMU is not ready to perform the command (for whatever reason) + bool WaitForMMUReady(); + + ProtocolLogic logic; ///< implementation of the protocol logic layer + int extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet + + xyz_pos_t resume_position; + int16_t resume_hotend_temp; + + ProgressCode lastProgressCode = ProgressCode::OK; + ErrorCode lastErrorCode = ErrorCode::MMU_NOT_RESPONDING; + + StepStatus logicStepLastStatus; + + enum xState state; + + bool mmu_print_saved; + bool loadFilamentStarted; + + friend struct LoadingToNozzleRAII; + /// true in case we are doing the LoadToNozzle operation - that means the filament shall be loaded all the way down to the nozzle + /// unlike the mid-print ToolChange commands, which only load the first ~30mm and then the G-code takes over. + bool loadingToNozzle; +}; + +/// following Marlin's way of doing stuff - one and only instance of MMU implementation in the code base +/// + avoiding buggy singletons on the AVR platform +extern MMU2 mmu2; + +} // namespace MMU2 diff --git a/Firmware/mmu2/error_codes.h b/Firmware/mmu2/error_codes.h new file mode 100644 index 000000000..1b495898c --- /dev/null +++ b/Firmware/mmu2/error_codes.h @@ -0,0 +1,97 @@ +/// @file error_codes.h +#pragma once +#include + +/// A complete set of error codes which may be a result of a high-level command/operation. +/// This header file shall be included in the printer's firmware as well as a reference, +/// therefore the error codes have been extracted to one place. +/// +/// Please note the errors are intentionally coded as "negative" values (highest bit set), +/// becase they are a complement to reporting the state of the high-level state machines - +/// positive values are considered as normal progress, negative values are errors. +/// +/// Please note, that multiple TMC errors can occur at once, thus they are defined as a bitmask of the higher byte. +/// Also, as there are 3 TMC drivers on the board, each error is added a bit for the corresponding TMC - +/// TMC_PULLEY_BIT, TMC_SELECTOR_BIT, TMC_IDLER_BIT, +/// The resulting error is a bitwise OR over 3 TMC drivers and their status, which should cover most of the situations correctly. +enum class ErrorCode : uint_fast16_t { + RUNNING = 0x0000, ///< the operation is still running - keep this value as ZERO as it is used for initialization of error codes as well + OK = 0x0001, ///< the operation finished OK + + // TMC bit masks + TMC_PULLEY_BIT = 0x0040, ///< +64 TMC Pulley bit + TMC_SELECTOR_BIT = 0x0080, ///< +128 TMC Pulley bit + TMC_IDLER_BIT = 0x0100, ///< +256 TMC Pulley bit + + /// Unload Filament related error codes + FINDA_DIDNT_SWITCH_ON = 0x8001, ///< E32769 FINDA didn't switch on while loading filament - either there is something blocking the metal ball or a cable is broken/disconnected + FINDA_DIDNT_SWITCH_OFF = 0x8002, ///< E32770 FINDA didn't switch off while unloading filament + + FSENSOR_DIDNT_SWITCH_ON = 0x8003, ///< E32771 Filament sensor didn't switch on while performing LoadFilament + FSENSOR_DIDNT_SWITCH_OFF = 0x8004, ///< E32772 Filament sensor didn't switch off while performing UnloadFilament + + FILAMENT_ALREADY_LOADED = 0x8005, ///< E32773 cannot perform operation LoadFilament or move the selector as the filament is already loaded + + INVALID_TOOL = 0x8006, ///< E32774 tool/slot index out of range (typically issuing T5 into an MMU with just 5 slots - valid range 0-4) + + HOMING_FAILED = 0x8007, ///< generic homing failed error - always reported with the corresponding axis bit set (Idler or Selector) as follows: + HOMING_SELECTOR_FAILED = HOMING_FAILED | TMC_SELECTOR_BIT, ///< E32903 the Selector was unable to home properly - that means something is blocking its movement + HOMING_IDLER_FAILED = HOMING_FAILED | TMC_IDLER_BIT, ///< E33031 the Idler was unable to home properly - that means something is blocking its movement + STALLED_PULLEY = HOMING_FAILED | TMC_PULLEY_BIT, ///< E32839 for the Pulley "homing" means just stallguard detected during Pulley's operation (Pulley doesn't home) + + QUEUE_FULL = 0x802b, ///< E32811 internal logic error - attempt to move with a full queue + + VERSION_MISMATCH = 0x802c, ///< E32812 internal error of the printer - incompatible version of the MMU FW + PROTOCOL_ERROR = 0x802d, ///< E32813 internal error of the printer - communication with the MMU got garbled - protocol decoder couldn't decode the incoming messages + MMU_NOT_RESPONDING = 0x802e, ///< E32814 internal error of the printer - communication with the MMU is not working + INTERNAL = 0x802f, ///< E32815 internal runtime error (software) + + /// TMC driver init error - TMC dead or bad communication + /// - E33344 Pulley TMC driver + /// - E33404 Selector TMC driver + /// - E33536 Idler TMC driver + /// - E33728 All 3 TMC driver + TMC_IOIN_MISMATCH = 0x8200, + + /// TMC driver reset - recoverable, we just need to rehome the axis + /// Idler: can be rehomed any time + /// Selector: if there is a filament, remove it and rehome, if there is no filament, just rehome + /// Pulley: do nothing - for the loading sequence - just restart and move slowly, for the unload sequence just restart + /// - E33856 Pulley TMC driver + /// - E33920 Selector TMC driver + /// - E34048 Idler TMC driver + /// - E34240 All 3 TMC driver + TMC_RESET = 0x8400, + + /// not enough current for the TMC, NOT RECOVERABLE + /// - E34880 Pulley TMC driver + /// - E34944 Selector TMC driver + /// - E35072 Idler TMC driver + /// - E35264 All 3 TMC driver + TMC_UNDERVOLTAGE_ON_CHARGE_PUMP = 0x8800, + + /// TMC driver serious error - short to ground on coil A or coil B - dangerous to recover + /// - E36928 Pulley TMC driver + /// - E36992 Selector TMC driver + /// - E37120 Idler TMC driver + /// - E37312 All 3 TMC driver + TMC_SHORT_TO_GROUND = 0x9000, + + /// TMC driver over temperature warning - can be recovered by restarting the driver. + /// If this error happens, we should probably go into the error state as soon as the current command is finished. + /// The driver technically still works at this point. + /// - E41024 Pulley TMC driver + /// - E41088 Selector TMC driver + /// - E41216 Idler TMC driver + /// - E41408 All 3 TMC driver + TMC_OVER_TEMPERATURE_WARN = 0xA000, + + /// TMC driver over temperature error - we really shouldn't ever reach this error. + /// It can still be recovered if the driver cools down below 120C. + /// The driver needs to be disabled and enabled again for operation to resume after this error is cleared. + /// - E49216 Pulley TMC driver + /// - E49280 Selector TMC driver + /// - E49408 Idler TMC driver + /// - E49600 All 3 TMC driver + TMC_OVER_TEMPERATURE_ERROR = 0xC000 +}; diff --git a/Firmware/mmu2/progress_codes.h b/Firmware/mmu2/progress_codes.h new file mode 100644 index 000000000..bdb17c647 --- /dev/null +++ b/Firmware/mmu2/progress_codes.h @@ -0,0 +1,42 @@ +/// @file progress_codes.h +#pragma once +#include + +/// A complete set of progress codes which may be reported while running a high-level command/operation +/// This header file shall be included in the printer's firmware as well as a reference, +/// therefore the progress codes have been extracted to one place +enum class ProgressCode : uint_fast8_t { + OK = 0, ///< finished ok + + EngagingIdler, // P1 + DisengagingIdler, // P2 + UnloadingToFinda, // P3 + UnloadingToPulley, //P4 + FeedingToFinda, // P5 + FeedingToBondtech, // P6 + FeedingToNozzle, // P7 + AvoidingGrind, // P8 + FinishingMoves, // P9 + + ERRDisengagingIdler, // P10 + ERREngagingIdler, // P11 + ERRWaitingForUser, // P12 + ERRInternal, // P13 + ERRHelpingFilament, // P14 + ERRTMCFailed, // P15 + + UnloadingFilament, // P16 + LoadingFilament, // P17 + SelectingFilamentSlot, // P18 + PreparingBlade, // P19 + PushingFilament, // P20 + PerformingCut, // P21 + ReturningSelector, // P22 + ParkingSelector, // P23 + EjectingFilament, // P24 + RetractingFromFinda, // P25 + + Homing, + + Empty = 0xff // dummy empty state +}; diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp new file mode 100644 index 000000000..2165bfb10 --- /dev/null +++ b/Firmware/mmu2_error_converter.cpp @@ -0,0 +1,6 @@ +#include "mmu2_error_converter.h" + +namespace MMU2 { +// @@TODO +void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { } +} diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h new file mode 100644 index 000000000..5166863ea --- /dev/null +++ b/Firmware/mmu2_error_converter.h @@ -0,0 +1,7 @@ +#pragma once +#include +#include + +namespace MMU2 { +void TranslateErr(uint16_t ec, char *dst, size_t dstSize); +} diff --git a/Firmware/mmu2_fsensor.cpp b/Firmware/mmu2_fsensor.cpp new file mode 100644 index 000000000..ee9a70573 --- /dev/null +++ b/Firmware/mmu2_fsensor.cpp @@ -0,0 +1,14 @@ +#include "mmu2_fsensor.h" + +namespace MMU2 { + +FilamentState WhereIsFilament(){ + // @@TODO + return FilamentState::IN_NOZZLE; +} + +// on AVR this does nothing +BlockRunoutRAII::BlockRunoutRAII() { } +BlockRunoutRAII::~BlockRunoutRAII() { } + +} // namespace MMU2 diff --git a/Firmware/mmu2_fsensor.h b/Firmware/mmu2_fsensor.h new file mode 100644 index 000000000..9450c206c --- /dev/null +++ b/Firmware/mmu2_fsensor.h @@ -0,0 +1,24 @@ +#pragma once +#include + +namespace MMU2 { + +/// Possible states of filament from the perspective of presence in various parts of the printer +/// Beware, the numeric codes are important and sent into the MMU +enum class FilamentState : uint_fast8_t { + NOT_PRESENT = 0, ///< filament sensor doesn't see the filament + AT_FSENSOR = 1, ///< filament detected by the filament sensor, but the nozzle has not detected the filament yet + IN_NOZZLE = 2 ///< filament detected by the filament sensor and also loaded in the nozzle +}; + +FilamentState WhereIsFilament(); + +/// Can be used to block printer's filament sensor handling - to avoid errorneous injecting of M600 +/// while doing a toolchange with the MMU +class BlockRunoutRAII { +public: + BlockRunoutRAII(); + ~BlockRunoutRAII(); +}; + +} // namespace MMU2 diff --git a/Firmware/mmu2_log.h b/Firmware/mmu2_log.h new file mode 100644 index 000000000..0194534d9 --- /dev/null +++ b/Firmware/mmu2_log.h @@ -0,0 +1,23 @@ +#pragma once + +#ifndef UNITTEST +#include "Marlin.h" + +// Beware - before changing this prefix, think twice +// you'd need to change appmain.cpp app_marlin_serial_output_write_hook +// and MMU2::ReportError + MMU2::ReportProgress +static constexpr char mmu2Magic[] PROGMEM = "MMU2:"; + +#define SERIAL_MMU2() { serialprintPGM(mmu2Magic); } + +#define MMU2_ECHO_MSG(S) do{ SERIAL_ECHO_START; SERIAL_MMU2(); SERIAL_ECHO(S); }while(0) +#define MMU2_ERROR_MSG(S) do{ SERIAL_ERROR_START; SERIAL_MMU2(); SERIAL_ECHO(S); }while(0) + +#else // #ifndef UNITTEST + +#define MMU2_ECHO_MSG(S) /* */ +#define MMU2_ERROR_MSG(S) /* */ +#define SERIAL_ECHO(S) /* */ +#define SERIAL_ECHOLN(S) /* */ + +#endif // #ifndef UNITTEST diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp new file mode 100644 index 000000000..32f93df26 --- /dev/null +++ b/Firmware/mmu2_power.cpp @@ -0,0 +1,12 @@ +#include "mmu2_power.h" + +namespace MMU2 { + +// sadly, on MK3 we cannot do this on HW +void power_on() { } + +void power_off() { } + +void reset() { } + +} // namespace MMU2 diff --git a/Firmware/mmu2_power.h b/Firmware/mmu2_power.h new file mode 100644 index 000000000..d4ee1b129 --- /dev/null +++ b/Firmware/mmu2_power.h @@ -0,0 +1,11 @@ +#pragma once + +namespace MMU2 { + +void power_on(); + +void power_off(); + +void reset(); + +} // namespace MMU2 diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp new file mode 100644 index 000000000..aefe3f731 --- /dev/null +++ b/Firmware/mmu2_progress_converter.cpp @@ -0,0 +1,6 @@ +#include "mmu2_progress_converter.h" + +namespace MMU2 { +//@@TODO +void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { } +} diff --git a/Firmware/mmu2_progress_converter.h b/Firmware/mmu2_progress_converter.h new file mode 100644 index 000000000..97fd344b8 --- /dev/null +++ b/Firmware/mmu2_progress_converter.h @@ -0,0 +1,7 @@ +#pragma once +#include +#include + +namespace MMU2 { +void TranslateProgress(uint16_t pc, char *dst, size_t dstSize); +} diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp new file mode 100644 index 000000000..6fdf9c1b7 --- /dev/null +++ b/Firmware/mmu2_protocol.cpp @@ -0,0 +1,247 @@ +/// @file +#include "mmu2_protocol.h" + +// protocol definition +// command: Q0 +// meaning: query operation status +// Query/command: query +// Expected reply from the MMU: +// any of the running operation statuses: OID: [T|L|U|E|C|W|K][0-4] +// P[0-9] : command being processed i.e. operation running, may contain a state number +// E[0-9][0-9] : error 1-9 while doing a tool change +// F : operation finished - will be repeated to "Q" messages until a new command is issued + +namespace modules { +namespace protocol { + +// decoding automaton +// states: input -> transition into state +// Code QTLMUXPSBEWK -> msgcode +// \n ->start +// * ->error +// error \n ->start +// * ->error +// msgcode 0-9 ->msgvalue +// * ->error +// msgvalue 0-9 ->msgvalue +// \n ->start successfully accepted command + +DecodeStatus Protocol::DecodeRequest(uint8_t c) { + switch (rqState) { + case RequestStates::Code: + switch (c) { + case 'Q': + case 'T': + case 'L': + case 'M': + case 'U': + case 'X': + case 'P': + case 'S': + case 'B': + case 'E': + case 'W': + case 'K': + case 'F': + case 'f': + case 'H': + requestMsg.code = (RequestMsgCodes)c; + requestMsg.value = 0; + rqState = RequestStates::Value; + return DecodeStatus::NeedMoreData; + default: + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } + case RequestStates::Value: + if (IsDigit(c)) { + requestMsg.value *= 10; + requestMsg.value += c - '0'; + return DecodeStatus::NeedMoreData; + } else if (IsNewLine(c)) { + rqState = RequestStates::Code; + return DecodeStatus::MessageCompleted; + } else { + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } + default: //case error: + if (IsNewLine(c)) { + rqState = RequestStates::Code; + return DecodeStatus::MessageCompleted; + } else { + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } + } +} + +uint8_t Protocol::EncodeRequest(const RequestMsg &msg, uint8_t *txbuff) { + constexpr uint8_t reqSize = 3; + txbuff[0] = (uint8_t)msg.code; + txbuff[1] = msg.value + '0'; + txbuff[2] = '\n'; + return reqSize; + static_assert(reqSize <= MaxRequestSize(), "Request message length exceeded the maximum size, increase the magic constant in MaxRequestSize()"); +} + +DecodeStatus Protocol::DecodeResponse(uint8_t c) { + switch (rspState) { + case ResponseStates::RequestCode: + switch (c) { + case 'Q': + case 'T': + case 'L': + case 'M': + case 'U': + case 'X': + case 'P': + case 'S': + case 'B': + case 'E': + case 'W': + case 'K': + case 'F': + case 'f': + case 'H': + responseMsg.request.code = (RequestMsgCodes)c; + responseMsg.request.value = 0; + rspState = ResponseStates::RequestValue; + return DecodeStatus::NeedMoreData; + case 0x0a: + case 0x0d: + // skip leading whitespace if any (makes integration with other SW easier/tolerant) + return DecodeStatus::NeedMoreData; + default: + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } + case ResponseStates::RequestValue: + if (IsDigit(c)) { + responseMsg.request.value *= 10; + responseMsg.request.value += c - '0'; + return DecodeStatus::NeedMoreData; + } else if (c == ' ') { + rspState = ResponseStates::ParamCode; + return DecodeStatus::NeedMoreData; + } else { + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } + case ResponseStates::ParamCode: + switch (c) { + case 'P': + case 'E': + case 'F': + case 'A': + case 'R': + rspState = ResponseStates::ParamValue; + responseMsg.paramCode = (ResponseMsgParamCodes)c; + responseMsg.paramValue = 0; + return DecodeStatus::NeedMoreData; + default: + responseMsg.paramCode = ResponseMsgParamCodes::unknown; + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } + case ResponseStates::ParamValue: + if (IsDigit(c)) { + responseMsg.paramValue *= 10; + responseMsg.paramValue += c - '0'; + return DecodeStatus::NeedMoreData; + } else if (IsNewLine(c)) { + rspState = ResponseStates::RequestCode; + return DecodeStatus::MessageCompleted; + } else { + responseMsg.paramCode = ResponseMsgParamCodes::unknown; + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } + default: //case error: + if (IsNewLine(c)) { + rspState = ResponseStates::RequestCode; + return DecodeStatus::MessageCompleted; + } else { + responseMsg.paramCode = ResponseMsgParamCodes::unknown; + return DecodeStatus::Error; + } + } +} + +uint8_t Protocol::EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCodes ar, uint8_t *txbuff) { + txbuff[0] = (uint8_t)msg.code; + txbuff[1] = msg.value + '0'; + txbuff[2] = ' '; + txbuff[3] = (uint8_t)ar; + txbuff[4] = '\n'; + return 5; +} + +uint8_t Protocol::EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff) { + txbuff[0] = (uint8_t)msg.code; + txbuff[1] = msg.value + '0'; + txbuff[2] = ' '; + txbuff[3] = (uint8_t)ResponseMsgParamCodes::Accepted; + txbuff[4] = findaValue + '0'; + txbuff[5] = '\n'; + return 6; +} + +uint8_t Protocol::EncodeResponseVersion(const RequestMsg &msg, uint8_t value, uint8_t *txbuff) { + txbuff[0] = (uint8_t)msg.code; + txbuff[1] = msg.value + '0'; + txbuff[2] = ' '; + txbuff[3] = (uint8_t)ResponseMsgParamCodes::Accepted; + uint8_t *dst = txbuff + 4; + if (value < 10) { + *dst++ = value + '0'; + } else if (value < 100) { + *dst++ = value / 10 + '0'; + *dst++ = value % 10 + '0'; + } else { + *dst++ = value / 100 + '0'; + *dst++ = (value / 10) % 10 + '0'; + *dst++ = value % 10 + '0'; + } + *dst = '\n'; + return dst - txbuff + 1; +} + +uint8_t Protocol::EncodeResponseQueryOperation(const RequestMsg &msg, ResponseMsgParamCodes code, uint16_t value, uint8_t *txbuff) { + txbuff[0] = (uint8_t)msg.code; + txbuff[1] = msg.value + '0'; + txbuff[2] = ' '; + txbuff[3] = (uint8_t)code; + uint8_t *dst = txbuff + 4; + if (code != ResponseMsgParamCodes::Finished) { + if (value < 10) { + *dst++ = value + '0'; + } else if (value < 100) { + *dst++ = value / 10 + '0'; + *dst++ = value % 10 + '0'; + } else if (value < 1000) { + *dst++ = value / 100 + '0'; + *dst++ = (value / 10) % 10 + '0'; + *dst++ = value % 10 + '0'; + } else if (value < 10000) { + *dst++ = value / 1000 + '0'; + *dst++ = (value / 100) % 10 + '0'; + *dst++ = (value / 10) % 10 + '0'; + *dst++ = value % 10 + '0'; + } else { + *dst++ = value / 10000 + '0'; + *dst++ = (value / 1000) % 10 + '0'; + *dst++ = (value / 100) % 10 + '0'; + *dst++ = (value / 10) % 10 + '0'; + *dst++ = value % 10 + '0'; + } + } + *dst = '\n'; + return dst - txbuff + 1; +} + +} // namespace protocol +} // namespace modules diff --git a/Firmware/mmu2_protocol.h b/Firmware/mmu2_protocol.h new file mode 100644 index 000000000..68fde9a1a --- /dev/null +++ b/Firmware/mmu2_protocol.h @@ -0,0 +1,184 @@ +/// @file protocol.h +#pragma once +#include + +namespace modules { + +/// @brief The MMU communication protocol implementation and related stuff. +/// +/// See description of the new protocol in the MMU 2021 doc +/// @@TODO possibly add some checksum to verify the correctness of messages +namespace protocol { + +/// Definition of request message codes +enum class RequestMsgCodes : uint8_t { + unknown = 0, + Query = 'Q', + Tool = 'T', + Load = 'L', + Mode = 'M', + Unload = 'U', + Reset = 'X', + Finda = 'P', + Version = 'S', + Button = 'B', + Eject = 'E', + Wait = 'W', + Cut = 'K', + FilamentType = 'F', + FilamentSensor = 'f', + Home = 'H' +}; + +/// Definition of response message parameter codes +enum class ResponseMsgParamCodes : uint8_t { + unknown = 0, + Processing = 'P', + Error = 'E', + Finished = 'F', + Accepted = 'A', + Rejected = 'R' +}; + +/// A request message - requests are being sent by the printer into the MMU. +struct RequestMsg { + RequestMsgCodes code; ///< code of the request message + uint8_t value; ///< value of the request message + + /// @param code of the request message + /// @param value of the request message + inline RequestMsg(RequestMsgCodes code, uint8_t value) + : code(code) + , value(value) {} +}; + +/// A response message - responses are being sent from the MMU into the printer as a response to a request message. +struct ResponseMsg { + RequestMsg request; ///< response is always preceeded by the request message + ResponseMsgParamCodes paramCode; ///< code of the parameter + uint16_t paramValue; ///< value of the parameter + + /// @param request the source request message this response is a reply to + /// @param paramCode code of the parameter + /// @param paramValue value of the parameter + inline ResponseMsg(RequestMsg request, ResponseMsgParamCodes paramCode, uint16_t paramValue) + : request(request) + , paramCode(paramCode) + , paramValue(paramValue) {} +}; + +/// Message decoding return values +enum class DecodeStatus : uint_fast8_t { + MessageCompleted, ///< message completed and successfully lexed + NeedMoreData, ///< message incomplete yet, waiting for another byte to come + Error, ///< input character broke message decoding +}; + +/// Protocol class is responsible for creating/decoding messages in Rx/Tx buffer +/// +/// Beware - in the decoding more, it is meant to be a statefull instance which works through public methods +/// processing one input byte per call. +class Protocol { +public: + inline Protocol() + : rqState(RequestStates::Code) + , requestMsg(RequestMsgCodes::unknown, 0) + , rspState(ResponseStates::RequestCode) + , responseMsg(RequestMsg(RequestMsgCodes::unknown, 0), ResponseMsgParamCodes::unknown, 0) { + } + + /// Takes the input byte c and steps one step through the state machine + /// @returns state of the message being decoded + DecodeStatus DecodeRequest(uint8_t c); + + /// Decodes response message in rxbuff + /// @returns decoded response message structure + DecodeStatus DecodeResponse(uint8_t c); + + /// Encodes request message msg into txbuff memory + /// It is expected the txbuff is large enough to fit the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeRequest(const RequestMsg &msg, uint8_t *txbuff); + + /// @returns the maximum byte length necessary to encode a request message + /// Beneficial in case of pre-allocating a buffer for enconding a RequestMsg. + static constexpr uint8_t MaxRequestSize() { return 3; } + + /// Encode generic response Command Accepted or Rejected + /// @param msg source request message for this response + /// @param ar code of response parameter + /// @param txbuff where to format the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCodes ar, uint8_t *txbuff); + + /// Encode response to Read FINDA query + /// @param msg source request message for this response + /// @param findaValue 1/0 (on/off) status of FINDA + /// @param txbuff where to format the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff); + + /// Encode response to Version query + /// @param msg source request message for this response + /// @param value version number (0-255) + /// @param txbuff where to format the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeResponseVersion(const RequestMsg &msg, uint8_t value, uint8_t *txbuff); + + /// Encode response to Query operation status + /// @param msg source request message for this response + /// @param code status of operation (Processing, Error, Finished) + /// @param value related to status of operation(e.g. error code or progress) + /// @param txbuff where to format the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeResponseQueryOperation(const RequestMsg &msg, ResponseMsgParamCodes code, uint16_t value, uint8_t *txbuff); + + /// @returns the most recently lexed request message + inline const RequestMsg GetRequestMsg() const { return requestMsg; } + + /// @returns the most recently lexed response message + inline const ResponseMsg GetResponseMsg() const { return responseMsg; } + + /// resets the internal request decoding state (typically after an error) + void ResetRequestDecoder() { + rqState = RequestStates::Code; + } + + /// resets the internal response decoding state (typically after an error) + void ResetResponseDecoder() { + rspState = ResponseStates::RequestCode; + } + +private: + enum class RequestStates : uint8_t { + Code, ///< starting state - expects message code + Value, ///< expecting code value + Error ///< automaton in error state + }; + + RequestStates rqState; + RequestMsg requestMsg; + + enum class ResponseStates : uint8_t { + RequestCode, ///< starting state - expects message code + RequestValue, ///< expecting code value + ParamCode, ///< expecting param code + ParamValue, ///< expecting param value + Error ///< automaton in error state + }; + + ResponseStates rspState; + ResponseMsg responseMsg; + + static bool IsNewLine(uint8_t c) { + return c == '\n' || c == '\r'; + } + static bool IsDigit(uint8_t c) { + return c >= '0' && c <= '9'; + } +}; + +} // namespace protocol +} // namespace modules + +namespace mp = modules::protocol; diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp new file mode 100644 index 000000000..3dde6fae7 --- /dev/null +++ b/Firmware/mmu2_protocol_logic.cpp @@ -0,0 +1,564 @@ +#include "mmu2_protocol_logic.h" +#include "mmu2_log.h" +#include "mmu2_fsensor.h" +#include "system_timer.h" +#include + +namespace MMU2 { + +StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, State nextState){ + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + logic->findaPressed = logic->rsp.paramValue; + state = nextState; + return finishedRV; +} + +void ProtocolLogicPartBase::CheckAndReportAsyncEvents(){ + // even when waiting for a query period, we need to report a change in filament sensor's state + // - it is vital for a precise synchronization of moves of the printer and the MMU + uint8_t fs = (uint8_t)WhereIsFilament(); + if( fs != logic->lastFSensor ){ + SendAndUpdateFilamentSensor(); + } +} + +void ProtocolLogicPartBase::SendQuery(){ + logic->SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); + state = State::QuerySent; +} + +void ProtocolLogicPartBase::SendFINDAQuery(){ + logic->SendMsg(RequestMsg(RequestMsgCodes::Finda, 0 ) ); + state = State::FINDAReqSent; +} + +void ProtocolLogicPartBase::SendAndUpdateFilamentSensor(){ + logic->SendMsg(RequestMsg(RequestMsgCodes::FilamentSensor, logic->lastFSensor = (uint8_t)WhereIsFilament() ) ); + state = State::FilamentSensorStateSent; +} + +void ProtocolLogicPartBase::SendButton(uint8_t btn){ + logic->SendMsg(RequestMsg(RequestMsgCodes::Button, btn)); + state = State::ButtonSent; +} + +StepStatus ProtocolLogic::ProcessUARTByte(uint8_t c) { + switch (protocol.DecodeResponse(c)) { + case DecodeStatus::MessageCompleted: + // @@TODO reset direction of communication + return MessageReady; + case DecodeStatus::NeedMoreData: + return Processing; + case DecodeStatus::Error: + default: + return ProtocolError; + } +} + +StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { + int bytesConsumed = 0; + int c = -1; + + // try to consume as many rx bytes as possible (until a message has been completed) + while((c = uart->read()) >= 0){ + ++bytesConsumed; + RecordReceivedByte(c); + switch (protocol.DecodeResponse(c)) { + case DecodeStatus::MessageCompleted: + rsp = protocol.GetResponseMsg(); + LogResponse(); + // @@TODO reset direction of communication + RecordUARTActivity(); // something has happened on the UART, update the timeout record + return MessageReady; + case DecodeStatus::NeedMoreData: + break; + case DecodeStatus::Error: + default: + RecordUARTActivity(); // something has happened on the UART, update the timeout record + return ProtocolError; + } + } + if( bytesConsumed != 0 ){ + RecordUARTActivity(); // something has happened on the UART, update the timeout record + return Processing; // consumed some bytes, but message still not ready + } else if (Elapsed(timeout)) { + return CommunicationTimeout; + } + return Processing; +} + +void ProtocolLogic::SendMsg(RequestMsg rq) { + uint8_t txbuff[Protocol::MaxRequestSize()]; + uint8_t len = Protocol::EncodeRequest(rq, txbuff); + uart->write(txbuff, len); + LogRequestMsg(txbuff, len); + RecordUARTActivity(); +} + +void StartSeq::Restart() { + state = State::S0Sent; + logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 0)); +} + +StepStatus StartSeq::Step() { + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + + // solve initial handshake + switch (state) { + case State::S0Sent: // received response to S0 - major + if (logic->rsp.paramValue != 2) { + return VersionMismatch; + } + logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking + logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 1)); + state = State::S1Sent; + break; + case State::S1Sent: // received response to S1 - minor + if (logic->rsp.paramValue != 0) { + return VersionMismatch; + } + logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 2)); + state = State::S2Sent; + break; + case State::S2Sent: // received response to S2 - revision + if (logic->rsp.paramValue != 0) { + return VersionMismatch; + } + // Start General Interrogation after line up. + // For now we just send the state of the filament sensor, but we may request + // data point states from the MMU as well. TBD in the future, especially with another protocol + SendAndUpdateFilamentSensor(); + break; + case State::FilamentSensorStateSent: + state = State::Ready; + return Finished; + break; + default: + return VersionMismatch; + } + return Processing; +} + +void Command::Restart() { + state = State::CommandSent; + logic->SendMsg(logic->command.rq); +} + +StepStatus Command::Step() { + switch (state) { + case State::CommandSent: { + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + + switch (logic->rsp.paramCode) { // the response should be either accepted or rejected + case ResponseMsgParamCodes::Accepted: + logic->progressCode = ProgressCode::OK; + logic->errorCode = ErrorCode::RUNNING; + state = State::Wait; + break; + case ResponseMsgParamCodes::Rejected: + // rejected - should normally not happen, but report the error up + logic->progressCode = ProgressCode::OK; + logic->errorCode = ErrorCode::PROTOCOL_ERROR; + return CommandRejected; + default: + return ProtocolError; + } + } break; + case State::Wait: + if (logic->Elapsed(heartBeatPeriod)) { + SendQuery(); + } else { + // even when waiting for a query period, we need to report a change in filament sensor's state + // - it is vital for a precise synchronization of moves of the printer and the MMU + CheckAndReportAsyncEvents(); + } + break; + case State::QuerySent: { + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + } + // [[fallthrough]]; + case State::ContinueFromIdle: + switch (logic->rsp.paramCode) { + case ResponseMsgParamCodes::Processing: + logic->progressCode = static_cast(logic->rsp.paramValue); + logic->errorCode = ErrorCode::OK; + SendAndUpdateFilamentSensor(); // keep on reporting the state of fsensor regularly + break; + case ResponseMsgParamCodes::Error: + // in case of an error the progress code remains as it has been before + logic->errorCode = static_cast(logic->rsp.paramValue); + // keep on reporting the state of fsensor regularly even in command error state + // - the MMU checks FINDA and fsensor even while recovering from errors + SendAndUpdateFilamentSensor(); + return CommandError; + case ResponseMsgParamCodes::Finished: + logic->progressCode = ProgressCode::OK; + state = State::Ready; + return Finished; + default: + return ProtocolError; + } + break; + case State::FilamentSensorStateSent:{ + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + SendFINDAQuery(); + } break; + case State::FINDAReqSent: + return ProcessFINDAReqSent(Processing, State::Wait); + case State::ButtonSent:{ + // button is never confirmed ... may be it should be + // auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + // if (expmsg != MessageReady) + // return expmsg; + SendQuery(); + } break; + default: + return ProtocolError; + } + return Processing; +} + +void Idle::Restart() { + state = State::Ready; +} + +StepStatus Idle::Step() { + switch (state) { + case State::Ready: // check timeout + if (logic->Elapsed(heartBeatPeriod)) { + logic->SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); + state = State::QuerySent; + return Processing; + } + break; + case State::QuerySent: { // check UART + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. + // That causes no issues here, we just need to switch to Command processing and continue there from now on. + // The usual response in this case should be some command and "F" - finished - that confirms we are in an Idle state even on the MMU side. + switch( logic->rsp.request.code ){ + case RequestMsgCodes::Cut: + case RequestMsgCodes::Eject: + case RequestMsgCodes::Load: + case RequestMsgCodes::Mode: + case RequestMsgCodes::Tool: + case RequestMsgCodes::Unload: + if( logic->rsp.paramCode != ResponseMsgParamCodes::Finished ){ + logic->SwitchFromIdleToCommand(); + return Processing; + } + default: + break; + } + SendFINDAQuery(); + return Processing; + } break; + case State::FINDAReqSent: + return ProcessFINDAReqSent(Finished, State::Ready); + default: + return ProtocolError; + } + + // The "return Finished" in this state machine requires a bit of explanation: + // The Idle state either did nothing (still waiting for the heartbeat timeout) + // or just successfully received the answer to Q0, whatever that was. + // In both cases, it is ready to hand over work to a command or something else, + // therefore we are returning Finished (also to exit mmu_loop() and unblock Marlin's loop!). + // If there is no work, we'll end up in the Idle state again + // and we'll send the heartbeat message after the specified timeout. + return Finished; +} + +ProtocolLogic::ProtocolLogic(MMU2Serial *uart) + : stopped(this) + , startSeq(this) + , idle(this) + , command(this) + , currentState(&stopped) + , plannedRq(RequestMsgCodes::unknown, 0) + , lastUARTActivityMs(0) + , rsp(RequestMsg(RequestMsgCodes::unknown, 0), ResponseMsgParamCodes::unknown, 0) + , state(State::Stopped) + , lrb(0) + , uart(uart) + , lastFSensor((uint8_t)WhereIsFilament()) +{} + +void ProtocolLogic::Start() { + state = State::InitSequence; + currentState = &startSeq; + startSeq.Restart(); +} + +void ProtocolLogic::Stop() { + state = State::Stopped; + currentState = &stopped; +} + +void ProtocolLogic::ToolChange(uint8_t slot) { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Tool, slot)); +} + +void ProtocolLogic::UnloadFilament() { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Unload, 0)); +} + +void ProtocolLogic::LoadFilament(uint8_t slot) { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Load, slot)); +} + +void ProtocolLogic::EjectFilament(uint8_t slot) { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Eject, slot)); +} + +void ProtocolLogic::CutFilament(uint8_t slot){ + PlanGenericRequest(RequestMsg(RequestMsgCodes::Cut, slot)); +} + +void ProtocolLogic::ResetMMU() { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Reset, 0)); +} + +void ProtocolLogic::Button(uint8_t index){ + PlanGenericRequest(RequestMsg(RequestMsgCodes::Button, index)); +} + +void ProtocolLogic::Home(uint8_t mode){ + PlanGenericRequest(RequestMsg(RequestMsgCodes::Home, mode)); +} + +void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { + plannedRq = rq; + if( ! currentState->ExpectsResponse() ){ + ActivatePlannedRequest(); + } // otherwise wait for an empty window to activate the request +} + +bool MMU2::ProtocolLogic::ActivatePlannedRequest(){ + if( plannedRq.code == RequestMsgCodes::Button ){ + // only issue the button to the MMU and do not restart the state machines + command.SendButton(plannedRq.value); + plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); + return true; + } else if( plannedRq.code != RequestMsgCodes::unknown ){ + currentState = &command; + command.SetRequestMsg(plannedRq); + plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); + command.Restart(); + return true; + } + return false; +} + +void ProtocolLogic::SwitchFromIdleToCommand(){ + currentState = &command; + command.SetRequestMsg(rsp.request); + // we are recovering from a communication drop out, the command is already running + // and we have just received a response to a Q0 message about a command progress + command.ContinueFromIdle(); +} + +void ProtocolLogic::SwitchToIdle() { + state = State::Running; + currentState = &idle; + idle.Restart(); +} + +void ProtocolLogic::HandleCommunicationTimeout() { + uart->flush(); // clear the output buffer + currentState = &startSeq; + state = State::InitSequence; + startSeq.Restart(); +} + +bool ProtocolLogic::Elapsed(uint32_t timeout) const { + return _millis() >= (lastUARTActivityMs + timeout); +} + +void ProtocolLogic::RecordUARTActivity() { + lastUARTActivityMs = _millis(); +} + +void ProtocolLogic::RecordReceivedByte(uint8_t c){ + lastReceivedBytes[lrb] = c; + lrb = (lrb+1) % lastReceivedBytes.size(); +} + +char NibbleToChar(uint8_t c){ + switch (c) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + return c + '0'; + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + return (c - 10) + 'a'; + default: + return 0; + } +} + +void ProtocolLogic::FormatLastReceivedBytes(char *dst){ + for(uint8_t i = 0; i < lastReceivedBytes.size(); ++i){ + uint8_t b = lastReceivedBytes[ (lrb-i-1) % lastReceivedBytes.size() ]; + dst[i*3] = NibbleToChar(b >> 4); + dst[i*3+1] = NibbleToChar(b & 0xf); + dst[i*3+2] = ' '; + } + dst[ (lastReceivedBytes.size() - 1) * 3 + 2] = 0; // terminate properly +} + +void ProtocolLogic::FormatLastResponseMsgAndClearLRB(char *dst){ + *dst++ = '<'; + for(uint8_t i = 0; i < lrb; ++i){ + uint8_t b = lastReceivedBytes[ i ]; + if( b < 32 )b = '.'; + if( b > 127 )b = '.'; + *dst++ = b; + } + *dst = 0; // terminate properly + lrb = 0; // reset the input buffer index in case of a clean message +} + +void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ + constexpr uint_fast8_t rqs = modules::protocol::Protocol::MaxRequestSize() + 2; + char tmp[rqs] = ">"; + static char lastMsg[rqs] = ""; + for(uint8_t i = 0; i < size; ++i){ + uint8_t b = txbuff[i]; + if( b < 32 )b = '.'; + if( b > 127 )b = '.'; + tmp[i+1] = b; + } + tmp[size+1] = '\n'; + tmp[size+2] = 0; + if( !strncmp(tmp, ">S0.\n", rqs) && !strncmp(lastMsg, tmp, rqs) ){ + // @@TODO we skip the repeated request msgs for now + // to avoid spoiling the whole log just with ">S0" messages + // especially when the MMU is not connected. + // We'll lose the ability to see if the printer is actually + // trying to find the MMU, but since it has been reliable in the past + // we can live without it for now. + } else { + MMU2_ECHO_MSG(tmp); + } + memcpy(lastMsg, tmp, rqs); +} + +void MMU2::ProtocolLogic::LogError(const char *reason){ + char lrb[lastReceivedBytes.size() * 3]; + FormatLastReceivedBytes(lrb); + + MMU2_ERROR_MSG(reason); + SERIAL_ECHO(", last bytes: "); + SERIAL_ECHOLN(lrb); +} + +void ProtocolLogic::LogResponse(){ + char lrb[lastReceivedBytes.size()]; + FormatLastResponseMsgAndClearLRB(lrb); + MMU2_ECHO_MSG(lrb); + SERIAL_ECHOLN(); +} + +StepStatus MMU2::ProtocolLogic::HandleCommError(const char *msg, StepStatus ss){ + protocol.ResetResponseDecoder(); + HandleCommunicationTimeout(); + if( dataTO.Record(ss) ){ + LogError(msg); + return dataTO.InitialCause(); + } else { + return Processing; // suppress short drop outs of communication + } +} + +StepStatus ProtocolLogic::Step() { + if( ! currentState->ExpectsResponse() ){ // if not waiting for a response, activate a planned request immediately + ActivatePlannedRequest(); + } + auto currentStatus = currentState->Step(); + switch (currentStatus) { + case Processing: + // we are ok, the state machine continues correctly + break; + case Finished: { + // We are ok, switching to Idle if there is no potential next request planned. + // But the trouble is we must report a finished command if the previous command has just been finished + // i.e. only try to find some planned command if we just finished the Idle cycle + bool previousCommandFinished = currentState == &command; // @@TODO this is a nasty hack :( + if( ! ActivatePlannedRequest() ){ // if nothing is planned, switch to Idle + SwitchToIdle(); + } else { + // if the previous cycle was Idle and now we have planned a new command -> avoid returning Finished + if( ! previousCommandFinished && currentState == &command){ + currentStatus = Processing; + } + } + } + break; + case CommandRejected: + // we have to repeat it - that's the only thing we can do + // no change in state + // @@TODO wait until Q0 returns command in progress finished, then we can send this one + LogError("Command rejected"); + command.Restart(); + break; + case CommandError: + LogError("Command Error"); + // we shall probably transfer into the Idle state and await further instructions from the upper layer + // Idle state may solve the problem of keeping up the heart beat running + break; + case VersionMismatch: + LogError("Version mismatch"); + Stop(); // cannot continue + break; + case ProtocolError: + currentStatus = HandleCommError("Protocol error", ProtocolError); + break; + case CommunicationTimeout: + currentStatus = HandleCommError("Communication timeout", CommunicationTimeout); + break; + default: + break; + } + return currentStatus; +} + +uint8_t ProtocolLogic::CommandInProgress() const { + if( currentState != &command ) + return 0; + return (uint8_t)command.ReqMsg().code; +} + +bool DropOutFilter::Record(StepStatus ss){ + if( occurrences == maxOccurrences ){ + cause = ss; + } + --occurrences; + return occurrences == 0; +} + +} // namespace MMU2 diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h new file mode 100644 index 000000000..e96f93cd2 --- /dev/null +++ b/Firmware/mmu2_protocol_logic.h @@ -0,0 +1,314 @@ +#pragma once +#include +// #include //@@TODO Don't we have STL for AVR somewhere? +template +class array { + T data[N]; +public: + array() = default; + inline constexpr T* begin()const { return data; } + inline constexpr T* end()const { return data + N; } + constexpr uint8_t size()const { return N; } + inline T &operator[](uint8_t i){ + return data[i]; + } +}; + +#include "mmu2/error_codes.h" +#include "mmu2/progress_codes.h" +#include "mmu2_protocol.h" + +#include "mmu2_serial.h" + +/// New MMU2 protocol logic +namespace MMU2 { + +using namespace modules::protocol; + +class ProtocolLogic; + +/// ProtocolLogic stepping statuses +enum StepStatus : uint_fast8_t { + Processing = 0, + MessageReady, ///< a message has been successfully decoded from the received bytes + Finished, + CommunicationTimeout, ///< the MMU failed to respond to a request within a specified time frame + ProtocolError, ///< bytes read from the MMU didn't form a valid response + CommandRejected, ///< the MMU rejected the command due to some other command in progress, may be the user is operating the MMU locally (button commands) + CommandError, ///< the command in progress stopped due to unrecoverable error, user interaction required + VersionMismatch, ///< the MMU reports its firmware version incompatible with our implementation + CommunicationRecovered, +}; + + +static constexpr uint32_t linkLayerTimeout = 2000; ///< default link layer communication timeout +static constexpr uint32_t dataLayerTimeout = linkLayerTimeout * 3; ///< data layer communication timeout +static constexpr uint32_t heartBeatPeriod = linkLayerTimeout / 2; ///< period of heart beat messages (Q0) + +static_assert( heartBeatPeriod < linkLayerTimeout && linkLayerTimeout < dataLayerTimeout, "Incorrect ordering of timeouts"); + +/// Base class for sub-automata of the ProtocolLogic class. +/// Their operation should never block (wait inside). +class ProtocolLogicPartBase { +public: + inline ProtocolLogicPartBase(ProtocolLogic *logic) + : logic(logic) + , state(State::Ready) {} + + /// Restarts the sub-automaton + virtual void Restart() = 0; + + /// Makes one step in the sub-automaton + /// @returns StepStatus + virtual StepStatus Step() = 0; + + /// @returns true if the state machine is waiting for a response from the MMU + bool ExpectsResponse()const { return state != State::Ready && state != State::Wait; } + +protected: + ProtocolLogic *logic; ///< pointer to parent ProtocolLogic layer + friend class ProtocolLogic; + + /// Common internal states of the derived sub-automata + /// General rule of thumb: *Sent states are waiting for a response from the MMU + enum class State : uint_fast8_t { + Ready, + Wait, + + S0Sent, + S1Sent, + S2Sent, + QuerySent, + CommandSent, + FilamentSensorStateSent, + FINDAReqSent, + ButtonSent, + + ContinueFromIdle + }; + + State state; ///< internal state of the sub-automaton + + /// @returns the status of processing of the FINDA query response + /// @param finishedRV returned value in case the message was successfully received and processed + /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed + StepStatus ProcessFINDAReqSent(StepStatus finishedRV, State nextState); + + /// Called repeatedly while waiting for a query (Q0) period. + /// All event checks to report immediately from the printer to the MMU shall be done in this method. + /// So far, the only such a case is the filament sensor, but there can be more like this in the future. + void CheckAndReportAsyncEvents(); + + void SendQuery(); + + void SendFINDAQuery(); + + void SendAndUpdateFilamentSensor(); + + void SendButton(uint8_t btn); +}; + +/// Starting sequence of the communication with the MMU. +/// The printer shall ask for MMU's version numbers. +/// If everything goes well and the MMU's version is good enough, +/// the ProtocolLogic layer may continue talking to the MMU +class StartSeq : public ProtocolLogicPartBase { +public: + inline StartSeq(ProtocolLogic *logic) + : ProtocolLogicPartBase(logic) {} + void Restart() override; + StepStatus Step() override; +}; + +/// A command and its lifecycle. +/// CommandSent: +/// - the command was placed into the UART TX buffer, awaiting response from the MMU +/// - if the MMU confirms the command, we'll wait for it to finish +/// - if the MMU refuses the command, we report an error (should normally not happen unless someone is hacking the communication without waiting for the previous command to finish) +/// Wait: +/// - waiting for the MMU to process the command - may take several seconds, for example Tool change operation +/// - meawhile, every 300ms we send a Q0 query to obtain the current state of the command being processed +/// - as soon as we receive a response to Q0 from the MMU, we process it in the next state +/// QuerySent - check the reply from the MMU - can be any of the following: +/// - Processing: the MMU is still working +/// - Error: the command failed on the MMU, we'll have the exact error report in the response message +/// - Finished: the MMU finished the command successfully, another command may be issued now +class Command : public ProtocolLogicPartBase { +public: + inline Command(ProtocolLogic *logic) + : ProtocolLogicPartBase(logic) + , rq(RequestMsgCodes::unknown, 0) {} + void Restart() override; + StepStatus Step() override; + inline void SetRequestMsg(RequestMsg msg) { + rq = msg; + } + void ContinueFromIdle(){ + state = State::ContinueFromIdle; + } + inline const RequestMsg &ReqMsg()const { return rq; } + +private: + RequestMsg rq; +}; + +/// Idle state - we have no command for the MMU, so we are only regularly querying its state with Q0 messages. +/// The idle state can be interrupted any time to issue a command into the MMU +class Idle : public ProtocolLogicPartBase { +public: + inline Idle(ProtocolLogic *logic) + : ProtocolLogicPartBase(logic) {} + void Restart() override; + StepStatus Step() override; +}; + +/// The communication with the MMU is stopped/disabled (for whatever reason). +/// Nothing is being put onto the UART. +class Stopped : public ProtocolLogicPartBase { +public: + inline Stopped(ProtocolLogic *logic) + : ProtocolLogicPartBase(logic) {} + void Restart() override {} + StepStatus Step() override { return Processing; } +}; + +///< Filter of short consecutive drop outs which are recovered instantly +class DropOutFilter { + StepStatus cause; + uint8_t occurrences; +public: + static constexpr uint8_t maxOccurrences = 3; + static_assert (maxOccurrences > 1, "we should really silently ignore at least 1 comm drop out if recovered immediately afterwards"); + DropOutFilter() = default; + + /// @returns true if the error should be reported to higher levels (max. number of consecutive occurrences reached) + bool Record(StepStatus ss); + + /// @returns the initial cause which started this drop out event + inline StepStatus InitialCause()const { return cause; } + + /// Rearms the object for further processing - basically call this once the MMU responds with something meaningful (e.g. S0 A2) + inline void Reset(){ occurrences = maxOccurrences; } +}; + +/// Logic layer of the MMU vs. printer communication protocol +class ProtocolLogic { +public: + ProtocolLogic(MMU2Serial *uart); + + /// Start/Enable communication with the MMU + void Start(); + + /// Stop/Disable communication with the MMU + void Stop(); + + // Issue commands to the MMU + void ToolChange(uint8_t slot); + void UnloadFilament(); + void LoadFilament(uint8_t slot); + void EjectFilament(uint8_t slot); + void CutFilament(uint8_t slot); + void ResetMMU(); + void Button(uint8_t index); + void Home(uint8_t mode); + + /// Step the state machine + StepStatus Step(); + + /// @returns the current/latest error code as reported by the MMU + ErrorCode Error() const { return errorCode; } + + /// @returns the current/latest process code as reported by the MMU + ProgressCode Progress() const { return progressCode; } + + uint8_t CommandInProgress()const; + + inline bool Running()const { + return state == State::Running; + } + + inline bool FindaPressed() const { + return findaPressed; + } + +#ifndef UNITTEST +private: +#endif + + StepStatus ProcessUARTByte(uint8_t c); + StepStatus ExpectingMessage(uint32_t timeout); + void SendMsg(RequestMsg rq); + void SwitchToIdle(); + void HandleCommunicationTimeout(); + StepStatus HandleCommError(const char *msg, StepStatus ss); + bool Elapsed(uint32_t timeout) const; + void RecordUARTActivity(); + void RecordReceivedByte(uint8_t c); + void FormatLastReceivedBytes(char *dst); + void FormatLastResponseMsgAndClearLRB(char *dst); + void LogRequestMsg(const uint8_t *txbuff, uint8_t size); + void LogError(const char *reason); + void LogResponse(); + void SwitchFromIdleToCommand(); + + enum class State : uint_fast8_t { + Stopped, ///< stopped for whatever reason + InitSequence, ///< initial sequence running + Running ///< normal operation - Idle + Command processing + }; + + // individual sub-state machines - may be they can be combined into a union since only one is active at once + Stopped stopped; + StartSeq startSeq; + Idle idle; + Command command; + ProtocolLogicPartBase *currentState; ///< command currently being processed + + /// Records the next planned state, "unknown" msg code if no command is planned. + /// This is not intended to be a queue of commands to process, protocol_logic must not queue commands. + /// It exists solely to prevent breaking the Request-Response protocol handshake - + /// - during tests it turned out, that the commands from Marlin are coming in such an asynchronnous way, that + /// we could accidentally send T2 immediately after Q0 without waiting for reception of response to Q0. + /// + /// Beware, if Marlin manages to call PlanGenericCommand multiple times before a response comes, + /// these variables will get overwritten by the last call. + /// However, that should not happen under normal circumstances as Marlin should wait for the Command to finish, + /// which includes all responses (and error recovery if any). + RequestMsg plannedRq; + + /// Plan a command to be processed once the immediate response to a sent request arrives + void PlanGenericRequest(RequestMsg rq); + /// Activate the planned state once the immediate response to a sent request arrived + bool ActivatePlannedRequest(); + + uint32_t lastUARTActivityMs; ///< timestamp - last ms when something occurred on the UART + DropOutFilter dataTO; ///< Filter of short consecutive drop outs which are recovered instantly + + ResponseMsg rsp; ///< decoded response message from the MMU protocol + + State state; ///< internal state of ProtocolLogic + + Protocol protocol; ///< protocol codec + + array lastReceivedBytes; ///< remembers the last few bytes of incoming communication for diagnostic purposes + uint8_t lrb; + + MMU2Serial *uart; ///< UART interface + + ErrorCode errorCode; ///< last received error code from the MMU + ProgressCode progressCode; ///< last received progress code from the MMU + + uint8_t lastFSensor; ///< last state of filament sensor + + bool findaPressed; + + friend class ProtocolLogicPartBase; + friend class Stopped; + friend class Command; + friend class Idle; + friend class StartSeq; + + friend class MMU2; +}; + +} // namespace MMU2 diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp new file mode 100644 index 000000000..18549ac35 --- /dev/null +++ b/Firmware/mmu2_reporting.cpp @@ -0,0 +1,21 @@ +#include "mmu2_reporting.h" + +// @@TODO implement the interface for MK3 + +namespace MMU2 { + +void BeginReport(CommandInProgress cip, uint16_t ec) { } + +void EndReport(CommandInProgress cip, uint16_t ec) { } + +void ReportErrorHook(CommandInProgress cip, uint16_t ec) { } + +void ReportProgressHook(CommandInProgress cip, uint16_t ec) { } + +Buttons ButtonPressed(uint16_t ec) { } + +bool MMUAvailable() { } + +bool UseMMU() { } + +} // namespace MMU2 diff --git a/Firmware/mmu2_reporting.h b/Firmware/mmu2_reporting.h new file mode 100644 index 000000000..66fd5100c --- /dev/null +++ b/Firmware/mmu2_reporting.h @@ -0,0 +1,53 @@ +/// @file mmu2_reporting.h + +#pragma once +#include + +namespace MMU2 { + +enum CommandInProgress : uint8_t { + NoCommand = 0, + CutFilament = 'C', + EjectFilament = 'E', + Homing = 'H', + LoadFilament = 'L', + Reset = 'X', + ToolChange = 'T', + UnloadFilament = 'U', +}; + +/// Called at the begin of every MMU operation +void BeginReport(CommandInProgress cip, uint16_t ec); + +/// Called at the end of every MMU operation +void EndReport(CommandInProgress cip, uint16_t ec); + +/// Called when the MMU sends operation error (even repeatedly) +void ReportErrorHook(CommandInProgress cip, uint16_t ec); + +/// Called when the MMU sends operation progress update +void ReportProgressHook(CommandInProgress cip, uint16_t ec); + +/// Button codes + extended actions performed on the printer's side +enum Buttons : uint8_t { + Left = 0, + Middle, + Right, + + // performed on the printer's side + RestartMMU, + StopPrint, + + NoButton = 0xff // shall be kept last +}; + +Buttons ButtonPressed(uint16_t ec); + +/// @returns true if the MMU is communicating and available +/// can change at runtime +bool MMUAvailable(); + +/// Global Enable/Disable use MMU (to be stored in EEPROM) +bool UseMMU(); + +} // namespace diff --git a/Firmware/mmu2_serial.cpp b/Firmware/mmu2_serial.cpp new file mode 100644 index 000000000..2b9388624 --- /dev/null +++ b/Firmware/mmu2_serial.cpp @@ -0,0 +1,15 @@ +#include "mmu2_serial.h" + +//@@TODO implement for MK3 + +namespace MMU2 { + +void MMU2Serial::begin(uint32_t baud){ } +void MMU2Serial::close() { } +int MMU2Serial::read() { } +void MMU2Serial::flush() { } +size_t MMU2Serial::write(const uint8_t *buffer, size_t size) { } + +MMU2Serial mmu2Serial; + +} // namespace MMU2 diff --git a/Firmware/mmu2_serial.h b/Firmware/mmu2_serial.h new file mode 100644 index 000000000..61949284c --- /dev/null +++ b/Firmware/mmu2_serial.h @@ -0,0 +1,21 @@ +#pragma once +#include +#include + +namespace MMU2 { + +/// A minimal serial interface for the MMU +class MMU2Serial { +public: + MMU2Serial() = default; +// bool available()const; + void begin(uint32_t baud); + void close(); + int read(); + void flush(); + size_t write(const uint8_t *buffer, size_t size); +}; + +extern MMU2Serial mmu2Serial; + +} // namespace MMU2 diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 108f6216a..45f2141f8 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -38,7 +38,7 @@ #include "Filament_sensor.h" -#include "mmu.h" +#include "mmu2.h" #include "ConfigurationStore.h" #include "Prusa_farm.h" diff --git a/Firmware/strlen_cx.h b/Firmware/strlen_cx.h new file mode 100644 index 000000000..1dfc0c7b2 --- /dev/null +++ b/Firmware/strlen_cx.h @@ -0,0 +1,5 @@ +#pragma once + +constexpr inline int strlen_constexpr(const char* str){ + return *str ? 1 + strlen_constexpr(str + 1) : 0; +} diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c8ea0c113..dd43adb76 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -36,7 +36,7 @@ #include "sound.h" -#include "mmu.h" +#include "mmu2.h" #include "static_assert.h" #include "first_lay_cal.h" @@ -450,19 +450,20 @@ void lcdui_print_percent_done(void) } // Print extruder status (5 chars total) -void lcdui_print_extruder(void) -{ - int chars = 0; - if (mmu_extruder == tmp_extruder) { - if (mmu_extruder == MMU_FILAMENT_UNKNOWN) chars = lcd_printf_P(_N(" F?")); - else chars = lcd_printf_P(_N(" F%u"), mmu_extruder + 1); - } - else - { - if (mmu_extruder == MMU_FILAMENT_UNKNOWN) chars = lcd_printf_P(_N(" ?>%u"), tmp_extruder + 1); - else chars = lcd_printf_P(_N(" %u>%u"), mmu_extruder + 1, tmp_extruder + 1); - } - lcd_space(5 - chars); +void lcdui_print_extruder(void) { + uint8_t chars = 0; +// @@TODO if (MMU2::mmu2.get_current_tool() == tmp_extruder) { +// if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) +// chars = lcd_printf_P(_N(" F?")); +// else +// chars = lcd_printf_P(_N(" F%u"), MMU2::mmu2.get_current_tool() + 1); +// } else { +// if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) +// chars = lcd_printf_P(_N(" ?>%u"), tmp_extruder + 1); +// else +// chars = lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, tmp_extruder + 1); +// } + lcd_space(5 - chars); } // Print farm number (5 chars total) @@ -719,7 +720,7 @@ void lcdui_print_status_screen(void) //Print SD status (7 chars) lcdui_print_percent_done(); - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) //Print extruder status (5 chars) lcdui_print_extruder(); else if (farm_mode) @@ -945,7 +946,7 @@ void lcd_commands() enquecommand_P(PSTR("M140 S0")); // turn off heatbed enquecommand_P(PSTR("G1 Z10 F1300.000")); //lift Z enquecommand_P(PSTR("G1 X10 Y180 F4000")); //Go to parking position - if (mmu_enabled) enquecommand_P(PSTR("M702 C")); //unload from nozzle + if (MMU2::mmu2.Enabled()) enquecommand_P(PSTR("M702 C")); //unload from nozzle enquecommand_P(PSTR("M84"));// disable motors forceMenuExpire = true; //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen lcd_commands_step = 1; @@ -1188,14 +1189,14 @@ static void lcd_menu_fails_stats_mmu_print() //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_mmu_total() { - mmu_command(MmuCmd::S3); +// @@TODO mmu_command(MmuCmd::S3); lcd_timeoutToStatus.stop(); //infinite timeout lcd_home(); - lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), - _T(MSG_TOTAL_FAILURES), - _T(MSG_MMU_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_FAIL_TOT) ), - _T(MSG_MMU_LOAD_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) ), - _i("MMU power fails"), clamp999( mmu_power_failures )); ////MSG_MMU_POWER_FAILS c=15 +// lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), +// _T(MSG_TOTAL_FAILURES), +// _T(MSG_MMU_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_FAIL_TOT) ), +// _T(MSG_MMU_LOAD_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) ), +// _i("MMU power fails"), clamp999( mmu_power_failures )); ////MSG_MMU_POWER_FAILS c=15 menu_back_if_clicked_fb(); } @@ -1680,13 +1681,15 @@ static void lcd_support_menu() #endif // IR_SENSOR_ANALOG MENU_ITEM_BACK_P(STR_SEPARATOR); - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { MENU_ITEM_BACK_P(_i("MMU2 connected")); ////MSG_MMU_CONNECTED c=18 MENU_ITEM_BACK_P(PSTR(" FW:")); ////c=17 if (((menu_item - 1) == menu_line) && lcd_draw_update) { lcd_set_cursor(6, menu_row); + uint8_t mmu_version = 200; // @@TODO + uint8_t mmu_buildnr = 0; if ((mmu_version > 0) && (mmu_buildnr > 0)) lcd_printf_P(PSTR("%d.%d.%d-%d"), mmu_version/100, mmu_version%100/10, mmu_version%10, mmu_buildnr); else @@ -1919,7 +1922,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) nLevel = bFilamentPreheatState ? 1 : 2; bFilamentAction = true; menu_back(nLevel); - extr_unload(); + MMU2::mmu2.unload(); break; case FilamentAction::MmuEject: nLevel = bFilamentPreheatState ? 1 : 2; @@ -3430,15 +3433,15 @@ static void lcd_show_sensors_state() uint8_t idler_state = STATE_NA; pinda_state = READ(Z_MIN_PIN); - if (mmu_enabled && !mmu_last_finda_response.expired(1000)) + if (MMU2::mmu2.Enabled()) { - finda_state = mmu_finda; + finda_state = MMU2::mmu2.FindaDetectsFilament(); } lcd_puts_at_P(0, 0, MSG_PINDA); lcd_set_cursor(LCD_WIDTH - 14, 0); lcd_print_state(pinda_state); - if (mmu_enabled == true) + if (MMU2::mmu2.Enabled()) { lcd_puts_at_P(10, 0, _n("FINDA"));////MSG_FINDA c=5 lcd_set_cursor(LCD_WIDTH - 3, 0); @@ -3775,7 +3778,7 @@ void lcd_first_layer_calibration_reset() void lcd_v2_calibration() { - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { const uint8_t filament = choose_menu_P( _T(MSG_SELECT_FILAMENT), @@ -3882,22 +3885,19 @@ static void wait_preheat() } -static void lcd_wizard_load() -{ - if (mmu_enabled) - { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the first tube of the MMU, then press the knob to load it."));////MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 - tmp_extruder = 0; - } - else - { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the extruder, then press the knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=6 - } - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); - loading_flag = true; - gcode_M701(); +static void lcd_wizard_load() { + if (MMU2::mmu2.Enabled()) { + lcd_show_fullscreen_message_and_wait_P( + _i("Please insert filament into the first tube of the MMU, then press the knob to load it.")); ////MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 + } else { + lcd_show_fullscreen_message_and_wait_P( + _i("Please insert filament into the extruder, then press the knob to load it.")); ////MSG_WIZARD_LOAD_FILAMENT c=20 r=6 + } + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); + loading_flag = true; + gcode_M701(0); } bool lcd_autoDepleteEnabled() @@ -3913,7 +3913,7 @@ static void wizard_lay1cal_message(bool cold) { lcd_show_fullscreen_message_and_wait_P( _i("Now I will calibrate distance between tip of the nozzle and heatbed surface.")); ////MSG_WIZARD_V2_CAL c=20 r=8 - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { lcd_show_fullscreen_message_and_wait_P( _i("Select a filament for the First Layer Calibration and select it in the on-screen menu."));////MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 @@ -4056,7 +4056,7 @@ void lcd_wizard(WizState state) //start to preheat nozzle and bed to save some time later setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); setTargetBed(PLA_PREHEAT_HPB_TEMP); - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true); } else @@ -4066,7 +4066,7 @@ void lcd_wizard(WizState state) if (wizard_event) state = S::Lay1CalCold; else { - if(mmu_enabled) state = S::LoadFilCold; + if(MMU2::mmu2.Enabled()) state = S::LoadFilCold; else state = S::Preheat; } break; @@ -4256,7 +4256,7 @@ static void auto_deplete_switch() static void settingsAutoDeplete() { - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { #ifdef FILAMENT_SENSOR if (fsensor.isError()) { @@ -4280,7 +4280,7 @@ while(0)\ #ifdef MMU_HAS_CUTTER static void settingsCutter() { - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) { @@ -4360,7 +4360,7 @@ while (0) #define SETTINGS_MMU_MODE \ do\ {\ - if (mmu_enabled)\ + if (MMU2::mmu2.Enabled())\ {\ if (SilentModeMenu_MMU == 0) MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), _T(MSG_NORMAL), lcd_silent_mode_mmu_set);\ else MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), _T(MSG_STEALTH), lcd_silent_mode_mmu_set);\ @@ -4716,7 +4716,7 @@ void lcd_hw_setup_menu(void) // can not be "static" #if defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) //! Fsensor Detection isn't ready for mmu yet it is temporarily disabled. //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu - if(!mmu_enabled) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor); + if(!MMU2::mmu2.Enabled()) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor); #endif //IR_SENSOR_ANALOG if (_md->experimental_menu_visibility) @@ -4878,7 +4878,7 @@ static void lcd_calibration_menu() //! //! Create list of items with header. Header can not be selected. //! Each item has text description passed by function parameter and -//! number. There are 5 numbered items, if mmu_enabled, 4 otherwise. +//! number. There are 5 numbered items, if MMU2::mmu2.Enabled(), 4 otherwise. //! Items are numbered from 1 to 4 or 5. But index returned starts at 0. //! There can be last item with different text and no number. //! @@ -4889,7 +4889,7 @@ static void lcd_calibration_menu() uint8_t choose_menu_P(const char *header, const char *item, const char *last_item) { //following code should handle 3 to 127 number of items well - const int8_t items_no = last_item?(mmu_enabled?6:5):(mmu_enabled?5:4); + const int8_t items_no = last_item?(MMU2::mmu2.Enabled()?6:5):(MMU2::mmu2.Enabled()?5:4); const uint8_t item_len = item?strlen_P(item):0; int8_t first = 0; int8_t enc_dif = lcd_encoder_diff; @@ -5061,68 +5061,71 @@ static void lcd_disable_farm_mode() } +static inline void load_all_wrapper(){ + for(uint8_t i = 0; i < 5; ++i){ + MMU2::mmu2.load_filament(i); + } +} +static inline void load_filament_wrapper(uint8_t i){ + MMU2::mmu2.load_filament(i); +} -static void mmu_load_filament_menu() -{ +static void mmu_load_filament_menu() { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Load all"), load_all); ////MSG_LOAD_ALL c=18 + MENU_ITEM_FUNCTION_P(_i("Load all"), load_all_wrapper); ////MSG_LOAD_ALL c=18 for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) - MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', extr_adj, i); ////MSG_LOAD_FILAMENT c=16 + MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_filament_wrapper, i); ////MSG_LOAD_FILAMENT c=16 MENU_END(); } -static void mmu_load_to_nozzle_menu() -{ - if (bFilamentAction) - { +static inline void lcd_mmu_load_to_nozzle_wrapper(uint8_t index){ + MMU2::mmu2.load_filament_to_nozzle(index); +} + +static void mmu_load_to_nozzle_menu() { + if (bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) - MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', lcd_mmu_load_to_nozzle, i); ////MSG_LOAD_FILAMENT c=16 + MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', lcd_mmu_load_to_nozzle_wrapper, i); ////MSG_LOAD_FILAMENT c=16 MENU_END(); - } - else - { + } else { eFilamentAction = FilamentAction::MmuLoad; preheat_or_continue(); } } -static void mmu_eject_filament(uint8_t filament) -{ +static void mmu_eject_filament(uint8_t filament) { menu_back(); - mmu_eject_filament(filament, true); + MMU2::mmu2.eject_filament(filament, true); } -static void mmu_fil_eject_menu() -{ - if (bFilamentAction) - { +static void mmu_fil_eject_menu() { + if (bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), i + '1', mmu_eject_filament, i); ////MSG_EJECT_FILAMENT c=16 MENU_END(); - } - else - { + } else { eFilamentAction = FilamentAction::MmuEject; preheat_or_continue(); } } #ifdef MMU_HAS_CUTTER +static inline void mmu_cut_filament_wrapper(uint8_t index){ + MMU2::mmu2.cut_filament(index); +} -static void mmu_cut_filament_menu() -{ - if(bFilamentAction) - { +static void mmu_cut_filament_menu() { + if (bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) - MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), i + '1', mmu_cut_filament, i); ////MSG_CUT_FILAMENT c=16 + MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), i + '1', mmu_cut_filament_wrapper, i); ////MSG_CUT_FILAMENT c=16 MENU_END(); } else @@ -5522,7 +5525,7 @@ static void lcd_main_menu() } if ( ! ( IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) { - if (mmu_enabled) { + if (MMU2::mmu2.Enabled()) { MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), mmu_load_filament_menu); MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);////MSG_LOAD_TO_NOZZLE c=18 MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament); @@ -5532,7 +5535,7 @@ static void lcd_main_menu() #endif //MMU_HAS_CUTTER } else { #ifdef FILAMENT_SENSOR - if (fsensor.getAutoLoadEnabled() && (mmu_enabled == false)) { + if (fsensor.getAutoLoadEnabled() && (MMU2::mmu2.Enabled() == false)) { MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18 } else @@ -5553,7 +5556,7 @@ static void lcd_main_menu() #if defined(TMC2130) || defined(FILAMENT_SENSOR) MENU_ITEM_SUBMENU_P(_i("Fail stats"), lcd_menu_fails_stats);////MSG_FAIL_STATS c=18 #endif - if (mmu_enabled) { + if (MMU2::mmu2.Enabled()) { MENU_ITEM_SUBMENU_P(_i("Fail stats MMU"), lcd_menu_fails_stats_mmu);////MSG_MMU_FAIL_STATS c=18 } MENU_ITEM_SUBMENU_P(_i("Support"), lcd_support_menu);////MSG_SUPPORT c=18 @@ -5902,7 +5905,7 @@ void print_stop() fanSpeed = 0; } - if (mmu_enabled) extr_unload(); //M702 C + if (MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //M702 C finishAndDisableSteppers(); //M84 axis_relative_modes = E_AXIS_MASK; //XYZ absolute, E relative } @@ -6228,7 +6231,7 @@ bool lcd_selftest() //! As the Fsensor Detection isn't yet ready for the mmu2s we set temporarily the IR sensor 0.3 or older for mmu2s //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu if(fsensor.getSensorRevision() == IR_sensor_analog::SensorRevision::_Undef) { - if (!mmu_enabled) { + if (!MMU2::mmu2.Enabled()) { lcd_detect_IRsensor(); } else { @@ -6424,7 +6427,7 @@ bool lcd_selftest() if (_result) { #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) - if (mmu_enabled) + if (MMU2::mmu2.Enabled()) { _progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor _result = selftest_irsensor(); @@ -7048,19 +7051,18 @@ static bool selftest_irsensor() { TempBackup tempBackup; setTargetHotend(ABS_PREHEAT_HOTEND_TEMP,active_extruder); - mmu_wait_for_heater_blocking(); +//@@TODO mmu_wait_for_heater_blocking(); progress = lcd_selftest_screen(TestScreen::Fsensor, 0, 1, true, 0); - mmu_filament_ramming(); +//@@TODO mmu_filament_ramming(); } progress = lcd_selftest_screen(TestScreen::Fsensor, progress, 1, true, 0); - mmu_command(MmuCmd::U0); - manage_response(false, false); + MMU2::mmu2.unload(); // mmu_command(MmuCmd::U0); manage_response(false, false); for(uint_least8_t i = 0; i < 200; ++i) { if (0 == (i % 32)) progress = lcd_selftest_screen(TestScreen::Fsensor, progress, 1, true, 0); - mmu_load_step(false); +//@@TODO mmu_load_step(false); while (blocks_queued()) { if (fsensor.getFilamentPresent()) From 5870bbc524b26b2872c45221884fd8dbdbc4ed9f Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 20 Apr 2022 13:28:30 +0200 Subject: [PATCH 039/319] Prune most of TODO from mmu2.cpp + refactor sound.h for better readability --- Firmware/mmu2.cpp | 202 ++++++++++++++++++++++------------------------ Firmware/mmu2.h | 7 +- Firmware/sound.h | 36 ++++++--- 3 files changed, 124 insertions(+), 121 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 8ec794914..e3ea2e0af 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -1,13 +1,18 @@ #include "mmu2.h" +#include "mmu2_error_converter.h" #include "mmu2_fsensor.h" #include "mmu2_log.h" #include "mmu2_power.h" +#include "mmu2_progress_converter.h" #include "mmu2_reporting.h" #include "Marlin.h" +#include "language.h" +#include "messages.h" +#include "sound.h" #include "stepper.h" -#include "mmu2_error_converter.h" -#include "mmu2_progress_converter.h" +#include "strlen_cx.h" +#include "temperature.h" // @@TODO remove this and enable it in the configuration files // Settings for filament load / unload from the LCD menu. @@ -20,10 +25,8 @@ { 14.4, 871 }, \ { 50.0, 198 } -// @@TODO -#define FILAMENT_MMU2_RAMMING_SEQUENCE { 7.2, 562 } - -//@@TODO extract into configuration if it makes sense +#define NOZZLE_PARK_XY_FEEDRATE 50 +#define NOZZLE_PARK_Z_FEEDRATE 15 // Nominal distance from the extruder gear to the nozzle tip is 87mm // However, some slipping may occur and we need separate distances for @@ -42,14 +45,25 @@ static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; static constexpr uint8_t MMU2_NO_TOOL = 99; static constexpr uint32_t MMU_BAUD = 115200; -typedef uint16_t feedRate_t; - struct E_Step { float extrude; ///< extrude distance in mm - feedRate_t feedRate; ///< feed rate in mm/s + float feedRate; ///< feed rate in mm/s +}; + +static constexpr E_Step ramming_sequence[] PROGMEM = { + { 1.0F, 1000.0F / 60.F}, + { 1.0F, 1500.0F / 60.F}, + { 2.0F, 2000.0F / 60.F}, + { 1.5F, 3000.0F / 60.F}, + { 2.5F, 4000.0F / 60.F}, + {-15.0F, 5000.0F / 60.F}, + {-14.0F, 1200.0F / 60.F}, + {-6.0F, 600.0F / 60.F}, + { 10.0F, 700.0F / 60.F}, + {-10.0F, 400.0F / 60.F}, + {-50.0F, 2000.0F / 60.F}, }; -static constexpr E_Step ramming_sequence[] PROGMEM = FILAMENT_MMU2_RAMMING_SEQUENCE; static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE }; namespace MMU2 { @@ -114,8 +128,9 @@ void MMU2::TriggerResetPin(){ void MMU2::PowerCycle(){ // cut the power to the MMU and after a while restore it + // Sadly, MK3/S/+ cannot do this PowerOff(); - _delay(1000); //@@TODO + delay_keep_alive(1000); PowerOn(); } @@ -177,8 +192,7 @@ bool MMU2::tool_change(uint8_t index) { manage_response(false, false); // true, true); // reset current position to whatever the planner thinks it is - // @@TODO is there some "standard" way of doing this? -//@@TODO current_position[E_AXIS] = Planner::get_machine_position_mm()[3]; + plan_set_e_position(current_position[E_AXIS]); extruder = index; //filament change is finished SetActiveExtruder(0); @@ -233,7 +247,7 @@ bool MMU2::tool_change(const char *special) { return true; } -uint8_t MMU2::get_current_tool() { +uint8_t MMU2::get_current_tool() const { return extruder == MMU2_NO_TOOL ? -1 : extruder; } @@ -256,7 +270,7 @@ bool MMU2::unload() { // @@TODO // if (thermalManager.tooColdToExtrude(active_extruder)) { -// BUZZ(200, 404); +// Sound_MakeSound(e_SOUND_TYPE_Prompt); // LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); // return false; // } @@ -267,8 +281,7 @@ bool MMU2::unload() { logic.UnloadFilament(); manage_response(false, false); // false, true); - -// BUZZ(200, 404); + Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); // no active tool extruder = MMU2_NO_TOOL; @@ -294,7 +307,7 @@ bool MMU2::load_filament(uint8_t index) { ReportingRAII rep(CommandInProgress::LoadFilament); logic.LoadFilament(index); manage_response(false, false); -// BUZZ(200, 404); + Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); return true; } @@ -315,11 +328,9 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { LoadingToNozzleRAII ln(*this); - // if (0){ // @@TODO DEBUG - // @@TODO how is this supposed to be done in 8bit FW? /* if (thermalManager.tooColdToExtrude(active_extruder)) { - BUZZ(200, 404); + Sound_MakeSound(e_SOUND_TYPE_Prompt); LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); return false; } else*/ { @@ -335,13 +346,12 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { manage_response(false, false); // true, true); // reset current position to whatever the planner thinks it is - // @@TODO is there some "standard" way of doing this? -//@@TODO current_position[E_AXIS] = Planner::get_machine_position_mm()[3]; - + plan_set_e_position(current_position[E_AXIS]); + extruder = index; SetActiveExtruder(0); -// BUZZ(200, 404); + Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); return true; } } @@ -352,22 +362,21 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { //@@TODO // if (thermalManager.tooColdToExtrude(active_extruder)) { -// BUZZ(200, 404); +// Sound_MakeSound(e_SOUND_TYPE_Prompt); // LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); // return false; // } ReportingRAII rep(CommandInProgress::EjectFilament); current_position[E_AXIS] -= MMU2_FILAMENTCHANGE_EJECT_FEED; -//@@TODO line_to_current_position(2500 / 60); + plan_buffer_line_curposXYZE(2500.F / 60.F); st_synchronize(); logic.EjectFilament(index); manage_response(false, false); if (recover) { // LCD_MESSAGEPGM(MSG_MMU2_EJECT_RECOVER); -// BUZZ(200, 404); - + Sound_MakeSound(e_SOUND_TYPE_StandardPrompt); //@@TODO wait_for_user = true; //#if ENABLED(HOST_PROMPT_SUPPORT) @@ -379,20 +388,14 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { //@@TODO while (wait_for_user) idle(true); -// BUZZ(200, 404); -// BUZZ(200, 404); - + Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); // logic.Command(); //@@TODO command(MMU_CMD_R0); manage_response(false, false); } - //@@TODO ui.reset_status(); - // no active tool extruder = MMU2_NO_TOOL; - -// BUZZ(200, 404); - + Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); // disable_E0(); return true; @@ -407,26 +410,42 @@ void MMU2::Home(uint8_t mode){ } void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { -//@@TODO static constexpr xyz_pos_t park_point = NOZZLE_PARK_POINT_M600; -// if (!mmu_print_saved) { // First occurrence. Save current position, park print head, disable nozzle heater. -// LogEchoEvent("Saving and parking"); -// st_synchronize(); + if (!mmu_print_saved) { // First occurrence. Save current position, park print head, disable nozzle heater. + LogEchoEvent("Saving and parking"); + st_synchronize(); -// mmu_print_saved = true; + mmu_print_saved = true; -// resume_hotend_temp = thermalManager.degTargetHotend(active_extruder); -// resume_position = current_position; + resume_hotend_temp = degTargetHotend(active_extruder); -// if (move_axes && all_axes_homed()) -// nozzle.park(2, park_point); + if (move_axes){ + // save current pos + for(uint8_t i = 0; i < 3; ++i){ + resume_position.xyz[i] = current_position[i]; + } -// if (turn_off_nozzle){ -// LogEchoEvent("Heater off"); -// thermalManager.setTargetHotend(0, active_extruder); -// } -// } -// // keep the motors powered forever (until some other strategy is chosen) -// gcode.reset_stepper_timeout(); + // lift Z + current_position[Z_AXIS] += Z_PAUSE_LIFT; + if (current_position[Z_AXIS] > Z_MAX_POS) + current_position[Z_AXIS] = Z_MAX_POS; + plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); + st_synchronize(); + + // move XY aside + current_position[X_AXIS] = X_PAUSE_POS; + current_position[Y_AXIS] = Y_PAUSE_POS; + plan_buffer_line_curposXYZE(NOZZLE_PARK_XY_FEEDRATE); + st_synchronize(); + } + + if (turn_off_nozzle){ + LogEchoEvent("Heater off"); + setAllTargetHotends(0); + } + } + // keep the motors powered forever (until some other strategy is chosen) + // @@TODO do we need that in 8bit? + // gcode.reset_stepper_timeout(); } void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { @@ -436,25 +455,29 @@ void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { if (turn_off_nozzle && resume_hotend_temp) { MMU2_ECHO_MSG("Restoring hotend temperature "); SERIAL_ECHOLN(resume_hotend_temp); -//@@TODO thermalManager.setTargetHotend(resume_hotend_temp, active_extruder); + setTargetHotend(resume_hotend_temp, active_extruder); -// while (!thermalManager.wait_for_hotend(active_extruder, false)){ -// safe_delay(1000); -// } + if (((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)) { + // @@TODO lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else + delay_keep_alive(3000); + } LogEchoEvent("Hotend temperature reached"); } -//@@TODO if (move_axes && all_axes_homed()) { -// LogEchoEvent("Resuming XYZ"); + if (move_axes) { + LogEchoEvent("Resuming XYZ"); -// // Move XY to starting position, then Z -// do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE)); - -// // Move Z_AXIS to saved position -// do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); -// } else { -// LogEchoEvent("NOT resuming XYZ"); -// } + current_position[X_AXIS] = resume_position.xyz[X_AXIS]; + current_position[Y_AXIS] = resume_position.xyz[Y_AXIS]; + plan_buffer_line_curposXYZE(NOZZLE_PARK_XY_FEEDRATE); + st_synchronize(); + + current_position[Z_AXIS] = resume_position.xyz[Z_AXIS]; + plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); + st_synchronize(); + } else { + LogEchoEvent("NOT resuming XYZ"); + } } } @@ -560,37 +583,21 @@ void MMU2::filament_ramming() { execute_extruder_sequence((const E_Step *)ramming_sequence, sizeof(ramming_sequence) / sizeof(E_Step)); } -void MMU2::execute_extruder_sequence(const E_Step *sequence, int steps) { - +void MMU2::execute_extruder_sequence(const E_Step *sequence, uint8_t steps) { st_synchronize(); - const E_Step *step = sequence; - for (uint8_t i = 0; i < steps; i++) { - const float es = pgm_read_float(&(step->extrude)); - const feedRate_t fr_mm_m = pgm_read_float(&(step->feedRate)); - - // DEBUG_ECHO_START(); - // DEBUG_ECHOLNPAIR("E step ", es, "/", fr_mm_m); - - current_position[E_AXIS] += es; -// line_to_current_position(MMM_TO_MMS(fr_mm_m)); + current_position[E_AXIS] += pgm_read_float(&(step->extrude)); + plan_buffer_line_curposXYZE(pgm_read_float(&(step->feedRate))); st_synchronize(); - step++; } - -// disable_E0(); } void MMU2::SetActiveExtruder(uint8_t ex){ active_extruder = ex; } -constexpr int strlen_constexpr(const char* str){ - return *str ? 1 + strlen_constexpr(str + 1) : 0; -} - void MMU2::ReportError(ErrorCode ec) { // Due to a potential lossy error reporting layers linked to this hook // we'd better report everything to make sure especially the error states @@ -654,8 +661,6 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ case ProgressCode::FeedingToBondtech: // prepare for the movement of the E-motor st_synchronize(); -//@@TODO sync_plan_position(); -// enable_E0(); loadFilamentStarted = true; break; default: @@ -669,25 +674,8 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ if( WhereIsFilament() == FilamentState::AT_FSENSOR && loadFilamentStarted){// fsensor triggered, move the extruder to help loading // rotate the extruder motor - no planner sync, just add more moves - as long as they are roughly at the same speed as the MMU is pushing, // it really doesn't matter - // char tmp[64]; // @@TODO this shouldn't be needed anymore, but kept here in case of something strange - // // happens in Marlin again - // snprintf(tmp,sizeof (tmp), "E moveTo=%4.1f f=%4.0f s=%hu\n", current_position.e, feedrate_mm_s, feedrate_percentage); - // MMU2_ECHO_MSG(tmp); - - // Ideally we'd use: - // line_to_current_position(MMU2_LOAD_TO_NOZZLE_FEED_RATE); - // However, as it ignores MBL completely (which I don't care about in case of E-movement), - // we need to take the raw Z coordinates and only add some movement to E - // otherwise we risk planning a very short Z move with an extremely long E-move, - // which obviously ends up in a disaster (over/underflow of E/Z steps). - // The problem becomes obvious in Planner::_populate_block when computing da, db, dc like this: - // const int32_t da = target.a - position.a, db = target.b - position.b, dc = target.c - position.c; - // And since current_position[3] != position_float[3], we get a tiny move in Z, which is something I really want to avoid here - // @@TODO is there a "standard" way of doing this? -//@@TODO xyze_pos_t tgt = Planner::get_machine_position_mm(); - const float e = loadingToNozzle ? MMU2_LOAD_TO_NOZZLE_LENGTH : MMU2_TOOL_CHANGE_LOAD_LENGTH; -//@@TODO tgt[3] += e / planner.e_factor[active_extruder]; -// plan_buffer_line(tgt, MMU2_LOAD_TO_NOZZLE_FEED_RATE, active_extruder); // @@TODO magic constant - must match the feedrate of the MMU + current_position[E_AXIS] += (loadingToNozzle ? MMU2_LOAD_TO_NOZZLE_LENGTH : MMU2_TOOL_CHANGE_LOAD_LENGTH) / extruder_multiplier[0]; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); loadFilamentStarted = false; } break; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index d3809b727..58632597b 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -6,8 +6,9 @@ struct E_Step; namespace MMU2 { +/// @@TODO hmmm, 12 bytes... may be we can reduce that struct xyz_pos_t { - uint16_t xyz[3]; // @@TODO + float xyz[3]; xyz_pos_t()=default; }; @@ -101,7 +102,7 @@ public: bool cut_filament(uint8_t index); /// @returns the active filament slot index (0-4) or 0xff in case of no active tool - uint8_t get_current_tool(); + uint8_t get_current_tool() const; bool set_filament_type(uint8_t index, uint8_t type); @@ -139,7 +140,7 @@ private: StepStatus LogicStep(); void filament_ramming(); - void execute_extruder_sequence(const E_Step *sequence, int steps); + void execute_extruder_sequence(const E_Step *sequence, uint8_t steps); void SetActiveExtruder(uint8_t ex); /// Reports an error into attached ExtUIs diff --git a/Firmware/sound.h b/Firmware/sound.h index 75c1c868a..690eb0a30 100644 --- a/Firmware/sound.h +++ b/Firmware/sound.h @@ -1,18 +1,34 @@ +#pragma once #include -#ifndef SOUND_H -#define SOUND_H - #define e_SOUND_MODE_NULL 0xFF -typedef enum : uint8_t - {e_SOUND_MODE_LOUD,e_SOUND_MODE_ONCE,e_SOUND_MODE_SILENT,e_SOUND_MODE_BLIND} eSOUND_MODE; +typedef enum : uint8_t { + e_SOUND_MODE_LOUD, + e_SOUND_MODE_ONCE, + e_SOUND_MODE_SILENT, + e_SOUND_MODE_BLIND +} eSOUND_MODE; + #define e_SOUND_MODE_DEFAULT e_SOUND_MODE_LOUD -typedef enum : uint8_t - {e_SOUND_TYPE_ButtonEcho,e_SOUND_TYPE_EncoderEcho,e_SOUND_TYPE_StandardPrompt,e_SOUND_TYPE_StandardConfirm,e_SOUND_TYPE_StandardWarning,e_SOUND_TYPE_StandardAlert,e_SOUND_TYPE_EncoderMove,e_SOUND_TYPE_BlindAlert} eSOUND_TYPE; -typedef enum : uint8_t - {e_SOUND_CLASS_Echo,e_SOUND_CLASS_Prompt,e_SOUND_CLASS_Confirm,e_SOUND_CLASS_Warning,e_SOUND_CLASS_Alert} eSOUND_CLASS; +typedef enum : uint8_t { + e_SOUND_TYPE_ButtonEcho, + e_SOUND_TYPE_EncoderEcho, + e_SOUND_TYPE_StandardPrompt, + e_SOUND_TYPE_StandardConfirm, + e_SOUND_TYPE_StandardWarning, + e_SOUND_TYPE_StandardAlert, + e_SOUND_TYPE_EncoderMove, + e_SOUND_TYPE_BlindAlert +} eSOUND_TYPE; +typedef enum : uint8_t { + e_SOUND_CLASS_Echo, + e_SOUND_CLASS_Prompt, + e_SOUND_CLASS_Confirm, + e_SOUND_CLASS_Warning, + e_SOUND_CLASS_Alert +} eSOUND_CLASS; extern eSOUND_MODE eSoundMode; @@ -25,5 +41,3 @@ extern void Sound_MakeCustom(uint16_t ms,uint16_t tone_ ,bool critical); //static void Sound_DoSound_Echo(void); //static void Sound_DoSound_Prompt(void); - -#endif // SOUND_H From 208e620660257cc738ba3af6857aef041abe27af Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 20 Apr 2022 16:56:41 +0200 Subject: [PATCH 040/319] Return ir_sensor_detected + related functionality --- Firmware/fsensor.cpp | 820 +++++++++++++++++++++++++++ Firmware/fsensor.h | 133 +++++ Firmware/mmu2_progress_converter.cpp | 2 +- Firmware/mmu2_protocol_logic.cpp | 2 - Firmware/mmu2_serial.h | 1 - 5 files changed, 954 insertions(+), 4 deletions(-) create mode 100755 Firmware/fsensor.cpp create mode 100755 Firmware/fsensor.h diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp new file mode 100755 index 000000000..351e9a786 --- /dev/null +++ b/Firmware/fsensor.cpp @@ -0,0 +1,820 @@ +//! @file + +#include "Marlin.h" + +#include "fsensor.h" +#include +#include "pat9125.h" +#include "stepper.h" +#include "cmdqueue.h" +#include "ultralcd.h" +#include "mmu2.h" +#include "cardreader.h" + +#include "adc.h" +#include "temperature.h" +#include "config.h" + +//! @name Basic parameters +//! @{ +#define FSENSOR_CHUNK_LEN 1.25 //!< filament sensor chunk length (mm) +#define FSENSOR_ERR_MAX 4 //!< filament sensor maximum error/chunk count for runout detection + +#define FSENSOR_SOFTERR_CMAX 3 //!< number of contiguous soft failures before a triggering a runout +#define FSENSOR_SOFTERR_DELTA 30000 //!< maximum interval (ms) to consider soft failures contiguous +//! @} + +//! @name Optical quality measurement parameters +//! @{ +#define FSENSOR_OQ_MAX_ES 2 //!< maximum sum of error blocks during filament recheck +#define FSENSOR_OQ_MIN_YD 2 //!< minimum yd sum during filament check (counts per inch) +#define FSENSOR_OQ_MIN_BR 80 //!< minimum brightness value +#define FSENSOR_OQ_MAX_SH 10 //!< maximum shutter value +//! @} + +const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n"; + +// PJ7 can not be used (does not have PinChangeInterrupt possibility) +#define FSENSOR_INT_PIN 75 //!< filament sensor interrupt pin PJ4 +#define FSENSOR_INT_PIN_MASK 0x10 //!< filament sensor interrupt pin mask (bit4) +#define FSENSOR_INT_PIN_PIN_REG PINJ // PIN register @ PJ4 +#define FSENSOR_INT_PIN_VECT PCINT1_vect // PinChange ISR @ PJ4 +#define FSENSOR_INT_PIN_PCMSK_REG PCMSK1 // PinChangeMaskRegister @ PJ4 +#define FSENSOR_INT_PIN_PCMSK_BIT PCINT13 // PinChange Interrupt / PinChange Enable Mask @ PJ4 +#define FSENSOR_INT_PIN_PCICR_BIT PCIE1 // PinChange Interrupt Enable / Flag @ PJ4 + +//! enabled = initialized and sampled every chunk event +bool fsensor_enabled = true; +//! runout watching is done in fsensor_update (called from main loop) +bool fsensor_watch_runout = true; +//! not responding - is set if any communication error occurred during initialization or readout +bool fsensor_not_responding = false; + +/// This flag was originally located in mmu.cpp. Not sure what it was supposed to do, but it looks like +/// it was holding "true" all the time on MK3S. +#ifndef IR_SENSOR +bool ir_sensor_detected = false; +bool check_for_ir_sensor(); ///< detects IR sensor and updates ir_sensor_detected + +bool IRSensorDetected() { + return ir_sensor_detected; +} +#endif + +#ifdef PAT9125 +uint8_t fsensor_int_pin_old = 0; +//! optical checking "chunk lenght" (already in steps) +int16_t fsensor_chunk_len = 0; +//! enable/disable quality meassurement +bool fsensor_oq_meassure_enabled = false; +//! number of errors, updated in ISR +uint8_t fsensor_err_cnt = 0; +//! variable for accumulating step count (updated callbacks from stepper and ISR) +int16_t fsensor_st_cnt = 0; +//! count of total sensor "soft" failures (filament status checks) +uint8_t fsensor_softfail = 0; +//! timestamp of last soft failure +unsigned long fsensor_softfail_last = 0; +//! count of soft failures within the configured time +uint8_t fsensor_softfail_ccnt = 0; +#endif + +#ifdef DEBUG_FSENSOR_LOG +//! log flag: 0=log disabled, 1=log enabled +uint8_t fsensor_log = 1; +#endif //DEBUG_FSENSOR_LOG + + +//! @name filament autoload variables +//! @{ + +//! autoload feature enabled +bool fsensor_autoload_enabled = true; +//! autoload watching enable/disable flag +bool fsensor_watch_autoload = false; + +#ifdef PAT9125 +// +uint16_t fsensor_autoload_y; +// +uint8_t fsensor_autoload_c; +// +uint32_t fsensor_autoload_last_millis; +// +uint8_t fsensor_autoload_sum; +//! @} +#endif + + +//! @name filament optical quality measurement variables +//! @{ + +//! Measurement enable/disable flag +bool fsensor_oq_meassure = false; +//! skip-chunk counter, for accurate measurement is necessary to skip first chunk... +uint8_t fsensor_oq_skipchunk; +//! number of samples from start of measurement +uint8_t fsensor_oq_samples; +//! sum of steps in positive direction movements +uint16_t fsensor_oq_st_sum; +//! sum of deltas in positive direction movements +uint16_t fsensor_oq_yd_sum; +//! sum of errors during measurement +uint16_t fsensor_oq_er_sum; +//! max error counter value during measurement +uint8_t fsensor_oq_er_max; +//! minimum delta value +int16_t fsensor_oq_yd_min; +//! maximum delta value +int16_t fsensor_oq_yd_max; +//! sum of shutter value +uint16_t fsensor_oq_sh_sum; +//! @} + +#ifdef IR_SENSOR_ANALOG +ClFsensorPCB oFsensorPCB; +ClFsensorActionNA oFsensorActionNA; +bool bIRsensorStateFlag=false; +ShortTimer tIRsensorCheckTimer; +#endif //IR_SENSOR_ANALOG + +void fsensor_stop_and_save_print(void) +{ + puts_P(PSTR("fsensor_stop_and_save_print")); + stop_and_save_print_to_ram(0, 0); + fsensor_watch_runout = false; +} + +#ifdef PAT9125 +// Reset all internal counters to zero, including stepper callbacks +void fsensor_reset_err_cnt() +{ + fsensor_err_cnt = 0; + pat9125_y = 0; + st_reset_fsensor(); +} + +void fsensor_set_axis_steps_per_unit(float u) +{ + fsensor_chunk_len = (int16_t)(FSENSOR_CHUNK_LEN * u); +} +#endif + + +void fsensor_restore_print_and_continue(void) +{ + puts_P(PSTR("fsensor_restore_print_and_continue")); + fsensor_watch_runout = true; +#ifdef PAT9125 + fsensor_reset_err_cnt(); +#endif + restore_print_from_ram_and_continue(0); +} + +// fsensor_checkpoint_print cuts the current print job at the current position, +// allowing new instructions to be inserted in the middle +void fsensor_checkpoint_print(void) +{ + puts_P(PSTR("fsensor_checkpoint_print")); + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); +} + +#ifdef IR_SENSOR_ANALOG +const char* FsensorIRVersionText() +{ + switch(oFsensorPCB) + { + case ClFsensorPCB::_Old: + return _T(MSG_IR_03_OR_OLDER); + case ClFsensorPCB::_Rev04: + return _T(MSG_IR_04_OR_NEWER); + default: + return _T(MSG_IR_UNKNOWN); + } +} +#endif //IR_SENSOR_ANALOG + +void fsensor_init(void) +{ +#ifdef PAT9125 + uint8_t pat9125 = pat9125_init(); + printf_P(PSTR("PAT9125_init:%u\n"), pat9125); +#endif //PAT9125 + uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); + fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); + fsensor_not_responding = false; +#ifdef PAT9125 + uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED); + fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false; + fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]); + + if (!pat9125){ + fsensor_enabled = 0; //disable sensor + fsensor_not_responding = true; + } +#endif //PAT9125 +#ifdef IR_SENSOR_ANALOG + bIRsensorStateFlag=false; + oFsensorPCB = (ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); + oFsensorActionNA = (ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); + + // If the fsensor is not responding even at the start of the printer, + // set this flag accordingly to show N/A in Settings->Filament sensor. + // This is even valid for both fsensor board revisions (0.3 or older and 0.4). + // Must be done after reading what type of fsensor board we have + fsensor_not_responding = ! fsensor_IR_check(); +#endif //IR_SENSOR_ANALOG + if (fsensor_enabled){ + fsensor_enable(false); // (in this case) EEPROM update is not necessary + } else { + fsensor_disable(false); // (in this case) EEPROM update is not necessary + } + printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED"))); +#ifdef IR_SENSOR_ANALOG + printf_P(PSTR(" (sensor board revision:%S)\n"), FsensorIRVersionText()); +#else //IR_SENSOR_ANALOG + MYSERIAL.println(); +#endif //IR_SENSOR_ANALOG + +#ifndef IR_SENSOR + ir_sensor_detected = check_for_ir_sensor(); +#endif +} + +bool fsensor_enable(bool bUpdateEEPROM) +{ +#ifdef PAT9125 + (void)bUpdateEEPROM; // silence unused warning in this variant + + if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working + uint8_t pat9125 = pat9125_init(); + printf_P(PSTR("PAT9125_init:%u\n"), pat9125); + if (pat9125) + fsensor_not_responding = false; + else + fsensor_not_responding = true; + fsensor_enabled = pat9125 ? true : false; + fsensor_watch_runout = true; + fsensor_oq_meassure = false; + fsensor_reset_err_cnt(); + eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, fsensor_enabled ? 0x01 : 0x00); + FSensorStateMenu = fsensor_enabled ? 1 : 0; + } + else //filament sensor is FINDA, always enable + { + fsensor_enabled = true; + eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x01); + FSensorStateMenu = 1; + } +#else // PAT9125 +#ifdef IR_SENSOR_ANALOG + if(!fsensor_IR_check()) + { + bUpdateEEPROM=true; + fsensor_enabled=false; + fsensor_not_responding=true; + FSensorStateMenu=0; + } + else { +#endif //IR_SENSOR_ANALOG + fsensor_enabled=true; + fsensor_not_responding=false; + FSensorStateMenu=1; +#ifdef IR_SENSOR_ANALOG + } +#endif //IR_SENSOR_ANALOG + if(bUpdateEEPROM) + eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, FSensorStateMenu); +#endif //PAT9125 + return fsensor_enabled; +} + +void fsensor_disable(bool bUpdateEEPROM) +{ + fsensor_enabled = false; + FSensorStateMenu = 0; + if(bUpdateEEPROM) + eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); +} + +void fsensor_autoload_set(bool State) +{ +#ifdef PAT9125 + if (!State) fsensor_autoload_check_stop(); +#endif //PAT9125 + fsensor_autoload_enabled = State; + eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, fsensor_autoload_enabled); +} + +void pciSetup(byte pin) +{ +// !!! "digitalPinTo?????bit()" does not provide the correct results for some MCU pins + *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin + PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt + PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group +} + +#ifdef PAT9125 +void fsensor_autoload_check_start(void) +{ +// puts_P(_N("fsensor_autoload_check_start\n")); + if (!fsensor_enabled) return; + if (!fsensor_autoload_enabled) return; + if (fsensor_watch_autoload) return; + if (!pat9125_update()) //update sensor + { + fsensor_disable(); + fsensor_not_responding = true; + fsensor_watch_autoload = false; + printf_P(ERRMSG_PAT9125_NOT_RESP, 3); + return; + } + puts_P(_N("fsensor_autoload_check_start - autoload ENABLED")); + fsensor_autoload_y = pat9125_y; //save current y value + fsensor_autoload_c = 0; //reset number of changes counter + fsensor_autoload_sum = 0; + fsensor_autoload_last_millis = _millis(); + fsensor_watch_runout = false; + fsensor_watch_autoload = true; +} + + +void fsensor_autoload_check_stop(void) +{ +// puts_P(_N("fsensor_autoload_check_stop\n")); + if (!fsensor_enabled) return; +// puts_P(_N("fsensor_autoload_check_stop 1\n")); + if (!fsensor_autoload_enabled) return; +// puts_P(_N("fsensor_autoload_check_stop 2\n")); + if (!fsensor_watch_autoload) return; + puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED")); + fsensor_autoload_sum = 0; + fsensor_watch_autoload = false; + fsensor_watch_runout = true; + fsensor_reset_err_cnt(); +} +#endif //PAT9125 + +bool fsensor_check_autoload(void) +{ + if (!fsensor_enabled) return false; + if (!fsensor_autoload_enabled) return false; + if (IRSensorDetected()) { + if (READ(IR_SENSOR_PIN)) { + fsensor_watch_autoload = true; + } + else if (fsensor_watch_autoload == true) { + fsensor_watch_autoload = false; + return true; + } + } +#ifdef PAT9125 + if (!fsensor_watch_autoload) + { + fsensor_autoload_check_start(); + return false; + } +#if 0 + uint8_t fsensor_autoload_c_old = fsensor_autoload_c; +#endif + if ((_millis() - fsensor_autoload_last_millis) < 25) return false; + fsensor_autoload_last_millis = _millis(); + if (!pat9125_update_y()) //update sensor + { + fsensor_disable(); + fsensor_not_responding = true; + printf_P(ERRMSG_PAT9125_NOT_RESP, 2); + return false; + } + int16_t dy = pat9125_y - fsensor_autoload_y; + if (dy) //? dy value is nonzero + { + if (dy > 0) //? delta-y value is positive (inserting) + { + fsensor_autoload_sum += dy; + fsensor_autoload_c += 3; //increment change counter by 3 + } + else if (fsensor_autoload_c > 1) + fsensor_autoload_c -= 2; //decrement change counter by 2 + fsensor_autoload_y = pat9125_y; //save current value + } + else if (fsensor_autoload_c > 0) + fsensor_autoload_c--; + if (fsensor_autoload_c == 0) fsensor_autoload_sum = 0; +#if 0 + puts_P(_N("fsensor_check_autoload\n")); + if (fsensor_autoload_c != fsensor_autoload_c_old) + printf_P(PSTR("fsensor_check_autoload dy=%d c=%d sum=%d\n"), dy, fsensor_autoload_c, fsensor_autoload_sum); +#endif +// if ((fsensor_autoload_c >= 15) && (fsensor_autoload_sum > 30)) + if ((fsensor_autoload_c >= 12) && (fsensor_autoload_sum > 20)) + { +// puts_P(_N("fsensor_check_autoload = true !!!\n")); + return true; + } +#endif //PAT9125 + return false; +} + +#ifdef PAT9125 +void fsensor_oq_meassure_set(bool State) +{ + fsensor_oq_meassure_enabled = State; + eeprom_update_byte((unsigned char *)EEPROM_FSENS_OQ_MEASS_ENABLED, fsensor_oq_meassure_enabled); +} + +void fsensor_oq_meassure_start(uint8_t skip) +{ + if (!fsensor_enabled) return; + if (!fsensor_oq_meassure_enabled) return; + puts_P(PSTR("fsensor_oq_meassure_start")); + fsensor_oq_skipchunk = skip; + fsensor_oq_samples = 0; + fsensor_oq_st_sum = 0; + fsensor_oq_yd_sum = 0; + fsensor_oq_er_sum = 0; + fsensor_oq_er_max = 0; + fsensor_oq_yd_min = INT16_MAX; + fsensor_oq_yd_max = 0; + fsensor_oq_sh_sum = 0; + pat9125_update(); + pat9125_y = 0; + fsensor_oq_meassure = true; +} + +void fsensor_oq_meassure_stop(void) +{ + if (!fsensor_enabled) return; + if (!fsensor_oq_meassure_enabled) return; + printf_P(PSTR("fsensor_oq_meassure_stop, %u samples\n"), fsensor_oq_samples); + printf_P(_N(" st_sum=%u yd_sum=%u er_sum=%u er_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max); + printf_P(_N(" yd_min=%u yd_max=%u yd_avg=%u sh_avg=%u\n"), fsensor_oq_yd_min, fsensor_oq_yd_max, (uint16_t)((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum), (uint16_t)(fsensor_oq_sh_sum / fsensor_oq_samples)); + fsensor_oq_meassure = false; +} + +#ifdef FSENSOR_QUALITY +const char _OK[] PROGMEM = "OK"; +const char _NG[] PROGMEM = "NG!"; + +bool fsensor_oq_result(void) +{ + if (!fsensor_enabled) return true; + if (!fsensor_oq_meassure_enabled) return true; + puts_P(_N("fsensor_oq_result")); + bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES); + printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG)); + bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM); + printf_P(_N(" er_max = %u %S\n"), fsensor_oq_er_max, (res_er_max?_OK:_NG)); + uint8_t yd_avg = ((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum); + bool res_yd_avg = (yd_avg >= FSENSOR_OQ_MIN_YD) && (yd_avg <= FSENSOR_OQ_MAX_YD); + printf_P(_N(" yd_avg = %u %S\n"), yd_avg, (res_yd_avg?_OK:_NG)); + bool res_yd_max = (fsensor_oq_yd_max <= (yd_avg * FSENSOR_OQ_MAX_PD)); + printf_P(_N(" yd_max = %u %S\n"), fsensor_oq_yd_max, (res_yd_max?_OK:_NG)); + bool res_yd_min = (fsensor_oq_yd_min >= (yd_avg / FSENSOR_OQ_MAX_ND)); + printf_P(_N(" yd_min = %u %S\n"), fsensor_oq_yd_min, (res_yd_min?_OK:_NG)); + + uint16_t yd_dev = (fsensor_oq_yd_max - yd_avg) + (yd_avg - fsensor_oq_yd_min); + printf_P(_N(" yd_dev = %u\n"), yd_dev); + + uint16_t yd_qua = 10 * yd_avg / (yd_dev + 1); + printf_P(_N(" yd_qua = %u %S\n"), yd_qua, ((yd_qua >= 8)?_OK:_NG)); + + uint8_t sh_avg = (fsensor_oq_sh_sum / fsensor_oq_samples); + bool res_sh_avg = (sh_avg <= FSENSOR_OQ_MAX_SH); + if (yd_qua >= 8) res_sh_avg = true; + + printf_P(_N(" sh_avg = %u %S\n"), sh_avg, (res_sh_avg?_OK:_NG)); + bool res = res_er_sum && res_er_max && res_yd_avg && res_yd_max && res_yd_min && res_sh_avg; + printf_P(_N("fsensor_oq_result %S\n"), (res?_OK:_NG)); + return res; +} +#endif //FSENSOR_QUALITY + +FORCE_INLINE static void fsensor_isr(int st_cnt) +{ + uint8_t old_err_cnt = fsensor_err_cnt; + uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y(); + if (!pat9125_res) + { + fsensor_disable(); + fsensor_not_responding = true; + printf_P(ERRMSG_PAT9125_NOT_RESP, 1); + } + + if (st_cnt != 0) + { + // movement was planned, check for sensor movement + int8_t st_dir = st_cnt >= 0; + int8_t pat9125_dir = pat9125_y >= 0; + + if (pat9125_y == 0) + { + if (st_dir) + { + // no movement detected: we might be within a blind sensor range, + // update the frame and shutter parameters we didn't earlier + if (!fsensor_oq_meassure) + pat9125_update_bs(); + + // increment the error count only if underexposed: filament likely missing + if ((pat9125_b < FSENSOR_OQ_MIN_BR) && (pat9125_s > FSENSOR_OQ_MAX_SH)) + { + // check for a dark frame (<30% avg brightness) with long exposure + ++fsensor_err_cnt; + } + else + { + // good frame, filament likely present + if(fsensor_err_cnt) --fsensor_err_cnt; + } + } + } + else if (pat9125_dir != st_dir) + { + // detected direction opposite of motor movement + if (st_dir) ++fsensor_err_cnt; + } + else if (pat9125_dir == st_dir) + { + // direction agreeing with planned movement + if (fsensor_err_cnt) --fsensor_err_cnt; + } + + if (st_dir && fsensor_oq_meassure) + { + // extruding with quality assessment + if (fsensor_oq_skipchunk) + { + fsensor_oq_skipchunk--; + fsensor_err_cnt = 0; + } + else + { + if (st_cnt == fsensor_chunk_len) + { + if (pat9125_y > 0) if (fsensor_oq_yd_min > pat9125_y) fsensor_oq_yd_min = (fsensor_oq_yd_min + pat9125_y) / 2; + if (pat9125_y >= 0) if (fsensor_oq_yd_max < pat9125_y) fsensor_oq_yd_max = (fsensor_oq_yd_max + pat9125_y) / 2; + } + fsensor_oq_samples++; + fsensor_oq_st_sum += st_cnt; + if (pat9125_y > 0) fsensor_oq_yd_sum += pat9125_y; + if (fsensor_err_cnt > old_err_cnt) + fsensor_oq_er_sum += (fsensor_err_cnt - old_err_cnt); + if (fsensor_oq_er_max < fsensor_err_cnt) + fsensor_oq_er_max = fsensor_err_cnt; + fsensor_oq_sh_sum += pat9125_s; + } + } + } + +#ifdef DEBUG_FSENSOR_LOG + if (fsensor_log) + { + printf_P(_N("FSENSOR cnt=%d dy=%d err=%u %S\n"), st_cnt, pat9125_y, fsensor_err_cnt, (fsensor_err_cnt > old_err_cnt)?_N("NG!"):_N("OK")); + if (fsensor_oq_meassure) printf_P(_N("FSENSOR st_sum=%u yd_sum=%u er_sum=%u er_max=%u yd_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max, fsensor_oq_yd_max); + } +#endif //DEBUG_FSENSOR_LOG + + pat9125_y = 0; +} + +ISR(FSENSOR_INT_PIN_VECT) +{ + if (mmu_enabled || IRSensorDetected()) return; + if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return; + fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG; + + // prevent isr re-entry + static bool _lock = false; + if (!_lock) + { + // fetch fsensor_st_cnt atomically + int st_cnt = fsensor_st_cnt; + fsensor_st_cnt = 0; + + _lock = true; + sei(); + fsensor_isr(st_cnt); + cli(); + _lock = false; + } +} + +void fsensor_setup_interrupt(void) +{ + WRITE(FSENSOR_INT_PIN, 0); + SET_OUTPUT(FSENSOR_INT_PIN); + fsensor_int_pin_old = 0; + + //pciSetup(FSENSOR_INT_PIN); +// !!! "pciSetup()" does not provide the correct results for some MCU pins +// so interrupt registers settings: + FSENSOR_INT_PIN_PCMSK_REG |= bit(FSENSOR_INT_PIN_PCMSK_BIT); // enable corresponding PinChangeInterrupt (individual pin) + PCIFR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // clear previous occasional interrupt (set of pins) + PCICR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // enable corresponding PinChangeInterrupt (set of pins) +} + +void fsensor_st_block_chunk(int cnt) +{ + if (!fsensor_enabled) return; + fsensor_st_cnt += cnt; + + // !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins + WRITE(FSENSOR_INT_PIN, !READ(FSENSOR_INT_PIN)); +} +#endif //PAT9125 + + +//! Common code for enqueing M600 and supplemental codes into the command queue. +//! Used both for the IR sensor and the PAT9125 +void fsensor_enque_M600(){ + puts_P(PSTR("fsensor_update - M600")); + eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); +} + +//! @brief filament sensor update (perform M600 on filament runout) +//! +//! Works only if filament sensor is enabled. +//! When the filament sensor error count is larger then FSENSOR_ERR_MAX, pauses print, tries to move filament back and forth. +//! If there is still no plausible signal from filament sensor plans M600 (Filament change). +void fsensor_update(void) +{ +#ifdef PAT9125 + if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX)) + { + fsensor_stop_and_save_print(); + KEEPALIVE_STATE(IN_HANDLER); + + bool autoload_enabled_tmp = fsensor_autoload_enabled; + fsensor_autoload_enabled = false; + bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled; + fsensor_oq_meassure_enabled = true; + + // move the nozzle away while checking the filament + current_position[Z_AXIS] += 0.8; + if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; + plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); + st_synchronize(); + + // check the filament in isolation + fsensor_reset_err_cnt(); + fsensor_oq_meassure_start(0); + float e_tmp = current_position[E_AXIS]; + current_position[E_AXIS] -= 3; + plan_buffer_line_curposXYZE(250/60); + current_position[E_AXIS] = e_tmp; + plan_buffer_line_curposXYZE(200/60); + st_synchronize(); + fsensor_oq_meassure_stop(); + + bool err = false; + err |= (fsensor_err_cnt > 0); // final error count is non-zero + err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit + err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit + + fsensor_restore_print_and_continue(); + fsensor_autoload_enabled = autoload_enabled_tmp; + fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp; + unsigned long now = _millis(); + if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA) + fsensor_softfail_ccnt = 0; + if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX) + { + puts_P(PSTR("fsensor_err_cnt = 0")); + ++fsensor_softfail; + ++fsensor_softfail_ccnt; + fsensor_softfail_last = now; + } + else + { + fsensor_softfail_ccnt = 0; + fsensor_softfail_last = 0; + fsensor_enque_M600(); + } + } +#else //PAT9125 + if (CHECK_FSENSOR && IRSensorDetected()) + { + if (READ(IR_SENSOR_PIN)) + { // IR_SENSOR_PIN ~ H +#ifdef IR_SENSOR_ANALOG + if(!bIRsensorStateFlag) + { + bIRsensorStateFlag=true; + tIRsensorCheckTimer.start(); + } + else + { + if(tIRsensorCheckTimer.expired(IR_SENSOR_STEADY)) + { + uint8_t nMUX1,nMUX2; + uint16_t nADC; + bIRsensorStateFlag=false; + // sequence for direct data reading from AD converter + DISABLE_TEMPERATURE_INTERRUPT(); + nMUX1=ADMUX; // ADMUX saving + nMUX2=ADCSRB; + adc_setmux(VOLT_IR_PIN); + ADCSRA|=(1<4.6V + // If it does, it means a disconnected cables or faulty board + if( (oFsensorPCB == ClFsensorPCB::_Rev04) && ( (nADC*OVERSAMPLENR) > IRsensor_Hopen_TRESHOLD ) ) + { + fsensor_disable(); + fsensor_not_responding = true; + printf_P(PSTR("IR sensor not responding (%d)!\n"),1); + if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause) + + // if we are printing and FS action is set to "Pause", force pause the print + if(oFsensorActionNA==ClFsensorActionNA::_Pause) + lcd_pause_print(); + } + else + { +#endif //IR_SENSOR_ANALOG + fsensor_checkpoint_print(); + fsensor_enque_M600(); +#ifdef IR_SENSOR_ANALOG + } + } + } + } + else + { // IR_SENSOR_PIN ~ L + bIRsensorStateFlag=false; +#endif //IR_SENSOR_ANALOG + } + } +#endif //PAT9125 +} + +#ifdef IR_SENSOR_ANALOG +/// This is called only upon start of the printer or when switching the fsensor ON in the menu +/// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) +bool fsensor_IR_check(){ + if( IRsensor_Lmax_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_Hmin_TRESHOLD ){ + /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. + /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, + /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual + /// and would have been considered more like a sabotage than normal printer operation + puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); + return false; + } + if( oFsensorPCB == ClFsensorPCB::_Rev04 ){ + /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount + if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ + puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); + return false; + } + /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure +#if 0 //Disabled as it has to be decided if we gonna use this or not. + if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ + puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); + return false; + } +#endif + } + /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false +#if 0 + if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){ + puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); + return false; + } +#endif + // otherwise the IR fsensor is considered working correctly + return true; +} +#endif //IR_SENSOR_ANALOG + +/// if IR_SENSOR is NOT defined, it tries to locate it. +/// @returns true if idler IR sensor was detected, otherwise returns false +#ifndef IR_SENSOR +bool check_for_ir_sensor() { + bool detected = false; + // if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor + if ((READ(IR_SENSOR_PIN) == 0) +#ifdef PAT9125 + && fsensor_not_responding +#endif // PAT9125 + ) { + detected = true; + // printf_P(PSTR("Idler IR sensor detected\n")); + } else { + // printf_P(PSTR("Idler IR sensor not detected\n")); + } + return detected; +} +#endif // IR_SENSOR diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h new file mode 100755 index 000000000..83647a7d1 --- /dev/null +++ b/Firmware/fsensor.h @@ -0,0 +1,133 @@ +//! @file +#ifndef FSENSOR_H +#define FSENSOR_H + +#include +#include "config.h" + + +// enable/disable flag +extern bool fsensor_enabled; +// not responding flag +extern bool fsensor_not_responding; +#ifdef PAT9125 +// optical checking "chunk lenght" (already in steps) +extern int16_t fsensor_chunk_len; +// count of soft failures +extern uint8_t fsensor_softfail; +#endif + +//! @name save restore printing +//! @{ +extern void fsensor_stop_and_save_print(void); +//! restore print - restore position and heatup to original temperature +extern void fsensor_restore_print_and_continue(void); +//! split the current gcode stream to insert new instructions +extern void fsensor_checkpoint_print(void); +//! @} + +//! initialize +extern void fsensor_init(void); + +/// IR sensor detection originally for MMU? +/// Note: the signature of this function intentionally differs upon IR_SENSOR macro to allow for best optimization. +#ifdef IR_SENSOR +constexpr bool IRSensorDetected() { return true; } +#else +bool IRSensorDetected(); +#endif + + +#ifdef PAT9125 +//! update axis resolution +extern void fsensor_set_axis_steps_per_unit(float u); +#endif + +//! @name enable/disable +//! @{ +extern bool fsensor_enable(bool bUpdateEEPROM=true); +extern void fsensor_disable(bool bUpdateEEPROM=true); +//! @} + +//autoload feature enabled +extern bool fsensor_autoload_enabled; +extern void fsensor_autoload_set(bool State); + +extern void fsensor_update(void); +#ifdef PAT9125 +//! setup pin-change interrupt +extern void fsensor_setup_interrupt(void); + +//! @name autoload support +//! @{ + +extern void fsensor_autoload_check_start(void); +extern void fsensor_autoload_check_stop(void); +#endif //PAT9125 +extern bool fsensor_check_autoload(void); +//! @} + +#ifdef PAT9125 +//! @name optical quality measurement support +//! @{ +extern bool fsensor_oq_meassure_enabled; +extern void fsensor_oq_meassure_set(bool State); +extern void fsensor_oq_meassure_start(uint8_t skip); +extern void fsensor_oq_meassure_stop(void); +extern bool fsensor_oq_result(void); +//! @} + +//! @name callbacks from stepper +//! @{ +extern void fsensor_st_block_chunk(int cnt); + +// debugging +extern uint8_t fsensor_log; + +// There's really nothing to do in block_begin: the stepper ISR likely has +// called us already at the end of the last block, making this integration +// redundant. LA1.5 might not always do that during a coasting move, so attempt +// to drain fsensor_st_cnt anyway at the beginning of the new block. +#define fsensor_st_block_begin(rev) fsensor_st_block_chunk(0) +//! @} +#endif //PAT9125 + +#define VOLT_DIV_REF 5 + +#ifdef IR_SENSOR_ANALOG +#define IR_SENSOR_STEADY 10 // [ms] + +enum class ClFsensorPCB:uint_least8_t +{ + _Old=0, + _Rev04=1, + _Undef=EEPROM_EMPTY_VALUE +}; + +enum class ClFsensorActionNA:uint_least8_t +{ + _Continue=0, + _Pause=1, + _Undef=EEPROM_EMPTY_VALUE +}; + +extern ClFsensorPCB oFsensorPCB; +extern ClFsensorActionNA oFsensorActionNA; +extern const char* FsensorIRVersionText(); + +extern bool fsensor_IR_check(); +constexpr uint16_t Voltage2Raw(float V){ + return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; +} +constexpr float Raw2Voltage(uint16_t raw){ + return VOLT_DIV_REF*(raw / (1023.F * OVERSAMPLENR) ); +} +constexpr uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982 +constexpr uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910 +constexpr uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821 +constexpr uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 +constexpr uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368 + +#endif //IR_SENSOR_ANALOG + +#endif //FSENSOR_H diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index aefe3f731..c9d37e5e7 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -3,4 +3,4 @@ namespace MMU2 { //@@TODO void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { } -} +} // namespace MMU2 diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 3dde6fae7..5dd9fee05 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -47,7 +47,6 @@ void ProtocolLogicPartBase::SendButton(uint8_t btn){ StepStatus ProtocolLogic::ProcessUARTByte(uint8_t c) { switch (protocol.DecodeResponse(c)) { case DecodeStatus::MessageCompleted: - // @@TODO reset direction of communication return MessageReady; case DecodeStatus::NeedMoreData: return Processing; @@ -69,7 +68,6 @@ StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { case DecodeStatus::MessageCompleted: rsp = protocol.GetResponseMsg(); LogResponse(); - // @@TODO reset direction of communication RecordUARTActivity(); // something has happened on the UART, update the timeout record return MessageReady; case DecodeStatus::NeedMoreData: diff --git a/Firmware/mmu2_serial.h b/Firmware/mmu2_serial.h index 61949284c..176a8f336 100644 --- a/Firmware/mmu2_serial.h +++ b/Firmware/mmu2_serial.h @@ -8,7 +8,6 @@ namespace MMU2 { class MMU2Serial { public: MMU2Serial() = default; -// bool available()const; void begin(uint32_t baud); void close(); int read(); From db0374896fe6ae709ef98d71c0ba0e4185cf14fb Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 20 Apr 2022 17:12:00 +0200 Subject: [PATCH 041/319] Implement mmu2 serial interface --- Firmware/mmu2_serial.cpp | 30 +++++++++++++++++++++++------- Firmware/uart2.c | 4 ++-- Firmware/uart2.h | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Firmware/mmu2_serial.cpp b/Firmware/mmu2_serial.cpp index 2b9388624..5ac8e3e29 100644 --- a/Firmware/mmu2_serial.cpp +++ b/Firmware/mmu2_serial.cpp @@ -1,14 +1,30 @@ #include "mmu2_serial.h" - -//@@TODO implement for MK3 +#include "uart2.h" namespace MMU2 { -void MMU2Serial::begin(uint32_t baud){ } -void MMU2Serial::close() { } -int MMU2Serial::read() { } -void MMU2Serial::flush() { } -size_t MMU2Serial::write(const uint8_t *buffer, size_t size) { } +void MMU2Serial::begin(uint32_t baud){ + uart2_init(baud); // @@TODO we may skip the baud rate setting in case of 8bit FW ... could save some bytes... +} + +void MMU2Serial::close() { + // @@TODO - probably turn off the UART +} + +int MMU2Serial::read() { + return fgetc(uart2io); +} + +void MMU2Serial::flush() { + // @@TODO - clear the output buffer +} + +size_t MMU2Serial::write(const uint8_t *buffer, size_t size) { + while(size--){ + fputc(*buffer, uart2io); + ++buffer; + } +} MMU2Serial mmu2Serial; diff --git a/Firmware/uart2.c b/Firmware/uart2.c index f3da9ed33..57b0f77a6 100644 --- a/Firmware/uart2.c +++ b/Firmware/uart2.c @@ -33,13 +33,13 @@ int uart2_getchar(_UNUSED FILE *stream) } //uart init (io + FILE stream) -void uart2_init(void) +void uart2_init(uint32_t baudRate) { DDRH &= ~0x01; PORTH |= 0x01; rbuf_ini(uart2_ibuf, sizeof(uart2_ibuf) - 4); UCSR2A |= (1 << U2X2); // baudrate multiplier - UBRR2L = UART_BAUD_SELECT(UART2_BAUD, F_CPU); // select baudrate + UBRR2L = UART_BAUD_SELECT(baudRate, F_CPU); // select baudrate UCSR2B = (1 << RXEN2) | (1 << TXEN2); // enable receiver and transmitter UCSR2B |= (1 << RXCIE2); // enable rx interrupt fdev_setup_stream(uart2io, uart2_putchar, uart2_getchar, _FDEV_SETUP_WRITE | _FDEV_SETUP_READ); //setup uart2 i/o stream diff --git a/Firmware/uart2.h b/Firmware/uart2.h index 05f15d8ff..4c72daa83 100644 --- a/Firmware/uart2.h +++ b/Firmware/uart2.h @@ -15,7 +15,7 @@ extern FILE _uart2io; #define uart2io (&_uart2io) -extern void uart2_init(void); +extern void uart2_init(uint32_t baudRate); extern int8_t uart2_rx_str_P(const char* str); From 4732859a98a7b16b31c451b7438f75055ad36fd1 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 20 Apr 2022 17:32:22 +0200 Subject: [PATCH 042/319] Avoid exposing internal variables of fsensor makes the code a bit shorter as well, because the compiler can be sure that the variables are not accessed from the outside of the fsensor.cpp compilation unit. --- Firmware/fsensor.cpp | 60 ++++++++++++++++++++++++------------------- Firmware/fsensor.h | 21 ++++++++++----- Firmware/ultralcd.cpp | 12 +++++++++ 3 files changed, 59 insertions(+), 34 deletions(-) diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp index 351e9a786..b4a029afb 100755 --- a/Firmware/fsensor.cpp +++ b/Firmware/fsensor.cpp @@ -44,19 +44,23 @@ const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n"; #define FSENSOR_INT_PIN_PCICR_BIT PCIE1 // PinChange Interrupt Enable / Flag @ PJ4 //! enabled = initialized and sampled every chunk event -bool fsensor_enabled = true; +static bool enabled = true; +bool fsensor_enabled() { return enabled; } + //! runout watching is done in fsensor_update (called from main loop) -bool fsensor_watch_runout = true; +static bool fsensor_watch_runout = true; //! not responding - is set if any communication error occurred during initialization or readout -bool fsensor_not_responding = false; +static bool not_responding = false; +bool fsensor_not_responding(){ return not_responding; } +void fsensor_set_responding_ok() { not_responding = false; } /// This flag was originally located in mmu.cpp. Not sure what it was supposed to do, but it looks like /// it was holding "true" all the time on MK3S. #ifndef IR_SENSOR -bool ir_sensor_detected = false; +static bool ir_sensor_detected = false; bool check_for_ir_sensor(); ///< detects IR sensor and updates ir_sensor_detected -bool IRSensorDetected() { +bool fsensor_IR_detected() { return ir_sensor_detected; } #endif @@ -89,9 +93,11 @@ uint8_t fsensor_log = 1; //! @{ //! autoload feature enabled -bool fsensor_autoload_enabled = true; +static bool autoload_enabled = true; +bool fsensor_autoload_enabled() { return autoload_enabled; } + //! autoload watching enable/disable flag -bool fsensor_watch_autoload = false; +static bool watch_autoload = false; #ifdef PAT9125 // @@ -202,8 +208,8 @@ void fsensor_init(void) printf_P(PSTR("PAT9125_init:%u\n"), pat9125); #endif //PAT9125 uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); - fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); - fsensor_not_responding = false; + autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); + not_responding = false; #ifdef PAT9125 uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED); fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false; @@ -223,7 +229,7 @@ void fsensor_init(void) // set this flag accordingly to show N/A in Settings->Filament sensor. // This is even valid for both fsensor board revisions (0.3 or older and 0.4). // Must be done after reading what type of fsensor board we have - fsensor_not_responding = ! fsensor_IR_check(); + not_responding = ! fsensor_IR_check(); #endif //IR_SENSOR_ANALOG if (fsensor_enabled){ fsensor_enable(false); // (in this case) EEPROM update is not necessary @@ -272,14 +278,14 @@ bool fsensor_enable(bool bUpdateEEPROM) if(!fsensor_IR_check()) { bUpdateEEPROM=true; - fsensor_enabled=false; - fsensor_not_responding=true; + enabled=false; + not_responding=true; FSensorStateMenu=0; } else { #endif //IR_SENSOR_ANALOG - fsensor_enabled=true; - fsensor_not_responding=false; + enabled=true; + not_responding=false; FSensorStateMenu=1; #ifdef IR_SENSOR_ANALOG } @@ -287,12 +293,12 @@ bool fsensor_enable(bool bUpdateEEPROM) if(bUpdateEEPROM) eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, FSensorStateMenu); #endif //PAT9125 - return fsensor_enabled; + return enabled; } void fsensor_disable(bool bUpdateEEPROM) { - fsensor_enabled = false; + enabled = false; FSensorStateMenu = 0; if(bUpdateEEPROM) eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); @@ -303,8 +309,8 @@ void fsensor_autoload_set(bool State) #ifdef PAT9125 if (!State) fsensor_autoload_check_stop(); #endif //PAT9125 - fsensor_autoload_enabled = State; - eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, fsensor_autoload_enabled); + autoload_enabled = State; + eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, autoload_enabled); } void pciSetup(byte pin) @@ -358,14 +364,14 @@ void fsensor_autoload_check_stop(void) bool fsensor_check_autoload(void) { - if (!fsensor_enabled) return false; - if (!fsensor_autoload_enabled) return false; - if (IRSensorDetected()) { + if (!enabled) return false; + if (!autoload_enabled) return false; + if (fsensor_IR_detected()) { if (READ(IR_SENSOR_PIN)) { - fsensor_watch_autoload = true; + watch_autoload = true; } - else if (fsensor_watch_autoload == true) { - fsensor_watch_autoload = false; + else if (watch_autoload == true) { + watch_autoload = false; return true; } } @@ -581,7 +587,7 @@ FORCE_INLINE static void fsensor_isr(int st_cnt) ISR(FSENSOR_INT_PIN_VECT) { - if (mmu_enabled || IRSensorDetected()) return; + if (mmu_enabled || fsensor_IR_detected()) return; if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return; fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG; @@ -696,7 +702,7 @@ void fsensor_update(void) } } #else //PAT9125 - if (CHECK_FSENSOR && IRSensorDetected()) + if (CHECK_FSENSOR && fsensor_IR_detected()) { if (READ(IR_SENSOR_PIN)) { // IR_SENSOR_PIN ~ H @@ -734,7 +740,7 @@ void fsensor_update(void) if( (oFsensorPCB == ClFsensorPCB::_Rev04) && ( (nADC*OVERSAMPLENR) > IRsensor_Hopen_TRESHOLD ) ) { fsensor_disable(); - fsensor_not_responding = true; + not_responding = true; printf_P(PSTR("IR sensor not responding (%d)!\n"),1); if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause) diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h index 83647a7d1..10f0e145c 100755 --- a/Firmware/fsensor.h +++ b/Firmware/fsensor.h @@ -6,10 +6,17 @@ #include "config.h" -// enable/disable flag -extern bool fsensor_enabled; -// not responding flag -extern bool fsensor_not_responding; +//! @name filament sensor enable/disable flag +//! @{ +bool fsensor_enabled(); +//! @} + +//! @name filament sensor not responding flag +//! @{ +bool fsensor_not_responding(); +void fsensor_set_responding_ok(); +//! @} + #ifdef PAT9125 // optical checking "chunk lenght" (already in steps) extern int16_t fsensor_chunk_len; @@ -32,9 +39,9 @@ extern void fsensor_init(void); /// IR sensor detection originally for MMU? /// Note: the signature of this function intentionally differs upon IR_SENSOR macro to allow for best optimization. #ifdef IR_SENSOR -constexpr bool IRSensorDetected() { return true; } +constexpr bool fsensor_IR_detected() { return true; } #else -bool IRSensorDetected(); +bool fsensor_IR_detected(); #endif @@ -50,8 +57,8 @@ extern void fsensor_disable(bool bUpdateEEPROM=true); //! @} //autoload feature enabled -extern bool fsensor_autoload_enabled; extern void fsensor_autoload_set(bool State); +bool fsensor_autoload_enabled(); extern void fsensor_update(void); #ifdef PAT9125 diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index dd43adb76..f1d74c835 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1791,6 +1791,18 @@ void lcd_cutter_enabled() } #endif //MMU_HAS_CUTTER +void lcd_set_filament_autoload() { + fsensor_autoload_set(!fsensor_autoload_enabled()); +} + +#if defined(FILAMENT_SENSOR) && defined(PAT9125) +void lcd_set_filament_oq_meass() +{ + fsensor_oq_meassure_set(!fsensor_oq_meassure_enabled); +} +#endif + + FilamentAction eFilamentAction=FilamentAction::None; // must be initialized as 'non-autoLoad' bool bFilamentPreheatState; bool bFilamentAction=false; From 4fa4b3b2fc1503d2748a507695e90abc9e2d8f41 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 21 Apr 2022 09:38:54 +0200 Subject: [PATCH 043/319] Refactor Tx/Tc/T? commands --- Firmware/Marlin_main.cpp | 7 ++-- Firmware/Tcodes.cpp | 59 +++++++++++--------------------- Firmware/mmu2.cpp | 74 +++++++++++++++++----------------------- Firmware/mmu2.h | 4 ++- 4 files changed, 58 insertions(+), 86 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d7e2e50d2..b19939865 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3542,9 +3542,10 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (MMU2::mmu2.Enabled()) { if (!automatic) { - if (saved_printing) - MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), - false); // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it + if (saved_printing){ + // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it + MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), false); + } //@@TODO mmu_M600_wait_and_beep(); if (saved_printing) { diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index e94dfe8b1..e61584f52 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -1,13 +1,14 @@ #include "Tcodes.h" +#include "AutoDeplete.h" #include "Marlin.h" +#include "language.h" +#include "messages.h" #include "mmu2.h" #include "stepper.h" +#include "ultralcd.h" #include #include #include -#include "language.h" -#include "messages.h" -#include "ultralcd.h" #include static const char duplicate_Tcode_ignored[] PROGMEM = "Duplicate T-code ignored."; @@ -20,30 +21,6 @@ inline void TCodeInvalid() { SERIAL_ECHOLNPGM("Invalid T code."); } -// load to bondtech gears; if mmu is not present do nothing -void TCodeX() { - if (MMU2::mmu2.Enabled()) { - uint8_t selectedSlot = choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT)); - if ((selectedSlot == MMU2::mmu2.get_current_tool()) /*&& mmu_fil_loaded @@TODO */){ - // dont execute the same T-code twice in a row - puts_P(duplicate_Tcode_ignored); - } else { - st_synchronize(); - MMU2::mmu2.tool_change(selectedSlot); - } - } -} - -// load to from bondtech gears to nozzle (nozzle should be preheated) -void TCodeC() { - if (MMU2::mmu2.Enabled()) { - st_synchronize(); -// @@TODO mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); -// mmu_extruder = selectedSlot; // filament change is finished -// MMU2::mmu2.load_filament_to_nozzle(); - } -} - struct SChooseFromMenu { uint8_t slot:7; uint8_t loadToNozzle:1; @@ -60,32 +37,38 @@ SChooseFromMenu TCodeChooseFromMenu() { } void TCodes(char *const strchr_pointer, uint8_t codeValue) { - uint8_t index; - for (index = 1; strchr_pointer[index] == ' ' || strchr_pointer[index] == '\t'; index++) + uint8_t index = 1; + for ( /*nothing*/ ; strchr_pointer[index] == ' ' || strchr_pointer[index] == '\t'; index++) ; strchr_pointer[index] = tolower(strchr_pointer[index]); - if (IsInvalidTCode(strchr_pointer, index)) + if (IsInvalidTCode(strchr_pointer, index)){ TCodeInvalid(); - else if (strchr_pointer[index] == 'x') - TCodeX(); - else if (strchr_pointer[index] == 'c') - TCodeC(); - else { + } else if (strchr_pointer[index] == 'x'){ + // load to bondtech gears; if mmu is not present do nothing + if (MMU2::mmu2.Enabled()) { + MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER))); + } + } else if (strchr_pointer[index] == 'c'){ + // load from bondtech gears to nozzle (nozzle should be preheated) + if (MMU2::mmu2.Enabled()) { + MMU2::mmu2.tool_change(strchr_pointer[index], 0); + } + } else { SChooseFromMenu selectedSlot; if (strchr_pointer[index] == '?') selectedSlot = TCodeChooseFromMenu(); else { selectedSlot.slot = codeValue; if (MMU2::mmu2.Enabled() && lcd_autoDepleteEnabled()) { -// @@TODO selectedSlot.slot = ad_getAlternative(selectedSlot); + selectedSlot.slot = ad_getAlternative(selectedSlot.slot); } } st_synchronize(); if (MMU2::mmu2.Enabled()) { - if ((selectedSlot.slot == MMU2::mmu2.get_current_tool()) /*&& mmu_fil_loaded @@TODO*/){ + if (selectedSlot.slot == MMU2::mmu2.get_current_tool()){ // don't execute the same T-code twice in a row puts_P(duplicate_Tcode_ignored); } else { @@ -96,8 +79,6 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { } #endif // defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) MMU2::mmu2.tool_change(selectedSlot.slot); -// @@TODO mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); - if (selectedSlot.loadToNozzle){ // for single material usage with mmu MMU2::mmu2.load_filament_to_nozzle(selectedSlot.slot); } diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index e3ea2e0af..81a1f2175 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -13,8 +13,8 @@ #include "stepper.h" #include "strlen_cx.h" #include "temperature.h" +#include "ultralcd.h" -// @@TODO remove this and enable it in the configuration files // Settings for filament load / unload from the LCD menu. // This is for Prusa MK3-style extruders. Customize for your hardware. #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 @@ -70,6 +70,18 @@ namespace MMU2 { void execute_extruder_sequence(const E_Step *sequence, int steps); +template +void waitForHotendTargetTemp(uint16_t delay, F f){ + while (((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)) { + f(); + delay_keep_alive(delay); + } +} + +void WaitForHotendTargetTempBeep(){ + waitForHotendTargetTemp(3000, []{ Sound_MakeSound(e_SOUND_TYPE_StandardPrompt); } ); +} + MMU2 mmu2; MMU2::MMU2() @@ -209,41 +221,32 @@ bool MMU2::tool_change(uint8_t index) { ///- T? Gcode to extrude shouldn't have to follow, load to extruder wheels is done automatically ///- Tx Same as T?, except nozzle doesn't have to be preheated. Tc must be placed after extruder nozzle is preheated to finish filament load. ///- Tc Load to nozzle after filament was prepared by Tx and extruder nozzle is already heated. -bool MMU2::tool_change(const char *special) { +bool MMU2::tool_change(char code, uint8_t slot) { if( ! WaitForMMUReady()) return false; -#if 0 //@@TODO BlockRunoutRAII blockRunout; - switch (*special) { + switch (code) { case '?': { - uint8_t index = 0; // mmu2_choose_filament(); //@@TODO GUI - user selects - while (!thermalManager.wait_for_hotend(active_extruder, false)) - safe_delay(100); - load_filament_to_nozzle(index); + waitForHotendTargetTemp(100, []{}); + load_filament_to_nozzle(slot); } break; case 'x': { - planner.synchronize(); - uint8_t index = 0; //mmu2_choose_filament(); //@@TODO GUI - user selects - disable_E0(); - logic.ToolChange(index); - manage_response(false, false); // true, true); - - enable_E0(); - extruder = index; + st_synchronize(); + logic.ToolChange(slot); + manage_response(false, false); + extruder = slot; SetActiveExtruder(0); } break; case 'c': { - while (!thermalManager.wait_for_hotend(active_extruder, false)) - safe_delay(100); - execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, COUNT(load_to_nozzle_sequence)); + waitForHotendTargetTemp(100, []{}); + execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); } break; } -#endif return true; } @@ -268,12 +271,7 @@ bool MMU2::unload() { if( ! WaitForMMUReady()) return false; - // @@TODO -// if (thermalManager.tooColdToExtrude(active_extruder)) { -// Sound_MakeSound(e_SOUND_TYPE_Prompt); -// LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); -// return false; -// } + WaitForHotendTargetTempBeep(); { ReportingRAII rep(CommandInProgress::UnloadFilament); @@ -328,12 +326,9 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { LoadingToNozzleRAII ln(*this); - // @@TODO how is this supposed to be done in 8bit FW? -/* if (thermalManager.tooColdToExtrude(active_extruder)) { - Sound_MakeSound(e_SOUND_TYPE_Prompt); - LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); - return false; - } else*/ { + WaitForHotendTargetTempBeep(); + + { // used for MMU-menu operation "Load to Nozzle" ReportingRAII rep(CommandInProgress::ToolChange); BlockRunoutRAII blockRunout; @@ -360,12 +355,7 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { if( ! WaitForMMUReady()) return false; - //@@TODO -// if (thermalManager.tooColdToExtrude(active_extruder)) { -// Sound_MakeSound(e_SOUND_TYPE_Prompt); -// LCD_ALERTMESSAGEPGM(MSG_HOTEND_TOO_COLD); -// return false; -// } + WaitForHotendTargetTempBeep(); ReportingRAII rep(CommandInProgress::EjectFilament); current_position[E_AXIS] -= MMU2_FILAMENTCHANGE_EJECT_FEED; @@ -456,11 +446,9 @@ void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { MMU2_ECHO_MSG("Restoring hotend temperature "); SERIAL_ECHOLN(resume_hotend_temp); setTargetHotend(resume_hotend_temp, active_extruder); - - if (((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)) { - // @@TODO lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else - delay_keep_alive(3000); - } + waitForHotendTargetTemp(3000, []{ + lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else + }); LogEchoEvent("Hotend temperature reached"); } diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 58632597b..b87d8ab97 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -77,7 +77,7 @@ public: bool tool_change(uint8_t index); /// Handling of special Tx, Tc, T? commands - bool tool_change(const char *special); + bool tool_change(char code, uint8_t slot); /// Unload of filament in collaboration with the MMU. /// That includes rotating the printer's extruder in order to release filament. @@ -196,6 +196,8 @@ private: /// true in case we are doing the LoadToNozzle operation - that means the filament shall be loaded all the way down to the nozzle /// unlike the mid-print ToolChange commands, which only load the first ~30mm and then the G-code takes over. bool loadingToNozzle; + + }; /// following Marlin's way of doing stuff - one and only instance of MMU implementation in the code base From 825eed97d467fd5842b525e41097a5a3512ff0b0 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 21 Apr 2022 12:03:16 +0200 Subject: [PATCH 044/319] Fix build after rebase --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f1d74c835..2fd507a0b 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1792,7 +1792,7 @@ void lcd_cutter_enabled() #endif //MMU_HAS_CUTTER void lcd_set_filament_autoload() { - fsensor_autoload_set(!fsensor_autoload_enabled()); + fsensor.setAutoLoadEnabled(!fsensor.getAutoLoadEnabled()); } #if defined(FILAMENT_SENSOR) && defined(PAT9125) From 1211ad936056b0c35db71006c18bdb7811ab9103 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 21 Apr 2022 13:22:04 +0200 Subject: [PATCH 045/319] Report state of fsensor into the MMU code --- Firmware/mmu2_fsensor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_fsensor.cpp b/Firmware/mmu2_fsensor.cpp index ee9a70573..1e03814f5 100644 --- a/Firmware/mmu2_fsensor.cpp +++ b/Firmware/mmu2_fsensor.cpp @@ -1,10 +1,10 @@ #include "mmu2_fsensor.h" +#include "Filament_sensor.h" namespace MMU2 { FilamentState WhereIsFilament(){ - // @@TODO - return FilamentState::IN_NOZZLE; + return fsensor.getFilamentPresent() ? FilamentState::IN_NOZZLE : FilamentState::NOT_PRESENT; } // on AVR this does nothing From 74fad4f8f66e1787c4ff5692a5e9bcad9823dd44 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 21 Apr 2022 15:48:06 +0200 Subject: [PATCH 046/319] Implement fsensor raii event suppression --- Firmware/mmu2_fsensor.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2_fsensor.cpp b/Firmware/mmu2_fsensor.cpp index 1e03814f5..3d1bc8fb4 100644 --- a/Firmware/mmu2_fsensor.cpp +++ b/Firmware/mmu2_fsensor.cpp @@ -7,8 +7,21 @@ FilamentState WhereIsFilament(){ return fsensor.getFilamentPresent() ? FilamentState::IN_NOZZLE : FilamentState::NOT_PRESENT; } -// on AVR this does nothing -BlockRunoutRAII::BlockRunoutRAII() { } -BlockRunoutRAII::~BlockRunoutRAII() { } + +BlockRunoutRAII::BlockRunoutRAII() { +#ifdef FILAMENT_SENSOR + fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +#endif +} + +BlockRunoutRAII::~BlockRunoutRAII() { +#ifdef FILAMENT_SENSOR + fsensor.settings_init(); // restore filament runout state. +#endif +} } // namespace MMU2 From 87d9f9aba79ab6fcea9df657184d961ccf50391d Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Apr 2022 09:45:26 +0200 Subject: [PATCH 047/319] Introduce MMU errors + their texts --- Firmware/mmu2/errors_list.h | 320 ++++++++++++++++++++++++++++++ Firmware/mmu2_error_converter.cpp | 98 ++++++++- 2 files changed, 416 insertions(+), 2 deletions(-) create mode 100644 Firmware/mmu2/errors_list.h diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h new file mode 100644 index 000000000..d1ebf6b2b --- /dev/null +++ b/Firmware/mmu2/errors_list.h @@ -0,0 +1,320 @@ +// Extracted from Prusa-Error-Codes repo +// Subject to automation and optimization +#pragma once +#include "inttypes.h" +#include "../language.h" +#include + +namespace MMU2 { + +static constexpr uint8_t ERR_MMU_CODE = 4; + +typedef enum : uint16_t { + ERR_UNDEF = 0, + + ERR_MECHANICAL = 100, + ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, + ERR_MECHANICAL_FINDA_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, + ERR_MECHANICAL_FSENSOR_DIDNT_SWITCH_OFF, + + ERR_MECHANICAL_PULLEY_STALLED = 105, + ERR_MECHANICAL_SELECTOR_CANNOT_HOME = 115, + ERR_MECHANICAL_IDLER_CANNOT_HOME = 125, + + + ERR_TEMPERATURE = 200, + ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_WARN = 201, + ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_WARN = 211, + ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_WARN = 221, + + ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_ERROR = 202, + ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_ERROR = 212, + ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_ERROR = 222, + + + ERR_ELECTRICAL = 300, + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_ERROR = 301, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_ERROR = 311, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_ERROR = 321, + + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_RESET = 302, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_RESET = 312, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_RESET = 322, + + ERR_ELECTRICAL_TMC_PULLEY_UNDERVOLTAGE_ERROR = 303, + ERR_ELECTRICAL_TMC_SELECTOR_UNDERVOLTAGE_ERROR = 313, + ERR_ELECTRICAL_TMC_IDLER_UNDERVOLTAGE_ERROR = 323, + + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_SHORTED = 304, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_SHORTED = 314, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_SHORTED = 324, + + + ERR_CONNECT = 400, + ERR_CONNECT_MMU_NOT_RESPONDING = 401, + ERR_CONNECT_COMMUNICATION_ERROR = 402, + + + ERR_SYSTEM = 500, + ERR_SYSTEM_FILAMENT_ALREADY_LOADED = 501, + ERR_SYSTEM_INVALID_TOOL = 502, + ERR_SYSTEM_QUEUE_FULL = 503, + ERR_SYSTEM_VERSION_MISMATCH = 504, + ERR_SYSTEM_RUNTIME_ERROR = 505, + + ERR_OTHER = 900 +} err_num_t; + +// Avr gcc has serious trouble understanding static data structures in PROGMEM +// and inadvertedly falls back to copying the whole structure into RAM (which is obviously unwanted). +// But since this file ought to be generated in the future from yaml prescription, +// it really makes no difference if there are "nice" data structures or plain arrays. +static const uint16_t errorCodes[] PROGMEM = { + ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, + ERR_MECHANICAL_FINDA_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, + ERR_MECHANICAL_FSENSOR_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_PULLEY_STALLED, + ERR_MECHANICAL_SELECTOR_CANNOT_HOME, + ERR_MECHANICAL_IDLER_CANNOT_HOME, + ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_WARN, + ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_WARN, + ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_WARN, + ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_ERROR, + ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_ERROR, + ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_ERROR, + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_ERROR, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_ERROR, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_ERROR, + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_RESET, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_RESET, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_RESET, + ERR_ELECTRICAL_TMC_PULLEY_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_TMC_SELECTOR_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_TMC_IDLER_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_TMC_PULLEY_DRIVER_SHORTED, + ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_SHORTED, + ERR_ELECTRICAL_TMC_IDLER_DRIVER_SHORTED, + ERR_CONNECT_MMU_NOT_RESPONDING, + ERR_CONNECT_COMMUNICATION_ERROR, + ERR_SYSTEM_FILAMENT_ALREADY_LOADED, + ERR_SYSTEM_INVALID_TOOL, + ERR_SYSTEM_QUEUE_FULL, + ERR_SYSTEM_VERSION_MISMATCH, + ERR_SYSTEM_RUNTIME_ERROR, +}; + +// @@TODO some of the strings are duplicates, can be merged into one +static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA NOT ON"); +static const char titleFINDA_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FINDA NOT OFF"); +static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR NOT ON"); +static const char titleFSENSOR_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FSENSOR NOT OFF"); +static const char titlePULLEY_STALLED[] PROGMEM_I1 = ISTR("PULLEY STALLED"); +static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CAN'T HOME"); +static const char titleIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); +static const char titleTMC_PULLEY_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); +static const char titleTMC_SELECTOR_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); +static const char titleTMC_IDLER_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); +static const char titleTMC_PULLEY_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleTMC_SELECTOR_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleTMC_IDLER_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleTMC_PULLEY_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleTMC_SELECTOR_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleTMC_IDLER_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleTMC_PULLEY_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleTMC_SELECTOR_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleTMC_IDLER_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleTMC_PULLEY_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); +static const char titleTMC_SELECTOR_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); +static const char titleTMC_IDLER_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); +static const char titleTMC_PULLEY_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleTMC_SELECTOR_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleTMC_IDLER_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); +static const char titleCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); +static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("ALREADY LOADED"); +static const char titleINVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); +static const char titleQUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); +static const char titleVERSION_MISMATCH[] PROGMEM_I1 = ISTR("FW VERSION MISMATCH"); +static const char titleRUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); + +static const char * const errorTitles [] PROGMEM = { + titleFINDA_DIDNT_TRIGGER, + titleFINDA_DIDNT_SWITCH_OFF, + titleFSENSOR_DIDNT_TRIGGER, + titleFSENSOR_DIDNT_SWITCH_OFF, + titlePULLEY_STALLED, + titleSELECTOR_CANNOT_HOME, + titleIDLER_CANNOT_HOME, + titleTMC_PULLEY_OVER_TEMPERATURE_WARN, + titleTMC_SELECTOR_OVER_TEMPERATURE_WARN, + titleTMC_IDLER_OVER_TEMPERATURE_WARN, + titleTMC_PULLEY_OVER_TEMPERATURE_ERROR, + titleTMC_SELECTOR_OVER_TEMPERATURE_ERROR, + titleTMC_IDLER_OVER_TEMPERATURE_ERROR, + titleTMC_PULLEY_DRIVER_ERROR, + titleTMC_SELECTOR_DRIVER_ERROR, + titleTMC_IDLER_DRIVER_ERROR, + titleTMC_PULLEY_DRIVER_RESET, + titleTMC_SELECTOR_DRIVER_RESET, + titleTMC_IDLER_DRIVER_RESET, + titleTMC_PULLEY_UNDERVOLTAGE_ERROR, + titleTMC_SELECTOR_UNDERVOLTAGE_ERROR, + titleTMC_IDLER_UNDERVOLTAGE_ERROR, + titleTMC_PULLEY_DRIVER_SHORTED, + titleTMC_SELECTOR_DRIVER_SHORTED, + titleTMC_IDLER_DRIVER_SHORTED, + titleMMU_NOT_RESPONDING, + titleCOMMUNICATION_ERROR, + titleFILAMENT_ALREADY_LOADED, + titleINVALID_TOOL, + titleQUEUE_FULL, + titleVERSION_MISMATCH, + titleRUNTIME_ERROR, +}; + +// @@TODO looking at the texts, they can be composed of several parts and/or parametrized (could save a lot of space ;) ) +static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading filament. Ensure that the steel FINDA ball can move freely and check the wiring."); +static const char descFINDA_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading the filament manually and ensure steel FINDA ball can move freely."); +static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Check that the filament reached the fsensor and check the wiring."); +static const char descFSENSOR_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading the filament. The filament is probably stuck near the sensor or the sensor is malfunctioning."); +static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley stalled - check for anything blocking the filament from being pushed/pulled to/from the extruder."); +static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly - check for anything blocking its movement."); +static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly - check for anything blocking its movement."); +static const char descTMC_PULLEY_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); +static const char descTMC_SELECTOR_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); +static const char descTMC_IDLER_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); +static const char descTMC_PULLEY_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and restart MMU."); +static const char descTMC_SELECTOR_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and restart MMU."); +static const char descTMC_IDLER_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and restart MMU."); +static const char descTMC_PULLEY_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try restarting the MMU. If the issue persist contact the support."); +static const char descTMC_SELECTOR_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try restarting the MMU. If the issue persist contact the support."); +static const char descTMC_IDLER_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try restarting the MMU. If the issue persist contact the support."); +static const char descTMC_PULLEY_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_SELECTOR_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_IDLER_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_PULLEY_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_SELECTOR_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_IDLER_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descTMC_PULLEY_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persist contact the support."); +static const char descTMC_SELECTOR_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persist contact the support."); +static const char descTMC_IDLER_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persist contact the support."); +static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persist contact the support."); +static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persist contact the support."); +static const char descFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); +static const char descINVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code file for possible issue."); +static const char descQUEUE_FULL[] PROGMEM_I1 = ISTR("Internal runtime error of the firmware, please restart the MMU."); +static const char descVERSION_MISMATCH[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); +static const char descRUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try restarting the MMU unit or updating the firmware. If the issue persist contact the support."); + +static const char * const errorDescs[] PROGMEM = { + descFINDA_DIDNT_TRIGGER, + descFINDA_DIDNT_SWITCH_OFF, + descFSENSOR_DIDNT_TRIGGER, + descFSENSOR_DIDNT_SWITCH_OFF, + descPULLEY_STALLED, + descSELECTOR_CANNOT_HOME, + descIDLER_CANNOT_HOME, + descTMC_PULLEY_OVER_TEMPERATURE_WARN, + descTMC_SELECTOR_OVER_TEMPERATURE_WARN, + descTMC_IDLER_OVER_TEMPERATURE_WARN, + descTMC_PULLEY_OVER_TEMPERATURE_ERROR, + descTMC_SELECTOR_OVER_TEMPERATURE_ERROR, + descTMC_IDLER_OVER_TEMPERATURE_ERROR, + descTMC_PULLEY_DRIVER_ERROR, + descTMC_SELECTOR_DRIVER_ERROR, + descTMC_IDLER_DRIVER_ERROR, + descTMC_PULLEY_DRIVER_RESET, + descTMC_SELECTOR_DRIVER_RESET, + descTMC_IDLER_DRIVER_RESET, + descTMC_PULLEY_UNDERVOLTAGE_ERROR, + descTMC_SELECTOR_UNDERVOLTAGE_ERROR, + descTMC_IDLER_UNDERVOLTAGE_ERROR, + descTMC_PULLEY_DRIVER_SHORTED, + descTMC_SELECTOR_DRIVER_SHORTED, + descTMC_IDLER_DRIVER_SHORTED, + descMMU_NOT_RESPONDING, + descCOMMUNICATION_ERROR, + descFILAMENT_ALREADY_LOADED, + descINVALID_TOOL, + descQUEUE_FULL, + descVERSION_MISMATCH, + descRUNTIME_ERROR, +}; + +/// Will be mapped onto dialog button responses in the FW +/// Those responses have their unique+translated texts as well +enum class ButtonOperations : uint8_t { + NoOperation, + Retry, + SlowLoad, + Continue, + RestartMMU, + Unload, + StopPrint, + DisableMMU, +}; + +// we have max 3 buttons/operations to select from +// one of them is "More" to show the explanation text normally hidden in the next screens. +// 01234567890123456789 +// >bttxt >bttxt >MoreW +// Therefore at least some of the buttons, which can occur on the screen together, need to be 5-chars long max @@TODO. +// @@TODO beware - this doesn't correspond to the HW MMU buttons - needs to be discussed +static const char btnRetry[] PROGMEM_I1 = ISTR("Retry"); +static const char btnSlowLoad[] PROGMEM_I1 = ISTR("Slow"); +static const char btnContinue[] PROGMEM_I1 = ISTR("Done"); +static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); +static const char btnUnload[] PROGMEM_I1 = ISTR("Unload"); +static const char btnStop[] PROGMEM_I1 = ISTR("Stop"); +static const char btnDisableMMU[] PROGMEM_I1 = ISTR("Disable"); +static const char btnMore[] PROGMEM_I1 = ISTR("More"); // @@TODO add that downwards facing >> character + +// We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. +// Since one of the buttons is always "More", we can skip that one. +// Therefore we need just 1 byte to describe the necessary buttons for each screen. +uint8_t constexpr Btns(ButtonOperations b0, ButtonOperations b1){ + return ((uint8_t)b1) << 4 | ((uint8_t)b0); +} + +static const uint8_t errorButtons[] PROGMEM = { + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + + Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), + Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), + Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), + + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), + + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + + Btns(ButtonOperations::Unload, ButtonOperations::Continue), + Btns(ButtonOperations::StopPrint, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::DisableMMU), + Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), +}; + +} // namespace MMU2 diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 2165bfb10..c677a490f 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -1,6 +1,100 @@ #include "mmu2_error_converter.h" +#include "mmu2/error_codes.h" +#include "mmu2/errors_list.h" +#include "language.h" namespace MMU2 { -// @@TODO -void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { } + +// @@TODO ideally compute the numbers by using some constexpr function, but since +// the current avg-gcc doesn't support cycles in constexpr functions, it is hard to achieve. +// So for now this has been hand-crafted. +const uint16_t MMUErrorCodeIndex(uint16_t ec) { + switch (ec) { + case (uint16_t)ErrorCode::FINDA_DIDNT_SWITCH_ON: + return 0; + case (uint16_t)ErrorCode::FINDA_DIDNT_SWITCH_OFF: + return 1; + case (uint16_t)ErrorCode::FSENSOR_DIDNT_SWITCH_ON: + return 2; + case (uint16_t)ErrorCode::FSENSOR_DIDNT_SWITCH_OFF: + return 3; + case (uint16_t)ErrorCode::STALLED_PULLEY: + return 4; + case (uint16_t)ErrorCode::HOMING_SELECTOR_FAILED: + return 5; + case (uint16_t)ErrorCode::HOMING_IDLER_FAILED: + return 6; + case (uint16_t)ErrorCode::MMU_NOT_RESPONDING: + return 25; + case (uint16_t)ErrorCode::PROTOCOL_ERROR: + return 26; + case (uint16_t)ErrorCode::FILAMENT_ALREADY_LOADED: + return 27; + case (uint16_t)ErrorCode::INVALID_TOOL: + return 28; + case (uint16_t)ErrorCode::QUEUE_FULL: + return 29; + case (uint16_t)ErrorCode::VERSION_MISMATCH: + return 30; + case (uint16_t)ErrorCode::INTERNAL: + return 31; + } + +// // TMC-related errors - multiple of these can occur at once +// // - in such a case we report the first which gets found/converted into Prusa-Error-Codes (usually the fact, that one TMC has an issue is serious enough) +// // By carefully ordering the checks here we can prioritize the errors being reported to the user. + if (ec & (uint16_t)ErrorCode::TMC_PULLEY_BIT) { + if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) + return 13; + if (ec & (uint16_t)ErrorCode::TMC_RESET) + return 16; + if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) + return 19; + if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) + return 22; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) + return 7; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) + return 10; + } else if (ec & (uint16_t)ErrorCode::TMC_SELECTOR_BIT) { + if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) + return 14; + if (ec & (uint16_t)ErrorCode::TMC_RESET) + return 17; + if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) + return 20; + if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) + return 23; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) + return 8; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) + return 11; + } else if (ec & (uint16_t)ErrorCode::TMC_IDLER_BIT) { + if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) + return 15; + if (ec & (uint16_t)ErrorCode::TMC_RESET) + return 18; + if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) + return 21; + if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) + return 24; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) + return 9; + if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) + return 12; + } + +// // if nothing got caught, return a generic error +// return FindError(ERR_OTHER); } + +void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { + uint16_t ei = MMUErrorCodeIndex(ec); + // just to prevent the compiler from stripping the data structures from the final binary for now + *dst = errorButtons[ei]; + strncpy_P(dst + 1, errorTitles[ei], dstSize); + strncat_P(dst, errorDescs[ei], dstSize); + +} + +} // namespace MMU2 From 22287fec5d54372585abdc8b59cd9d15ed123469 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Apr 2022 12:37:28 +0200 Subject: [PATCH 048/319] Add original M600 MMU handling seems to be almost unrelated to MMU function at all, so returning it almost intact. --- Firmware/Marlin_main.cpp | 64 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b19939865..45c2a512b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3472,6 +3472,64 @@ static T gcode_M600_filament_change_z_shift() #endif } +static void mmu_M600_wait_and_beep() { + // Beep and wait for user to remove old filament and prepare new filament for load + KEEPALIVE_STATE(PAUSED_FOR_USER); + + int counterBeep = 0; + lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament.")); ////MSG_REMOVE_OLD_FILAMENT c=20 r=5 + bool bFirst = true; + + while (!lcd_clicked()) { + manage_heater(); + manage_inactivity(true); + +#if BEEPER > 0 + if (counterBeep == 500) { + counterBeep = 0; + } + SET_OUTPUT(BEEPER); + if (counterBeep == 0) { + if ((eSoundMode == e_SOUND_MODE_BLIND) || (eSoundMode == e_SOUND_MODE_LOUD) || ((eSoundMode == e_SOUND_MODE_ONCE) && bFirst)) { + bFirst = false; + WRITE(BEEPER, HIGH); + } + } + if (counterBeep == 20) { + WRITE(BEEPER, LOW); + } + + counterBeep++; +#endif // BEEPER > 0 + + delay_keep_alive(4); + } + WRITE(BEEPER, LOW); +} + +/// @brief load filament for mmu v2 +/// @par nozzle_temp nozzle temperature to load filament +void mmu_M600_load_filament(bool automatic, float nozzle_temp) { + uint8_t tmp_extruder = MMU2::mmu2.get_current_tool(); + if (automatic) { + tmp_extruder = ad_getAlternative(tmp_extruder); + } + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); + lcd_print(' '); + lcd_print(tmp_extruder + 1); + + // printf_P(PSTR("T code: %d \n"), tmp_extruder); + // mmu_printf_P(PSTR("T%d\n"), tmp_extruder); + setTargetHotend(nozzle_temp, active_extruder); + + MMU2::mmu2.load_filament_to_nozzle(tmp_extruder); + + load_filament_final_feed(); // @@TODO verify + st_synchronize(); +} + static void gcode_M600(bool automatic, float x_position, float y_position, float z_shift, float e_shift, float /*e_shift_late*/) { st_synchronize(); float lastpos[4]; @@ -3546,17 +3604,15 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), false); } -//@@TODO mmu_M600_wait_and_beep(); + mmu_M600_wait_and_beep(); if (saved_printing) { - lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); - //@@TODO mmu_command(MmuCmd::R0); // manage_response(false, false); } } -//@@TODO mmu_M600_load_filament(automatic, HotendTempBckp); + mmu_M600_load_filament(automatic, HotendTempBckp); } else M600_load_filament(); From 9140ebba55ee241aeafe187ead281060df222b96 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Apr 2022 14:46:13 +0200 Subject: [PATCH 049/319] Add MMU FW version variables hardcoded for now, but API ready --- Firmware/fsensor.cpp | 826 ------------------------------------------ Firmware/fsensor.h | 140 ------- Firmware/mmu2.cpp | 2 +- Firmware/mmu2.h | 14 + Firmware/ultralcd.cpp | 13 +- 5 files changed, 20 insertions(+), 975 deletions(-) delete mode 100755 Firmware/fsensor.cpp delete mode 100755 Firmware/fsensor.h diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp deleted file mode 100755 index b4a029afb..000000000 --- a/Firmware/fsensor.cpp +++ /dev/null @@ -1,826 +0,0 @@ -//! @file - -#include "Marlin.h" - -#include "fsensor.h" -#include -#include "pat9125.h" -#include "stepper.h" -#include "cmdqueue.h" -#include "ultralcd.h" -#include "mmu2.h" -#include "cardreader.h" - -#include "adc.h" -#include "temperature.h" -#include "config.h" - -//! @name Basic parameters -//! @{ -#define FSENSOR_CHUNK_LEN 1.25 //!< filament sensor chunk length (mm) -#define FSENSOR_ERR_MAX 4 //!< filament sensor maximum error/chunk count for runout detection - -#define FSENSOR_SOFTERR_CMAX 3 //!< number of contiguous soft failures before a triggering a runout -#define FSENSOR_SOFTERR_DELTA 30000 //!< maximum interval (ms) to consider soft failures contiguous -//! @} - -//! @name Optical quality measurement parameters -//! @{ -#define FSENSOR_OQ_MAX_ES 2 //!< maximum sum of error blocks during filament recheck -#define FSENSOR_OQ_MIN_YD 2 //!< minimum yd sum during filament check (counts per inch) -#define FSENSOR_OQ_MIN_BR 80 //!< minimum brightness value -#define FSENSOR_OQ_MAX_SH 10 //!< maximum shutter value -//! @} - -const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n"; - -// PJ7 can not be used (does not have PinChangeInterrupt possibility) -#define FSENSOR_INT_PIN 75 //!< filament sensor interrupt pin PJ4 -#define FSENSOR_INT_PIN_MASK 0x10 //!< filament sensor interrupt pin mask (bit4) -#define FSENSOR_INT_PIN_PIN_REG PINJ // PIN register @ PJ4 -#define FSENSOR_INT_PIN_VECT PCINT1_vect // PinChange ISR @ PJ4 -#define FSENSOR_INT_PIN_PCMSK_REG PCMSK1 // PinChangeMaskRegister @ PJ4 -#define FSENSOR_INT_PIN_PCMSK_BIT PCINT13 // PinChange Interrupt / PinChange Enable Mask @ PJ4 -#define FSENSOR_INT_PIN_PCICR_BIT PCIE1 // PinChange Interrupt Enable / Flag @ PJ4 - -//! enabled = initialized and sampled every chunk event -static bool enabled = true; -bool fsensor_enabled() { return enabled; } - -//! runout watching is done in fsensor_update (called from main loop) -static bool fsensor_watch_runout = true; -//! not responding - is set if any communication error occurred during initialization or readout -static bool not_responding = false; -bool fsensor_not_responding(){ return not_responding; } -void fsensor_set_responding_ok() { not_responding = false; } - -/// This flag was originally located in mmu.cpp. Not sure what it was supposed to do, but it looks like -/// it was holding "true" all the time on MK3S. -#ifndef IR_SENSOR -static bool ir_sensor_detected = false; -bool check_for_ir_sensor(); ///< detects IR sensor and updates ir_sensor_detected - -bool fsensor_IR_detected() { - return ir_sensor_detected; -} -#endif - -#ifdef PAT9125 -uint8_t fsensor_int_pin_old = 0; -//! optical checking "chunk lenght" (already in steps) -int16_t fsensor_chunk_len = 0; -//! enable/disable quality meassurement -bool fsensor_oq_meassure_enabled = false; -//! number of errors, updated in ISR -uint8_t fsensor_err_cnt = 0; -//! variable for accumulating step count (updated callbacks from stepper and ISR) -int16_t fsensor_st_cnt = 0; -//! count of total sensor "soft" failures (filament status checks) -uint8_t fsensor_softfail = 0; -//! timestamp of last soft failure -unsigned long fsensor_softfail_last = 0; -//! count of soft failures within the configured time -uint8_t fsensor_softfail_ccnt = 0; -#endif - -#ifdef DEBUG_FSENSOR_LOG -//! log flag: 0=log disabled, 1=log enabled -uint8_t fsensor_log = 1; -#endif //DEBUG_FSENSOR_LOG - - -//! @name filament autoload variables -//! @{ - -//! autoload feature enabled -static bool autoload_enabled = true; -bool fsensor_autoload_enabled() { return autoload_enabled; } - -//! autoload watching enable/disable flag -static bool watch_autoload = false; - -#ifdef PAT9125 -// -uint16_t fsensor_autoload_y; -// -uint8_t fsensor_autoload_c; -// -uint32_t fsensor_autoload_last_millis; -// -uint8_t fsensor_autoload_sum; -//! @} -#endif - - -//! @name filament optical quality measurement variables -//! @{ - -//! Measurement enable/disable flag -bool fsensor_oq_meassure = false; -//! skip-chunk counter, for accurate measurement is necessary to skip first chunk... -uint8_t fsensor_oq_skipchunk; -//! number of samples from start of measurement -uint8_t fsensor_oq_samples; -//! sum of steps in positive direction movements -uint16_t fsensor_oq_st_sum; -//! sum of deltas in positive direction movements -uint16_t fsensor_oq_yd_sum; -//! sum of errors during measurement -uint16_t fsensor_oq_er_sum; -//! max error counter value during measurement -uint8_t fsensor_oq_er_max; -//! minimum delta value -int16_t fsensor_oq_yd_min; -//! maximum delta value -int16_t fsensor_oq_yd_max; -//! sum of shutter value -uint16_t fsensor_oq_sh_sum; -//! @} - -#ifdef IR_SENSOR_ANALOG -ClFsensorPCB oFsensorPCB; -ClFsensorActionNA oFsensorActionNA; -bool bIRsensorStateFlag=false; -ShortTimer tIRsensorCheckTimer; -#endif //IR_SENSOR_ANALOG - -void fsensor_stop_and_save_print(void) -{ - puts_P(PSTR("fsensor_stop_and_save_print")); - stop_and_save_print_to_ram(0, 0); - fsensor_watch_runout = false; -} - -#ifdef PAT9125 -// Reset all internal counters to zero, including stepper callbacks -void fsensor_reset_err_cnt() -{ - fsensor_err_cnt = 0; - pat9125_y = 0; - st_reset_fsensor(); -} - -void fsensor_set_axis_steps_per_unit(float u) -{ - fsensor_chunk_len = (int16_t)(FSENSOR_CHUNK_LEN * u); -} -#endif - - -void fsensor_restore_print_and_continue(void) -{ - puts_P(PSTR("fsensor_restore_print_and_continue")); - fsensor_watch_runout = true; -#ifdef PAT9125 - fsensor_reset_err_cnt(); -#endif - restore_print_from_ram_and_continue(0); -} - -// fsensor_checkpoint_print cuts the current print job at the current position, -// allowing new instructions to be inserted in the middle -void fsensor_checkpoint_print(void) -{ - puts_P(PSTR("fsensor_checkpoint_print")); - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); -} - -#ifdef IR_SENSOR_ANALOG -const char* FsensorIRVersionText() -{ - switch(oFsensorPCB) - { - case ClFsensorPCB::_Old: - return _T(MSG_IR_03_OR_OLDER); - case ClFsensorPCB::_Rev04: - return _T(MSG_IR_04_OR_NEWER); - default: - return _T(MSG_IR_UNKNOWN); - } -} -#endif //IR_SENSOR_ANALOG - -void fsensor_init(void) -{ -#ifdef PAT9125 - uint8_t pat9125 = pat9125_init(); - printf_P(PSTR("PAT9125_init:%u\n"), pat9125); -#endif //PAT9125 - uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); - autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); - not_responding = false; -#ifdef PAT9125 - uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED); - fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false; - fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]); - - if (!pat9125){ - fsensor_enabled = 0; //disable sensor - fsensor_not_responding = true; - } -#endif //PAT9125 -#ifdef IR_SENSOR_ANALOG - bIRsensorStateFlag=false; - oFsensorPCB = (ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); - oFsensorActionNA = (ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); - - // If the fsensor is not responding even at the start of the printer, - // set this flag accordingly to show N/A in Settings->Filament sensor. - // This is even valid for both fsensor board revisions (0.3 or older and 0.4). - // Must be done after reading what type of fsensor board we have - not_responding = ! fsensor_IR_check(); -#endif //IR_SENSOR_ANALOG - if (fsensor_enabled){ - fsensor_enable(false); // (in this case) EEPROM update is not necessary - } else { - fsensor_disable(false); // (in this case) EEPROM update is not necessary - } - printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED"))); -#ifdef IR_SENSOR_ANALOG - printf_P(PSTR(" (sensor board revision:%S)\n"), FsensorIRVersionText()); -#else //IR_SENSOR_ANALOG - MYSERIAL.println(); -#endif //IR_SENSOR_ANALOG - -#ifndef IR_SENSOR - ir_sensor_detected = check_for_ir_sensor(); -#endif -} - -bool fsensor_enable(bool bUpdateEEPROM) -{ -#ifdef PAT9125 - (void)bUpdateEEPROM; // silence unused warning in this variant - - if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working - uint8_t pat9125 = pat9125_init(); - printf_P(PSTR("PAT9125_init:%u\n"), pat9125); - if (pat9125) - fsensor_not_responding = false; - else - fsensor_not_responding = true; - fsensor_enabled = pat9125 ? true : false; - fsensor_watch_runout = true; - fsensor_oq_meassure = false; - fsensor_reset_err_cnt(); - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, fsensor_enabled ? 0x01 : 0x00); - FSensorStateMenu = fsensor_enabled ? 1 : 0; - } - else //filament sensor is FINDA, always enable - { - fsensor_enabled = true; - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x01); - FSensorStateMenu = 1; - } -#else // PAT9125 -#ifdef IR_SENSOR_ANALOG - if(!fsensor_IR_check()) - { - bUpdateEEPROM=true; - enabled=false; - not_responding=true; - FSensorStateMenu=0; - } - else { -#endif //IR_SENSOR_ANALOG - enabled=true; - not_responding=false; - FSensorStateMenu=1; -#ifdef IR_SENSOR_ANALOG - } -#endif //IR_SENSOR_ANALOG - if(bUpdateEEPROM) - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, FSensorStateMenu); -#endif //PAT9125 - return enabled; -} - -void fsensor_disable(bool bUpdateEEPROM) -{ - enabled = false; - FSensorStateMenu = 0; - if(bUpdateEEPROM) - eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); -} - -void fsensor_autoload_set(bool State) -{ -#ifdef PAT9125 - if (!State) fsensor_autoload_check_stop(); -#endif //PAT9125 - autoload_enabled = State; - eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, autoload_enabled); -} - -void pciSetup(byte pin) -{ -// !!! "digitalPinTo?????bit()" does not provide the correct results for some MCU pins - *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin - PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt - PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group -} - -#ifdef PAT9125 -void fsensor_autoload_check_start(void) -{ -// puts_P(_N("fsensor_autoload_check_start\n")); - if (!fsensor_enabled) return; - if (!fsensor_autoload_enabled) return; - if (fsensor_watch_autoload) return; - if (!pat9125_update()) //update sensor - { - fsensor_disable(); - fsensor_not_responding = true; - fsensor_watch_autoload = false; - printf_P(ERRMSG_PAT9125_NOT_RESP, 3); - return; - } - puts_P(_N("fsensor_autoload_check_start - autoload ENABLED")); - fsensor_autoload_y = pat9125_y; //save current y value - fsensor_autoload_c = 0; //reset number of changes counter - fsensor_autoload_sum = 0; - fsensor_autoload_last_millis = _millis(); - fsensor_watch_runout = false; - fsensor_watch_autoload = true; -} - - -void fsensor_autoload_check_stop(void) -{ -// puts_P(_N("fsensor_autoload_check_stop\n")); - if (!fsensor_enabled) return; -// puts_P(_N("fsensor_autoload_check_stop 1\n")); - if (!fsensor_autoload_enabled) return; -// puts_P(_N("fsensor_autoload_check_stop 2\n")); - if (!fsensor_watch_autoload) return; - puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED")); - fsensor_autoload_sum = 0; - fsensor_watch_autoload = false; - fsensor_watch_runout = true; - fsensor_reset_err_cnt(); -} -#endif //PAT9125 - -bool fsensor_check_autoload(void) -{ - if (!enabled) return false; - if (!autoload_enabled) return false; - if (fsensor_IR_detected()) { - if (READ(IR_SENSOR_PIN)) { - watch_autoload = true; - } - else if (watch_autoload == true) { - watch_autoload = false; - return true; - } - } -#ifdef PAT9125 - if (!fsensor_watch_autoload) - { - fsensor_autoload_check_start(); - return false; - } -#if 0 - uint8_t fsensor_autoload_c_old = fsensor_autoload_c; -#endif - if ((_millis() - fsensor_autoload_last_millis) < 25) return false; - fsensor_autoload_last_millis = _millis(); - if (!pat9125_update_y()) //update sensor - { - fsensor_disable(); - fsensor_not_responding = true; - printf_P(ERRMSG_PAT9125_NOT_RESP, 2); - return false; - } - int16_t dy = pat9125_y - fsensor_autoload_y; - if (dy) //? dy value is nonzero - { - if (dy > 0) //? delta-y value is positive (inserting) - { - fsensor_autoload_sum += dy; - fsensor_autoload_c += 3; //increment change counter by 3 - } - else if (fsensor_autoload_c > 1) - fsensor_autoload_c -= 2; //decrement change counter by 2 - fsensor_autoload_y = pat9125_y; //save current value - } - else if (fsensor_autoload_c > 0) - fsensor_autoload_c--; - if (fsensor_autoload_c == 0) fsensor_autoload_sum = 0; -#if 0 - puts_P(_N("fsensor_check_autoload\n")); - if (fsensor_autoload_c != fsensor_autoload_c_old) - printf_P(PSTR("fsensor_check_autoload dy=%d c=%d sum=%d\n"), dy, fsensor_autoload_c, fsensor_autoload_sum); -#endif -// if ((fsensor_autoload_c >= 15) && (fsensor_autoload_sum > 30)) - if ((fsensor_autoload_c >= 12) && (fsensor_autoload_sum > 20)) - { -// puts_P(_N("fsensor_check_autoload = true !!!\n")); - return true; - } -#endif //PAT9125 - return false; -} - -#ifdef PAT9125 -void fsensor_oq_meassure_set(bool State) -{ - fsensor_oq_meassure_enabled = State; - eeprom_update_byte((unsigned char *)EEPROM_FSENS_OQ_MEASS_ENABLED, fsensor_oq_meassure_enabled); -} - -void fsensor_oq_meassure_start(uint8_t skip) -{ - if (!fsensor_enabled) return; - if (!fsensor_oq_meassure_enabled) return; - puts_P(PSTR("fsensor_oq_meassure_start")); - fsensor_oq_skipchunk = skip; - fsensor_oq_samples = 0; - fsensor_oq_st_sum = 0; - fsensor_oq_yd_sum = 0; - fsensor_oq_er_sum = 0; - fsensor_oq_er_max = 0; - fsensor_oq_yd_min = INT16_MAX; - fsensor_oq_yd_max = 0; - fsensor_oq_sh_sum = 0; - pat9125_update(); - pat9125_y = 0; - fsensor_oq_meassure = true; -} - -void fsensor_oq_meassure_stop(void) -{ - if (!fsensor_enabled) return; - if (!fsensor_oq_meassure_enabled) return; - printf_P(PSTR("fsensor_oq_meassure_stop, %u samples\n"), fsensor_oq_samples); - printf_P(_N(" st_sum=%u yd_sum=%u er_sum=%u er_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max); - printf_P(_N(" yd_min=%u yd_max=%u yd_avg=%u sh_avg=%u\n"), fsensor_oq_yd_min, fsensor_oq_yd_max, (uint16_t)((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum), (uint16_t)(fsensor_oq_sh_sum / fsensor_oq_samples)); - fsensor_oq_meassure = false; -} - -#ifdef FSENSOR_QUALITY -const char _OK[] PROGMEM = "OK"; -const char _NG[] PROGMEM = "NG!"; - -bool fsensor_oq_result(void) -{ - if (!fsensor_enabled) return true; - if (!fsensor_oq_meassure_enabled) return true; - puts_P(_N("fsensor_oq_result")); - bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES); - printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG)); - bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM); - printf_P(_N(" er_max = %u %S\n"), fsensor_oq_er_max, (res_er_max?_OK:_NG)); - uint8_t yd_avg = ((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum); - bool res_yd_avg = (yd_avg >= FSENSOR_OQ_MIN_YD) && (yd_avg <= FSENSOR_OQ_MAX_YD); - printf_P(_N(" yd_avg = %u %S\n"), yd_avg, (res_yd_avg?_OK:_NG)); - bool res_yd_max = (fsensor_oq_yd_max <= (yd_avg * FSENSOR_OQ_MAX_PD)); - printf_P(_N(" yd_max = %u %S\n"), fsensor_oq_yd_max, (res_yd_max?_OK:_NG)); - bool res_yd_min = (fsensor_oq_yd_min >= (yd_avg / FSENSOR_OQ_MAX_ND)); - printf_P(_N(" yd_min = %u %S\n"), fsensor_oq_yd_min, (res_yd_min?_OK:_NG)); - - uint16_t yd_dev = (fsensor_oq_yd_max - yd_avg) + (yd_avg - fsensor_oq_yd_min); - printf_P(_N(" yd_dev = %u\n"), yd_dev); - - uint16_t yd_qua = 10 * yd_avg / (yd_dev + 1); - printf_P(_N(" yd_qua = %u %S\n"), yd_qua, ((yd_qua >= 8)?_OK:_NG)); - - uint8_t sh_avg = (fsensor_oq_sh_sum / fsensor_oq_samples); - bool res_sh_avg = (sh_avg <= FSENSOR_OQ_MAX_SH); - if (yd_qua >= 8) res_sh_avg = true; - - printf_P(_N(" sh_avg = %u %S\n"), sh_avg, (res_sh_avg?_OK:_NG)); - bool res = res_er_sum && res_er_max && res_yd_avg && res_yd_max && res_yd_min && res_sh_avg; - printf_P(_N("fsensor_oq_result %S\n"), (res?_OK:_NG)); - return res; -} -#endif //FSENSOR_QUALITY - -FORCE_INLINE static void fsensor_isr(int st_cnt) -{ - uint8_t old_err_cnt = fsensor_err_cnt; - uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y(); - if (!pat9125_res) - { - fsensor_disable(); - fsensor_not_responding = true; - printf_P(ERRMSG_PAT9125_NOT_RESP, 1); - } - - if (st_cnt != 0) - { - // movement was planned, check for sensor movement - int8_t st_dir = st_cnt >= 0; - int8_t pat9125_dir = pat9125_y >= 0; - - if (pat9125_y == 0) - { - if (st_dir) - { - // no movement detected: we might be within a blind sensor range, - // update the frame and shutter parameters we didn't earlier - if (!fsensor_oq_meassure) - pat9125_update_bs(); - - // increment the error count only if underexposed: filament likely missing - if ((pat9125_b < FSENSOR_OQ_MIN_BR) && (pat9125_s > FSENSOR_OQ_MAX_SH)) - { - // check for a dark frame (<30% avg brightness) with long exposure - ++fsensor_err_cnt; - } - else - { - // good frame, filament likely present - if(fsensor_err_cnt) --fsensor_err_cnt; - } - } - } - else if (pat9125_dir != st_dir) - { - // detected direction opposite of motor movement - if (st_dir) ++fsensor_err_cnt; - } - else if (pat9125_dir == st_dir) - { - // direction agreeing with planned movement - if (fsensor_err_cnt) --fsensor_err_cnt; - } - - if (st_dir && fsensor_oq_meassure) - { - // extruding with quality assessment - if (fsensor_oq_skipchunk) - { - fsensor_oq_skipchunk--; - fsensor_err_cnt = 0; - } - else - { - if (st_cnt == fsensor_chunk_len) - { - if (pat9125_y > 0) if (fsensor_oq_yd_min > pat9125_y) fsensor_oq_yd_min = (fsensor_oq_yd_min + pat9125_y) / 2; - if (pat9125_y >= 0) if (fsensor_oq_yd_max < pat9125_y) fsensor_oq_yd_max = (fsensor_oq_yd_max + pat9125_y) / 2; - } - fsensor_oq_samples++; - fsensor_oq_st_sum += st_cnt; - if (pat9125_y > 0) fsensor_oq_yd_sum += pat9125_y; - if (fsensor_err_cnt > old_err_cnt) - fsensor_oq_er_sum += (fsensor_err_cnt - old_err_cnt); - if (fsensor_oq_er_max < fsensor_err_cnt) - fsensor_oq_er_max = fsensor_err_cnt; - fsensor_oq_sh_sum += pat9125_s; - } - } - } - -#ifdef DEBUG_FSENSOR_LOG - if (fsensor_log) - { - printf_P(_N("FSENSOR cnt=%d dy=%d err=%u %S\n"), st_cnt, pat9125_y, fsensor_err_cnt, (fsensor_err_cnt > old_err_cnt)?_N("NG!"):_N("OK")); - if (fsensor_oq_meassure) printf_P(_N("FSENSOR st_sum=%u yd_sum=%u er_sum=%u er_max=%u yd_max=%u\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max, fsensor_oq_yd_max); - } -#endif //DEBUG_FSENSOR_LOG - - pat9125_y = 0; -} - -ISR(FSENSOR_INT_PIN_VECT) -{ - if (mmu_enabled || fsensor_IR_detected()) return; - if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return; - fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG; - - // prevent isr re-entry - static bool _lock = false; - if (!_lock) - { - // fetch fsensor_st_cnt atomically - int st_cnt = fsensor_st_cnt; - fsensor_st_cnt = 0; - - _lock = true; - sei(); - fsensor_isr(st_cnt); - cli(); - _lock = false; - } -} - -void fsensor_setup_interrupt(void) -{ - WRITE(FSENSOR_INT_PIN, 0); - SET_OUTPUT(FSENSOR_INT_PIN); - fsensor_int_pin_old = 0; - - //pciSetup(FSENSOR_INT_PIN); -// !!! "pciSetup()" does not provide the correct results for some MCU pins -// so interrupt registers settings: - FSENSOR_INT_PIN_PCMSK_REG |= bit(FSENSOR_INT_PIN_PCMSK_BIT); // enable corresponding PinChangeInterrupt (individual pin) - PCIFR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // clear previous occasional interrupt (set of pins) - PCICR |= bit(FSENSOR_INT_PIN_PCICR_BIT); // enable corresponding PinChangeInterrupt (set of pins) -} - -void fsensor_st_block_chunk(int cnt) -{ - if (!fsensor_enabled) return; - fsensor_st_cnt += cnt; - - // !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins - WRITE(FSENSOR_INT_PIN, !READ(FSENSOR_INT_PIN)); -} -#endif //PAT9125 - - -//! Common code for enqueing M600 and supplemental codes into the command queue. -//! Used both for the IR sensor and the PAT9125 -void fsensor_enque_M600(){ - puts_P(PSTR("fsensor_update - M600")); - eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); - eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); - enquecommand_front_P((PSTR("M600"))); -} - -//! @brief filament sensor update (perform M600 on filament runout) -//! -//! Works only if filament sensor is enabled. -//! When the filament sensor error count is larger then FSENSOR_ERR_MAX, pauses print, tries to move filament back and forth. -//! If there is still no plausible signal from filament sensor plans M600 (Filament change). -void fsensor_update(void) -{ -#ifdef PAT9125 - if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX)) - { - fsensor_stop_and_save_print(); - KEEPALIVE_STATE(IN_HANDLER); - - bool autoload_enabled_tmp = fsensor_autoload_enabled; - fsensor_autoload_enabled = false; - bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled; - fsensor_oq_meassure_enabled = true; - - // move the nozzle away while checking the filament - current_position[Z_AXIS] += 0.8; - if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; - plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); - st_synchronize(); - - // check the filament in isolation - fsensor_reset_err_cnt(); - fsensor_oq_meassure_start(0); - float e_tmp = current_position[E_AXIS]; - current_position[E_AXIS] -= 3; - plan_buffer_line_curposXYZE(250/60); - current_position[E_AXIS] = e_tmp; - plan_buffer_line_curposXYZE(200/60); - st_synchronize(); - fsensor_oq_meassure_stop(); - - bool err = false; - err |= (fsensor_err_cnt > 0); // final error count is non-zero - err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit - err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit - - fsensor_restore_print_and_continue(); - fsensor_autoload_enabled = autoload_enabled_tmp; - fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp; - unsigned long now = _millis(); - if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA) - fsensor_softfail_ccnt = 0; - if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX) - { - puts_P(PSTR("fsensor_err_cnt = 0")); - ++fsensor_softfail; - ++fsensor_softfail_ccnt; - fsensor_softfail_last = now; - } - else - { - fsensor_softfail_ccnt = 0; - fsensor_softfail_last = 0; - fsensor_enque_M600(); - } - } -#else //PAT9125 - if (CHECK_FSENSOR && fsensor_IR_detected()) - { - if (READ(IR_SENSOR_PIN)) - { // IR_SENSOR_PIN ~ H -#ifdef IR_SENSOR_ANALOG - if(!bIRsensorStateFlag) - { - bIRsensorStateFlag=true; - tIRsensorCheckTimer.start(); - } - else - { - if(tIRsensorCheckTimer.expired(IR_SENSOR_STEADY)) - { - uint8_t nMUX1,nMUX2; - uint16_t nADC; - bIRsensorStateFlag=false; - // sequence for direct data reading from AD converter - DISABLE_TEMPERATURE_INTERRUPT(); - nMUX1=ADMUX; // ADMUX saving - nMUX2=ADCSRB; - adc_setmux(VOLT_IR_PIN); - ADCSRA|=(1<4.6V - // If it does, it means a disconnected cables or faulty board - if( (oFsensorPCB == ClFsensorPCB::_Rev04) && ( (nADC*OVERSAMPLENR) > IRsensor_Hopen_TRESHOLD ) ) - { - fsensor_disable(); - not_responding = true; - printf_P(PSTR("IR sensor not responding (%d)!\n"),1); - if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause) - - // if we are printing and FS action is set to "Pause", force pause the print - if(oFsensorActionNA==ClFsensorActionNA::_Pause) - lcd_pause_print(); - } - else - { -#endif //IR_SENSOR_ANALOG - fsensor_checkpoint_print(); - fsensor_enque_M600(); -#ifdef IR_SENSOR_ANALOG - } - } - } - } - else - { // IR_SENSOR_PIN ~ L - bIRsensorStateFlag=false; -#endif //IR_SENSOR_ANALOG - } - } -#endif //PAT9125 -} - -#ifdef IR_SENSOR_ANALOG -/// This is called only upon start of the printer or when switching the fsensor ON in the menu -/// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time) -bool fsensor_IR_check(){ - if( IRsensor_Lmax_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_Hmin_TRESHOLD ){ - /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. - /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, - /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual - /// and would have been considered more like a sabotage than normal printer operation - puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); - return false; - } - if( oFsensorPCB == ClFsensorPCB::_Rev04 ){ - /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount - if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ - puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); - return false; - } - /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure -#if 0 //Disabled as it has to be decided if we gonna use this or not. - if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){ - puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); - return false; - } -#endif - } - /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false -#if 0 - if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){ - puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); - return false; - } -#endif - // otherwise the IR fsensor is considered working correctly - return true; -} -#endif //IR_SENSOR_ANALOG - -/// if IR_SENSOR is NOT defined, it tries to locate it. -/// @returns true if idler IR sensor was detected, otherwise returns false -#ifndef IR_SENSOR -bool check_for_ir_sensor() { - bool detected = false; - // if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor - if ((READ(IR_SENSOR_PIN) == 0) -#ifdef PAT9125 - && fsensor_not_responding -#endif // PAT9125 - ) { - detected = true; - // printf_P(PSTR("Idler IR sensor detected\n")); - } else { - // printf_P(PSTR("Idler IR sensor not detected\n")); - } - return detected; -} -#endif // IR_SENSOR diff --git a/Firmware/fsensor.h b/Firmware/fsensor.h deleted file mode 100755 index 10f0e145c..000000000 --- a/Firmware/fsensor.h +++ /dev/null @@ -1,140 +0,0 @@ -//! @file -#ifndef FSENSOR_H -#define FSENSOR_H - -#include -#include "config.h" - - -//! @name filament sensor enable/disable flag -//! @{ -bool fsensor_enabled(); -//! @} - -//! @name filament sensor not responding flag -//! @{ -bool fsensor_not_responding(); -void fsensor_set_responding_ok(); -//! @} - -#ifdef PAT9125 -// optical checking "chunk lenght" (already in steps) -extern int16_t fsensor_chunk_len; -// count of soft failures -extern uint8_t fsensor_softfail; -#endif - -//! @name save restore printing -//! @{ -extern void fsensor_stop_and_save_print(void); -//! restore print - restore position and heatup to original temperature -extern void fsensor_restore_print_and_continue(void); -//! split the current gcode stream to insert new instructions -extern void fsensor_checkpoint_print(void); -//! @} - -//! initialize -extern void fsensor_init(void); - -/// IR sensor detection originally for MMU? -/// Note: the signature of this function intentionally differs upon IR_SENSOR macro to allow for best optimization. -#ifdef IR_SENSOR -constexpr bool fsensor_IR_detected() { return true; } -#else -bool fsensor_IR_detected(); -#endif - - -#ifdef PAT9125 -//! update axis resolution -extern void fsensor_set_axis_steps_per_unit(float u); -#endif - -//! @name enable/disable -//! @{ -extern bool fsensor_enable(bool bUpdateEEPROM=true); -extern void fsensor_disable(bool bUpdateEEPROM=true); -//! @} - -//autoload feature enabled -extern void fsensor_autoload_set(bool State); -bool fsensor_autoload_enabled(); - -extern void fsensor_update(void); -#ifdef PAT9125 -//! setup pin-change interrupt -extern void fsensor_setup_interrupt(void); - -//! @name autoload support -//! @{ - -extern void fsensor_autoload_check_start(void); -extern void fsensor_autoload_check_stop(void); -#endif //PAT9125 -extern bool fsensor_check_autoload(void); -//! @} - -#ifdef PAT9125 -//! @name optical quality measurement support -//! @{ -extern bool fsensor_oq_meassure_enabled; -extern void fsensor_oq_meassure_set(bool State); -extern void fsensor_oq_meassure_start(uint8_t skip); -extern void fsensor_oq_meassure_stop(void); -extern bool fsensor_oq_result(void); -//! @} - -//! @name callbacks from stepper -//! @{ -extern void fsensor_st_block_chunk(int cnt); - -// debugging -extern uint8_t fsensor_log; - -// There's really nothing to do in block_begin: the stepper ISR likely has -// called us already at the end of the last block, making this integration -// redundant. LA1.5 might not always do that during a coasting move, so attempt -// to drain fsensor_st_cnt anyway at the beginning of the new block. -#define fsensor_st_block_begin(rev) fsensor_st_block_chunk(0) -//! @} -#endif //PAT9125 - -#define VOLT_DIV_REF 5 - -#ifdef IR_SENSOR_ANALOG -#define IR_SENSOR_STEADY 10 // [ms] - -enum class ClFsensorPCB:uint_least8_t -{ - _Old=0, - _Rev04=1, - _Undef=EEPROM_EMPTY_VALUE -}; - -enum class ClFsensorActionNA:uint_least8_t -{ - _Continue=0, - _Pause=1, - _Undef=EEPROM_EMPTY_VALUE -}; - -extern ClFsensorPCB oFsensorPCB; -extern ClFsensorActionNA oFsensorActionNA; -extern const char* FsensorIRVersionText(); - -extern bool fsensor_IR_check(); -constexpr uint16_t Voltage2Raw(float V){ - return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; -} -constexpr float Raw2Voltage(uint16_t raw){ - return VOLT_DIV_REF*(raw / (1023.F * OVERSAMPLENR) ); -} -constexpr uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982 -constexpr uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910 -constexpr uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821 -constexpr uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 -constexpr uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368 - -#endif //IR_SENSOR_ANALOG - -#endif //FSENSOR_H diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 81a1f2175..0b5cfcf06 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -312,7 +312,7 @@ bool MMU2::load_filament(uint8_t index) { struct LoadingToNozzleRAII { MMU2 &mmu2; - inline LoadingToNozzleRAII(MMU2 &mmu2):mmu2(mmu2){ + explicit inline LoadingToNozzleRAII(MMU2 &mmu2):mmu2(mmu2){ mmu2.loadingToNozzle = true; } inline ~LoadingToNozzleRAII(){ diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index b87d8ab97..b3d07c523 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -17,6 +17,10 @@ enum : uint8_t { FILAMENT_UNKNOWN = 0xffU }; +struct Version { + uint8_t major, minor, build; +}; + /// Top-level interface between Logic and Marlin. /// Intentionally named MMU2 to be (almost) a drop-in replacement for the previous implementation. /// Most of the public methods share the original naming convention as well. @@ -116,6 +120,16 @@ public: /// @returns current state of FINDA (true=filament present, false=filament not present) inline bool FindaDetectsFilament()const { return logic.FindaPressed(); } + /// @returns the version of the connected MMU FW. + /// In the future we'll return the trully detected FW version + Version GetMMUFWVersion()const { + if( State() == xState::Active ){ + return { 2, 0, 0 }; + } else { + return { 0, 0, 0}; + } + } + private: /// Perform software self-reset of the MMU (sends an X0 command) void ResetX0(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2fd507a0b..0e38e11f8 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1687,11 +1687,10 @@ static void lcd_support_menu() MENU_ITEM_BACK_P(PSTR(" FW:")); ////c=17 if (((menu_item - 1) == menu_line) && lcd_draw_update) { - lcd_set_cursor(6, menu_row); - uint8_t mmu_version = 200; // @@TODO - uint8_t mmu_buildnr = 0; - if ((mmu_version > 0) && (mmu_buildnr > 0)) - lcd_printf_P(PSTR("%d.%d.%d-%d"), mmu_version/100, mmu_version%100/10, mmu_version%10, mmu_buildnr); + lcd_set_cursor(6, menu_row); + MMU2::Version mmu_version = MMU2::mmu2.GetMMUFWVersion(); + if ((mmu_version.major > 0) && (mmu_version.build > 0)) + lcd_printf_P(PSTR("%d.%d.%d"), mmu_version.major, mmu_version.minor, mmu_version.build); else lcd_puts_P(_i("unknown")); ////MSG_UNKNOWN c=13 } @@ -7063,12 +7062,10 @@ static bool selftest_irsensor() { TempBackup tempBackup; setTargetHotend(ABS_PREHEAT_HOTEND_TEMP,active_extruder); -//@@TODO mmu_wait_for_heater_blocking(); progress = lcd_selftest_screen(TestScreen::Fsensor, 0, 1, true, 0); -//@@TODO mmu_filament_ramming(); } progress = lcd_selftest_screen(TestScreen::Fsensor, progress, 1, true, 0); - MMU2::mmu2.unload(); // mmu_command(MmuCmd::U0); manage_response(false, false); + MMU2::mmu2.unload(); for(uint_least8_t i = 0; i < 200; ++i) { From b27f6905565b1da686554dda9a6ea25e12f4c7ff Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Apr 2022 14:50:54 +0200 Subject: [PATCH 050/319] Add ProgressCodes -> text converter --- Firmware/mmu2_progress_converter.cpp | 70 +++++++++++++++++++++++++++- Firmware/mmu2_reporting.cpp | 31 ++++++++---- Firmware/ultralcd.cpp | 29 ++++++------ Firmware/ultralcd.h | 3 +- 4 files changed, 106 insertions(+), 27 deletions(-) diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index c9d37e5e7..f82012f19 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -1,6 +1,72 @@ #include "mmu2_progress_converter.h" +#include "language.h" +#include "mmu2/progress_codes.h" +#include namespace MMU2 { -//@@TODO -void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { } + +static const char progressOk[] PROGMEM_I1 = ISTR("OK"); +static const char progressEngageIdler[] PROGMEM_I1 = ISTR("Engaging idler"); +static const char progressDisengeIdler[] PROGMEM_I1 = ISTR("Disengaging idler"); +static const char progressUnloadFinda[] PROGMEM_I1 = ISTR("Unloading to FINDA"); +static const char progressUnloadPulley[] PROGMEM_I1 = ISTR("Unloading to pulley"); +static const char progressFeedFinda[] PROGMEM_I1 = ISTR("Feeding to FINDA"); +static const char progressFeedBondtech[] PROGMEM_I1 = ISTR("Feeding to drive gear"); +static const char progressFeedNozzle[] PROGMEM_I1 = ISTR("Feeding to nozzle"); +static const char progressAvoidGrind[] PROGMEM_I1 = ISTR("Avoiding grind"); +static const char progressFinishMoves[] PROGMEM_I1 = ISTR("Finishing moves"); +static const char progressWaitForUser[] PROGMEM_I1 = ISTR("ERR Wait for User"); +static const char progressErrInternal[] PROGMEM_I1 = ISTR("ERR Internal"); +static const char progressErrHelpFil[] PROGMEM_I1 = ISTR("ERR Helping filament"); +static const char progressErrTmc[] PROGMEM_I1 = ISTR("ERR TMC failed"); +static const char progressUnloadFilament[] PROGMEM_I1 = ISTR("Unloading filament"); +static const char progressLoadFilament[] PROGMEM_I1 = ISTR("Loading filament"); +static const char progressSelectSlot[] PROGMEM_I1 = ISTR("Selecting filament slot"); +static const char progressPrepareBlade[] PROGMEM_I1 = ISTR("Preparing blade"); +static const char progressPushFilament[] PROGMEM_I1 = ISTR("Pushing filament"); +static const char progressPerformCut[] PROGMEM_I1 = ISTR("Performing cut"); +static const char progressReturnSelector[] PROGMEM_I1 = ISTR("Returning selector"); +static const char progressParkSelector[] PROGMEM_I1 = ISTR("Parking selector"); +static const char progressEjectFilament[] PROGMEM_I1 = ISTR("Ejecting filament"); +static const char progressRetractFinda[] PROGMEM_I1 = ISTR("Retracting from FINDA"); +static const char progressHoming[] PROGMEM_I1 = ISTR("Homing"); + +static const char * const progressTexts[] PROGMEM = { + progressOk, + progressEngageIdler, + progressDisengeIdler, + progressUnloadFinda, + progressUnloadPulley, + progressFeedFinda, + progressFeedBondtech, + progressFeedNozzle, + progressAvoidGrind, + progressFinishMoves, + progressDisengeIdler, // err disengaging idler is the same text + progressEngageIdler, // engage dtto. + progressWaitForUser, + progressErrInternal, + progressErrHelpFil, + progressErrTmc, + progressUnloadFilament, + progressLoadFilament, + progressSelectSlot, + progressPrepareBlade, + progressPushFilament, + progressPerformCut, + progressReturnSelector, + progressParkSelector, + progressEjectFilament, + progressRetractFinda, + progressHoming, +}; + +const char * const ProgressCodeToText(uint16_t pc){ + return ( pc <= 26 ) ? progressTexts[pc] : progressTexts[0]; // @@TODO ?? a better fallback option? +} + +void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { + strncpy_P(dst, ProgressCodeToText(pc), dstSize); // @@TODO temporarily to prevent removal of the texts at LTO +} + } // namespace MMU2 diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 18549ac35..1bc638c25 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -1,21 +1,32 @@ #include "mmu2_reporting.h" - -// @@TODO implement the interface for MK3 +#include "ultralcd.h" namespace MMU2 { -void BeginReport(CommandInProgress cip, uint16_t ec) { } +const char * const ProgressCodeToText(uint16_t pc); // we may join progress convertor and reporter together -void EndReport(CommandInProgress cip, uint16_t ec) { } +void BeginReport(CommandInProgress cip, uint16_t ec) { + custom_message_type = CustomMsg::MMUProgress; + lcd_setstatuspgm( ProgressCodeToText(ec) ); +} -void ReportErrorHook(CommandInProgress cip, uint16_t ec) { } +void EndReport(CommandInProgress cip, uint16_t ec) { + // clear the status msg line - let the printed filename get visible again + custom_message_type = CustomMsg::Status; +} -void ReportProgressHook(CommandInProgress cip, uint16_t ec) { } +void ReportErrorHook(CommandInProgress cip, uint16_t ec) { + // @@TODO - display an error screen - we still don't know how that will look like + // The only thing we know is the fact, that the screen must not block the MMU automaton +} -Buttons ButtonPressed(uint16_t ec) { } +void ReportProgressHook(CommandInProgress cip, uint16_t ec) { + custom_message_type = CustomMsg::MMUProgress; + lcd_setstatuspgm( ProgressCodeToText(ec) ); +} -bool MMUAvailable() { } - -bool UseMMU() { } +Buttons ButtonPressed(uint16_t ec) { + // query the MMU error screen if a button has been pressed/selected +} } // namespace MMU2 diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0e38e11f8..4f5a4c46a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -548,8 +548,7 @@ void lcdui_print_time(void) } //! @Brief Print status line on status screen -void lcdui_print_status_line(void) -{ +void lcdui_print_status_line(void) { if (heating_status != HeatingStatus::NO_HEATING) { // If heating flag, show progress of heating heating_status_counter++; if (heating_status_counter > 13) { @@ -614,24 +613,23 @@ void lcdui_print_status_line(void) case CustomMsg::Status: // Nothing special, print status message normally case CustomMsg::M0Wait: // M0/M1 Wait command working even from SD lcd_print(lcd_status_message); - break; + break; case CustomMsg::MeshBedLeveling: // If mesh bed leveling in progress, show the status if (custom_message_state > 10) { lcd_set_cursor(0, 3); lcd_space(LCD_WIDTH); lcd_puts_at_P(0, 3, _T(MSG_CALIBRATE_Z_AUTO)); lcd_puts_P(PSTR(" : ")); - lcd_print(custom_message_state-10); + lcd_print(custom_message_state - 10); } else { - if (custom_message_state == 3) - { + if (custom_message_state == 3) { lcd_setstatuspgm(MSG_WELCOME); custom_message_type = CustomMsg::Status; } - if (custom_message_state > 3 && custom_message_state <= 10 ) { + if (custom_message_state > 3 && custom_message_state <= 10) { lcd_set_cursor(0, 3); lcd_space(19); - lcd_puts_at_P(0, 3, _i("Calibration done"));////MSG_HOMEYZ_DONE c=20 + lcd_puts_at_P(0, 3, _i("Calibration done")); ////MSG_HOMEYZ_DONE c=20 custom_message_state--; } } @@ -652,23 +650,26 @@ void lcdui_print_status_line(void) lcd_set_cursor(0, 3); lcd_printf_P(PSTR("%-12.12S%-d/6"), _T(MSG_PINDA_CALIBRATION), custom_message_state); break; - case CustomMsg::TempCompPreheat: // temp compensation preheat - lcd_puts_at_P(0, 3, _i("PINDA Heating"));////MSG_PINDA_PREHEAT c=20 + case CustomMsg::TempCompPreheat: // temp compensation preheat + lcd_puts_at_P(0, 3, _i("PINDA Heating")); ////MSG_PINDA_PREHEAT c=20 if (custom_message_state <= PINDA_HEAT_T) { lcd_puts_P(PSTR(": ")); - lcd_print(custom_message_state); //seconds + lcd_print(custom_message_state); // seconds lcd_print(' '); } break; - case CustomMsg::Resuming: //Resuming + case CustomMsg::Resuming: // Resuming lcd_puts_at_P(0, 3, _T(MSG_RESUMING_PRINT)); break; + case CustomMsg::MMUProgress: + // set up at mmu2_reporting.cpp, just do nothing here + break; } } // Fill the rest of line to have nice and clean output - for(uint8_t fillspace = 0; fillspace < LCD_WIDTH; fillspace++) - if ((lcd_status_message[fillspace] <= 31 )) + for (uint8_t fillspace = 0; fillspace < LCD_WIDTH; fillspace++) + if ((lcd_status_message[fillspace] <= 31)) lcd_print(' '); } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 8e6f6e485..101109de8 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -122,7 +122,8 @@ enum class CustomMsg : uint_least8_t TempCompPreheat, //!< Temperature compensation preheat M0Wait, //!< M0/M1 Wait command working even from SD M117, //!< M117 Set the status line message on the LCD - Resuming, //!< Resuming message + Resuming, //!< Resuming message + MMUProgress, ///< MMU progress message }; extern CustomMsg custom_message_type; From cc177ec5ad4c073f0774be6fec002c0724cd7676 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 22 Apr 2022 16:02:35 +0200 Subject: [PATCH 051/319] Remove old mmu.cpp --- Firmware/mmu.cpp | 1265 ---------------------------------------------- 1 file changed, 1265 deletions(-) delete mode 100755 Firmware/mmu.cpp diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp deleted file mode 100755 index 5ba85f130..000000000 --- a/Firmware/mmu.cpp +++ /dev/null @@ -1,1265 +0,0 @@ -//! @file - -#include "mmu.h" -#include "planner.h" -#include "language.h" -#include "lcd.h" -#include "uart2.h" -#include "temperature.h" -#include "Configuration_prusa.h" -#include "cardreader.h" -#include "cmdqueue.h" -#include "stepper.h" -#include "ultralcd.h" -#include "menu.h" -#include "sound.h" -#include "printers.h" -#include -#include "AutoDeplete.h" -#include "fastio.h" -#include "pins.h" -#include "Filament_sensor.h" -//-// -#include "util.h" - -#ifdef TMC2130 -#include "tmc2130.h" -#endif //TMC2130 - -#define MMU_TODELAY 100 -#define MMU_TIMEOUT 10 -#define MMU_CMD_TIMEOUT 45000ul //45s timeout for mmu commands (except P0) -#define MMU_P0_TIMEOUT 3000ul //timeout for P0 command: 3seconds -#define MMU_MAX_RESEND_ATTEMPTS 2 - - -namespace -{ - enum class S : uint_least8_t - { - WaitStealthMode, - GetFindaInit, - GetBuildNr, - GetVersion, - Init, - Disabled, - Idle, - GetFinda, - WaitCmd, //!< wait for command response - Pause, - GetDrvError, //!< get power failures count - SwitchMode //switch mmu between stealth and normal mode - }; -} - -bool mmu_enabled = false; -bool mmu_ready = false; -bool mmu_fil_loaded = false; //if true: blocks execution of duplicit T-codes - -static S mmu_state = S::Disabled; - -MmuCmd mmu_cmd = MmuCmd::None; - -//idler ir sensor -static uint8_t mmu_idl_sens = 0; -bool ir_sensor_detected = false; -static bool mmu_loading_flag = false; //when set to true, we assume that mmu2 unload was finished and loading phase is now performed; printer can send 'A' to mmu2 to abort loading process - -uint8_t mmu_extruder = MMU_FILAMENT_UNKNOWN; - -//! This variable probably has no meaning and is planed to be removed -uint8_t tmp_extruder = MMU_FILAMENT_UNKNOWN; - -int8_t mmu_finda = -1; - -int16_t mmu_version = -1; - -int16_t mmu_buildnr = -1; - -LongTimer mmu_last_request; -LongTimer mmu_last_response; -LongTimer mmu_last_finda_response; - -MmuCmd mmu_last_cmd = MmuCmd::None; -uint16_t mmu_power_failures = 0; - - -#ifdef MMU_DEBUG -static const auto DEBUG_PUTCHAR = putchar; -static const auto DEBUG_PUTS_P = puts_P; -static const auto DEBUG_PRINTF_P = printf_P; -#else //MMU_DEBUG -#define DEBUG_PUTCHAR(c) -#define DEBUG_PUTS_P(str) -#define DEBUG_PRINTF_P( __fmt, ... ) -#endif //MMU_DEBUG - -#if defined(MMU_FINDA_DEBUG) && defined(MMU_DEBUG) -static const auto FDEBUG_PUTS_P = puts_P; -static const auto FDEBUG_PRINTF_P = printf_P; -#else -#define FDEBUG_PUTS_P(str) -#define FDEBUG_PRINTF_P( __fmt, ... ) -#endif //defined(MMU_FINDA_DEBUG) && defined(MMU_DEBUG) - - -//clear rx buffer -void mmu_clr_rx_buf(void) -{ - while (fgetc(uart2io) >= 0); -} - -//send command - puts -int mmu_puts_P(const char* str) -{ - mmu_clr_rx_buf(); //clear rx buffer - int r = fputs_P(str, uart2io); //send command - mmu_last_request.start(); - return r; -} - -//send command - printf -int mmu_printf_P(const char* format, ...) -{ - va_list args; - va_start(args, format); - mmu_clr_rx_buf(); //clear rx buffer - int r = vfprintf_P(uart2io, format, args); //send command - va_end(args); - mmu_last_request.start(); - return r; -} - -//check 'ok' response -int8_t mmu_rx_ok(void) -{ - int8_t res = uart2_rx_str_P(PSTR("ok\n")); - if (res == 1) mmu_last_response.start(); - return res; -} - -//check 'start' response -int8_t mmu_rx_start(void) -{ - int8_t res = uart2_rx_str_P(PSTR("start\n")); - if (res == 1) mmu_last_response.start(); - return res; -} - -//initialize mmu2 unit - first part - should be done at begining of startup process -void mmu_init(void) -{ -#ifdef MMU_HWRESET - WRITE(MMU_RST_PIN, 1); - SET_OUTPUT(MMU_RST_PIN); //setup reset pin -#endif //MMU_HWRESET - uart2_init(); //init uart2 - _delay_ms(10); //wait 10ms for sure - mmu_reset(); //reset mmu (HW or SW), do not wait for response - mmu_state = S::Init; -} - -//if IR_SENSOR defined, always returns true -//otherwise check for ir sensor and returns true if idler IR sensor was detected, otherwise returns false -bool check_for_ir_sensor() -{ -#ifdef IR_SENSOR - return true; -#else //IR_SENSOR - - bool detected = false; - //if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor - if ((READ(IR_SENSOR_PIN) == 0)) { - detected = true; - //printf_P(PSTR("Idler IR sensor detected\n")); - } - else - { - //printf_P(PSTR("Idler IR sensor not detected\n")); - } - return detected; -#endif //IR_SENSOR -} - -static bool activate_stealth_mode() -{ -#ifdef MMU_FORCE_STEALTH_MODE - return true; -#else - return (eeprom_read_byte((uint8_t*)EEPROM_MMU_STEALTH) == 1); -#endif -} - -//mmu main loop - state machine processing -void mmu_loop(void) -{ - static uint8_t mmu_attempt_nr = 0; -// printf_P(PSTR("MMU loop, state=%d\n"), mmu_state); - switch (mmu_state) - { - case S::Disabled: - return; - case S::Init: - if (mmu_rx_start() > 0) - { - DEBUG_PUTS_P(PSTR("MMU => 'start'")); - DEBUG_PUTS_P(PSTR("MMU <= 'S1'")); - mmu_puts_P(PSTR("S1\n")); //send 'read version' request - mmu_state = S::GetVersion; - } - else if (_millis() > 30000) //30sec after reset disable mmu - { - puts_P(PSTR("MMU not responding - DISABLED")); - mmu_state = S::Disabled; - } - return; - case S::GetVersion: - if (mmu_rx_ok() > 0) - { - fscanf_P(uart2io, PSTR("%u"), &mmu_version); //scan version from buffer - DEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_version); - DEBUG_PUTS_P(PSTR("MMU <= 'S2'")); - mmu_puts_P(PSTR("S2\n")); //send 'read buildnr' request - mmu_state = S::GetBuildNr; - } - return; - case S::GetBuildNr: - if (mmu_rx_ok() > 0) - { - fscanf_P(uart2io, PSTR("%u"), &mmu_buildnr); //scan buildnr from buffer - DEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_buildnr); - bool version_valid = mmu_check_version(); - if (!version_valid) mmu_show_warning(); - else puts_P(PSTR("MMU version valid")); - - if (!activate_stealth_mode()) - { - FDEBUG_PUTS_P(PSTR("MMU <= 'P0'")); - mmu_puts_P(PSTR("P0\n")); //send 'read finda' request - mmu_state = S::GetFindaInit; - } - else - { - DEBUG_PUTS_P(PSTR("MMU <= 'M1'")); - mmu_puts_P(PSTR("M1\n")); //set mmu mode to stealth - mmu_state = S::WaitStealthMode; - } - - } - return; - case S::WaitStealthMode: - if (mmu_rx_ok() > 0) - { - FDEBUG_PUTS_P(PSTR("MMU <= 'P0'")); - mmu_puts_P(PSTR("P0\n")); //send 'read finda' request - mmu_state = S::GetFindaInit; - } - return; - case S::GetFindaInit: - if (mmu_rx_ok() > 0) - { - fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer. MUST BE %hhu!!! - mmu_last_finda_response.start(); - FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); - puts_P(PSTR("MMU - ENABLED")); - mmu_enabled = true; - //-// - // ... PrinterType/Name - fSetMmuMode(true); - mmu_state = S::Idle; - } - return; - case S::Idle: - if (mmu_cmd != MmuCmd::None) //command request ? - { - if ((mmu_cmd >= MmuCmd::T0) && (mmu_cmd <= MmuCmd::T4)) - { - const uint8_t filament = mmu_cmd - MmuCmd::T0; - DEBUG_PRINTF_P(PSTR("MMU <= 'T%d'\n"), filament); - mmu_printf_P(PSTR("T%d\n"), filament); - mmu_state = S::WaitCmd; // wait for response - mmu_fil_loaded = true; - mmu_idl_sens = 1; - } - else if ((mmu_cmd >= MmuCmd::L0) && (mmu_cmd <= MmuCmd::L4)) - { - const uint8_t filament = mmu_cmd - MmuCmd::L0; - DEBUG_PRINTF_P(PSTR("MMU <= 'L%d'\n"), filament); - mmu_printf_P(PSTR("L%d\n"), filament); - mmu_state = S::WaitCmd; // wait for response - } - else if (mmu_cmd == MmuCmd::C0) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'C0'\n")); - mmu_puts_P(PSTR("C0\n")); //send 'continue loading' - mmu_state = S::WaitCmd; - mmu_idl_sens = 1; - } - else if (mmu_cmd == MmuCmd::U0) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'U0'\n")); - mmu_puts_P(PSTR("U0\n")); //send 'unload current filament' - mmu_fil_loaded = false; - mmu_state = S::WaitCmd; - } - else if ((mmu_cmd >= MmuCmd::E0) && (mmu_cmd <= MmuCmd::E4)) - { - const uint8_t filament = mmu_cmd - MmuCmd::E0; - DEBUG_PRINTF_P(PSTR("MMU <= 'E%d'\n"), filament); - mmu_printf_P(PSTR("E%d\n"), filament); //send eject filament - mmu_fil_loaded = false; - mmu_state = S::WaitCmd; - } - else if ((mmu_cmd >= MmuCmd::K0) && (mmu_cmd <= MmuCmd::K4)) - { - const uint8_t filament = mmu_cmd - MmuCmd::K0; - DEBUG_PRINTF_P(PSTR("MMU <= 'K%d'\n"), filament); - mmu_printf_P(PSTR("K%d\n"), filament); //send eject filament - mmu_fil_loaded = false; - mmu_state = S::WaitCmd; - } - else if (mmu_cmd == MmuCmd::R0) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n")); - mmu_puts_P(PSTR("R0\n")); //send recover after eject - mmu_state = S::WaitCmd; - } - else if (mmu_cmd == MmuCmd::S3) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'S3'\n")); - mmu_puts_P(PSTR("S3\n")); //send power failures request - mmu_state = S::GetDrvError; - } - else if (mmu_cmd == MmuCmd::W0) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'W0'\n")); - mmu_puts_P(PSTR("W0\n")); - mmu_state = S::Pause; - } - mmu_last_cmd = mmu_cmd; - mmu_cmd = MmuCmd::None; - } - else if ((eeprom_read_byte((uint8_t*)EEPROM_MMU_STEALTH) != SilentModeMenu_MMU) && mmu_ready) { - DEBUG_PRINTF_P(PSTR("MMU <= 'M%d'\n"), SilentModeMenu_MMU); - mmu_printf_P(PSTR("M%d\n"), SilentModeMenu_MMU); - mmu_state = S::SwitchMode; - } - else if (mmu_last_response.expired(300)) //request every 300ms - { -#ifndef IR_SENSOR - if(check_for_ir_sensor()) ir_sensor_detected = true; -#endif //IR_SENSOR not defined - FDEBUG_PUTS_P(PSTR("MMU <= 'P0'")); - mmu_puts_P(PSTR("P0\n")); //send 'read finda' request - mmu_state = S::GetFinda; - } - return; - case S::GetFinda: //response to command P0 - if (mmu_idl_sens) - { - if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag) - { -#ifdef MMU_DEBUG - printf_P(PSTR("MMU <= 'A'\n")); -#endif //MMU_DEBUG - mmu_puts_P(PSTR("A\n")); //send 'abort' request - mmu_idl_sens = 0; - //printf_P(PSTR("MMU IDLER_SENSOR = 0 - ABORT\n")); - } - //else - //printf_P(PSTR("MMU IDLER_SENSOR = 1 - WAIT\n")); - } - if (mmu_rx_ok() > 0) - { - fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer. MUST BE %hhu!!! - mmu_last_finda_response.start(); - FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); - //printf_P(PSTR("Eact: %d\n"), int(e_active())); - if (!mmu_finda -#ifdef FILAMENT_SENSOR ///temporary until refactoring - && CHECK_FSENSOR && fsensor.isReady() -#endif //FILAMENT_SENSOR - ) { - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); - if (mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't deplete unknown extruder. - ad_markDepleted(mmu_extruder); - if (lcd_autoDepleteEnabled() && !ad_allDepleted() && mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't auto if F=? - { - enquecommand_front_P(PSTR("M600 AUTO")); //save print and run M600 command - } - else - { - enquecommand_front_P(PSTR("M600")); //save print and run M600 command - } - } - mmu_state = S::Idle; - if (mmu_cmd == MmuCmd::None) - mmu_ready = true; - } - else if (mmu_last_request.expired(MMU_P0_TIMEOUT)) - { //resend request after timeout (30s) - mmu_state = S::Idle; - } - return; - case S::WaitCmd: //response to mmu commands - if (mmu_idl_sens) - { - if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag) - { - DEBUG_PRINTF_P(PSTR("MMU <= 'A'\n")); - mmu_puts_P(PSTR("A\n")); //send 'abort' request - mmu_idl_sens = 0; - //printf_P(PSTR("MMU IDLER_SENSOR = 0 - ABORT\n")); - } - //else - //printf_P(PSTR("MMU IDLER_SENSOR = 1 - WAIT\n")); - } - if (mmu_rx_ok() > 0) - { - DEBUG_PRINTF_P(PSTR("MMU => 'ok'\n")); - mmu_attempt_nr = 0; - mmu_last_cmd = MmuCmd::None; - mmu_ready = true; - mmu_state = S::Idle; - } - else if (mmu_last_request.expired(MMU_CMD_TIMEOUT)) - { //resend request after timeout (5 min) - if (mmu_last_cmd != MmuCmd::None) - { - if (mmu_attempt_nr++ < MMU_MAX_RESEND_ATTEMPTS && - mmu_last_cmd >= MmuCmd::T0 && mmu_last_cmd <= MmuCmd::T4) - { - DEBUG_PRINTF_P(PSTR("MMU retry attempt nr. %d\n"), mmu_attempt_nr - 1); - mmu_cmd = mmu_last_cmd; - } - else { - mmu_cmd = MmuCmd::None; - mmu_last_cmd = MmuCmd::None; //check - mmu_attempt_nr = 0; - } - } - mmu_state = S::Idle; - } - return; - case S::Pause: - if (mmu_rx_ok() > 0) - { - DEBUG_PRINTF_P(PSTR("MMU => 'ok', resume print\n")); - mmu_attempt_nr = 0; - mmu_last_cmd = MmuCmd::None; - mmu_ready = true; - mmu_state = S::Idle; - lcd_resume_print(); - } - if (mmu_cmd != MmuCmd::None) - { - mmu_state = S::Idle; - } - return; - case S::GetDrvError: - if (mmu_rx_ok() > 0) - { - fscanf_P(uart2io, PSTR("%d"), &mmu_power_failures); //scan power failures - DEBUG_PRINTF_P(PSTR("MMU => 'ok'\n")); - mmu_last_cmd = MmuCmd::None; - mmu_ready = true; - mmu_state = S::Idle; - } - else if (mmu_last_request.expired(MMU_CMD_TIMEOUT)) - { //timeout 45 s - mmu_state = S::Idle; - } - return; - case S::SwitchMode: - if (mmu_rx_ok() > 0) - { - DEBUG_PRINTF_P(PSTR("MMU => 'ok'\n")); - eeprom_update_byte((uint8_t*)EEPROM_MMU_STEALTH, SilentModeMenu_MMU); - mmu_state = S::Idle; - } - else if (mmu_last_request.expired(MMU_CMD_TIMEOUT)) - { //timeout 45 s - mmu_state = S::Idle; - } - return; - } -} - -void mmu_reset(void) -{ -#ifdef MMU_HWRESET //HW - pulse reset pin - WRITE(MMU_RST_PIN, 0); - _delay_us(100); - WRITE(MMU_RST_PIN, 1); -#else //SW - send X0 command - mmu_puts_P(PSTR("X0\n")); -#endif -} - -int8_t mmu_set_filament_type(uint8_t extruder, uint8_t filament) -{ - printf_P(PSTR("MMU <= 'F%d %d'\n"), extruder, filament); - mmu_printf_P(PSTR("F%d %d\n"), extruder, filament); - unsigned char timeout = MMU_TIMEOUT; //10x100ms - while ((mmu_rx_ok() <= 0) && (--timeout)) - delay_keep_alive(MMU_TODELAY); - return timeout?1:0; -} - -//! @brief Enqueue MMUv2 command -//! -//! Call manage_response() after enqueuing to process command. -//! If T command is enqueued, it disables current for extruder motor if TMC2130 driver present. -//! If T or L command is enqueued, it marks filament loaded in AutoDeplete module. -void mmu_command(MmuCmd cmd) -{ - if ((cmd >= MmuCmd::T0) && (cmd <= MmuCmd::T4)) - { - //disable extruder motor -#ifdef TMC2130 - tmc2130_set_pwr(E_AXIS, 0); -#endif //TMC2130 - //printf_P(PSTR("E-axis disabled\n")); - ad_markLoaded(cmd - MmuCmd::T0); - } - if ((cmd >= MmuCmd::L0) && (cmd <= MmuCmd::L4)) - { - ad_markLoaded(cmd - MmuCmd::L0); - } - - mmu_cmd = cmd; - mmu_ready = false; -} - -//! @brief Rotate extruder idler to catch filament -//! @par synchronize -//! * true blocking call -//! * false non-blocking call -void mmu_load_step(bool synchronize) -{ - current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - if (synchronize) st_synchronize(); -} - -//! @brief Is nozzle hot enough to move extruder wheels and do we have idler sensor? -//! -//! Do load steps only if temperature is higher then min. temp for safe extrusion and -//! idler sensor present. -//! Otherwise "cold extrusion prevented" would be send to serial line periodically -//! and watchdog reset will be triggered by lack of keep_alive processing. -//! -//! @retval true temperature is high enough to move extruder -//! @retval false temperature is not high enough to move extruder, turned -//! off E-stepper to prevent over-heating and allow filament pull-out if necessary -bool can_extrude() -{ - if ((degHotend(active_extruder) < EXTRUDE_MINTEMP) || !ir_sensor_detected) - { - disable_e0(); - delay_keep_alive(100); - return false; - } - return true; -} - -static void get_response_print_info(uint8_t move) { - printf_P(PSTR("mmu_get_response - begin move: "), move); - switch (move) { - case MMU_LOAD_MOVE: puts_P(PSTR("load")); break; - case MMU_UNLOAD_MOVE: puts_P(PSTR("unload")); break; - case MMU_TCODE_MOVE: puts_P(PSTR("T-code")); break; - case MMU_NO_MOVE: puts_P(PSTR("no move")); break; - default: puts_P(PSTR("error: unknown move")); break; - } -} - -bool mmu_get_response(uint8_t move) -{ - - get_response_print_info(move); - KEEPALIVE_STATE(IN_PROCESS); - while (mmu_cmd != MmuCmd::None) - { - delay_keep_alive(100); - } - - while (!mmu_ready) - { - if ((mmu_state != S::WaitCmd) && (mmu_last_cmd == MmuCmd::None)) - break; - - switch (move) { - case MMU_LOAD_MOVE: - mmu_loading_flag = true; - if (can_extrude()) mmu_load_step(); - //don't rely on "ok" signal from mmu unit; if filament detected by idler sensor during loading stop loading movements to prevent infinite loading - if (READ(IR_SENSOR_PIN) == 0) move = MMU_NO_MOVE; - break; - case MMU_UNLOAD_MOVE: - if (READ(IR_SENSOR_PIN) == 0) //filament is still detected by idler sensor, printer helps with unlading - { - if (can_extrude()) - { - puts_P(PSTR("Unload 1")); - current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - st_synchronize(); - } - } - else //filament was unloaded from idler, no additional movements needed - { - puts_P(PSTR("Unloading finished 1")); - disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary - move = MMU_NO_MOVE; - } - break; - case MMU_TCODE_MOVE: //first do unload and then continue with infinite loading movements - if (READ(IR_SENSOR_PIN) == 0) //filament detected by idler sensor, we must unload first - { - if (can_extrude()) - { - puts_P(PSTR("Unload 2")); - current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - st_synchronize(); - } - } - else //delay to allow mmu unit to pull out filament from bondtech gears and then start with infinite loading - { - puts_P(PSTR("Unloading finished 2")); - disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary - delay_keep_alive(MMU_LOAD_TIME_MS); - move = MMU_LOAD_MOVE; - get_response_print_info(move); - } - break; - case MMU_NO_MOVE: - default: - delay_keep_alive(100); - break; - } - } - printf_P(PSTR("mmu_get_response() returning: %d\n"), mmu_ready); - bool ret = mmu_ready; - mmu_ready = false; -// printf_P(PSTR("mmu_get_response - end %d\n"), ret?1:0); - return ret; -} - -//! @brief Wait for active extruder to reach temperature set -//! -//! This function is blocking and showing lcd_wait_for_heater() screen -//! which is constantly updated with nozzle temperature. -void mmu_wait_for_heater_blocking() -{ - while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5) - { - delay_keep_alive(1000); - lcd_wait_for_heater(); - } -} - -void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) -{ - bool response = false; - mmu_print_saved = false; - bool lcd_update_was_enabled = false; - float hotend_temp_bckp = degTargetHotend(active_extruder); - float z_position_bckp = current_position[Z_AXIS]; - float x_position_bckp = current_position[X_AXIS]; - float y_position_bckp = current_position[Y_AXIS]; - uint8_t screen = 0; //used for showing multiscreen messages - mmu_loading_flag = false; - while(!response) - { - response = mmu_get_response(move); //wait for "ok" from mmu - if (!response) { //no "ok" was received in reserved time frame, user will fix the issue on mmu unit - if (!mmu_print_saved) { //first occurence, we are saving current position, park print head in certain position and disable nozzle heater - - uint8_t mmu_fail = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL); - uint16_t mmu_fail_tot = eeprom_read_word((uint16_t*)EEPROM_MMU_FAIL_TOT); - if(mmu_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_FAIL, mmu_fail + 1); - if(mmu_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_FAIL_TOT, mmu_fail_tot + 1); - - if (lcd_update_enabled) { - lcd_update_was_enabled = true; - lcd_update_enable(false); - } - st_synchronize(); - mmu_print_saved = true; - puts_P(PSTR("MMU not responding")); - KEEPALIVE_STATE(PAUSED_FOR_USER); - hotend_temp_bckp = degTargetHotend(active_extruder); - if (move_axes) { - z_position_bckp = current_position[Z_AXIS]; - x_position_bckp = current_position[X_AXIS]; - y_position_bckp = current_position[Y_AXIS]; - - //lift z - current_position[Z_AXIS] += Z_PAUSE_LIFT; - if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; - plan_buffer_line_curposXYZE(15); - st_synchronize(); - - //Move XY to side - current_position[X_AXIS] = X_PAUSE_POS; - current_position[Y_AXIS] = Y_PAUSE_POS; - plan_buffer_line_curposXYZE(50); - st_synchronize(); - } - if (turn_off_nozzle) { - //set nozzle target temperature to 0 - setAllTargetHotends(0); - } - disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary - } - - //first three lines are used for printing multiscreen message; last line contains measured and target nozzle temperature - if (screen == 0) { //screen 0 - lcd_display_message_fullscreen_P(_i("MMU needs user attention."));////MSG_MMU_USER_ATTENTION c=20 r=3 - screen++; - } - else { //screen 1 - if((degTargetHotend(active_extruder) == 0) && turn_off_nozzle) lcd_display_message_fullscreen_P(_i("Press the knob to resume nozzle temperature."));////MSG_RESUME_NOZZLE_TEMP c=20 r=4 - else lcd_display_message_fullscreen_P(_i("Fix the issue and then press button on MMU unit."));////MSG_MMU_FIX_ISSUE c=20 r=4 - screen=0; - } - - //5 seconds delay - for (uint8_t i = 0; i < 5; i++) { - if (lcd_clicked()) { - setTargetHotend(hotend_temp_bckp, active_extruder); - /// mmu_cmd = mmu_last_cmd; - break; - } - - //Print the hotend temperature (9 chars total) and fill rest of the line with space - lcd_set_cursor(0, 4); //line 4 - int chars = lcd_printf_P(_N("%c%3d/%d%c"), LCD_STR_THERMOMETER[0],(int)(degHotend(active_extruder) + 0.5), (int)(degTargetHotend(active_extruder) + 0.5), LCD_STR_DEGREE[0]); - lcd_space(9 - chars); - delay_keep_alive(1000); - } - } - else if (mmu_print_saved) { - puts_P(PSTR("MMU starts responding")); - KEEPALIVE_STATE(IN_HANDLER); - mmu_loading_flag = false; - if (turn_off_nozzle) - { - lcd_clear(); - setTargetHotend(hotend_temp_bckp, active_extruder); - if (((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)) { - lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); ////MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 - delay_keep_alive(3000); - } - mmu_wait_for_heater_blocking(); - } - if (move_axes) { - lcd_clear(); - lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position...")); ////MSG_MMU_OK_RESUMING_POSITION c=20 r=4 - current_position[X_AXIS] = x_position_bckp; - current_position[Y_AXIS] = y_position_bckp; - plan_buffer_line_curposXYZE(50); - st_synchronize(); - current_position[Z_AXIS] = z_position_bckp; - plan_buffer_line_curposXYZE(15); - st_synchronize(); - } - else { - lcd_clear(); - lcd_display_message_fullscreen_P(_i("MMU OK. Resuming...")); ////MSG_MMU_OK_RESUMING c=20 r=4 - delay_keep_alive(1000); //delay just for showing MMU OK message for a while in case that there are no xyz movements - } - } - } - if (lcd_update_was_enabled) lcd_update_enable(true); -#ifdef TMC2130 - //enable extruder motor (disabled in mmu_command, start of T-code processing) - tmc2130_set_pwr(E_AXIS, 1); - //printf_P(PSTR("E-axis enabled\n")); -#endif //TMC2130 -} - -//! @brief load filament to nozzle of multimaterial printer -//! -//! This function is used only only after T? (user select filament) and M600 (change filament). -//! It is not used after T0 .. T4 command (select filament), in such case, gcode is responsible for loading -//! filament to nozzle. -//! -void mmu_load_to_nozzle() -{ - st_synchronize(); - - const bool saved_e_relative_mode = axis_relative_modes & E_AXIS_MASK; - if (!saved_e_relative_mode) axis_relative_modes |= E_AXIS_MASK; - if (ir_sensor_detected) - { - current_position[E_AXIS] += 3.0f; - } - else - { - current_position[E_AXIS] += 7.2f; - } - float feedrate = 562; - plan_buffer_line_curposXYZE(feedrate / 60); - st_synchronize(); - current_position[E_AXIS] += 14.4f; - feedrate = 871; - plan_buffer_line_curposXYZE(feedrate / 60); - st_synchronize(); - current_position[E_AXIS] += 36.0f; - feedrate = 1393; - plan_buffer_line_curposXYZE(feedrate / 60); - st_synchronize(); - current_position[E_AXIS] += 14.4f; - feedrate = 871; - plan_buffer_line_curposXYZE(feedrate / 60); - st_synchronize(); - if (!saved_e_relative_mode) axis_relative_modes &= ~E_AXIS_MASK; -} - -void mmu_M600_wait_and_beep() { - //Beep and wait for user to remove old filament and prepare new filament for load - - KEEPALIVE_STATE(PAUSED_FOR_USER); - - int counterBeep = 0; - lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament.")); ////MSG_REMOVE_OLD_FILAMENT c=20 r=5 - bool bFirst=true; - - while (!lcd_clicked()){ - manage_heater(); - manage_inactivity(true); - - #if BEEPER > 0 - if (counterBeep == 500) { - counterBeep = 0; - } - SET_OUTPUT(BEEPER); - if (counterBeep == 0) { - if((eSoundMode==e_SOUND_MODE_BLIND)|| (eSoundMode==e_SOUND_MODE_LOUD)||((eSoundMode==e_SOUND_MODE_ONCE)&&bFirst)) - { - bFirst=false; - WRITE(BEEPER, HIGH); - } - } - if (counterBeep == 20) { - WRITE(BEEPER, LOW); - } - - counterBeep++; - #endif //BEEPER > 0 - - delay_keep_alive(4); - } - WRITE(BEEPER, LOW); -} - -//! @brief load filament for mmu v2 -//! @par nozzle_temp nozzle temperature to load filament -void mmu_M600_load_filament(bool automatic, float nozzle_temp) -{ - tmp_extruder = mmu_extruder; - if (automatic) { - tmp_extruder = ad_getAlternative(tmp_extruder); - } - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); - lcd_print(' '); - lcd_print(tmp_extruder + 1); - - //printf_P(PSTR("T code: %d \n"), tmp_extruder); - //mmu_printf_P(PSTR("T%d\n"), tmp_extruder); - setTargetHotend(nozzle_temp,active_extruder); - mmu_wait_for_heater_blocking(); - - mmu_command(MmuCmd::T0 + tmp_extruder); - - manage_response(false, true, MMU_LOAD_MOVE); - mmu_continue_loading(usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal)); - mmu_extruder = tmp_extruder; //filament change is finished - - mmu_load_to_nozzle(); - load_filament_final_feed(); - st_synchronize(); -} - -void extr_adj(uint8_t extruder) //loading filament into the MMU unit -{ - MmuCmd cmd = MmuCmd::L0 + extruder; - if (extruder > (MmuCmd::L4 - MmuCmd::L0)) - { - printf_P(PSTR("Filament out of range %d \n"),extruder); - return; - } - mmu_command(cmd); - - //show which filament is currently loaded - - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); - //if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1); - //else lcd.print(" "); - lcd_print(' '); - lcd_print(extruder + 1); - - // get response - manage_response(false, false); - - lcd_update_enable(true); - - - //lcd_return_to_status(); -} - -struct E_step -{ - float extrude; //!< extrude distance in mm - float feed_rate; //!< feed rate in mm/s -}; -static const E_step ramming_sequence[] PROGMEM = -{ - {1.0, 1000.0/60}, - {1.0, 1500.0/60}, - {2.0, 2000.0/60}, - {1.5, 3000.0/60}, - {2.5, 4000.0/60}, - {-15.0, 5000.0/60}, - {-14.0, 1200.0/60}, - {-6.0, 600.0/60}, - {10.0, 700.0/60}, - {-10.0, 400.0/60}, - {-50.0, 2000.0/60}, -}; - -//! @brief Unload sequence to optimize shape of the tip of the unloaded filament -void mmu_filament_ramming() -{ - for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i) - { - current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude)); - plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate))); - st_synchronize(); - } -} - - -//! @brief show which filament is currently unloaded -void extr_unload_view() -{ - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_UNLOADING_FILAMENT)); - lcd_print(' '); - if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(' '); - else lcd_print(mmu_extruder + 1); -} - -void extr_unload() -{ //unload just current filament for multimaterial printers - if (degHotend0() > EXTRUDE_MINTEMP) - { - st_synchronize(); - - menu_submenu(extr_unload_view); - - mmu_filament_ramming(); - - mmu_command(MmuCmd::U0); - // get response - manage_response(false, true, MMU_UNLOAD_MOVE); - - menu_back(); - } - else - { - show_preheat_nozzle_warning(); - } -} - -void load_all() -{ - enquecommand_P(PSTR("M701 E0")); - enquecommand_P(PSTR("M701 E1")); - enquecommand_P(PSTR("M701 E2")); - enquecommand_P(PSTR("M701 E3")); - enquecommand_P(PSTR("M701 E4")); -} - -bool mmu_check_version() -{ - return (mmu_buildnr >= MMU_REQUIRED_FW_BUILDNR); -} - -void mmu_show_warning() -{ - printf_P(PSTR("MMU2 firmware version invalid. Required version: build number %d or higher."), MMU_REQUIRED_FW_BUILDNR); - kill(_i("Please update firmware in your MMU2. Waiting for reset.")); ////MSG_UPDATE_MMU2_FW c=20 r=4 -} - -void lcd_mmu_load_to_nozzle(uint8_t filament_nr) -{ - menu_back(); - bFilamentAction = false; // NOT in "mmu_load_to_nozzle_menu()" - if (degHotend0() > EXTRUDE_MINTEMP) - { - tmp_extruder = filament_nr; - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); - lcd_print(' '); - lcd_print(tmp_extruder + 1); - mmu_command(MmuCmd::T0 + tmp_extruder); - manage_response(true, true, MMU_TCODE_MOVE); - mmu_continue_loading(false); - mmu_extruder = tmp_extruder; //filament change is finished - raise_z_above(MIN_Z_FOR_LOAD, false); - mmu_load_to_nozzle(); - load_filament_final_feed(); - st_synchronize(); - custom_message_type = CustomMsg::FilamentLoading; - lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT)); - lcd_return_to_status(); - lcd_update_enable(true); - lcd_load_filament_color_check(); - lcd_setstatuspgm(MSG_WELCOME); - custom_message_type = CustomMsg::Status; - } - else - { - show_preheat_nozzle_warning(); - } -} - -#ifdef MMU_HAS_CUTTER -void mmu_cut_filament(uint8_t filament_nr) -{ - menu_back(); - bFilamentAction=false; // NOT in "mmu_load_to_nozzle_menu()" - if (degHotend0() > EXTRUDE_MINTEMP) - { - LcdUpdateDisabler disableLcdUpdate; - lcd_clear(); - lcd_puts_at_P(0, 1, _i("Cutting filament")); ////MSG_MMU_CUTTING_FIL c=18 - lcd_print(' '); - lcd_print(filament_nr + 1); - mmu_filament_ramming(); - mmu_command(MmuCmd::K0 + filament_nr); - manage_response(false, false, MMU_UNLOAD_MOVE); - } - else - { - show_preheat_nozzle_warning(); - } -} -#endif //MMU_HAS_CUTTER - -void mmu_eject_filament(uint8_t filament, bool recover) -{ -//-// -bFilamentAction=false; // NOT in "mmu_fil_eject_menu()" - if (filament < 5) - { - - if (degHotend0() > EXTRUDE_MINTEMP) - { - st_synchronize(); - - { - LcdUpdateDisabler disableLcdUpdate; - lcd_clear(); - lcd_puts_at_P(0, 1, _i("Ejecting filament")); ////MSG_EJECTING_FILAMENT c=20 - mmu_filament_ramming(); - mmu_command(MmuCmd::E0 + filament); - manage_response(false, false, MMU_UNLOAD_MOVE); - if (recover) - { - lcd_show_fullscreen_message_and_wait_P(_i("Please remove filament and then press the knob.")); ////MSG_EJECT_REMOVE c=20 r=4 - mmu_command(MmuCmd::R0); - manage_response(false, false); - } - - } - } - else - { - show_preheat_nozzle_warning(); - } - } - else - { - puts_P(PSTR("Filament nr out of range!")); - } -} - -//! @brief Fits filament tip into heatbreak? -//! -//! If PTFE tube is jammed, this causes filament to be unloaded and no longer -//! being detected by the pulley IR sensor. -//! @retval true Fits -//! @retval false Doesn't fit -static bool can_load() -{ - current_position[E_AXIS] += 60; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - current_position[E_AXIS] -= 52; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - st_synchronize(); - - uint_least8_t filament_detected_count = 0; - const float e_increment = 0.2; - const uint_least8_t steps = 6.0 / e_increment; - DEBUG_PUTS_P(PSTR("MMU can_load:")); - for(uint_least8_t i = 0; i < steps; ++i) - { - current_position[E_AXIS] -= e_increment; - plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE); - st_synchronize(); - if(0 == READ(IR_SENSOR_PIN)) - { - ++filament_detected_count; - DEBUG_PUTCHAR('O'); - } - else - { - DEBUG_PUTCHAR('o'); - } - } - if (filament_detected_count > steps - 4) - { - DEBUG_PUTS_P(PSTR(" succeeded.")); - return true; - } - else - { - DEBUG_PUTS_P(PSTR(" failed.")); - return false; - } -} - -//! @brief load more -//! -//! Try to feed more filament from MMU if it is not detected by filament sensor. -//! @retval true Success, filament detected by IR sensor -//! @retval false Failed, filament not detected by IR sensor after maximum number of attempts -static bool load_more() -{ - for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++) - { - if (READ(IR_SENSOR_PIN) == 0) return true; - DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i); - mmu_command(MmuCmd::C0); - manage_response(true, true, MMU_LOAD_MOVE); - } - return false; -} - -static void increment_load_fail() -{ - uint8_t mmu_load_fail = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL); - uint16_t mmu_load_fail_tot = eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT); - if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1); - if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1); -} - -//! @brief continue loading filament -//! @par blocking -//! * true blocking - do not return until successful load -//! * false non-blocking - pause print and return on load failure -//! -//! @startuml -//! [*] --> [*] : !ir_sensor_detected /\n send MmuCmd::C0 -//! [*] --> LoadMore -//! LoadMore --> [*] : filament \ndetected -//! LoadMore --> Retry : !filament detected /\n increment load fail -//! Retry --> [*] : filament \ndetected -//! Retry --> Unload : !filament \ndetected -//! Unload --> [*] : non-blocking -//! Unload --> Retry : button \nclicked -//! -//! Retry : Cut filament if enabled -//! Retry : repeat last T-code -//! Unload : unload filament -//! Unload : pause print -//! Unload : show error message -//! -//! @enduml -void mmu_continue_loading(bool blocking) -{ - if (!ir_sensor_detected) - { - mmu_command(MmuCmd::C0); - return; - } - - bool success = load_more(); - if (success) success = can_load(); - - enum class Ls : uint_least8_t - { - Enter, - Retry, - Unload, - }; - Ls state = Ls::Enter; - - const uint_least8_t max_retry = 3; - uint_least8_t retry = 0; - - while (!success) - { - switch (state) - { - case Ls::Enter: - increment_load_fail(); - // FALLTHRU - case Ls::Retry: - ++retry; // overflow not handled, as it is not dangerous. - if (retry >= max_retry) - { - state = Ls::Unload; -#ifdef MMU_HAS_CUTTER - if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) - { - mmu_command(MmuCmd::K0 + tmp_extruder); - manage_response(true, true, MMU_UNLOAD_MOVE); - } -#endif //MMU_HAS_CUTTER - } - mmu_command(MmuCmd::T0 + tmp_extruder); - manage_response(true, true, MMU_TCODE_MOVE); - success = load_more(); - if (success) success = can_load(); - - break; - case Ls::Unload: - stop_and_save_print_to_ram(0, 0); - long_pause(); - - mmu_command(MmuCmd::U0); - manage_response(false, true, MMU_UNLOAD_MOVE); - - setAllTargetHotends(0); - lcd_setstatuspgm(_i("MMU load failed"));////MSG_MMU_LOAD_FAILED c=20 - - if (blocking) - { - marlin_wait_for_click(); - st_synchronize(); - restore_print_from_ram_and_continue(0); - state = Ls::Retry; - } - else - { - mmu_fil_loaded = false; //so we can retry same T-code again - isPrintPaused = true; - mmu_command(MmuCmd::W0); - return; - } - break; - } - } -} From c201a5791a84e907c8d00d3976bcb6ceed9e6ff5 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 22 Apr 2022 16:02:49 +0200 Subject: [PATCH 052/319] Implement MMU hw reset --- Firmware/mmu2.cpp | 5 +++++ Firmware/mmu2_power.cpp | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 0b5cfcf06..0112ccd12 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -98,6 +98,11 @@ MMU2::MMU2() } void MMU2::Start() { +#ifdef MMU_HWRESET + WRITE(MMU_RST_PIN, 1); + SET_OUTPUT(MMU_RST_PIN); // setup reset pin +#endif //MMU_HWRESET + mmu2Serial.begin(MMU_BAUD); PowerOn(); diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp index 32f93df26..b9ce75ed6 100644 --- a/Firmware/mmu2_power.cpp +++ b/Firmware/mmu2_power.cpp @@ -1,4 +1,8 @@ #include "mmu2_power.h" +#include "Configuration_prusa.h" +#include "pins.h" +#include "fastio.h" +#include namespace MMU2 { @@ -7,6 +11,15 @@ void power_on() { } void power_off() { } -void reset() { } +void reset() { +#ifdef MMU_HWRESET // HW - pulse reset pin + WRITE(MMU_RST_PIN, 0); + _delay_us(100); + WRITE(MMU_RST_PIN, 1); +#else // SW - send X0 command + // mmu_puts_P(PSTR("X0\n")); + #error todo send command if hardware pin not available +#endif +} } // namespace MMU2 From c0a6d1343a82c0a37441b816d76c6e9f93c214ad Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sat, 23 Apr 2022 22:34:32 +0200 Subject: [PATCH 053/319] Increase RX buffer size --- Firmware/uart2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/uart2.c b/Firmware/uart2.c index 57b0f77a6..5d90889d5 100644 --- a/Firmware/uart2.c +++ b/Firmware/uart2.c @@ -12,7 +12,7 @@ #define uart2_txcomplete (UCSR2A & (1 << TXC2)) #define uart2_txready (UCSR2A & (1 << UDRE2)) -uint8_t uart2_ibuf[14] = {0, 0}; +uint8_t uart2_ibuf[20] = {0, 0}; FILE _uart2io = {0}; From d6044387d937092369757eb1da7f13449844f7d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 23 Apr 2022 18:11:26 +0000 Subject: [PATCH 054/319] Fix crash in manage_response The watchdog needs to be kicked in the for(;;) loop. This is usually done by calling manage_heater before manage_inactivity. --- Firmware/mmu2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 0112ccd12..a0e3408c9 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -511,7 +511,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { // - still running -> wait normally in idle() // - failed -> then do the safety moves on the printer like before // - finished ok -> proceed with reading other commands - + manage_heater(); // @@TODO this needs verification - we need something which matches Marlin2's idle() manage_inactivity(true); // calls LogicStep() and remembers its return status From 4b714665269515bed3f572bd989f5a97dd043990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 23 Apr 2022 18:12:39 +0000 Subject: [PATCH 055/319] Fix PROGMEM read in ProgressCode message This could cause the printer to crash. The Serial Stream would show a garbled string and the same corruption would appear on the Status Screen's status line. --- Firmware/mmu2_progress_converter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index f82012f19..edebef331 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -62,7 +62,8 @@ static const char * const progressTexts[] PROGMEM = { }; const char * const ProgressCodeToText(uint16_t pc){ - return ( pc <= 26 ) ? progressTexts[pc] : progressTexts[0]; // @@TODO ?? a better fallback option? + // @@TODO ?? a better fallback option? + return ( pc <= 26 ) ? static_cast(pgm_read_ptr(&progressTexts[pc])) : static_cast(pgm_read_ptr(&progressTexts[0])); } void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { From 2142cb0849114f8150f606a36fe4249276108994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 23 Apr 2022 18:14:22 +0000 Subject: [PATCH 056/319] Fix overwrite in ProgressCode message buffer When snprintf() if called we need to read the return value to see how many bytes were written. Then when we call strncpy_P() through TranslateProgress(), we need to tell the code to start writing at byte 'len', or &msg[len]. Also we need to update the byte size which strncpy_P() is allowed to write (64 - len). --- Firmware/mmu2.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index a0e3408c9..11addd0f7 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -636,10 +636,10 @@ void MMU2::ReportProgress(ProgressCode pc) { // Log progress - example: MMU2:P=123 EngageIdler char msg[64]; - snprintf(msg, sizeof(msg), "MMU2:P=%hu", (uint16_t)pc); + int len = snprintf(msg, sizeof(msg), "MMU2:P=%hu", (uint16_t)pc); // Append a human readable form of the progress code - TranslateProgress((uint16_t)pc, msg, sizeof(msg)); - + TranslateProgress((uint16_t)pc, &msg[len], 64 - len); + SERIAL_ECHO_START; SERIAL_ECHOLN(msg); } From 52f7fb8c5137c35345eb21286b6c5d83a78ce034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 24 Apr 2022 09:18:30 +0000 Subject: [PATCH 057/319] Add missing space in ProgressCode message Such that: MMU2:P=123EngageIdler Becomes: MMU2:P=123 EngageIdler --- Firmware/mmu2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 11addd0f7..2e59e0c0d 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -633,10 +633,10 @@ void MMU2::ReportError(ErrorCode ec) { void MMU2::ReportProgress(ProgressCode pc) { ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); - + // Log progress - example: MMU2:P=123 EngageIdler char msg[64]; - int len = snprintf(msg, sizeof(msg), "MMU2:P=%hu", (uint16_t)pc); + int len = snprintf(msg, sizeof(msg), "MMU2:P=%hu ", (uint16_t)pc); // Append a human readable form of the progress code TranslateProgress((uint16_t)pc, &msg[len], 64 - len); From 6fab95f145e0cbb19954ce8d6e30e42c5eded789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 24 Apr 2022 09:05:08 +0000 Subject: [PATCH 058/319] Fix PROGMEM read in ErrorCode message This could cause the printer to crash. The Serial Stream would show a garbled string. Also included in this commit: * The buffer size is increased from 64 bytes to 192 bytes. We need to take into account the length of the ErrorTitle and ErrorDescription. * Fix overwrite in ErrorCode message buffer. --- Firmware/mmu2.cpp | 12 ++++++++---- Firmware/mmu2_error_converter.cpp | 5 ++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 2e59e0c0d..b4c81b8f9 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -609,10 +609,14 @@ void MMU2::ReportError(ErrorCode ec) { lastErrorCode = ec; // Log error format: MMU2:E=32766 TextDescription - char msg[64]; - snprintf(msg, sizeof(msg), "MMU2:E=%hu", (uint16_t)ec); + + // The longest error description in errors_list.h is 144 bytes. + // and the longest error title is 20 bytes. msg buffer needs + // to have enough space to fit both. + char msg[192]; + int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu", (uint16_t)ec); // Append a human readable form of the error code(s) - TranslateErr((uint16_t)ec, msg, sizeof(msg)); + TranslateErr((uint16_t)ec, &msg[len], 192 - len); // beware - the prefix in the message ("MMU2") will get stripped by the logging subsystem // and a correct MMU2 component will be assigned accordingly - see appmain.cpp @@ -620,7 +624,7 @@ void MMU2::ReportError(ErrorCode ec) { SERIAL_ECHO_START; SERIAL_ECHOLN(msg); } - + static_assert(mmu2Magic[0] == 'M' && mmu2Magic[1] == 'M' && mmu2Magic[2] == 'U' diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index c677a490f..cb3d21ec6 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -92,9 +92,8 @@ void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { uint16_t ei = MMUErrorCodeIndex(ec); // just to prevent the compiler from stripping the data structures from the final binary for now *dst = errorButtons[ei]; - strncpy_P(dst + 1, errorTitles[ei], dstSize); - strncat_P(dst, errorDescs[ei], dstSize); - + strncpy_P(dst + 1, static_cast(pgm_read_ptr(&errorTitles[ei])), dstSize); + strncat_P(dst, static_cast(pgm_read_ptr(&errorDescs[ei])), dstSize); } } // namespace MMU2 From dcebad21c86f99ae70dc5298a9a6d9bbbe24a764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 24 Apr 2022 09:30:20 +0000 Subject: [PATCH 059/319] Add missing spaces to ErrorCode messages Such that: MMU2:E=32766ErrorTitleTextDescription Becomes: MMU2:E=32766 ErrorTitle TextDescription Also simplified the process of combining ErrorTitle and TextDescription into the msg buffer by using snprintf. This is saver since we only use dstSize in one place instead of two. --- Firmware/mmu2.cpp | 4 ++-- Firmware/mmu2_error_converter.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index b4c81b8f9..4ffa88c99 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -608,13 +608,13 @@ void MMU2::ReportError(ErrorCode ec) { if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; - // Log error format: MMU2:E=32766 TextDescription + // Log error format: MMU2:E=32766 ErrorTitle TextDescription // The longest error description in errors_list.h is 144 bytes. // and the longest error title is 20 bytes. msg buffer needs // to have enough space to fit both. char msg[192]; - int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu", (uint16_t)ec); + int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); // Append a human readable form of the error code(s) TranslateErr((uint16_t)ec, &msg[len], 192 - len); diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index cb3d21ec6..08b1853e8 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -2,6 +2,7 @@ #include "mmu2/error_codes.h" #include "mmu2/errors_list.h" #include "language.h" +#include namespace MMU2 { @@ -92,8 +93,11 @@ void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { uint16_t ei = MMUErrorCodeIndex(ec); // just to prevent the compiler from stripping the data structures from the final binary for now *dst = errorButtons[ei]; - strncpy_P(dst + 1, static_cast(pgm_read_ptr(&errorTitles[ei])), dstSize); - strncat_P(dst, static_cast(pgm_read_ptr(&errorDescs[ei])), dstSize); + snprintf( + dst, dstSize, "%S %S", + static_cast(pgm_read_ptr(&errorTitles[ei])), + static_cast(pgm_read_ptr(&errorDescs[ei])) + ); } } // namespace MMU2 From 11290c112321f52f06b8443af22099f2fe573233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 24 Apr 2022 14:01:37 +0000 Subject: [PATCH 060/319] Add a read function for mmu_print_saved and remove the old extern value which is not used anymore I had to remove "MMU2::" from mmu2_protocol_logic.cpp, otherwise the build failed. --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 3 --- Firmware/mmu2.h | 5 ++++- Firmware/mmu2_protocol_logic.cpp | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index da63894db..475051669 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -21,6 +21,7 @@ #include "Configuration.h" #include "pins.h" #include "Timer.h" +#include "mmu2.h" extern uint8_t mbl_z_probe_nr; #ifndef AT90USB diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 45c2a512b..969f015af 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -295,9 +295,6 @@ float saved_start_position[NUM_AXIS] = {SAVED_START_POSITION_UNSET, 0, 0, 0}; uint16_t saved_segment_idx = 0; -// save/restore printing in case that mmu was not responding -bool mmu_print_saved = false; - // storing estimated time to end of print counted by slicer uint8_t print_percent_done_normal = PRINT_PERCENT_DONE_INIT; uint8_t print_percent_done_silent = PRINT_PERCENT_DONE_INIT; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index b3d07c523..d08e8624a 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -129,7 +129,10 @@ public: return { 0, 0, 0}; } } - + + /// Method to read-only mmu_print_saved + bool MMU_PRINT_SAVED() const { return mmu_print_saved; } + private: /// Perform software self-reset of the MMU (sends an X0 command) void ResetX0(); diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 5dd9fee05..d748c3c61 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -344,7 +344,7 @@ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { } // otherwise wait for an empty window to activate the request } -bool MMU2::ProtocolLogic::ActivatePlannedRequest(){ +bool ProtocolLogic::ActivatePlannedRequest(){ if( plannedRq.code == RequestMsgCodes::Button ){ // only issue the button to the MMU and do not restart the state machines command.SendButton(plannedRq.value); @@ -466,7 +466,7 @@ void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ memcpy(lastMsg, tmp, rqs); } -void MMU2::ProtocolLogic::LogError(const char *reason){ +void ProtocolLogic::LogError(const char *reason){ char lrb[lastReceivedBytes.size() * 3]; FormatLastReceivedBytes(lrb); @@ -482,7 +482,7 @@ void ProtocolLogic::LogResponse(){ SERIAL_ECHOLN(); } -StepStatus MMU2::ProtocolLogic::HandleCommError(const char *msg, StepStatus ss){ +StepStatus ProtocolLogic::HandleCommError(const char *msg, StepStatus ss){ protocol.ResetResponseDecoder(); HandleCommunicationTimeout(); if( dataTO.Record(ss) ){ From 96540d6e2d3205a5c6bed137fb441911df423c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 30 Apr 2022 11:51:26 +0000 Subject: [PATCH 061/319] Fix return value of WhereIsFilament() getFilamentPresent returns the state of the IO pin of the sensor. So we should use AT_FSENSOR instead of IN_NOZZLE since the fsensor does not know if the filament is actually in the nozzle. --- Firmware/mmu2_fsensor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_fsensor.cpp b/Firmware/mmu2_fsensor.cpp index 3d1bc8fb4..48fe639a9 100644 --- a/Firmware/mmu2_fsensor.cpp +++ b/Firmware/mmu2_fsensor.cpp @@ -4,7 +4,7 @@ namespace MMU2 { FilamentState WhereIsFilament(){ - return fsensor.getFilamentPresent() ? FilamentState::IN_NOZZLE : FilamentState::NOT_PRESENT; + return fsensor.getFilamentPresent() ? FilamentState::AT_FSENSOR : FilamentState::NOT_PRESENT; } From b59c9da9eec706add685156fcc46164e46916880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 30 Apr 2022 13:42:30 +0000 Subject: [PATCH 062/319] Move extruder when loading filament to fsensor When the fsensor see filament, stop the extruder --- Firmware/mmu2.cpp | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 4ffa88c99..209fc6c33 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -660,6 +660,9 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ st_synchronize(); loadFilamentStarted = true; break; + case ProgressCode::FeedingToNozzle: + // Nothing yet + break; default: // do nothing yet break; @@ -668,14 +671,30 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // Act accordingly - every status change (even the same state) switch(pc){ case ProgressCode::FeedingToBondtech: - if( WhereIsFilament() == FilamentState::AT_FSENSOR && loadFilamentStarted){// fsensor triggered, move the extruder to help loading - // rotate the extruder motor - no planner sync, just add more moves - as long as they are roughly at the same speed as the MMU is pushing, - // it really doesn't matter - current_position[E_AXIS] += (loadingToNozzle ? MMU2_LOAD_TO_NOZZLE_LENGTH : MMU2_TOOL_CHANGE_LOAD_LENGTH) / extruder_multiplier[0]; - plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); - loadFilamentStarted = false; + if ( loadFilamentStarted ) + { + switch ( WhereIsFilament() ) + { + case FilamentState::AT_FSENSOR: + // fsensor triggered, stop moving the extruder + loadFilamentStarted = false; + // TODO: continue to ProgressCode::FeedingToNozzle? + break; + case FilamentState::NOT_PRESENT: + // fsensor not triggered, continue moving extruder + // TODO: Verify what's the best speed here? + current_position[E_AXIS] += MMU2_LOAD_TO_NOZZLE_FEED_RATE; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); + st_synchronize(); // Wait for the steps to be done, otherwise the moves will just add up + default: + // Abort here? + break; + } } break; + case ProgressCode::FeedingToNozzle: + // Nothing yet + break; default: // do nothing yet break; From 15fbb93a8c15bf1adb068dcde2e90dcf5cc653ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 13:50:58 +0000 Subject: [PATCH 063/319] add that downwards facing >> character --- Firmware/mmu2/errors_list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index d1ebf6b2b..d87e786eb 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -269,7 +269,7 @@ static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); static const char btnUnload[] PROGMEM_I1 = ISTR("Unload"); static const char btnStop[] PROGMEM_I1 = ISTR("Stop"); static const char btnDisableMMU[] PROGMEM_I1 = ISTR("Disable"); -static const char btnMore[] PROGMEM_I1 = ISTR("More"); // @@TODO add that downwards facing >> character +static const char btnMore[] PROGMEM_I1 = ISTR("More\x01"); // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. // Since one of the buttons is always "More", we can skip that one. From 1ba314d95b716d1651196f0d459e20fb5943e5c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 15:57:54 +0000 Subject: [PATCH 064/319] Print the MMU progress into status screen --- Firmware/ultralcd.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4f5a4c46a..cf2f41c8f 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -663,6 +663,7 @@ void lcdui_print_status_line(void) { break; case CustomMsg::MMUProgress: // set up at mmu2_reporting.cpp, just do nothing here + lcd_print(lcd_status_message); break; } } From 74ea9a7e43d7ab1bb51fdbcd78c808ab8cae2347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 16:00:09 +0000 Subject: [PATCH 065/319] Remove class LcdUpdateDisabler Calling lcd_update_enable directly gives us more control This also save a bit of flash memory --- Firmware/lcd.h | 24 ------------------------ Firmware/ultralcd.cpp | 2 +- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/Firmware/lcd.h b/Firmware/lcd.h index c741fd700..7331131ad 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -127,30 +127,6 @@ extern void lcd_update_enable(uint8_t enabled); extern void lcd_buttons_update(void); -//! @brief Helper class to temporarily disable LCD updates -//! -//! When constructed (on stack), original state state of lcd_update_enabled is stored -//! and LCD updates are disabled. -//! When destroyed (gone out of scope), original state of LCD update is restored. -//! It has zero overhead compared to storing bool saved = lcd_update_enabled -//! and calling lcd_update_enable(false) and lcd_update_enable(saved). -class LcdUpdateDisabler -{ -public: - LcdUpdateDisabler(): m_updateEnabled(lcd_update_enabled) - { - lcd_update_enable(false); - } - ~LcdUpdateDisabler() - { - lcd_update_enable(m_updateEnabled); - } - -private: - bool m_updateEnabled; -}; - - //////////////////////////////////// // Setup button and encode mappings for each panel (into 'lcd_buttons' variable // diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index cf2f41c8f..758bc4a31 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3117,7 +3117,7 @@ const char* lcd_display_message_fullscreen_P(const char *msg) */ void lcd_show_fullscreen_message_and_wait_P(const char *msg) { - LcdUpdateDisabler lcdUpdateDisabler; + lcd_update_enable(false); const char *msg_next = lcd_display_message_fullscreen_P(msg); bool multi_screen = msg_next != NULL; lcd_set_custom_characters_nextpage(); From 39df6440ceeb15913515fb938502722d3c20f1bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 16:01:15 +0000 Subject: [PATCH 066/319] Allow LCD to be updated in manage_response loop Also removed one TODO which David mentioned is not needed anymore --- Firmware/mmu2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 209fc6c33..f490f9cd6 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -512,8 +512,8 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { // - failed -> then do the safety moves on the printer like before // - finished ok -> proceed with reading other commands manage_heater(); - // @@TODO this needs verification - we need something which matches Marlin2's idle() manage_inactivity(true); // calls LogicStep() and remembers its return status + lcd_update(0); switch (logicStepLastStatus) { case Finished: From ffe8c7c31ac56bc8af768e4c845858afc7398c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 16:05:10 +0000 Subject: [PATCH 067/319] Update lcd_show_multiscreen_message_two_choices_and_wait_P to support 3 choices --- Firmware/ultralcd.cpp | 75 +++++++++++++++++++++++++++++++++---------- Firmware/ultralcd.h | 2 +- 2 files changed, 59 insertions(+), 18 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 758bc4a31..7e7bfbebb 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3137,6 +3137,7 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) if (msg_next == NULL) { KEEPALIVE_STATE(IN_HANDLER); lcd_set_custom_characters(); + lcd_update_enable(true); return; } else { @@ -3192,13 +3193,13 @@ lcd_wait_for_click_delay(0); //! @retval -1 screen timed out int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) //currently just max. n*4 + 3 lines supported (set in language header files) { - return lcd_show_multiscreen_message_two_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), 10); + return lcd_show_multiscreen_message_two_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), nullptr, 10); } //! @brief Show a two-choice prompt on the last line of the LCD //! @param first_selected Show first choice as selected if true, the second otherwise //! @param first_choice text caption of first possible choice //! @param second_choice text caption of second possible choice -void lcd_show_two_choices_prompt_P(bool first_selected, const char *first_choice, const char *second_choice, uint8_t second_col) +void lcd_show_two_choices_prompt_P(uint8_t first_selected, const char *first_choice, const char *second_choice, uint8_t second_col) { lcd_set_cursor(0, 3); lcd_print(first_selected? '>': ' '); @@ -3207,6 +3208,20 @@ void lcd_show_two_choices_prompt_P(bool first_selected, const char *first_choice lcd_print(!first_selected? '>': ' '); lcd_puts_P(second_choice); } + +void lcd_show_three_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col, uint8_t third_col) +{ + lcd_set_cursor(0, 3); + lcd_print(selected == 0 ? '>': ' '); + lcd_puts_P(first_choice); + lcd_set_cursor(second_col, 3); + lcd_print(selected == 1 ? '>': ' '); + lcd_puts_P(second_choice); + lcd_set_cursor(third_col, 3); + lcd_print(selected == 2 ? '>': ' '); + lcd_puts_P(third_choice); +} + //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting if true, allows time outing of the screen @@ -3217,15 +3232,22 @@ void lcd_show_two_choices_prompt_P(bool first_selected, const char *first_choice //! @retval 0 second choice selected by user //! @retval -1 screen timed out int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_first, - const char *first_choice, const char *second_choice, uint8_t second_col) + const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col, uint8_t third_col) { - const char *msg_next = msg? lcd_display_message_fullscreen_P(msg) : NULL; + const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; bool multi_screen = msg_next != NULL; + lcd_set_custom_characters_nextpage(); - // Initial status/prompt on single-screen messages - bool yes = default_first ? true : false; - if (!msg_next) lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); - + // Initial status/prompt on single-screen messages + uint8_t yes = default_first ? 1 : 0; + if (!msg_next) { + if (third_choice) + { // third_choice is not nullptr, safe to derefence + lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); + } else { + lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); + } + } // Wait for user confirmation or a timeout. unsigned long previous_millis_cmd = _millis(); int8_t enc_dif = lcd_encoder_diff; @@ -3235,20 +3257,33 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool for (uint8_t i = 0; i < 100; ++i) { delay_keep_alive(50); if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) + { return -1; + } manage_heater(); manage_inactivity(true); - if (abs(enc_dif - lcd_encoder_diff) > 4) { + if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { if (msg_next == NULL) { - if ((enc_dif < lcd_encoder_diff && yes) || - ((enc_dif > lcd_encoder_diff && !yes))) - { - yes = !yes; - lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); - Sound_MakeSound(e_SOUND_TYPE_EncoderMove); - } + if (enc_dif > lcd_encoder_diff) { + // Rotating knob counter clockwise + if (yes != 0) yes = yes - 1; + } + + else if (enc_dif < lcd_encoder_diff) { + // Rotating knob clockwise + if (yes != 2) yes = yes + 1; + } + + // Render the options: + if (third_choice) + { // third_choice is not nullptr, safe to derefence + lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); + } else { + lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); + } enc_dif = lcd_encoder_diff; + Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } else { Sound_MakeSound(e_SOUND_TYPE_BlindAlert); @@ -3260,6 +3295,7 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool if (msg_next == NULL) { KEEPALIVE_STATE(IN_HANDLER); lcd_set_custom_characters(); + lcd_update_enable(true); return yes; } else break; @@ -3272,7 +3308,12 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool msg_next = lcd_display_message_fullscreen_P(msg_next); } if (msg_next == NULL) { - lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); + if (third_choice) + { // third_choice is not nullptr, safe to derefence + lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); + } else { + lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); + } } } } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 101109de8..fb60ea61a 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -76,7 +76,7 @@ extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, bool defaul // 0: no, 1: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); extern int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, - const char *first_choice, const char *second_choice, uint8_t second_col = 7); + const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7, uint8_t third_col = 13); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 734e176445252110778937e982fa112741e13521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 16:05:51 +0000 Subject: [PATCH 068/319] Don't disable LCD updates in menu_item_function_P --- Firmware/menu.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index b4761304f..712a74686 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -384,9 +384,7 @@ uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t) { menu_clicked = false; lcd_consume_click(); - lcd_update_enabled = 0; if (func) func(fn_par); - lcd_update_enabled = 1; return menu_item_ret(); } } From 96ff291f5905e9573529595282ab04c00203d127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 7 May 2022 16:06:16 +0000 Subject: [PATCH 069/319] Implement PFW-1312 in MMU code --- Firmware/mmu2.cpp | 52 +++++++++++++++++++++++++++++---- Firmware/mmu2_error_converter.h | 1 + 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index f490f9cd6..4ee696c75 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -1,5 +1,7 @@ #include "mmu2.h" #include "mmu2_error_converter.h" +#include "mmu2/error_codes.h" +#include "mmu2/errors_list.h" #include "mmu2_fsensor.h" #include "mmu2_log.h" #include "mmu2_power.h" @@ -613,16 +615,56 @@ void MMU2::ReportError(ErrorCode ec) { // The longest error description in errors_list.h is 144 bytes. // and the longest error title is 20 bytes. msg buffer needs // to have enough space to fit both. - char msg[192]; - int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); + //char msg[192]; + //int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); // Append a human readable form of the error code(s) - TranslateErr((uint16_t)ec, &msg[len], 192 - len); + //TranslateErr((uint16_t)ec, &msg[len], 192 - len); + + const uint16_t ei = MMUErrorCodeIndex((uint16_t)ec); + // Testing + uint8_t choice_selected = 0; + back_to_choices: + // 504 = ERR_SYSTEM_VERSION_MISMATCH + lcd_clear(); + lcd_update_enable(false); + lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), + static_cast(pgm_read_ptr(&errorTitles[ei])), + reinterpret_cast(const_cast(pgm_read_ptr(&errorCodes[ei]))) + ); + choice_selected = lcd_show_multiscreen_message_two_choices_and_wait_P( + NULL, // NULL, since title screen is not in PROGMEM + false, + false, + btnRetry, + btnContinue, + btnMore, + 7, + 13 + ); + + if (choice_selected == 2) { + // 'More' show error description + lcd_show_fullscreen_message_and_wait_P( + static_cast(pgm_read_ptr(&errorDescs[ei])) + ); + + // Return back to the choice menu + goto back_to_choices; + } else if(choice_selected == 1) { + // 'Done' return to status screen + lcd_update_enable(true); + lcd_return_to_status(); + } else { + // 'Retry' TODO: not yet implemented + lcd_update_enable(true); + lcd_return_to_status(); + } // beware - the prefix in the message ("MMU2") will get stripped by the logging subsystem // and a correct MMU2 component will be assigned accordingly - see appmain.cpp // Therefore I'm not calling MMU2_ERROR_MSG or MMU2_ECHO_MSG here - SERIAL_ECHO_START; - SERIAL_ECHOLN(msg); + //SERIAL_ECHO_START; + //SERIAL_ECHOLN(msg); } static_assert(mmu2Magic[0] == 'M' diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h index 5166863ea..891fe0848 100644 --- a/Firmware/mmu2_error_converter.h +++ b/Firmware/mmu2_error_converter.h @@ -3,5 +3,6 @@ #include namespace MMU2 { +const uint16_t MMUErrorCodeIndex(uint16_t ec); void TranslateErr(uint16_t ec, char *dst, size_t dstSize); } From 83fefe10c15454f88e0f39e94c73e62a0fbff70b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 8 May 2022 11:51:43 +0000 Subject: [PATCH 070/319] Checkpoint: - Rename lcd_show_multiscreen_message_two_choices_and_wait_P to lcd_show_multiscreen_message_with_choices_and_wait_P - Move MMU error screen from ReportError() to ReportErrorHook() - Fix the menu selection to work for menus with either two choices or three choices - The buttons shown on the MMU error menu are now determined by the definition of btnOperation[] --- Firmware/mmu2.cpp | 50 ++--------------- Firmware/mmu2/errors_list.h | 30 ++++++++--- Firmware/mmu2_reporting.cpp | 105 +++++++++++++++++++++++++++++++++++- Firmware/ultralcd.cpp | 55 ++++++++++--------- Firmware/ultralcd.h | 2 +- 5 files changed, 162 insertions(+), 80 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 4ee696c75..ca22c2f8b 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -615,56 +615,16 @@ void MMU2::ReportError(ErrorCode ec) { // The longest error description in errors_list.h is 144 bytes. // and the longest error title is 20 bytes. msg buffer needs // to have enough space to fit both. - //char msg[192]; - //int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); + char msg[192]; + int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); // Append a human readable form of the error code(s) - //TranslateErr((uint16_t)ec, &msg[len], 192 - len); - - const uint16_t ei = MMUErrorCodeIndex((uint16_t)ec); - // Testing - uint8_t choice_selected = 0; - back_to_choices: - // 504 = ERR_SYSTEM_VERSION_MISMATCH - lcd_clear(); - lcd_update_enable(false); - lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), - static_cast(pgm_read_ptr(&errorTitles[ei])), - reinterpret_cast(const_cast(pgm_read_ptr(&errorCodes[ei]))) - ); - choice_selected = lcd_show_multiscreen_message_two_choices_and_wait_P( - NULL, // NULL, since title screen is not in PROGMEM - false, - false, - btnRetry, - btnContinue, - btnMore, - 7, - 13 - ); - - if (choice_selected == 2) { - // 'More' show error description - lcd_show_fullscreen_message_and_wait_P( - static_cast(pgm_read_ptr(&errorDescs[ei])) - ); - - // Return back to the choice menu - goto back_to_choices; - } else if(choice_selected == 1) { - // 'Done' return to status screen - lcd_update_enable(true); - lcd_return_to_status(); - } else { - // 'Retry' TODO: not yet implemented - lcd_update_enable(true); - lcd_return_to_status(); - } + TranslateErr((uint16_t)ec, &msg[len], 192 - len); // beware - the prefix in the message ("MMU2") will get stripped by the logging subsystem // and a correct MMU2 component will be assigned accordingly - see appmain.cpp // Therefore I'm not calling MMU2_ERROR_MSG or MMU2_ECHO_MSG here - //SERIAL_ECHO_START; - //SERIAL_ECHOLN(msg); + SERIAL_ECHO_START; + SERIAL_ECHOLN(msg); } static_assert(mmu2Magic[0] == 'M' diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index d87e786eb..244597ef8 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -243,17 +243,20 @@ static const char * const errorDescs[] PROGMEM = { descRUNTIME_ERROR, }; +#define BUTTON_OP_HIGH_NIBBLE_MSK 0xF0 +#define BUTTON_OP_LOW_NIBBLE_MSK 0x0F + /// Will be mapped onto dialog button responses in the FW /// Those responses have their unique+translated texts as well enum class ButtonOperations : uint8_t { - NoOperation, - Retry, - SlowLoad, - Continue, - RestartMMU, - Unload, - StopPrint, - DisableMMU, + NoOperation = 0, + Retry = 1, + SlowLoad = 2, + Continue = 3, + RestartMMU = 4, + Unload = 5, + StopPrint = 6, + DisableMMU = 7, }; // we have max 3 buttons/operations to select from @@ -271,6 +274,17 @@ static const char btnStop[] PROGMEM_I1 = ISTR("Stop"); static const char btnDisableMMU[] PROGMEM_I1 = ISTR("Disable"); static const char btnMore[] PROGMEM_I1 = ISTR("More\x01"); +// Used to parse the buttons from Btns(). +static const char * const btnOperation[] PROGMEM = { + btnRetry, + btnSlowLoad, + btnContinue, + btnRestartMMU, + btnUnload, + btnStop, + btnDisableMMU +}; + // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. // Since one of the buttons is always "More", we can skip that one. // Therefore we need just 1 byte to describe the necessary buttons for each screen. diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 1bc638c25..6d87ba8a5 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -1,4 +1,7 @@ #include "mmu2_reporting.h" +#include "mmu2_error_converter.h" +#include "mmu2/error_codes.h" +#include "mmu2/errors_list.h" #include "ultralcd.h" namespace MMU2 { @@ -16,8 +19,106 @@ void EndReport(CommandInProgress cip, uint16_t ec) { } void ReportErrorHook(CommandInProgress cip, uint16_t ec) { - // @@TODO - display an error screen - we still don't know how that will look like - // The only thing we know is the fact, that the screen must not block the MMU automaton + //! Show an error screen + //! When an MMU error occurs, the LCD content will look like this: + //! |01234567890123456789| + //! |MMU FW update needed| <- title/header of the error: max 20 characters + //! |prusa3d.com/ERR04504| <- URL 20 characters + //! | | <- empty line + //! |>Retry >Done >MoreW| <- buttons + const uint16_t ei = MMUErrorCodeIndex((uint16_t)ec); + uint8_t choice_selected = 0; + bool two_choices = false; + + // Read and determine what operations should be shown on the menu + // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* + uint8_t button_operation = reinterpret_cast(const_cast(pgm_read_ptr(&errorButtons[ei]))); + uint8_t button_high_nibble = (button_operation & BUTTON_OP_HIGH_NIBBLE_MSK) >> 4; + uint8_t button_low_nibble = button_operation & BUTTON_OP_LOW_NIBBLE_MSK; + + // Check if the menu should have three or two choices + if (button_low_nibble == (uint8_t)ButtonOperations::NoOperation) + { + // Two operations not specified, the error menu should only show two choices + two_choices = true; + } + +back_to_choices: + lcd_clear(); + lcd_update_enable(false); + + // Print title and header + lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), + static_cast(pgm_read_ptr(&errorTitles[ei])), + reinterpret_cast(const_cast(pgm_read_ptr(&errorCodes[ei]))) + ); + + // Render the choices and store selection in 'choice_selected' + choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( + NULL, // NULL, since title screen is not in PROGMEM + false, + false, + two_choices ? + static_cast(pgm_read_ptr(&btnOperation[button_high_nibble - 1])) + : static_cast(pgm_read_ptr(&btnOperation[button_low_nibble - 1])), + two_choices ? + btnMore + : static_cast(pgm_read_ptr(&btnOperation[button_high_nibble - 1])), + two_choices ? nullptr : btnMore, + two_choices ? + 10 // If two choices, allow the first choice to have more characters + : 7, + 13 + ); + + if ((two_choices && choice_selected == 1) // Two choices and middle button selected + || (!two_choices && choice_selected == 2)) // Three choices and right most button selected + { + // 'More' show error description + lcd_show_fullscreen_message_and_wait_P( + static_cast(pgm_read_ptr(&errorDescs[ei])) + ); + + // Return back to the choice menu + goto back_to_choices; + } else if(choice_selected == 1) { + // TODO: User selected middle choice, not sure what to do. + // At the moment just return to the status screen + switch (button_high_nibble) + { + case (uint8_t)ButtonOperations::Retry: + case (uint8_t)ButtonOperations::SlowLoad: + case (uint8_t)ButtonOperations::Continue: + case (uint8_t)ButtonOperations::RestartMMU: + case (uint8_t)ButtonOperations::Unload: + case (uint8_t)ButtonOperations::StopPrint: + case (uint8_t)ButtonOperations::DisableMMU: + default: + lcd_update_enable(true); + lcd_return_to_status(); + break; + } + } else { + // TODO: User selected the left most choice, not sure what to do. + // At the moment just return to the status screen + switch ( two_choices ? + button_high_nibble + : button_low_nibble + ) + { + case (uint8_t)ButtonOperations::Retry: + case (uint8_t)ButtonOperations::SlowLoad: + case (uint8_t)ButtonOperations::Continue: + case (uint8_t)ButtonOperations::RestartMMU: + case (uint8_t)ButtonOperations::Unload: + case (uint8_t)ButtonOperations::StopPrint: + case (uint8_t)ButtonOperations::DisableMMU: + default: + lcd_update_enable(true); + lcd_return_to_status(); + break; + } + } } void ReportProgressHook(CommandInProgress cip, uint16_t ec) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7e7bfbebb..f2daf00f3 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3193,7 +3193,7 @@ lcd_wait_for_click_delay(0); //! @retval -1 screen timed out int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) //currently just max. n*4 + 3 lines supported (set in language header files) { - return lcd_show_multiscreen_message_two_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), nullptr, 10); + return lcd_show_multiscreen_message_with_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), nullptr, 10); } //! @brief Show a two-choice prompt on the last line of the LCD //! @param first_selected Show first choice as selected if true, the second otherwise @@ -3202,10 +3202,10 @@ int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allo void lcd_show_two_choices_prompt_P(uint8_t first_selected, const char *first_choice, const char *second_choice, uint8_t second_col) { lcd_set_cursor(0, 3); - lcd_print(first_selected? '>': ' '); + lcd_print(first_selected == 0 ? '>': ' '); lcd_puts_P(first_choice); lcd_set_cursor(second_col, 3); - lcd_print(!first_selected? '>': ' '); + lcd_print(first_selected == 1 ? '>': ' '); lcd_puts_P(second_choice); } @@ -3224,14 +3224,18 @@ void lcd_show_three_choices_prompt_P(uint8_t selected, const char *first_choice, //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. -//! @param allow_timeouting if true, allows time outing of the screen -//! @param default_first if true, fist choice is selected by default, otherwise second choice is preselected -//! @param first_choice text caption of first possible choice -//! @param second_choice text caption of second possible choice +//! @param allow_timeouting bool, if true, allows time outing of the screen +//! @param default_first uint8_t, Control which choice is selected first. 0: left most, 1: middle, 2: right most choice. The first choice is selected by default +//! @param first_choice text caption of first possible choice. Must be in PROGMEM +//! @param second_choice text caption of second possible choice. Must be in PROGMEM +//! @param third_choice text caption of second possible choice. Must be in PROGMEM. When not set to nullptr first_choice and second_choice may not be more than 5 characters long. +//! @param second_col column on LCD where second_choice starts +//! @param third_col column on LCD where second_choice starts +//! @retval 0 first choice selected by user //! @retval 1 first choice selected by user -//! @retval 0 second choice selected by user -//! @retval -1 screen timed out -int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_first, +//! @retval 2 third choice selected by user +//! @retval -1 screen timed out (only possible if allow_timeouting is true) +int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_first, const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col, uint8_t third_col) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; @@ -3242,7 +3246,7 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool uint8_t yes = default_first ? 1 : 0; if (!msg_next) { if (third_choice) - { // third_choice is not nullptr, safe to derefence + { // third_choice is not nullptr, safe to dereference lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); } else { lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); @@ -3265,21 +3269,24 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { if (msg_next == NULL) { - if (enc_dif > lcd_encoder_diff) { - // Rotating knob counter clockwise - if (yes != 0) yes = yes - 1; - } - - else if (enc_dif < lcd_encoder_diff) { - // Rotating knob clockwise - if (yes != 2) yes = yes + 1; - } - - // Render the options: if (third_choice) - { // third_choice is not nullptr, safe to derefence + { // third_choice is not nullptr, safe to dereference + if (enc_dif > lcd_encoder_diff && yes != 0) { + // Rotating knob counter clockwise + yes = yes - 1; + } else if (enc_dif < lcd_encoder_diff && yes != 2) { + // Rotating knob clockwise + yes = yes + 1; + } lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); } else { + if (enc_dif > lcd_encoder_diff && yes != 0) { + // Rotating knob counter clockwise + yes = 0; + } else if (enc_dif < lcd_encoder_diff && yes != 1) { + // Rotating knob clockwise + yes = 1; + } lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); } enc_dif = lcd_encoder_diff; @@ -3309,7 +3316,7 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool } if (msg_next == NULL) { if (third_choice) - { // third_choice is not nullptr, safe to derefence + { // third_choice is not nullptr, safe to dereference lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); } else { lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index fb60ea61a..e4406eac3 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -75,7 +75,7 @@ extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, bool default_yes = false); // 0: no, 1: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); -extern int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, +extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7, uint8_t third_col = 13); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); // Ask the user to move the Z axis up to the end stoppers and let From e6a3fa5e40e3308b881702d9090e63d9c07384e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 8 May 2022 12:00:58 +0000 Subject: [PATCH 071/319] Remove unused includes after I moved the MMU error screen --- Firmware/mmu2.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ca22c2f8b..f490f9cd6 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -1,7 +1,5 @@ #include "mmu2.h" #include "mmu2_error_converter.h" -#include "mmu2/error_codes.h" -#include "mmu2/errors_list.h" #include "mmu2_fsensor.h" #include "mmu2_log.h" #include "mmu2_power.h" From 8dbb88397103add72166a73501ad307dc75de553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 11 May 2022 20:53:29 +0000 Subject: [PATCH 072/319] Add helper macros to parse nibbles Also made the button operations and nibbles constant since they should not be modified. --- Firmware/mmu2/errors_list.h | 6 ++++-- Firmware/mmu2_reporting.cpp | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 244597ef8..682037b1b 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -243,8 +243,6 @@ static const char * const errorDescs[] PROGMEM = { descRUNTIME_ERROR, }; -#define BUTTON_OP_HIGH_NIBBLE_MSK 0xF0 -#define BUTTON_OP_LOW_NIBBLE_MSK 0x0F /// Will be mapped onto dialog button responses in the FW /// Those responses have their unique+translated texts as well @@ -285,6 +283,10 @@ static const char * const btnOperation[] PROGMEM = { btnDisableMMU }; +// Helper macros to parse the operations from Btns() +#define BUTTON_OP_HI_NIBBLE(X) ( ( X & 0xF0 ) >> 4 ) +#define BUTTON_OP_LO_NIBBLE(X) ( X & 0x0F ) + // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. // Since one of the buttons is always "More", we can skip that one. // Therefore we need just 1 byte to describe the necessary buttons for each screen. diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 6d87ba8a5..fb2ee7b01 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -32,9 +32,9 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { // Read and determine what operations should be shown on the menu // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* - uint8_t button_operation = reinterpret_cast(const_cast(pgm_read_ptr(&errorButtons[ei]))); - uint8_t button_high_nibble = (button_operation & BUTTON_OP_HIGH_NIBBLE_MSK) >> 4; - uint8_t button_low_nibble = button_operation & BUTTON_OP_LOW_NIBBLE_MSK; + const uint8_t button_operation = reinterpret_cast(const_cast(pgm_read_ptr(&errorButtons[ei]))); + const uint8_t button_high_nibble = BUTTON_OP_HI_NIBBLE(button_operation); + const uint8_t button_low_nibble = BUTTON_OP_LO_NIBBLE(button_operation); // Check if the menu should have three or two choices if (button_low_nibble == (uint8_t)ButtonOperations::NoOperation) From 37bfd8ecd1bd2ec47ea958949ed67bd154c62e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 13 May 2022 06:29:51 +0000 Subject: [PATCH 073/319] Checkpoint - combined lcd_show_three_choices_prompt_P and lcd_show_two_choices_prompt_P into one function called lcd_show_choices_prompt_P - Removed third_col parameter - Added an enum to make the button selection result more readable --- Firmware/mmu2_reporting.cpp | 9 +++-- Firmware/ultralcd.cpp | 71 +++++++++++++++---------------------- Firmware/ultralcd.h | 9 ++++- 3 files changed, 41 insertions(+), 48 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index fb2ee7b01..721eb7e04 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -67,12 +67,11 @@ back_to_choices: two_choices ? nullptr : btnMore, two_choices ? 10 // If two choices, allow the first choice to have more characters - : 7, - 13 + : 7 ); - if ((two_choices && choice_selected == 1) // Two choices and middle button selected - || (!two_choices && choice_selected == 2)) // Three choices and right most button selected + if ((two_choices && choice_selected == MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected + || (!two_choices && choice_selected == RIGHT_BUTTON_CHOICE)) // Three choices and right most button selected { // 'More' show error description lcd_show_fullscreen_message_and_wait_P( @@ -81,7 +80,7 @@ back_to_choices: // Return back to the choice menu goto back_to_choices; - } else if(choice_selected == 1) { + } else if(choice_selected == MIDDLE_BUTTON_CHOICE) { // TODO: User selected middle choice, not sure what to do. // At the moment just return to the status screen switch (button_high_nibble) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f2daf00f3..3ac1eb954 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3196,30 +3196,29 @@ int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allo return lcd_show_multiscreen_message_with_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), nullptr, 10); } //! @brief Show a two-choice prompt on the last line of the LCD -//! @param first_selected Show first choice as selected if true, the second otherwise +//! @param selected Show first choice as selected if true, the second otherwise //! @param first_choice text caption of first possible choice //! @param second_choice text caption of second possible choice -void lcd_show_two_choices_prompt_P(uint8_t first_selected, const char *first_choice, const char *second_choice, uint8_t second_col) +//! @param second_col column on LCD where second choice is rendered. If third choice is set, this value is hardcoded to 7 +//! @param third_choice text caption of third, optional, choice. +void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr) { lcd_set_cursor(0, 3); - lcd_print(first_selected == 0 ? '>': ' '); + lcd_print(selected == LEFT_BUTTON_CHOICE ? '>': ' '); lcd_puts_P(first_choice); - lcd_set_cursor(second_col, 3); - lcd_print(first_selected == 1 ? '>': ' '); - lcd_puts_P(second_choice); -} - -void lcd_show_three_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col, uint8_t third_col) -{ - lcd_set_cursor(0, 3); - lcd_print(selected == 0 ? '>': ' '); - lcd_puts_P(first_choice); - lcd_set_cursor(second_col, 3); - lcd_print(selected == 1 ? '>': ' '); - lcd_puts_P(second_choice); - lcd_set_cursor(third_col, 3); - lcd_print(selected == 2 ? '>': ' '); - lcd_puts_P(third_choice); + if (third_choice) + { + lcd_set_cursor(7, 3); + lcd_print(selected == MIDDLE_BUTTON_CHOICE ? '>': ' '); + lcd_puts_P(second_choice); + lcd_set_cursor(13, 3); + lcd_print(selected == RIGHT_BUTTON_CHOICE ? '>': ' '); + lcd_puts_P(third_choice); + } else { + lcd_set_cursor(second_col, 3); + lcd_print(selected == MIDDLE_BUTTON_CHOICE ? '>': ' '); + lcd_puts_P(second_choice); + } } //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout @@ -3230,27 +3229,21 @@ void lcd_show_three_choices_prompt_P(uint8_t selected, const char *first_choice, //! @param second_choice text caption of second possible choice. Must be in PROGMEM //! @param third_choice text caption of second possible choice. Must be in PROGMEM. When not set to nullptr first_choice and second_choice may not be more than 5 characters long. //! @param second_col column on LCD where second_choice starts -//! @param third_col column on LCD where second_choice starts //! @retval 0 first choice selected by user //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user //! @retval -1 screen timed out (only possible if allow_timeouting is true) int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_first, - const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col, uint8_t third_col) + const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; bool multi_screen = msg_next != NULL; lcd_set_custom_characters_nextpage(); // Initial status/prompt on single-screen messages - uint8_t yes = default_first ? 1 : 0; + uint8_t yes = default_first ? MIDDLE_BUTTON_CHOICE : LEFT_BUTTON_CHOICE; if (!msg_next) { - if (third_choice) - { // third_choice is not nullptr, safe to dereference - lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); - } else { - lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); - } + lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); } // Wait for user confirmation or a timeout. unsigned long previous_millis_cmd = _millis(); @@ -3271,24 +3264,23 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo if (msg_next == NULL) { if (third_choice) { // third_choice is not nullptr, safe to dereference - if (enc_dif > lcd_encoder_diff && yes != 0) { + if (enc_dif > lcd_encoder_diff && yes != LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise yes = yes - 1; - } else if (enc_dif < lcd_encoder_diff && yes != 2) { + } else if (enc_dif < lcd_encoder_diff && yes != RIGHT_BUTTON_CHOICE) { // Rotating knob clockwise yes = yes + 1; } - lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); } else { - if (enc_dif > lcd_encoder_diff && yes != 0) { + if (enc_dif > lcd_encoder_diff && yes != LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise - yes = 0; - } else if (enc_dif < lcd_encoder_diff && yes != 1) { + yes = LEFT_BUTTON_CHOICE; + } else if (enc_dif < lcd_encoder_diff && yes != MIDDLE_BUTTON_CHOICE) { // Rotating knob clockwise - yes = 1; + yes = MIDDLE_BUTTON_CHOICE; } - lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); } + lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); enc_dif = lcd_encoder_diff; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } @@ -3315,12 +3307,7 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo msg_next = lcd_display_message_fullscreen_P(msg_next); } if (msg_next == NULL) { - if (third_choice) - { // third_choice is not nullptr, safe to dereference - lcd_show_three_choices_prompt_P(yes, first_choice, second_choice, third_choice, second_col, third_col); - } else { - lcd_show_two_choices_prompt_P(yes, first_choice, second_choice, second_col); - } + lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); } } } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index e4406eac3..a5c9a8a86 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -64,6 +64,13 @@ void lcd_crash_detect_enable(); void lcd_crash_detect_disable(); #endif +enum ButtonChoice +{ + LEFT_BUTTON_CHOICE = 0, + MIDDLE_BUTTON_CHOICE = 1, + RIGHT_BUTTON_CHOICE = 2, +}; + extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); extern const char* lcd_display_message_fullscreen_P(const char *msg); @@ -76,7 +83,7 @@ extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, bool defaul // 0: no, 1: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, - const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7, uint8_t third_col = 13); + const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 031c5888023ba4f77c073acafde89a976cca0350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 13 May 2022 18:45:04 +0000 Subject: [PATCH 074/319] Make all choice menus return consistent values Such that left = 0, middle = 1, and right = 2 --- Firmware/Marlin_main.cpp | 34 +++++++++++++++------------- Firmware/ultralcd.cpp | 49 ++++++++++++++++++---------------------- Firmware/ultralcd.h | 4 ++-- 3 files changed, 42 insertions(+), 45 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 969f015af..4f5749c28 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -648,12 +648,11 @@ void crashdet_detected(uint8_t mask) lcd_puts_P(_T(MSG_RESUME_PRINT)); lcd_putc('?'); bool yesno = lcd_show_yes_no_and_wait(false); - lcd_update_enable(true); - if (yesno) + if (yesno == LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("CRASH_RECOVER")); } - else + else // MIDDLE_BUTTON_CHOICE { enquecommand_P(PSTR("CRASH_CANCEL")); } @@ -1583,7 +1582,7 @@ void setup() #ifdef UVLO_SUPPORT if (eeprom_read_byte((uint8_t*)EEPROM_UVLO) != 0) { //previous print was terminated by UVLO /* - if (lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false)) recover_print(); + if (!lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false)) recover_print(); else { eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); lcd_update_enable(true); @@ -1605,8 +1604,9 @@ void setup() #ifdef DEBUG_UVLO_AUTOMATIC_RECOVER puts_P(_N("Normal recovery!")); #endif - if ( lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false) ) recover_print(0); - else { + if ( lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false) == LEFT_BUTTON_CHOICE) { + recover_print(0); + } else { eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); lcd_update_enable(true); lcd_update(2); @@ -3289,9 +3289,11 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); - if(result) lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); + if(result == LEFT_BUTTON_CHOICE) { + lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); + } #endif //STEEL_SHEET - lcd_show_fullscreen_message_and_wait_P(_T(MSG_PAPER)); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_PAPER)); KEEPALIVE_STATE(IN_HANDLER); lcd_display_message_fullscreen_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1)); lcd_puts_at_P(0,3,_n("1/4")); @@ -3585,13 +3587,13 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float KEEPALIVE_STATE(PAUSED_FOR_USER); lcd_change_fil_state = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, true); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 - if (lcd_change_fil_state == 0) { - lcd_clear(); - lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); - current_position[X_AXIS] -= 100; - plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED); - st_synchronize(); - lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually."));////MSG_CHECK_IDLER c=20 r=5 + if (lcd_change_fil_state == MIDDLE_BUTTON_CHOICE) { + lcd_clear(); + lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); + current_position[X_AXIS] -= 100; + plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED); + st_synchronize(); + lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually.")); ////MSG_CHECK_IDLER c=20 r=5 } } @@ -4918,7 +4920,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); - if (result) + if (result == LEFT_BUTTON_CHOICE) { current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; plan_buffer_line_curposXYZE(3000 / 60); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3ac1eb954..75fae476a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2300,7 +2300,7 @@ void show_preheat_nozzle_warning() void lcd_load_filament_color_check() { bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); - while (!clean) { + while (clean == MIDDLE_BUTTON_CHOICE) { lcd_update_enable(true); lcd_update(2); load_filament_final_feed(); @@ -3188,8 +3188,8 @@ lcd_wait_for_click_delay(0); //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting if true, allows time outing of the screen //! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected -//! @retval 1 yes choice selected by user -//! @retval 0 no choice selected by user +//! @retval 0 yes choice selected by user +//! @retval 1 no choice selected by user //! @retval -1 screen timed out int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) //currently just max. n*4 + 3 lines supported (set in language header files) { @@ -3315,8 +3315,8 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo //! @brief Display and wait for a Yes/No choice using the last line of the LCD //! @param allow_timeouting if true, allows time outing of the screen //! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected -//! @retval 1 yes choice selected by user -//! @retval 0 no choice selected by user +//! @retval 0 yes choice selected by user +//! @retval 1 no choice selected by user //! @retval -1 screen timed out int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, bool default_yes) { @@ -3327,8 +3327,8 @@ int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, bool default_yes) //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting if true, allows time outing of the screen //! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected -//! @retval 1 yes choice selected by user -//! @retval 0 no choice selected by user +//! @retval 0 yes choice selected by user +//! @retval 1 no choice selected by user //! @retval -1 screen timed out //! @relates lcd_show_yes_no_and_wait int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) @@ -3658,7 +3658,7 @@ void menu_setlang(unsigned char lang) { if (!lang_select(lang)) { - if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, true))////MSG_COPY_SEL_LANG c=20 r=3 + if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, true) == LEFT_BUTTON_CHOICE)////MSG_COPY_SEL_LANG c=20 r=3 lang_boot_update_start(lang); lcd_update_enable(true); lcd_clear(); @@ -3851,7 +3851,7 @@ void lcd_v2_calibration() } else { - loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, true); + loaded = !lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, true); lcd_update_enabled = true; } @@ -3881,7 +3881,7 @@ void lcd_v2_calibration() void lcd_wizard() { bool result = true; if (calibration_status() != CALIBRATION_STATUS_ASSEMBLED) { - result = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Running Wizard will delete current calibration results and start from the beginning. Continue?"), false, false);////MSG_WIZARD_RERUN c=20 r=7 + result = !lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Running Wizard will delete current calibration results and start from the beginning. Continue?"), false, false);////MSG_WIZARD_RERUN c=20 r=7 } if (result) { calibration_status_store(CALIBRATION_STATUS_ASSEMBLED); @@ -4044,10 +4044,10 @@ void lcd_wizard(WizState state) state = S::Restore; } else { wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_WIZARD_WELCOME), false, true); - if (wizard_event) { + if (wizard_event == LEFT_BUTTON_CHOICE) { state = S::Restore; eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); - } else { + } else { // MIDDLE_BUTTON_CHOICE eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); end = true; } @@ -4083,7 +4083,9 @@ void lcd_wizard(WizState state) lcd_show_fullscreen_message_and_wait_P(_i("Now remove the test print from steel sheet."));////MSG_REMOVE_TEST_PRINT c=20 r=4 lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8 wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); - if (!wizard_event) lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); + if (wizard_event == MIDDLE_BUTTON_CHOICE) { + lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); + } wizard_event = gcode_M45(true, 0); if (wizard_event) { //current filament needs to be unloaded and then new filament should be loaded @@ -4104,16 +4106,10 @@ void lcd_wizard(WizState state) //start to preheat nozzle and bed to save some time later setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); setTargetBed(PLA_PREHEAT_HPB_TEMP); - if (MMU2::mmu2.Enabled()) - { - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true); - } else - { - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true); - } - if (wizard_event) state = S::Lay1CalCold; - else - { + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true); + if (wizard_event == LEFT_BUTTON_CHOICE) { + state = S::Lay1CalCold; + } else { // MIDDLE_BUTTON_CHOICE if(MMU2::mmu2.Enabled()) state = S::LoadFilCold; else state = S::Preheat; } @@ -4144,7 +4140,7 @@ void lcd_wizard(WizState state) break; case S::RepeatLay1Cal: wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Do you want to repeat last step to readjust distance between nozzle and heatbed?"), false);////MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 - if (wizard_event) + if (wizard_event == LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_i("Please clean heatbed and then press the knob."));////MSG_WIZARD_CLEAN_HEATBED c=20 r=8 state = S::Lay1CalCold; @@ -5099,7 +5095,7 @@ char reset_menu() { static void lcd_disable_farm_mode() { int8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true, false); //allow timeouting, default no - if (disable) + if (disable == LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("G99")); lcd_return_to_status(); @@ -7461,8 +7457,7 @@ static void menu_action_sdfile(const char* filename) //filename is just a pointer to card.filename, which changes everytime you try to open a file by filename. So you can't use filename directly //to open a file. Instead, the cached filename in cmd is used as that one is static for the whole lifetime of this function. if (!check_file(cmd + 4)) { - result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=3 - lcd_update_enable(true); + result = !lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=3 } if (result) { enquecommand(cmd); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index a5c9a8a86..6f7675b3c 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -78,9 +78,9 @@ extern void lcd_return_to_status(); extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); -// 0: no, 1: yes, -1: timeouted +// 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, bool default_yes = false); -// 0: no, 1: yes, -1: timeouted +// 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7); From 6e1cf7e98cb53ef978832c00c596ec52a9a36b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 13 May 2022 18:50:06 +0000 Subject: [PATCH 075/319] Fixup --- Firmware/ultralcd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 6f7675b3c..9b083880f 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -66,7 +66,7 @@ void lcd_crash_detect_disable(); enum ButtonChoice { - LEFT_BUTTON_CHOICE = 0, + LEFT_BUTTON_CHOICE = 0, MIDDLE_BUTTON_CHOICE = 1, RIGHT_BUTTON_CHOICE = 2, }; From c28354bf92fd4efb56cf956fc08bb00ce9588829 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 13 May 2022 09:09:33 +0200 Subject: [PATCH 076/319] Update error codes + constexpr FindErrorIndex Beware - requires avr-gcc 7.3! --- Firmware/mmu2/error_codes.h | 7 + Firmware/mmu2/errors_list.h | 371 ++++++++++++++++-------------- Firmware/mmu2_error_converter.cpp | 95 +++++--- 3 files changed, 262 insertions(+), 211 deletions(-) diff --git a/Firmware/mmu2/error_codes.h b/Firmware/mmu2/error_codes.h index 1b495898c..019b08950 100644 --- a/Firmware/mmu2/error_codes.h +++ b/Firmware/mmu2/error_codes.h @@ -38,6 +38,13 @@ enum class ErrorCode : uint_fast16_t { HOMING_SELECTOR_FAILED = HOMING_FAILED | TMC_SELECTOR_BIT, ///< E32903 the Selector was unable to home properly - that means something is blocking its movement HOMING_IDLER_FAILED = HOMING_FAILED | TMC_IDLER_BIT, ///< E33031 the Idler was unable to home properly - that means something is blocking its movement STALLED_PULLEY = HOMING_FAILED | TMC_PULLEY_BIT, ///< E32839 for the Pulley "homing" means just stallguard detected during Pulley's operation (Pulley doesn't home) + + FINDA_VS_EEPROM_DISREPANCY = 0x8008, ///< E32776 FINDA is pressed but we have no such record in EEPROM - this can only happen at the start of the MMU and can be resolved by issuing an Unload command + + MOVE_FAILED = 0x8009, ///< generic move failed error - always reported with the corresponding axis bit set (Idler or Selector) as follows: + MOVE_SELECTOR_FAILED = MOVE_FAILED | TMC_SELECTOR_BIT, ///< E32905 the Selector was unable to move to desired position properly - that means something is blocking its movement, e.g. a piece of filament got out of pulley body + MOVE_IDLER_FAILED = MOVE_FAILED | TMC_IDLER_BIT, ///< E33033 the Idler was unable to move - unused at the time of creation, but added for completeness + MOVE_PULLEY_FAILED = MOVE_FAILED | TMC_PULLEY_BIT, ///< E32841 the Pulley was unable to move - unused at the time of creation, but added for completeness QUEUE_FULL = 0x802b, ///< E32811 internal logic error - attempt to move with a full queue diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 682037b1b..4f1665a6b 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -14,41 +14,42 @@ typedef enum : uint16_t { ERR_MECHANICAL = 100, ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, - ERR_MECHANICAL_FINDA_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, - ERR_MECHANICAL_FSENSOR_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, - ERR_MECHANICAL_PULLEY_STALLED = 105, + ERR_MECHANICAL_PULLEY_CANNOT_MOVE = 105, ERR_MECHANICAL_SELECTOR_CANNOT_HOME = 115, + ERR_MECHANICAL_SELECTOR_CANNOT_MOVE = 116, ERR_MECHANICAL_IDLER_CANNOT_HOME = 125, - + ERR_MECHANICAL_IDLER_CANNOT_MOVE = 126, ERR_TEMPERATURE = 200, - ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_WARN = 201, - ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_WARN = 211, - ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_WARN = 221, + ERR_TEMPERATURE_PULLEY_WARNING_TMC_TOO_HOT = 201, + ERR_TEMPERATURE_SELECTOR_WARNING_TMC_TOO_HOT = 211, + ERR_TEMPERATURE_IDLER_WARNING_TMC_TOO_HOT = 221, - ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_ERROR = 202, - ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_ERROR = 212, - ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_ERROR = 222, + ERR_TEMPERATURE_PULLEY_TMC_OVERHEAT_ERROR = 202, + ERR_TEMPERATURE_SELECTOR_TMC_OVERHEAT_ERROR = 212, + ERR_TEMPERATURE_IDLER_TMC_OVERHEAT_ERROR = 222, ERR_ELECTRICAL = 300, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_ERROR = 301, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_ERROR = 311, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_ERROR = 321, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_ERROR = 301, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_ERROR = 311, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_ERROR = 321, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_RESET = 302, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_RESET = 312, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_RESET = 322, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_RESET = 302, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_RESET = 312, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_RESET = 322, - ERR_ELECTRICAL_TMC_PULLEY_UNDERVOLTAGE_ERROR = 303, - ERR_ELECTRICAL_TMC_SELECTOR_UNDERVOLTAGE_ERROR = 313, - ERR_ELECTRICAL_TMC_IDLER_UNDERVOLTAGE_ERROR = 323, + ERR_ELECTRICAL_PULLEY_TMC_UNDERVOLTAGE_ERROR = 303, + ERR_ELECTRICAL_SELECTOR_TMC_UNDERVOLTAGE_ERROR = 313, + ERR_ELECTRICAL_IDLER_TMC_UNDERVOLTAGE_ERROR = 323, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_SHORTED = 304, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_SHORTED = 314, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_SHORTED = 324, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_SHORTED = 304, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_SHORTED = 314, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_SHORTED = 324, ERR_CONNECT = 400, @@ -60,8 +61,9 @@ typedef enum : uint16_t { ERR_SYSTEM_FILAMENT_ALREADY_LOADED = 501, ERR_SYSTEM_INVALID_TOOL = 502, ERR_SYSTEM_QUEUE_FULL = 503, - ERR_SYSTEM_VERSION_MISMATCH = 504, - ERR_SYSTEM_RUNTIME_ERROR = 505, + ERR_SYSTEM_FW_UPDATE_NEEDED = 504, + ERR_SYSTEM_FW_RUNTIME_ERROR = 505, + ERR_SYSTEM_UNLOAD_MANUALLY = 506, ERR_OTHER = 900 } err_num_t; @@ -72,175 +74,190 @@ typedef enum : uint16_t { // it really makes no difference if there are "nice" data structures or plain arrays. static const uint16_t errorCodes[] PROGMEM = { ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, - ERR_MECHANICAL_FINDA_DIDNT_SWITCH_OFF, + ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, - ERR_MECHANICAL_FSENSOR_DIDNT_SWITCH_OFF, - ERR_MECHANICAL_PULLEY_STALLED, + ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, + ERR_MECHANICAL_PULLEY_CANNOT_MOVE, ERR_MECHANICAL_SELECTOR_CANNOT_HOME, + ERR_MECHANICAL_SELECTOR_CANNOT_MOVE, ERR_MECHANICAL_IDLER_CANNOT_HOME, - ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_WARN, - ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_WARN, - ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_WARN, - ERR_TEMPERATURE_TMC_PULLEY_OVER_TEMPERATURE_ERROR, - ERR_TEMPERATURE_TMC_SELECTOR_OVER_TEMPERATURE_ERROR, - ERR_TEMPERATURE_TMC_IDLER_OVER_TEMPERATURE_ERROR, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_ERROR, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_ERROR, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_ERROR, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_RESET, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_RESET, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_RESET, - ERR_ELECTRICAL_TMC_PULLEY_UNDERVOLTAGE_ERROR, - ERR_ELECTRICAL_TMC_SELECTOR_UNDERVOLTAGE_ERROR, - ERR_ELECTRICAL_TMC_IDLER_UNDERVOLTAGE_ERROR, - ERR_ELECTRICAL_TMC_PULLEY_DRIVER_SHORTED, - ERR_ELECTRICAL_TMC_SELECTOR_DRIVER_SHORTED, - ERR_ELECTRICAL_TMC_IDLER_DRIVER_SHORTED, + ERR_MECHANICAL_IDLER_CANNOT_MOVE, + ERR_TEMPERATURE_PULLEY_WARNING_TMC_TOO_HOT, + ERR_TEMPERATURE_SELECTOR_WARNING_TMC_TOO_HOT, + ERR_TEMPERATURE_IDLER_WARNING_TMC_TOO_HOT, + ERR_TEMPERATURE_PULLEY_TMC_OVERHEAT_ERROR, + ERR_TEMPERATURE_SELECTOR_TMC_OVERHEAT_ERROR, + ERR_TEMPERATURE_IDLER_TMC_OVERHEAT_ERROR, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_ERROR, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_ERROR, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_ERROR, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_RESET, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_RESET, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_RESET, + ERR_ELECTRICAL_PULLEY_TMC_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_SELECTOR_TMC_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_IDLER_TMC_UNDERVOLTAGE_ERROR, + ERR_ELECTRICAL_PULLEY_TMC_DRIVER_SHORTED, + ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_SHORTED, + ERR_ELECTRICAL_IDLER_TMC_DRIVER_SHORTED, ERR_CONNECT_MMU_NOT_RESPONDING, ERR_CONNECT_COMMUNICATION_ERROR, ERR_SYSTEM_FILAMENT_ALREADY_LOADED, ERR_SYSTEM_INVALID_TOOL, ERR_SYSTEM_QUEUE_FULL, - ERR_SYSTEM_VERSION_MISMATCH, - ERR_SYSTEM_RUNTIME_ERROR, + ERR_SYSTEM_FW_UPDATE_NEEDED, + ERR_SYSTEM_FW_UPDATE_NEEDED, + ERR_SYSTEM_UNLOAD_MANUALLY }; // @@TODO some of the strings are duplicates, can be merged into one -static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA NOT ON"); -static const char titleFINDA_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FINDA NOT OFF"); -static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR NOT ON"); -static const char titleFSENSOR_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FSENSOR NOT OFF"); -static const char titlePULLEY_STALLED[] PROGMEM_I1 = ISTR("PULLEY STALLED"); -static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CAN'T HOME"); +static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); +static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA DIDNT GO OFF"); +static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); +static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR DIDNT GO OFF"); +static const char titlePULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); +static const char titleSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); +static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); +static const char titleIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); static const char titleIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); -static const char titleTMC_PULLEY_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); -static const char titleTMC_SELECTOR_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); -static const char titleTMC_IDLER_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC TOO HOT"); -static const char titleTMC_PULLEY_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleTMC_SELECTOR_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleTMC_IDLER_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleTMC_PULLEY_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleTMC_SELECTOR_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleTMC_IDLER_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleTMC_PULLEY_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleTMC_SELECTOR_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleTMC_IDLER_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleTMC_PULLEY_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); -static const char titleTMC_SELECTOR_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); -static const char titleTMC_IDLER_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLT ERROR"); -static const char titleTMC_PULLEY_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char titleTMC_SELECTOR_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char titleTMC_IDLER_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titlePULLEY_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +static const char titleSELECTOR_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +static const char titleIDLER_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +static const char titlePULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titlePULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titlePULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titlePULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +static const char titleSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +static const char titleIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +static const char titlePULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); static const char titleMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); static const char titleCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); -static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("ALREADY LOADED"); +static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); static const char titleINVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); static const char titleQUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); -static const char titleVERSION_MISMATCH[] PROGMEM_I1 = ISTR("FW VERSION MISMATCH"); -static const char titleRUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); +static const char titleFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("FW UPDATE NEEDED"); +static const char titleFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); +static const char titleUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); static const char * const errorTitles [] PROGMEM = { titleFINDA_DIDNT_TRIGGER, - titleFINDA_DIDNT_SWITCH_OFF, + titleFINDA_DIDNT_GO_OFF, titleFSENSOR_DIDNT_TRIGGER, - titleFSENSOR_DIDNT_SWITCH_OFF, - titlePULLEY_STALLED, + titleFSENSOR_DIDNT_GO_OFF, + titlePULLEY_CANNOT_MOVE, titleSELECTOR_CANNOT_HOME, + titleSELECTOR_CANNOT_MOVE, titleIDLER_CANNOT_HOME, - titleTMC_PULLEY_OVER_TEMPERATURE_WARN, - titleTMC_SELECTOR_OVER_TEMPERATURE_WARN, - titleTMC_IDLER_OVER_TEMPERATURE_WARN, - titleTMC_PULLEY_OVER_TEMPERATURE_ERROR, - titleTMC_SELECTOR_OVER_TEMPERATURE_ERROR, - titleTMC_IDLER_OVER_TEMPERATURE_ERROR, - titleTMC_PULLEY_DRIVER_ERROR, - titleTMC_SELECTOR_DRIVER_ERROR, - titleTMC_IDLER_DRIVER_ERROR, - titleTMC_PULLEY_DRIVER_RESET, - titleTMC_SELECTOR_DRIVER_RESET, - titleTMC_IDLER_DRIVER_RESET, - titleTMC_PULLEY_UNDERVOLTAGE_ERROR, - titleTMC_SELECTOR_UNDERVOLTAGE_ERROR, - titleTMC_IDLER_UNDERVOLTAGE_ERROR, - titleTMC_PULLEY_DRIVER_SHORTED, - titleTMC_SELECTOR_DRIVER_SHORTED, - titleTMC_IDLER_DRIVER_SHORTED, + titleIDLER_CANNOT_MOVE, + titlePULLEY_TMC_WARNING_TMC_TOO_HOT, + titleSELECTOR_TMC_WARNING_TMC_TOO_HOT, + titleIDLER_TMC_WARNING_TMC_TOO_HOT, + titlePULLEY_TMC_OVERHEAT_ERROR, + titleSELECTOR_TMC_OVERHEAT_ERROR, + titleIDLER_TMC_OVERHEAT_ERROR, + titlePULLEY_TMC_DRIVER_ERROR, + titleSELECTOR_TMC_DRIVER_ERROR, + titleIDLER_TMC_DRIVER_ERROR, + titlePULLEY_TMC_DRIVER_RESET, + titleSELECTOR_TMC_DRIVER_RESET, + titleIDLER_TMC_DRIVER_RESET, + titlePULLEY_TMC_UNDERVOLTAGE_ERROR, + titleSELECTOR_TMC_UNDERVOLTAGE_ERROR, + titleIDLER_TMC_UNDERVOLTAGE_ERROR, + titlePULLEY_TMC_DRIVER_SHORTED, + titleSELECTOR_TMC_DRIVER_SHORTED, + titleIDLER_TMC_DRIVER_SHORTED, titleMMU_NOT_RESPONDING, titleCOMMUNICATION_ERROR, titleFILAMENT_ALREADY_LOADED, titleINVALID_TOOL, titleQUEUE_FULL, - titleVERSION_MISMATCH, - titleRUNTIME_ERROR, + titleFW_UPDATE_NEEDED, + titleFW_RUNTIME_ERROR, + titleUNLOAD_MANUALLY }; // @@TODO looking at the texts, they can be composed of several parts and/or parametrized (could save a lot of space ;) ) -static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading filament. Ensure that the steel FINDA ball can move freely and check the wiring."); -static const char descFINDA_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading the filament manually and ensure steel FINDA ball can move freely."); -static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Check that the filament reached the fsensor and check the wiring."); -static const char descFSENSOR_DIDNT_SWITCH_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading the filament. The filament is probably stuck near the sensor or the sensor is malfunctioning."); -static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley stalled - check for anything blocking the filament from being pushed/pulled to/from the extruder."); +static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading filament. Ensure filament can move and FINDA works."); +static const char descFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); +static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading filament. Ensure filament reached the fsensor and the sensor works."); +static const char descFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); +static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley motor stalled - Ensure the pulley can move and check the wiring."); static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly - check for anything blocking its movement."); -static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly - check for anything blocking its movement."); -static const char descTMC_PULLEY_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); -static const char descTMC_SELECTOR_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); -static const char descTMC_IDLER_OVER_TEMPERATURE_WARN[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheated. Make sure there is sufficient airflow near the MMU board."); -static const char descTMC_PULLEY_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and restart MMU."); -static const char descTMC_SELECTOR_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and restart MMU."); -static const char descTMC_IDLER_OVER_TEMPERATURE_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and restart MMU."); -static const char descTMC_PULLEY_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try restarting the MMU. If the issue persist contact the support."); -static const char descTMC_SELECTOR_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try restarting the MMU. If the issue persist contact the support."); -static const char descTMC_IDLER_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try restarting the MMU. If the issue persist contact the support."); -static const char descTMC_PULLEY_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_SELECTOR_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_IDLER_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_PULLEY_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_SELECTOR_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_IDLER_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descTMC_PULLEY_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persist contact the support."); -static const char descTMC_SELECTOR_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persist contact the support."); -static const char descTMC_IDLER_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persist contact the support."); -static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persist contact the support."); -static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persist contact the support."); +static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move - check for anything blocking its movement. Check the wiring is correct."); +static const char descIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot home properly - check for anything blocking its movement."); +static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot move properly - check for anything blocking its movement. Check the wiring is correct."); +static const char descPULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +static const char descSELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +static const char descIDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +static const char descPULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and reset MMU."); +static const char descSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and reset MMU."); +static const char descIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and reset MMU."); +static const char descPULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try resetting the MMU. If the issue persists contact support."); +static const char descSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try resetting the MMU. If the issue persists contact support."); +static const char descIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try resetting the MMU. If the issue persists contact support."); +static const char descPULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descPULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +static const char descPULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); +static const char descSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); +static const char descIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); +static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists contact support."); +static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists contact support."); static const char descFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); -static const char descINVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code file for possible issue."); -static const char descQUEUE_FULL[] PROGMEM_I1 = ISTR("Internal runtime error of the firmware, please restart the MMU."); -static const char descVERSION_MISMATCH[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); -static const char descRUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try restarting the MMU unit or updating the firmware. If the issue persist contact the support."); +static const char descINVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); +static const char descQUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); +static const char descFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); +static const char descFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists contact support."); +static const char descUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); static const char * const errorDescs[] PROGMEM = { descFINDA_DIDNT_TRIGGER, - descFINDA_DIDNT_SWITCH_OFF, + descFINDA_DIDNT_GO_OFF, descFSENSOR_DIDNT_TRIGGER, - descFSENSOR_DIDNT_SWITCH_OFF, + descFSENSOR_DIDNT_GO_OFF, descPULLEY_STALLED, descSELECTOR_CANNOT_HOME, + descSELECTOR_CANNOT_MOVE, descIDLER_CANNOT_HOME, - descTMC_PULLEY_OVER_TEMPERATURE_WARN, - descTMC_SELECTOR_OVER_TEMPERATURE_WARN, - descTMC_IDLER_OVER_TEMPERATURE_WARN, - descTMC_PULLEY_OVER_TEMPERATURE_ERROR, - descTMC_SELECTOR_OVER_TEMPERATURE_ERROR, - descTMC_IDLER_OVER_TEMPERATURE_ERROR, - descTMC_PULLEY_DRIVER_ERROR, - descTMC_SELECTOR_DRIVER_ERROR, - descTMC_IDLER_DRIVER_ERROR, - descTMC_PULLEY_DRIVER_RESET, - descTMC_SELECTOR_DRIVER_RESET, - descTMC_IDLER_DRIVER_RESET, - descTMC_PULLEY_UNDERVOLTAGE_ERROR, - descTMC_SELECTOR_UNDERVOLTAGE_ERROR, - descTMC_IDLER_UNDERVOLTAGE_ERROR, - descTMC_PULLEY_DRIVER_SHORTED, - descTMC_SELECTOR_DRIVER_SHORTED, - descTMC_IDLER_DRIVER_SHORTED, + descIDLER_CANNOT_MOVE, + descPULLEY_WARNING_TMC_TOO_HOT, + descSELECTOR_WARNING_TMC_TOO_HOT, + descIDLER_WARNING_TMC_TOO_HOT, + descPULLEY_TMC_OVERHEAT_ERROR, + descSELECTOR_TMC_OVERHEAT_ERROR, + descIDLER_TMC_OVERHEAT_ERROR, + descPULLEY_TMC_DRIVER_ERROR, + descSELECTOR_TMC_DRIVER_ERROR, + descIDLER_TMC_DRIVER_ERROR, + descPULLEY_TMC_DRIVER_RESET, + descSELECTOR_TMC_DRIVER_RESET, + descIDLER_TMC_DRIVER_RESET, + descPULLEY_TMC_UNDERVOLTAGE_ERROR, + descSELECTOR_TMC_UNDERVOLTAGE_ERROR, + descIDLER_TMC_UNDERVOLTAGE_ERROR, + descPULLEY_TMC_DRIVER_SHORTED, + descSELECTOR_TMC_DRIVER_SHORTED, + descIDLER_TMC_DRIVER_SHORTED, descMMU_NOT_RESPONDING, descCOMMUNICATION_ERROR, descFILAMENT_ALREADY_LOADED, descINVALID_TOOL, descQUEUE_FULL, - descVERSION_MISMATCH, - descRUNTIME_ERROR, + descFW_UPDATE_NEEDED, + descFW_RUNTIME_ERROR, + descUNLOAD_MANUALLY }; @@ -264,7 +281,6 @@ enum class ButtonOperations : uint8_t { // Therefore at least some of the buttons, which can occur on the screen together, need to be 5-chars long max @@TODO. // @@TODO beware - this doesn't correspond to the HW MMU buttons - needs to be discussed static const char btnRetry[] PROGMEM_I1 = ISTR("Retry"); -static const char btnSlowLoad[] PROGMEM_I1 = ISTR("Slow"); static const char btnContinue[] PROGMEM_I1 = ISTR("Done"); static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); static const char btnUnload[] PROGMEM_I1 = ISTR("Unload"); @@ -295,42 +311,45 @@ uint8_t constexpr Btns(ButtonOperations b0, ButtonOperations b1){ } static const uint8_t errorButtons[] PROGMEM = { - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), - Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), - Btns(ButtonOperations::NoOperation, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), Btns(ButtonOperations::Unload, ButtonOperations::Continue), Btns(ButtonOperations::StopPrint, ButtonOperations::RestartMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), Btns(ButtonOperations::NoOperation, ButtonOperations::DisableMMU), - Btns(ButtonOperations::NoOperation, ButtonOperations::RestartMMU), + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), }; } // namespace MMU2 diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 08b1853e8..ee98765c0 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -6,39 +6,64 @@ namespace MMU2 { -// @@TODO ideally compute the numbers by using some constexpr function, but since -// the current avg-gcc doesn't support cycles in constexpr functions, it is hard to achieve. -// So for now this has been hand-crafted. +// we don't have a constexpr find_if in C++17/STL yet +template +constexpr InputIt find_if_cx(InputIt first, InputIt last, UnaryPredicate p) { + for (; first != last; ++first) { + if (p(*first)) { + return first; + } + } + return last; +} + +// Making a constexpr FindError should instruct the compiler to optimize the ConvertMMUErrorCode +// in such a way that no searching will ever be done at runtime. +// A call to FindError then compiles to a single instruction even on the AVR. +static constexpr uint16_t FindErrorIndex(uint32_t pec) { + constexpr uint32_t errorCodesSize = sizeof(errorCodes) / sizeof(errorCodes[0]); + constexpr auto errorCodesEnd = errorCodes + errorCodesSize; + auto i = find_if_cx(errorCodes, errorCodesEnd, [pec](uint16_t ed) -> bool { + return ed == pec; + }); + return i != errorCodesEnd ? *i : errorCodes[errorCodesSize - 1]; +} + const uint16_t MMUErrorCodeIndex(uint16_t ec) { switch (ec) { case (uint16_t)ErrorCode::FINDA_DIDNT_SWITCH_ON: - return 0; + return FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_TRIGGER); case (uint16_t)ErrorCode::FINDA_DIDNT_SWITCH_OFF: - return 1; + return FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_GO_OFF); case (uint16_t)ErrorCode::FSENSOR_DIDNT_SWITCH_ON: - return 2; + return FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER); case (uint16_t)ErrorCode::FSENSOR_DIDNT_SWITCH_OFF: - return 3; + return FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF); case (uint16_t)ErrorCode::STALLED_PULLEY: - return 4; + case (uint16_t)ErrorCode::MOVE_PULLEY_FAILED: + return FindErrorIndex(ERR_MECHANICAL_PULLEY_CANNOT_MOVE); case (uint16_t)ErrorCode::HOMING_SELECTOR_FAILED: - return 5; + return FindErrorIndex(ERR_MECHANICAL_SELECTOR_CANNOT_HOME); + case (uint16_t)ErrorCode::MOVE_SELECTOR_FAILED: + return FindErrorIndex(ERR_MECHANICAL_SELECTOR_CANNOT_MOVE); case (uint16_t)ErrorCode::HOMING_IDLER_FAILED: - return 6; + return FindErrorIndex(ERR_MECHANICAL_IDLER_CANNOT_HOME); case (uint16_t)ErrorCode::MMU_NOT_RESPONDING: - return 25; + return FindErrorIndex(ERR_MECHANICAL_IDLER_CANNOT_MOVE); case (uint16_t)ErrorCode::PROTOCOL_ERROR: - return 26; + return FindErrorIndex(ERR_CONNECT_COMMUNICATION_ERROR); case (uint16_t)ErrorCode::FILAMENT_ALREADY_LOADED: - return 27; + return FindErrorIndex(ERR_SYSTEM_FILAMENT_ALREADY_LOADED); case (uint16_t)ErrorCode::INVALID_TOOL: - return 28; + return FindErrorIndex(ERR_SYSTEM_INVALID_TOOL); case (uint16_t)ErrorCode::QUEUE_FULL: - return 29; + return FindErrorIndex(ERR_SYSTEM_QUEUE_FULL); case (uint16_t)ErrorCode::VERSION_MISMATCH: - return 30; + return FindErrorIndex(ERR_SYSTEM_FW_UPDATE_NEEDED); case (uint16_t)ErrorCode::INTERNAL: - return 31; + return FindErrorIndex(ERR_SYSTEM_FW_RUNTIME_ERROR); + case (uint16_t)ErrorCode::FINDA_VS_EEPROM_DISREPANCY: + return FindErrorIndex(ERR_SYSTEM_UNLOAD_MANUALLY); } // // TMC-related errors - multiple of these can occur at once @@ -46,43 +71,43 @@ const uint16_t MMUErrorCodeIndex(uint16_t ec) { // // By carefully ordering the checks here we can prioritize the errors being reported to the user. if (ec & (uint16_t)ErrorCode::TMC_PULLEY_BIT) { if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) - return 13; + return FindErrorIndex(ERR_ELECTRICAL_PULLEY_TMC_DRIVER_ERROR); if (ec & (uint16_t)ErrorCode::TMC_RESET) - return 16; + return FindErrorIndex(ERR_ELECTRICAL_PULLEY_TMC_DRIVER_RESET); if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) - return 19; + return FindErrorIndex(ERR_ELECTRICAL_PULLEY_TMC_UNDERVOLTAGE_ERROR); if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) - return 22; + return FindErrorIndex(ERR_ELECTRICAL_PULLEY_TMC_DRIVER_SHORTED); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) - return 7; + return FindErrorIndex(ERR_TEMPERATURE_PULLEY_WARNING_TMC_TOO_HOT); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) - return 10; + return FindErrorIndex(ERR_TEMPERATURE_PULLEY_TMC_OVERHEAT_ERROR); } else if (ec & (uint16_t)ErrorCode::TMC_SELECTOR_BIT) { if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) - return 14; + return FindErrorIndex(ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_ERROR); if (ec & (uint16_t)ErrorCode::TMC_RESET) - return 17; + return FindErrorIndex(ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_RESET); if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) - return 20; + return FindErrorIndex(ERR_ELECTRICAL_SELECTOR_TMC_UNDERVOLTAGE_ERROR); if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) - return 23; + return FindErrorIndex(ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_SHORTED); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) - return 8; + return FindErrorIndex(ERR_TEMPERATURE_SELECTOR_WARNING_TMC_TOO_HOT); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) - return 11; + return FindErrorIndex(ERR_TEMPERATURE_SELECTOR_TMC_OVERHEAT_ERROR); } else if (ec & (uint16_t)ErrorCode::TMC_IDLER_BIT) { if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) - return 15; + return FindErrorIndex(ERR_ELECTRICAL_IDLER_TMC_DRIVER_ERROR); if (ec & (uint16_t)ErrorCode::TMC_RESET) - return 18; + return FindErrorIndex(ERR_ELECTRICAL_IDLER_TMC_DRIVER_RESET); if (ec & (uint16_t)ErrorCode::TMC_UNDERVOLTAGE_ON_CHARGE_PUMP) - return 21; + return FindErrorIndex(ERR_ELECTRICAL_IDLER_TMC_UNDERVOLTAGE_ERROR); if (ec & (uint16_t)ErrorCode::TMC_SHORT_TO_GROUND) - return 24; + return FindErrorIndex(ERR_ELECTRICAL_IDLER_TMC_DRIVER_SHORTED); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_WARN) - return 9; + return FindErrorIndex(ERR_TEMPERATURE_IDLER_WARNING_TMC_TOO_HOT); if (ec & (uint16_t)ErrorCode::TMC_OVER_TEMPERATURE_ERROR) - return 12; + return FindErrorIndex(ERR_TEMPERATURE_IDLER_TMC_OVERHEAT_ERROR); } // // if nothing got caught, return a generic error From c1ec80817c75de631aaf412ffb2b6eb983ed38b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 13 May 2022 19:18:32 +0000 Subject: [PATCH 077/319] Update the error menu after merging new changes Will test this tomorrow --- Firmware/mmu2/errors_list.h | 12 +++++------- Firmware/mmu2_reporting.cpp | 13 +++---------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 4f1665a6b..e68652dba 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -266,12 +266,11 @@ static const char * const errorDescs[] PROGMEM = { enum class ButtonOperations : uint8_t { NoOperation = 0, Retry = 1, - SlowLoad = 2, - Continue = 3, - RestartMMU = 4, - Unload = 5, - StopPrint = 6, - DisableMMU = 7, + Continue = 2, + RestartMMU = 3, + Unload = 4, + StopPrint = 5, + DisableMMU = 6, }; // we have max 3 buttons/operations to select from @@ -291,7 +290,6 @@ static const char btnMore[] PROGMEM_I1 = ISTR("More\x01"); // Used to parse the buttons from Btns(). static const char * const btnOperation[] PROGMEM = { btnRetry, - btnSlowLoad, btnContinue, btnRestartMMU, btnUnload, diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 721eb7e04..db5e62cf0 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -37,7 +37,7 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { const uint8_t button_low_nibble = BUTTON_OP_LO_NIBBLE(button_operation); // Check if the menu should have three or two choices - if (button_low_nibble == (uint8_t)ButtonOperations::NoOperation) + if (button_high_nibble == (uint8_t)ButtonOperations::NoOperation) { // Two operations not specified, the error menu should only show two choices two_choices = true; @@ -58,9 +58,7 @@ back_to_choices: NULL, // NULL, since title screen is not in PROGMEM false, false, - two_choices ? - static_cast(pgm_read_ptr(&btnOperation[button_high_nibble - 1])) - : static_cast(pgm_read_ptr(&btnOperation[button_low_nibble - 1])), + static_cast(pgm_read_ptr(&btnOperation[button_low_nibble - 1])), two_choices ? btnMore : static_cast(pgm_read_ptr(&btnOperation[button_high_nibble - 1])), @@ -86,7 +84,6 @@ back_to_choices: switch (button_high_nibble) { case (uint8_t)ButtonOperations::Retry: - case (uint8_t)ButtonOperations::SlowLoad: case (uint8_t)ButtonOperations::Continue: case (uint8_t)ButtonOperations::RestartMMU: case (uint8_t)ButtonOperations::Unload: @@ -100,13 +97,9 @@ back_to_choices: } else { // TODO: User selected the left most choice, not sure what to do. // At the moment just return to the status screen - switch ( two_choices ? - button_high_nibble - : button_low_nibble - ) + switch (button_low_nibble) { case (uint8_t)ButtonOperations::Retry: - case (uint8_t)ButtonOperations::SlowLoad: case (uint8_t)ButtonOperations::Continue: case (uint8_t)ButtonOperations::RestartMMU: case (uint8_t)ButtonOperations::Unload: From 89e2bc4d6ba8cabbc8c00cf60e2fae73b640615c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 14 May 2022 10:41:52 +0000 Subject: [PATCH 078/319] Change name of variable 'yes' to be more descriptive --- Firmware/ultralcd.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 75fae476a..9d177a72c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3241,9 +3241,9 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo lcd_set_custom_characters_nextpage(); // Initial status/prompt on single-screen messages - uint8_t yes = default_first ? MIDDLE_BUTTON_CHOICE : LEFT_BUTTON_CHOICE; + uint8_t current_selection = default_first ? MIDDLE_BUTTON_CHOICE : LEFT_BUTTON_CHOICE; if (!msg_next) { - lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); } // Wait for user confirmation or a timeout. unsigned long previous_millis_cmd = _millis(); @@ -3264,23 +3264,23 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo if (msg_next == NULL) { if (third_choice) { // third_choice is not nullptr, safe to dereference - if (enc_dif > lcd_encoder_diff && yes != LEFT_BUTTON_CHOICE) { + if (enc_dif > lcd_encoder_diff && current_selection != LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise - yes = yes - 1; - } else if (enc_dif < lcd_encoder_diff && yes != RIGHT_BUTTON_CHOICE) { + current_selection--; + } else if (enc_dif < lcd_encoder_diff && current_selection != RIGHT_BUTTON_CHOICE) { // Rotating knob clockwise - yes = yes + 1; + current_selection++; } } else { - if (enc_dif > lcd_encoder_diff && yes != LEFT_BUTTON_CHOICE) { + if (enc_dif > lcd_encoder_diff && current_selection != LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise - yes = LEFT_BUTTON_CHOICE; - } else if (enc_dif < lcd_encoder_diff && yes != MIDDLE_BUTTON_CHOICE) { + current_selection = LEFT_BUTTON_CHOICE; + } else if (enc_dif < lcd_encoder_diff && current_selection != MIDDLE_BUTTON_CHOICE) { // Rotating knob clockwise - yes = MIDDLE_BUTTON_CHOICE; + current_selection = MIDDLE_BUTTON_CHOICE; } } - lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); enc_dif = lcd_encoder_diff; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } @@ -3295,7 +3295,7 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo KEEPALIVE_STATE(IN_HANDLER); lcd_set_custom_characters(); lcd_update_enable(true); - return yes; + return current_selection; } else break; } @@ -3307,7 +3307,7 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo msg_next = lcd_display_message_fullscreen_P(msg_next); } if (msg_next == NULL) { - lcd_show_choices_prompt_P(yes, first_choice, second_choice, second_col, third_choice); + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); } } } From 138a0d21c717bb9d8730a39f0a3bf32fb4c68828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 14 May 2022 10:57:40 +0000 Subject: [PATCH 079/319] Change default selection parameter from bool to uint8_t This allows us make any of the three button choices the default selection --- Firmware/mmu2_reporting.cpp | 2 +- Firmware/ultralcd.cpp | 24 ++++++++++++------------ Firmware/ultralcd.h | 8 ++++---- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index db5e62cf0..d3b8523c6 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -57,7 +57,7 @@ back_to_choices: choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( NULL, // NULL, since title screen is not in PROGMEM false, - false, + two_choices ? LEFT_BUTTON_CHOICE : MIDDLE_BUTTON_CHOICE, static_cast(pgm_read_ptr(&btnOperation[button_low_nibble - 1])), two_choices ? btnMore diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9d177a72c..f46fee31a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3187,13 +3187,13 @@ lcd_wait_for_click_delay(0); //! @brief Show multiple screen message with yes and no possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting if true, allows time outing of the screen -//! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected +//! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user //! @retval -1 screen timed out -int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) //currently just max. n*4 + 3 lines supported (set in language header files) +int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) //currently just max. n*4 + 3 lines supported (set in language header files) { - return lcd_show_multiscreen_message_with_choices_and_wait_P(msg, allow_timeouting, default_yes, _T(MSG_YES), _T(MSG_NO), nullptr, 10); + return lcd_show_multiscreen_message_with_choices_and_wait_P(msg, allow_timeouting, default_selection, _T(MSG_YES), _T(MSG_NO), nullptr, 10); } //! @brief Show a two-choice prompt on the last line of the LCD //! @param selected Show first choice as selected if true, the second otherwise @@ -3224,7 +3224,7 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting bool, if true, allows time outing of the screen -//! @param default_first uint8_t, Control which choice is selected first. 0: left most, 1: middle, 2: right most choice. The first choice is selected by default +//! @param default_selection uint8_t, Control which choice is selected first. 0: left most, 1: middle, 2: right most choice. The left most choice is selected by default //! @param first_choice text caption of first possible choice. Must be in PROGMEM //! @param second_choice text caption of second possible choice. Must be in PROGMEM //! @param third_choice text caption of second possible choice. Must be in PROGMEM. When not set to nullptr first_choice and second_choice may not be more than 5 characters long. @@ -3233,7 +3233,7 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user //! @retval -1 screen timed out (only possible if allow_timeouting is true) -int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_first, +int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection, const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; @@ -3241,7 +3241,7 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo lcd_set_custom_characters_nextpage(); // Initial status/prompt on single-screen messages - uint8_t current_selection = default_first ? MIDDLE_BUTTON_CHOICE : LEFT_BUTTON_CHOICE; + uint8_t current_selection = default_selection; if (!msg_next) { lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); } @@ -3314,26 +3314,26 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, boo //! @brief Display and wait for a Yes/No choice using the last line of the LCD //! @param allow_timeouting if true, allows time outing of the screen -//! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected +//! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user //! @retval -1 screen timed out -int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, bool default_yes) +int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, uint8_t default_selection) { - return lcd_show_multiscreen_message_yes_no_and_wait_P(NULL, allow_timeouting, default_yes); + return lcd_show_multiscreen_message_yes_no_and_wait_P(NULL, allow_timeouting, default_selection); } //! @brief Show single screen message with yes and no possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting if true, allows time outing of the screen -//! @param default_yes if true, yes choice is selected by default, otherwise no choice is preselected +//! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user //! @retval -1 screen timed out //! @relates lcd_show_yes_no_and_wait -int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) +int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) { - return lcd_show_multiscreen_message_yes_no_and_wait_P(msg, allow_timeouting, default_yes); + return lcd_show_multiscreen_message_yes_no_and_wait_P(msg, allow_timeouting, default_selection); } void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 9b083880f..59819bfd9 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -79,12 +79,12 @@ extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); // 1: no, 0: yes, -1: timeouted -extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, bool default_yes = false); +extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); // 1: no, 0: yes, -1: timeouted -extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); -extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes, +extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); +extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection, const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7); -extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); +extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 68b007c759407e2946431a7569cf800eefb751e9 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Sat, 14 May 2022 15:39:43 +0200 Subject: [PATCH 080/319] Fix compile-time conversion MMU2 ErrorCode -> Prusa-Error-Code and hide some of the implementation details into mmu2_error_converter.cpp which makes the code in mmu_reporting.cpp much easier to read. --- Firmware/mmu2.cpp | 16 +-------- Firmware/mmu2/buttons.h | 22 ++++++++++++ Firmware/mmu2/errors_list.h | 25 ++++--------- Firmware/mmu2_error_converter.cpp | 58 +++++++++++++++++++------------ Firmware/mmu2_error_converter.h | 32 +++++++++++++++-- Firmware/mmu2_reporting.cpp | 28 ++++++--------- Firmware/ultralcd.cpp | 4 +-- Firmware/ultralcd.h | 4 +-- 8 files changed, 110 insertions(+), 79 deletions(-) create mode 100644 Firmware/mmu2/buttons.h diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index f490f9cd6..3feda5bd6 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -607,22 +607,8 @@ void MMU2::ReportError(ErrorCode ec) { if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; - - // Log error format: MMU2:E=32766 ErrorTitle TextDescription - - // The longest error description in errors_list.h is 144 bytes. - // and the longest error title is 20 bytes. msg buffer needs - // to have enough space to fit both. - char msg[192]; - int len = snprintf(msg, sizeof(msg), "MMU2:E=%hu ", (uint16_t)ec); - // Append a human readable form of the error code(s) - TranslateErr((uint16_t)ec, &msg[len], 192 - len); - - // beware - the prefix in the message ("MMU2") will get stripped by the logging subsystem - // and a correct MMU2 component will be assigned accordingly - see appmain.cpp - // Therefore I'm not calling MMU2_ERROR_MSG or MMU2_ECHO_MSG here SERIAL_ECHO_START; - SERIAL_ECHOLN(msg); + SERIAL_ECHOLNRPGM( PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec)) ); } static_assert(mmu2Magic[0] == 'M' diff --git a/Firmware/mmu2/buttons.h b/Firmware/mmu2/buttons.h new file mode 100644 index 000000000..68673971b --- /dev/null +++ b/Firmware/mmu2/buttons.h @@ -0,0 +1,22 @@ +#pragma once +#include + +// Helper macros to parse the operations from Btns() +#define BUTTON_OP_HI_NIBBLE(X) ( ( X & 0xF0 ) >> 4 ) +#define BUTTON_OP_LO_NIBBLE(X) ( X & 0x0F ) + +namespace MMU2 { + +/// Will be mapped onto dialog button responses in the FW +/// Those responses have their unique+translated texts as well +enum class ButtonOperations : uint8_t { + NoOperation = 0, + Retry = 1, + Continue = 2, + RestartMMU = 3, + Unload = 4, + StopPrint = 5, + DisableMMU = 6, +}; + +} // namespace MMU2 diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index e68652dba..081ddc017 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -1,9 +1,11 @@ // Extracted from Prusa-Error-Codes repo // Subject to automation and optimization +// BEWARE - this file shall be included only into mmu2_error_converter.cpp, not anywhere else! #pragma once #include "inttypes.h" #include "../language.h" #include +#include "buttons.h" namespace MMU2 { @@ -72,7 +74,7 @@ typedef enum : uint16_t { // and inadvertedly falls back to copying the whole structure into RAM (which is obviously unwanted). // But since this file ought to be generated in the future from yaml prescription, // it really makes no difference if there are "nice" data structures or plain arrays. -static const uint16_t errorCodes[] PROGMEM = { +static const constexpr uint16_t errorCodes[] PROGMEM = { ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, @@ -260,19 +262,6 @@ static const char * const errorDescs[] PROGMEM = { descUNLOAD_MANUALLY }; - -/// Will be mapped onto dialog button responses in the FW -/// Those responses have their unique+translated texts as well -enum class ButtonOperations : uint8_t { - NoOperation = 0, - Retry = 1, - Continue = 2, - RestartMMU = 3, - Unload = 4, - StopPrint = 5, - DisableMMU = 6, -}; - // we have max 3 buttons/operations to select from // one of them is "More" to show the explanation text normally hidden in the next screens. // 01234567890123456789 @@ -297,10 +286,6 @@ static const char * const btnOperation[] PROGMEM = { btnDisableMMU }; -// Helper macros to parse the operations from Btns() -#define BUTTON_OP_HI_NIBBLE(X) ( ( X & 0xF0 ) >> 4 ) -#define BUTTON_OP_LO_NIBBLE(X) ( X & 0x0F ) - // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. // Since one of the buttons is always "More", we can skip that one. // Therefore we need just 1 byte to describe the necessary buttons for each screen. @@ -350,4 +335,8 @@ static const uint8_t errorButtons[] PROGMEM = { Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), }; +static_assert( sizeof(errorCodes) / sizeof(errorCodes[0]) == sizeof(errorDescs) / sizeof (errorDescs[0])); +static_assert( sizeof(errorCodes) / sizeof(errorCodes[0]) == sizeof(errorTitles) / sizeof (errorTitles[0])); +static_assert( sizeof(errorCodes) / sizeof(errorCodes[0]) == sizeof(errorButtons) / sizeof (errorButtons[0])); + } // namespace MMU2 diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index ee98765c0..6514430ad 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -20,16 +20,17 @@ constexpr InputIt find_if_cx(InputIt first, InputIt last, UnaryPredicate p) { // Making a constexpr FindError should instruct the compiler to optimize the ConvertMMUErrorCode // in such a way that no searching will ever be done at runtime. // A call to FindError then compiles to a single instruction even on the AVR. -static constexpr uint16_t FindErrorIndex(uint32_t pec) { - constexpr uint32_t errorCodesSize = sizeof(errorCodes) / sizeof(errorCodes[0]); - constexpr auto errorCodesEnd = errorCodes + errorCodesSize; - auto i = find_if_cx(errorCodes, errorCodesEnd, [pec](uint16_t ed) -> bool { - return ed == pec; - }); - return i != errorCodesEnd ? *i : errorCodes[errorCodesSize - 1]; +static constexpr uint8_t FindErrorIndex(uint16_t pec) { + constexpr uint16_t errorCodesSize = sizeof(errorCodes) / sizeof(errorCodes[0]); + constexpr const auto *errorCodesEnd = errorCodes + errorCodesSize; + const auto *i = find_if_cx(errorCodes, errorCodesEnd, [pec](uint16_t ed){ return ed == pec; }); + return (i != errorCodesEnd) ? (i-errorCodes) : (errorCodesSize - 1); } -const uint16_t MMUErrorCodeIndex(uint16_t ec) { +// check that the searching algoritm works +static_assert( FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_TRIGGER) == 0); + +uint8_t PrusaErrorCodeIndex(uint16_t ec) { switch (ec) { case (uint16_t)ErrorCode::FINDA_DIDNT_SWITCH_ON: return FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_TRIGGER); @@ -66,9 +67,9 @@ const uint16_t MMUErrorCodeIndex(uint16_t ec) { return FindErrorIndex(ERR_SYSTEM_UNLOAD_MANUALLY); } -// // TMC-related errors - multiple of these can occur at once -// // - in such a case we report the first which gets found/converted into Prusa-Error-Codes (usually the fact, that one TMC has an issue is serious enough) -// // By carefully ordering the checks here we can prioritize the errors being reported to the user. + // TMC-related errors - multiple of these can occur at once + // - in such a case we report the first which gets found/converted into Prusa-Error-Codes (usually the fact, that one TMC has an issue is serious enough) + // By carefully ordering the checks here we can prioritize the errors being reported to the user. if (ec & (uint16_t)ErrorCode::TMC_PULLEY_BIT) { if (ec & (uint16_t)ErrorCode::TMC_IOIN_MISMATCH) return FindErrorIndex(ERR_ELECTRICAL_PULLEY_TMC_DRIVER_ERROR); @@ -110,19 +111,32 @@ const uint16_t MMUErrorCodeIndex(uint16_t ec) { return FindErrorIndex(ERR_TEMPERATURE_IDLER_TMC_OVERHEAT_ERROR); } -// // if nothing got caught, return a generic error -// return FindError(ERR_OTHER); + // if nothing got caught, return a generic runtime error + return FindErrorIndex(ERR_SYSTEM_FW_RUNTIME_ERROR); } -void TranslateErr(uint16_t ec, char *dst, size_t dstSize) { - uint16_t ei = MMUErrorCodeIndex(ec); - // just to prevent the compiler from stripping the data structures from the final binary for now - *dst = errorButtons[ei]; - snprintf( - dst, dstSize, "%S %S", - static_cast(pgm_read_ptr(&errorTitles[ei])), - static_cast(pgm_read_ptr(&errorDescs[ei])) - ); +uint16_t PrusaErrorCode(uint8_t i){ + return pgm_read_word(errorCodes + i); +} + +const char * const PrusaErrorTitle(uint8_t i){ + return (const char * const)pgm_read_ptr(errorTitles + i); +} + +const char * const PrusaErrorDesc(uint8_t i){ + return (const char * const)pgm_read_ptr(errorDescs + i); +} + +uint8_t PrusaErrorButtons(uint8_t i){ + return pgm_read_byte(errorButtons + i); +} + +const char * const PrusaErrorButtonTitle(uint8_t bi){ + return (const char * const)pgm_read_ptr(btnOperation + bi); +} + +const char * const PrusaErrorButtonMore(){ + return btnMore; } } // namespace MMU2 diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h index 891fe0848..257b3e5d3 100644 --- a/Firmware/mmu2_error_converter.h +++ b/Firmware/mmu2_error_converter.h @@ -3,6 +3,32 @@ #include namespace MMU2 { -const uint16_t MMUErrorCodeIndex(uint16_t ec); -void TranslateErr(uint16_t ec, char *dst, size_t dstSize); -} + +/// Translates MMU2::ErrorCode into an index of Prusa-Error-Codes +/// Basically this is the way to obtain an index into all other functions in this API +uint8_t PrusaErrorCodeIndex(uint16_t ec); + +/// @returns pointer to a PROGMEM string representing the Title of the Prusa-Error-Codes error +/// @param i index of the error - obtained by calling ErrorCodeIndex +const char * const PrusaErrorTitle(uint8_t i); + +/// @returns pointer to a PROGMEM string representing the multi-page Description of the Prusa-Error-Codes error +/// @param i index of the error - obtained by calling ErrorCodeIndex +const char * const PrusaErrorDesc(uint8_t i); + +/// @returns the actual numerical value of the Prusa-Error-Codes error +/// @param i index of the error - obtained by calling ErrorCodeIndex +uint16_t PrusaErrorCode(uint8_t i); + +/// @returns Btns pair of buttons for a particular Prusa-Error-Codes error +/// @param i index of the error - obtained by calling ErrorCodeIndex +uint8_t PrusaErrorButtons(uint8_t i); + +/// @returns pointer to a PROGMEM string representing the Title of a button +/// @param i index of the error - obtained by calling PrusaErrorButtons + extracting low or high nibble from the Btns pair +const char * const PrusaErrorButtonTitle(uint8_t bi); + +/// @returns pointer to a PROGMEM string representing the "More" button +const char * const PrusaErrorButtonMore(); + +} // namespace MMU2 diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index d3b8523c6..119e0cb61 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -1,8 +1,9 @@ #include "mmu2_reporting.h" #include "mmu2_error_converter.h" #include "mmu2/error_codes.h" -#include "mmu2/errors_list.h" +#include "mmu2/buttons.h" #include "ultralcd.h" +#include "language.h" namespace MMU2 { @@ -26,13 +27,13 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { //! |prusa3d.com/ERR04504| <- URL 20 characters //! | | <- empty line //! |>Retry >Done >MoreW| <- buttons - const uint16_t ei = MMUErrorCodeIndex((uint16_t)ec); + const uint8_t ei = PrusaErrorCodeIndex(ec); uint8_t choice_selected = 0; bool two_choices = false; // Read and determine what operations should be shown on the menu // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* - const uint8_t button_operation = reinterpret_cast(const_cast(pgm_read_ptr(&errorButtons[ei]))); + const uint8_t button_operation = PrusaErrorButtons(ei); const uint8_t button_high_nibble = BUTTON_OP_HI_NIBBLE(button_operation); const uint8_t button_low_nibble = BUTTON_OP_LO_NIBBLE(button_operation); @@ -46,23 +47,18 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { back_to_choices: lcd_clear(); lcd_update_enable(false); - + // Print title and header - lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), - static_cast(pgm_read_ptr(&errorTitles[ei])), - reinterpret_cast(const_cast(pgm_read_ptr(&errorCodes[ei]))) - ); + lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); // Render the choices and store selection in 'choice_selected' choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( NULL, // NULL, since title screen is not in PROGMEM false, two_choices ? LEFT_BUTTON_CHOICE : MIDDLE_BUTTON_CHOICE, - static_cast(pgm_read_ptr(&btnOperation[button_low_nibble - 1])), - two_choices ? - btnMore - : static_cast(pgm_read_ptr(&btnOperation[button_high_nibble - 1])), - two_choices ? nullptr : btnMore, + _T(PrusaErrorButtonTitle(button_low_nibble - 1)), + _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_high_nibble - 1)), + two_choices ? nullptr : _T(PrusaErrorButtonMore()), two_choices ? 10 // If two choices, allow the first choice to have more characters : 7 @@ -72,9 +68,7 @@ back_to_choices: || (!two_choices && choice_selected == RIGHT_BUTTON_CHOICE)) // Three choices and right most button selected { // 'More' show error description - lcd_show_fullscreen_message_and_wait_P( - static_cast(pgm_read_ptr(&errorDescs[ei])) - ); + lcd_show_fullscreen_message_and_wait_P(_T(PrusaErrorDesc(ei))); // Return back to the choice menu goto back_to_choices; @@ -115,7 +109,7 @@ back_to_choices: void ReportProgressHook(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::MMUProgress; - lcd_setstatuspgm( ProgressCodeToText(ec) ); + lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); } Buttons ButtonPressed(uint16_t ec) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f46fee31a..80df94763 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3233,8 +3233,8 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user //! @retval -1 screen timed out (only possible if allow_timeouting is true) -int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection, - const char *first_choice, const char *second_choice, const char *third_choice, uint8_t second_col) +int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, + const char * const first_choice, const char * const second_choice, const char * const third_choice, uint8_t second_col) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; bool multi_screen = msg_next != NULL; diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 59819bfd9..86d785217 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -82,8 +82,8 @@ extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); -extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection, - const char *first_choice, const char *second_choice, const char *third_choice = nullptr, uint8_t second_col = 7); +extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, + const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 108f439bb70ad39ed48cef59f8d27cdaedba0469 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Sat, 14 May 2022 16:08:31 +0200 Subject: [PATCH 081/319] Make sure the MMU error title never overflows on the LCD --- Firmware/mmu2_reporting.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 119e0cb61..c33e575d3 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -49,7 +49,7 @@ back_to_choices: lcd_update_enable(false); // Print title and header - lcd_printf_P(PSTR("%S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); + lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); // Render the choices and store selection in 'choice_selected' choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( From 87ed42ba9b7a6e6d957980ba350a8ede4b7e1b61 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Sat, 14 May 2022 17:45:15 +0200 Subject: [PATCH 082/319] Fix FW update needed button order --- Firmware/mmu2/errors_list.h | 2 +- Firmware/mmu2_error_converter.cpp | 6 +++++- Firmware/mmu2_reporting.cpp | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 081ddc017..2580f347f 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -330,7 +330,7 @@ static const uint8_t errorButtons[] PROGMEM = { Btns(ButtonOperations::Unload, ButtonOperations::Continue), Btns(ButtonOperations::StopPrint, ButtonOperations::RestartMMU), Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::NoOperation, ButtonOperations::DisableMMU), + Btns(ButtonOperations::DisableMMU, ButtonOperations::NoOperation), Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), }; diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 6514430ad..3485b8490 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -29,6 +29,9 @@ static constexpr uint8_t FindErrorIndex(uint16_t pec) { // check that the searching algoritm works static_assert( FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_TRIGGER) == 0); +static_assert( FindErrorIndex(ERR_MECHANICAL_FINDA_DIDNT_GO_OFF) == 1); +static_assert( FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER) == 2); +static_assert( FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF) == 3); uint8_t PrusaErrorCodeIndex(uint16_t ec) { switch (ec) { @@ -132,7 +135,8 @@ uint8_t PrusaErrorButtons(uint8_t i){ } const char * const PrusaErrorButtonTitle(uint8_t bi){ - return (const char * const)pgm_read_ptr(btnOperation + bi); + // -1 represents the hidden NoOperation button which is not drawn in any way + return (const char * const)pgm_read_ptr(btnOperation + bi - 1); } const char * const PrusaErrorButtonMore(){ diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index c33e575d3..ff2d01b3f 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -56,8 +56,8 @@ back_to_choices: NULL, // NULL, since title screen is not in PROGMEM false, two_choices ? LEFT_BUTTON_CHOICE : MIDDLE_BUTTON_CHOICE, - _T(PrusaErrorButtonTitle(button_low_nibble - 1)), - _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_high_nibble - 1)), + _T(PrusaErrorButtonTitle(button_low_nibble)), + _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_high_nibble)), two_choices ? nullptr : _T(PrusaErrorButtonMore()), two_choices ? 10 // If two choices, allow the first choice to have more characters From 50cd6e77ccf4cfc1e7292e259dea4fba6713065c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 14 May 2022 12:49:40 +0000 Subject: [PATCH 083/319] Initial commit for loading filament to the nozzle --- Firmware/mmu2.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 3feda5bd6..6807e8aa1 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -647,6 +647,8 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ loadFilamentStarted = true; break; case ProgressCode::FeedingToNozzle: + // prepare for the movement of the E-motor + st_synchronize(); // Nothing yet break; default: @@ -679,7 +681,7 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ } break; case ProgressCode::FeedingToNozzle: - // Nothing yet + execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); break; default: // do nothing yet From 450ce0fc6486829a95a5183b2a7593898b0bf331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 May 2022 12:02:45 +0000 Subject: [PATCH 084/319] Improve load to nozzle sequence - Fixed a bug where the feed rate was 60x higher than intended - Adjusted the sequence via trial and error. The sequence where the filament has not exited the nozzle is 35mm shorter than the previous implementation - I reduced the feed rate slightly (by 1mm/s) on the fast load sequence --- Firmware/mmu2.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 6807e8aa1..5df3a2c41 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -18,12 +18,6 @@ // Settings for filament load / unload from the LCD menu. // This is for Prusa MK3-style extruders. Customize for your hardware. #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 -#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 562 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } #define NOZZLE_PARK_XY_FEEDRATE 50 #define NOZZLE_PARK_Z_FEEDRATE 15 @@ -64,7 +58,10 @@ static constexpr E_Step ramming_sequence[] PROGMEM = { {-50.0F, 2000.0F / 60.F}, }; -static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE }; +static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { + { 36.0F, 810.0F / 60.F}, // feed rate = 13.5mm/s - Load fast until filament reach end of nozzle + { 30.0F, 198.0F / 60.F}, // feed rate = 3.3mm/s - Load slower once filament is out of the nozzle +}; namespace MMU2 { From 3e77f9f3a12642ab97edba0a15d579d8d3599cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 May 2022 12:06:16 +0000 Subject: [PATCH 085/319] Reduce grinding when loading to the fsensor - We need to take into account additional 35mm move by the MMU. - While the fsensor is not triggered, reduce the extruder movement each step from 20mm to 5mm. This should help reduce the variance in the filaments position before we run the final load to nozzle sequence. --- Firmware/mmu2.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 5df3a2c41..b7d2a306c 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -327,9 +327,9 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { return false; LoadingToNozzleRAII ln(*this); - + WaitForHotendTargetTempBeep(); - + { // used for MMU-menu operation "Load to Nozzle" ReportingRAII rep(CommandInProgress::ToolChange); @@ -338,11 +338,15 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { if( extruder != MMU2_NO_TOOL ){ // we already have some filament loaded - free it + shape its tip properly filament_ramming(); } - + logic.ToolChange(index); manage_response(false, false); // true, true); + // The MMU's idler is disengaged at this point + // That means the MK3/S now has fully control + // reset current position to whatever the planner thinks it is + st_synchronize(); plan_set_e_position(current_position[E_AXIS]); extruder = index; @@ -661,16 +665,20 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ switch ( WhereIsFilament() ) { case FilamentState::AT_FSENSOR: - // fsensor triggered, stop moving the extruder + // fsensor triggered, finish FeedingToBondtech state loadFilamentStarted = false; - // TODO: continue to ProgressCode::FeedingToNozzle? + // After the MMU knows the FSENSOR is triggered it will: + // 1. Push the filament by additional 30mm (see fsensorToNozzle) + // 2. Disengage the idler and push another 5mm. + current_position[E_AXIS] += 30.0f + 5.0f; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); break; case FilamentState::NOT_PRESENT: // fsensor not triggered, continue moving extruder - // TODO: Verify what's the best speed here? - current_position[E_AXIS] += MMU2_LOAD_TO_NOZZLE_FEED_RATE; + current_position[E_AXIS] += 5.0f; plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); - st_synchronize(); // Wait for the steps to be done, otherwise the moves will just add up + st_synchronize(); // Wait for the steps to be done so the moves don't pile up + break; default: // Abort here? break; From 1c25041134f93e4b59f0ea08b07f76c133f2ab56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 May 2022 12:09:17 +0000 Subject: [PATCH 086/319] Add the load to nozzle sequence once the MK3S takes control and MMU has disengaged idler. Also removed ProgressCode::FeedingToNozzle from switch-case since it is not used for this purpose at the moment. --- Firmware/mmu2.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index b7d2a306c..60147290c 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -348,7 +348,10 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { // reset current position to whatever the planner thinks it is st_synchronize(); plan_set_e_position(current_position[E_AXIS]); - + + // Finish loading to the nozzle with finely tuned steps. + execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); + extruder = index; SetActiveExtruder(0); @@ -647,11 +650,6 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ st_synchronize(); loadFilamentStarted = true; break; - case ProgressCode::FeedingToNozzle: - // prepare for the movement of the E-motor - st_synchronize(); - // Nothing yet - break; default: // do nothing yet break; @@ -685,9 +683,6 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ } } break; - case ProgressCode::FeedingToNozzle: - execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); - break; default: // do nothing yet break; From 0aa3a5855e1351ffe87f345c007b71e26a39c21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 May 2022 12:10:09 +0000 Subject: [PATCH 087/319] Add TODO to prompt user if extruder is extruding correct color --- Firmware/mmu2.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 60147290c..9dce6fe42 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -356,6 +356,10 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { SetActiveExtruder(0); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); + + // TODO: The LCD should prompt the user with a full-screen message + // to ask whether the extruder is extruding the correct color. + // This does not apply when the tool change is done via gcode. return true; } } From e817a2d321513c906e7c761cd2f26c6ebd550a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 May 2022 14:30:11 +0000 Subject: [PATCH 088/319] Don't block OnMMUProgressMsg while waiting for fsensor to trigger --- Firmware/mmu2.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 9dce6fe42..dc08a8ef3 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -677,9 +677,11 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ break; case FilamentState::NOT_PRESENT: // fsensor not triggered, continue moving extruder - current_position[E_AXIS] += 5.0f; - plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); - st_synchronize(); // Wait for the steps to be done so the moves don't pile up + if(!blocks_queued()) + { // Only plan a move if there is no move ongoing + current_position[E_AXIS] += 5.0f; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); + } break; default: // Abort here? From 3b0fba14ac9b9b85754b68b46078d2d2fa8bb12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 22 May 2022 10:51:46 +0000 Subject: [PATCH 089/319] Remove unused parameter nlines to simplify things This allows us to remove one overload of lcd_display_message_fullscreen_P --- Firmware/ultralcd.cpp | 19 +++++-------------- Firmware/ultralcd.h | 1 - 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 80df94763..363d5b532 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2312,9 +2312,8 @@ void lcd_load_filament_color_check() #ifdef FILAMENT_SENSOR static void lcd_menu_AutoLoadFilament() { - uint8_t nlines; - lcd_display_message_fullscreen_nonBlocking_P(_i("Autoloading filament is active, just press the knob and insert filament..."),nlines);////MSG_AUTOLOADING_ENABLED c=20 r=4 - menu_back_if_clicked(); + lcd_display_message_fullscreen_nonBlocking_P(_i("Autoloading filament is active, just press the knob and insert filament..."));////MSG_AUTOLOADING_ENABLED c=20 r=4 + menu_back_if_clicked(); } #endif //FILAMENT_SENSOR @@ -3038,10 +3037,9 @@ static inline bool pgm_is_interpunction(const char *c_addr) * * This function is non-blocking * @param msg message to be displayed from PROGMEM - * @param nlines * @return rest of the text (to be displayed on next page) */ -static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, uint8_t &nlines) +static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg) { lcd_set_cursor(0, 0); const char *msgend = msg; @@ -3090,22 +3088,15 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, lcd_print(LCD_STR_ARROW_2_DOWN[0]); } - nlines = row; return multi_screen ? msgend : NULL; } -const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines) +const char* lcd_display_message_fullscreen_P(const char *msg) { // Disable update of the screen by the usual lcd_update(0) routine. lcd_update_enable(false); lcd_clear(); -// uint8_t nlines; - return lcd_display_message_fullscreen_nonBlocking_P(msg, nlines); -} -const char* lcd_display_message_fullscreen_P(const char *msg) -{ - uint8_t nlines; - return lcd_display_message_fullscreen_P(msg, nlines); + return lcd_display_message_fullscreen_nonBlocking_P(msg); } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 86d785217..717e9950c 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -71,7 +71,6 @@ enum ButtonChoice RIGHT_BUTTON_CHOICE = 2, }; -extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); extern const char* lcd_display_message_fullscreen_P(const char *msg); extern void lcd_return_to_status(); From 452f39dc4b71a0a3d9f5bdeca5093addea214ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 22 May 2022 14:12:09 +0000 Subject: [PATCH 090/319] fixup --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 363d5b532..72db24ebe 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -95,7 +95,7 @@ static const char separator[] PROGMEM = "--------------------"; /** forward declarations **/ -static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, uint8_t &nlines); +static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg); // void copy_and_scalePID_i(); // void copy_and_scalePID_d(); From 1c26875e0e729ce6bc339f1e746c0a9f767e2096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Thu, 26 May 2022 09:42:25 +0000 Subject: [PATCH 091/319] PFW-1318 Implement callback to render status line To render the thermometer and degree symbols the CGRAM table will instead swap out the feedrate and clock symbol when lcd_set_custom_characters_nextpage() is called. --- Firmware/lcd.h | 4 ++-- Firmware/mmu2/errors_list.h | 2 +- Firmware/mmu2_reporting.cpp | 37 +++++++++++++++++++++++++++++++++++-- Firmware/ultralcd.cpp | 10 +++++++++- Firmware/ultralcd.h | 3 ++- 5 files changed, 49 insertions(+), 7 deletions(-) diff --git a/Firmware/lcd.h b/Firmware/lcd.h index 7331131ad..8ac643f58 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -165,14 +165,14 @@ extern void lcd_buttons_update(void); //Custom characters defined in the first 8 characters of the LCD #define LCD_STR_BEDTEMP "\x00" #define LCD_STR_DEGREE "\x01" -#define LCD_STR_ARROW_2_DOWN "\x01" #define LCD_STR_THERMOMETER "\x02" -#define LCD_STR_CONFIRM "\x02" #define LCD_STR_UPLEVEL "\x03" #define LCD_STR_REFRESH "\x04" #define LCD_STR_FOLDER "\x05" #define LCD_STR_FEEDRATE "\x06" +#define LCD_STR_ARROW_2_DOWN "\x06" #define LCD_STR_CLOCK "\x07" +#define LCD_STR_CONFIRM "\x07" #define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set #define LCD_STR_SOLID_BLOCK "\xFF" //from the default character set diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 2580f347f..1b4f32074 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -274,7 +274,7 @@ static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); static const char btnUnload[] PROGMEM_I1 = ISTR("Unload"); static const char btnStop[] PROGMEM_I1 = ISTR("Stop"); static const char btnDisableMMU[] PROGMEM_I1 = ISTR("Disable"); -static const char btnMore[] PROGMEM_I1 = ISTR("More\x01"); +static const char btnMore[] PROGMEM_I1 = ISTR("More\x06"); // Used to parse the buttons from Btns(). static const char * const btnOperation[] PROGMEM = { diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index ff2d01b3f..3b9ca0637 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -1,8 +1,10 @@ +#include "mmu2.h" #include "mmu2_reporting.h" #include "mmu2_error_converter.h" #include "mmu2/error_codes.h" #include "mmu2/buttons.h" #include "ultralcd.h" +#include "Filament_sensor.h" #include "language.h" namespace MMU2 { @@ -19,13 +21,39 @@ void EndReport(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::Status; } +// Callback which is called while the printer is +// waiting for the user to click a button option +static void ReportErrorHook_cb(void) +{ + //TODO: MK3S needs to request an update for the FINDA value + // if we want it to be updated live on the menu screen + lcd_set_cursor(3, 2); + lcd_printf_P(PSTR("%d"), mmu2.FindaDetectsFilament()); + + lcd_set_cursor(8, 2); + lcd_printf_P(PSTR("%d"), fsensor.getFilamentPresent()); + + lcd_set_cursor(11, 2); + lcd_print("?>?"); // This is temporary until below TODO is resolved + + // TODO, see lcdui_print_extruder(void) + //if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) + // lcd_printf_P(_N(" ?>%u"), tmp_extruder + 1); + //else + // lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, tmp_extruder + 1); + + // Print active extruder temperature + lcd_set_cursor(16, 2); + lcd_printf_P(PSTR("%d"), (int)(degHotend(0) + 0.5)); +} + void ReportErrorHook(CommandInProgress cip, uint16_t ec) { //! Show an error screen //! When an MMU error occurs, the LCD content will look like this: //! |01234567890123456789| //! |MMU FW update needed| <- title/header of the error: max 20 characters //! |prusa3d.com/ERR04504| <- URL 20 characters - //! | | <- empty line + //! |FI:1 FS:1 5>3 t201°| <- status line, t is thermometer symbol //! |>Retry >Done >MoreW| <- buttons const uint8_t ei = PrusaErrorCodeIndex(ec); uint8_t choice_selected = 0; @@ -51,6 +79,10 @@ back_to_choices: // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); + // Render static characters in third line + lcd_set_cursor(0, 2); + lcd_printf_P(PSTR("FI: FS: > %c %c"), LCD_STR_THERMOMETER[0], LCD_STR_DEGREE[0]); + // Render the choices and store selection in 'choice_selected' choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( NULL, // NULL, since title screen is not in PROGMEM @@ -61,7 +93,8 @@ back_to_choices: two_choices ? nullptr : _T(PrusaErrorButtonMore()), two_choices ? 10 // If two choices, allow the first choice to have more characters - : 7 + : 7, + ReportErrorHook_cb ); if ((two_choices && choice_selected == MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 72db24ebe..7d2e6f035 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3220,12 +3220,14 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @param second_choice text caption of second possible choice. Must be in PROGMEM //! @param third_choice text caption of second possible choice. Must be in PROGMEM. When not set to nullptr first_choice and second_choice may not be more than 5 characters long. //! @param second_col column on LCD where second_choice starts +//! @param multiscreen_cb an optional call back that will be called periodically when the printer is paused for user //! @retval 0 first choice selected by user //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user //! @retval -1 screen timed out (only possible if allow_timeouting is true) int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, - const char * const first_choice, const char * const second_choice, const char * const third_choice, uint8_t second_col) + const char * const first_choice, const char * const second_choice, const char * const third_choice, uint8_t second_col, + void (*multiscreen_cb)(void)) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; bool multi_screen = msg_next != NULL; @@ -3251,6 +3253,12 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m manage_heater(); manage_inactivity(true); + if (multiscreen_cb) + { + multiscreen_cb(); + } + + if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { if (msg_next == NULL) { if (third_choice) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 717e9950c..d097165c5 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -82,7 +82,8 @@ extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t def // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, - const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7); + const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7, + void (*multiscreen_cb)(void) = nullptr); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 45edc69cc4387d9a30467b352f2eef55d61c47fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 22 May 2022 09:39:42 +0000 Subject: [PATCH 092/319] Add back menu it confirm if extrusion has correct color after loading to nozzle via LCD I've added the call to this message via the menu function to ensure it only appears when interacting with the LCD --- Firmware/mmu2.cpp | 4 ---- Firmware/ultralcd.cpp | 9 +++++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index dc08a8ef3..56319cbd0 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -356,10 +356,6 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { SetActiveExtruder(0); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); - - // TODO: The LCD should prompt the user with a full-screen message - // to ask whether the extruder is extruding the correct color. - // This does not apply when the tool change is done via gcode. return true; } } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7d2e6f035..87f61dc4d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2301,8 +2301,6 @@ void lcd_load_filament_color_check() { bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); while (clean == MIDDLE_BUTTON_CHOICE) { - lcd_update_enable(true); - lcd_update(2); load_filament_final_feed(); st_synchronize(); clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); @@ -5125,6 +5123,13 @@ static void mmu_load_filament_menu() { static inline void lcd_mmu_load_to_nozzle_wrapper(uint8_t index){ MMU2::mmu2.load_filament_to_nozzle(index); + + // Ask user if the extruded color is correct: + lcd_return_to_status(); + lcd_update_enable(true); + lcd_load_filament_color_check(); + lcd_setstatuspgm(MSG_WELCOME); + custom_message_type = CustomMsg::Status; } static void mmu_load_to_nozzle_menu() { From f1803357b0ad6d2b5f6e9770fb0b100a9536e1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 22 May 2022 09:54:03 +0000 Subject: [PATCH 093/319] Fix default selection after changes in PFW-1312 The Yes and No are reverted. Before PFW-132 Yes is 1 and No is 0 Now they are Yes is 0, and No is 1 --- Firmware/Marlin_main.cpp | 6 +++--- Firmware/ultralcd.cpp | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4f5749c28..e53233ca0 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3288,7 +3288,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) { KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if(result == LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); } @@ -3586,7 +3586,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (!MMU2::mmu2.Enabled()) { KEEPALIVE_STATE(PAUSED_FOR_USER); lcd_change_fil_state = - lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, true); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 + lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 if (lcd_change_fil_state == MIDDLE_BUTTON_CHOICE) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); @@ -4918,7 +4918,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); break; } lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if (result == LEFT_BUTTON_CHOICE) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 87f61dc4d..13d9e4264 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2299,11 +2299,11 @@ void show_preheat_nozzle_warning() void lcd_load_filament_color_check() { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); + bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LEFT_BUTTON_CHOICE); while (clean == MIDDLE_BUTTON_CHOICE) { load_filament_final_feed(); st_synchronize(); - clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); + clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LEFT_BUTTON_CHOICE); } } @@ -3655,7 +3655,7 @@ void menu_setlang(unsigned char lang) { if (!lang_select(lang)) { - if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, true) == LEFT_BUTTON_CHOICE)////MSG_COPY_SEL_LANG c=20 r=3 + if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, LEFT_BUTTON_CHOICE) == LEFT_BUTTON_CHOICE)////MSG_COPY_SEL_LANG c=20 r=3 lang_boot_update_start(lang); lcd_update_enable(true); lcd_clear(); @@ -3848,7 +3848,7 @@ void lcd_v2_calibration() } else { - loaded = !lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, true); + loaded = !lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, LEFT_BUTTON_CHOICE); lcd_update_enabled = true; } @@ -3878,7 +3878,7 @@ void lcd_v2_calibration() void lcd_wizard() { bool result = true; if (calibration_status() != CALIBRATION_STATUS_ASSEMBLED) { - result = !lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Running Wizard will delete current calibration results and start from the beginning. Continue?"), false, false);////MSG_WIZARD_RERUN c=20 r=7 + result = !lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Running Wizard will delete current calibration results and start from the beginning. Continue?"), false);////MSG_WIZARD_RERUN c=20 r=7 } if (result) { calibration_status_store(CALIBRATION_STATUS_ASSEMBLED); @@ -4040,7 +4040,7 @@ void lcd_wizard(WizState state) lcd_show_fullscreen_message_and_wait_P(_T(MSG_WIZARD_WELCOME_SHIPPING)); state = S::Restore; } else { - wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_WIZARD_WELCOME), false, true); + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_WIZARD_WELCOME), false, LEFT_BUTTON_CHOICE); if (wizard_event == LEFT_BUTTON_CHOICE) { state = S::Restore; eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); @@ -4079,7 +4079,7 @@ void lcd_wizard(WizState state) lcd_show_fullscreen_message_and_wait_P(_i("Please remove shipping helpers first."));////MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 lcd_show_fullscreen_message_and_wait_P(_i("Now remove the test print from steel sheet."));////MSG_REMOVE_TEST_PRINT c=20 r=4 lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8 - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if (wizard_event == MIDDLE_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); } @@ -5091,7 +5091,7 @@ char reset_menu() { static void lcd_disable_farm_mode() { - int8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true, false); //allow timeouting, default no + int8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true); //allow timeouting, default no if (disable == LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("G99")); @@ -7461,7 +7461,7 @@ static void menu_action_sdfile(const char* filename) //filename is just a pointer to card.filename, which changes everytime you try to open a file by filename. So you can't use filename directly //to open a file. Instead, the cached filename in cmd is used as that one is static for the whole lifetime of this function. if (!check_file(cmd + 4)) { - result = !lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=3 + result = !lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false);////MSG_FILE_INCOMPLETE c=20 r=3 } if (result) { enquecommand(cmd); From 33650c6e569618a5d5622a628530f3d06ec4af71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 22 May 2022 10:11:12 +0000 Subject: [PATCH 094/319] Remove redundant call to lcd_update_enable --- Firmware/ultralcd.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 13d9e4264..7f1c9f69e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5124,12 +5124,11 @@ static void mmu_load_filament_menu() { static inline void lcd_mmu_load_to_nozzle_wrapper(uint8_t index){ MMU2::mmu2.load_filament_to_nozzle(index); - // Ask user if the extruded color is correct: - lcd_return_to_status(); - lcd_update_enable(true); - lcd_load_filament_color_check(); - lcd_setstatuspgm(MSG_WELCOME); - custom_message_type = CustomMsg::Status; + // Ask user if the extruded color is correct: + lcd_return_to_status(); + lcd_load_filament_color_check(); + lcd_setstatuspgm(MSG_WELCOME); + custom_message_type = CustomMsg::Status; } static void mmu_load_to_nozzle_menu() { From 8a928659696e41fadc16ff28ce5e5e969c364178 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 23 May 2022 09:21:02 +0200 Subject: [PATCH 095/319] Update MK3S to match MMU PR#168 - new progress and error codes - remove #error from mmu2_power.cpp as it makes no sense - remove temporary error translation code --- Firmware/mmu2.cpp | 8 +------- Firmware/mmu2/error_codes.h | 11 ++++++++--- Firmware/mmu2/errors_list.h | 7 +++++++ Firmware/mmu2_error_converter.cpp | 10 +++++++++- Firmware/mmu2_power.cpp | 4 +--- Firmware/mmu2_progress_converter.cpp | 12 +++++++----- Firmware/mmu2_progress_converter.h | 4 +++- 7 files changed, 36 insertions(+), 20 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 56319cbd0..93a0e9059 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -628,14 +628,8 @@ void MMU2::ReportError(ErrorCode ec) { void MMU2::ReportProgress(ProgressCode pc) { ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); - // Log progress - example: MMU2:P=123 EngageIdler - char msg[64]; - int len = snprintf(msg, sizeof(msg), "MMU2:P=%hu ", (uint16_t)pc); - // Append a human readable form of the progress code - TranslateProgress((uint16_t)pc, &msg[len], 64 - len); - SERIAL_ECHO_START; - SERIAL_ECHOLN(msg); + SERIAL_ECHOLNRPGM( ProgressCodeToText((uint16_t)pc) ); } void MMU2::OnMMUProgressMsg(ProgressCode pc){ diff --git a/Firmware/mmu2/error_codes.h b/Firmware/mmu2/error_codes.h index 019b08950..385690a9b 100644 --- a/Firmware/mmu2/error_codes.h +++ b/Firmware/mmu2/error_codes.h @@ -38,10 +38,15 @@ enum class ErrorCode : uint_fast16_t { HOMING_SELECTOR_FAILED = HOMING_FAILED | TMC_SELECTOR_BIT, ///< E32903 the Selector was unable to home properly - that means something is blocking its movement HOMING_IDLER_FAILED = HOMING_FAILED | TMC_IDLER_BIT, ///< E33031 the Idler was unable to home properly - that means something is blocking its movement STALLED_PULLEY = HOMING_FAILED | TMC_PULLEY_BIT, ///< E32839 for the Pulley "homing" means just stallguard detected during Pulley's operation (Pulley doesn't home) - + FINDA_VS_EEPROM_DISREPANCY = 0x8008, ///< E32776 FINDA is pressed but we have no such record in EEPROM - this can only happen at the start of the MMU and can be resolved by issuing an Unload command - - MOVE_FAILED = 0x8009, ///< generic move failed error - always reported with the corresponding axis bit set (Idler or Selector) as follows: + + FSENSOR_TOO_EARLY = 0x8009, ///< E32777 FSensor triggered while doing FastFeedToBondtech - that means either: + ///< - the PTFE is too short + ///< - a piece of filament was left inside - pushed in front of the loaded filament causing the fsensor trigger too early + ///< - fsensor is faulty producing bogus triggers + + MOVE_FAILED = 0x800a, ///< generic move failed error - always reported with the corresponding axis bit set (Idler or Selector) as follows: MOVE_SELECTOR_FAILED = MOVE_FAILED | TMC_SELECTOR_BIT, ///< E32905 the Selector was unable to move to desired position properly - that means something is blocking its movement, e.g. a piece of filament got out of pulley body MOVE_IDLER_FAILED = MOVE_FAILED | TMC_IDLER_BIT, ///< E33033 the Idler was unable to move - unused at the time of creation, but added for completeness MOVE_PULLEY_FAILED = MOVE_FAILED | TMC_PULLEY_BIT, ///< E32841 the Pulley was unable to move - unused at the time of creation, but added for completeness diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 1b4f32074..f814d52fd 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -19,6 +19,7 @@ typedef enum : uint16_t { ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, + ERR_MECHANICAL_FSENSOR_TOO_EARLY, ERR_MECHANICAL_PULLEY_CANNOT_MOVE = 105, ERR_MECHANICAL_SELECTOR_CANNOT_HOME = 115, @@ -79,6 +80,7 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, + ERR_MECHANICAL_FSENSOR_TOO_EARLY, ERR_MECHANICAL_PULLEY_CANNOT_MOVE, ERR_MECHANICAL_SELECTOR_CANNOT_HOME, ERR_MECHANICAL_SELECTOR_CANNOT_MOVE, @@ -117,6 +119,7 @@ static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIG static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA DIDNT GO OFF"); static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR DIDNT GO OFF"); +static const char titleFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); static const char titlePULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); static const char titleSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); @@ -154,6 +157,7 @@ static const char * const errorTitles [] PROGMEM = { titleFINDA_DIDNT_GO_OFF, titleFSENSOR_DIDNT_TRIGGER, titleFSENSOR_DIDNT_GO_OFF, + titleFSENSOR_TOO_EARLY, titlePULLEY_CANNOT_MOVE, titleSELECTOR_CANNOT_HOME, titleSELECTOR_CANNOT_MOVE, @@ -192,6 +196,7 @@ static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trig static const char descFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading filament. Ensure filament reached the fsensor and the sensor works."); static const char descFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); +static const char descFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early."); static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley motor stalled - Ensure the pulley can move and check the wiring."); static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly - check for anything blocking its movement."); static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move - check for anything blocking its movement. Check the wiring is correct."); @@ -229,6 +234,7 @@ static const char * const errorDescs[] PROGMEM = { descFINDA_DIDNT_GO_OFF, descFSENSOR_DIDNT_TRIGGER, descFSENSOR_DIDNT_GO_OFF, + descFSENSOR_TOO_EARLY, descPULLEY_STALLED, descSELECTOR_CANNOT_HOME, descSELECTOR_CANNOT_MOVE, @@ -298,6 +304,7 @@ static const uint8_t errorButtons[] PROGMEM = { Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 3485b8490..153811930 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -43,17 +43,25 @@ uint8_t PrusaErrorCodeIndex(uint16_t ec) { return FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER); case (uint16_t)ErrorCode::FSENSOR_DIDNT_SWITCH_OFF: return FindErrorIndex(ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF); + case (uint16_t)ErrorCode::FSENSOR_TOO_EARLY: + return FindErrorIndex(ERR_MECHANICAL_FSENSOR_TOO_EARLY); + case (uint16_t)ErrorCode::STALLED_PULLEY: case (uint16_t)ErrorCode::MOVE_PULLEY_FAILED: return FindErrorIndex(ERR_MECHANICAL_PULLEY_CANNOT_MOVE); + case (uint16_t)ErrorCode::HOMING_SELECTOR_FAILED: return FindErrorIndex(ERR_MECHANICAL_SELECTOR_CANNOT_HOME); case (uint16_t)ErrorCode::MOVE_SELECTOR_FAILED: return FindErrorIndex(ERR_MECHANICAL_SELECTOR_CANNOT_MOVE); + case (uint16_t)ErrorCode::HOMING_IDLER_FAILED: return FindErrorIndex(ERR_MECHANICAL_IDLER_CANNOT_HOME); - case (uint16_t)ErrorCode::MMU_NOT_RESPONDING: + case (uint16_t)ErrorCode::MOVE_IDLER_FAILED: return FindErrorIndex(ERR_MECHANICAL_IDLER_CANNOT_MOVE); + + case (uint16_t)ErrorCode::MMU_NOT_RESPONDING: + return FindErrorIndex(ERR_CONNECT_MMU_NOT_RESPONDING); case (uint16_t)ErrorCode::PROTOCOL_ERROR: return FindErrorIndex(ERR_CONNECT_COMMUNICATION_ERROR); case (uint16_t)ErrorCode::FILAMENT_ALREADY_LOADED: diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp index b9ce75ed6..7096358e4 100644 --- a/Firmware/mmu2_power.cpp +++ b/Firmware/mmu2_power.cpp @@ -16,10 +16,8 @@ void reset() { WRITE(MMU_RST_PIN, 0); _delay_us(100); WRITE(MMU_RST_PIN, 1); -#else // SW - send X0 command - // mmu_puts_P(PSTR("X0\n")); - #error todo send command if hardware pin not available #endif + // otherwise HW reset is not available } } // namespace MMU2 diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index edebef331..2e1a6d5ef 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -30,6 +30,8 @@ static const char progressParkSelector[] PROGMEM_I1 = ISTR("Parking selector"); static const char progressEjectFilament[] PROGMEM_I1 = ISTR("Ejecting filament"); static const char progressRetractFinda[] PROGMEM_I1 = ISTR("Retracting from FINDA"); static const char progressHoming[] PROGMEM_I1 = ISTR("Homing"); +static const char progressMovingSelector[] PROGMEM_I1 = ISTR("Moving selector"); +static const char progressFeedingToFSensor[] PROGMEM_I1 = ISTR("FeedingToFSensor"); static const char * const progressTexts[] PROGMEM = { progressOk, @@ -59,15 +61,15 @@ static const char * const progressTexts[] PROGMEM = { progressEjectFilament, progressRetractFinda, progressHoming, + progressMovingSelector, + progressFeedingToFSensor }; const char * const ProgressCodeToText(uint16_t pc){ // @@TODO ?? a better fallback option? - return ( pc <= 26 ) ? static_cast(pgm_read_ptr(&progressTexts[pc])) : static_cast(pgm_read_ptr(&progressTexts[0])); -} - -void TranslateProgress(uint16_t pc, char *dst, size_t dstSize) { - strncpy_P(dst, ProgressCodeToText(pc), dstSize); // @@TODO temporarily to prevent removal of the texts at LTO + return ( pc <= (sizeof(progressTexts) / sizeof(progressTexts[0])) ) + ? static_cast(pgm_read_ptr(&progressTexts[pc])) + : static_cast(pgm_read_ptr(&progressTexts[0])); } } // namespace MMU2 diff --git a/Firmware/mmu2_progress_converter.h b/Firmware/mmu2_progress_converter.h index 97fd344b8..72dcc031b 100644 --- a/Firmware/mmu2_progress_converter.h +++ b/Firmware/mmu2_progress_converter.h @@ -3,5 +3,7 @@ #include namespace MMU2 { -void TranslateProgress(uint16_t pc, char *dst, size_t dstSize); + +const char * const ProgressCodeToText(uint16_t pc); + } From 5f9ca6a6f3f6744524349be79fc3d94333d13289 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 23 May 2022 12:10:26 +0200 Subject: [PATCH 096/319] Reorder errors list according to Prusa-Error-Codes #61 --- Firmware/mmu2/errors_list.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index f814d52fd..dd8783140 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -15,13 +15,13 @@ typedef enum : uint16_t { ERR_UNDEF = 0, ERR_MECHANICAL = 100, - ERR_MECHANICAL_FINDA_DIDNT_TRIGGER, - ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, - ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, - ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, - ERR_MECHANICAL_FSENSOR_TOO_EARLY, + ERR_MECHANICAL_FINDA_DIDNT_TRIGGER = 101, + ERR_MECHANICAL_FINDA_DIDNT_GO_OFF = 102, + ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER = 103, + ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF = 104, ERR_MECHANICAL_PULLEY_CANNOT_MOVE = 105, + ERR_MECHANICAL_FSENSOR_TOO_EARLY = 106, ERR_MECHANICAL_SELECTOR_CANNOT_HOME = 115, ERR_MECHANICAL_SELECTOR_CANNOT_MOVE = 116, ERR_MECHANICAL_IDLER_CANNOT_HOME = 125, @@ -80,8 +80,8 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { ERR_MECHANICAL_FINDA_DIDNT_GO_OFF, ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER, ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF, - ERR_MECHANICAL_FSENSOR_TOO_EARLY, ERR_MECHANICAL_PULLEY_CANNOT_MOVE, + ERR_MECHANICAL_FSENSOR_TOO_EARLY, ERR_MECHANICAL_SELECTOR_CANNOT_HOME, ERR_MECHANICAL_SELECTOR_CANNOT_MOVE, ERR_MECHANICAL_IDLER_CANNOT_HOME, @@ -119,8 +119,8 @@ static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIG static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA DIDNT GO OFF"); static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR DIDNT GO OFF"); -static const char titleFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); static const char titlePULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); +static const char titleFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); static const char titleSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); static const char titleIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); @@ -157,8 +157,8 @@ static const char * const errorTitles [] PROGMEM = { titleFINDA_DIDNT_GO_OFF, titleFSENSOR_DIDNT_TRIGGER, titleFSENSOR_DIDNT_GO_OFF, - titleFSENSOR_TOO_EARLY, titlePULLEY_CANNOT_MOVE, + titleFSENSOR_TOO_EARLY, titleSELECTOR_CANNOT_HOME, titleSELECTOR_CANNOT_MOVE, titleIDLER_CANNOT_HOME, @@ -196,8 +196,8 @@ static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trig static const char descFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading filament. Ensure filament reached the fsensor and the sensor works."); static const char descFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); -static const char descFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early."); static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley motor stalled - Ensure the pulley can move and check the wiring."); +static const char descFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly - check for anything blocking its movement."); static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move - check for anything blocking its movement. Check the wiring is correct."); static const char descIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot home properly - check for anything blocking its movement."); @@ -234,8 +234,8 @@ static const char * const errorDescs[] PROGMEM = { descFINDA_DIDNT_GO_OFF, descFSENSOR_DIDNT_TRIGGER, descFSENSOR_DIDNT_GO_OFF, - descFSENSOR_TOO_EARLY, descPULLEY_STALLED, + descFSENSOR_TOO_EARLY, descSELECTOR_CANNOT_HOME, descSELECTOR_CANNOT_MOVE, descIDLER_CANNOT_HOME, @@ -304,13 +304,13 @@ static const uint8_t errorButtons[] PROGMEM = { Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), From 456ddbb5383eab9a1e77c4e57ad77eee78c7ffcc Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 24 May 2022 17:24:22 +0200 Subject: [PATCH 097/319] Handle the new MMU states (slow load to fsensor) --- Firmware/mmu2.cpp | 1 + Firmware/mmu2/progress_codes.h | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 93a0e9059..a2474e2a4 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -652,6 +652,7 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // Act accordingly - every status change (even the same state) switch(pc){ case ProgressCode::FeedingToBondtech: + case ProgressCode::FeedingToFSensor: if ( loadFilamentStarted ) { switch ( WhereIsFilament() ) diff --git a/Firmware/mmu2/progress_codes.h b/Firmware/mmu2/progress_codes.h index bdb17c647..7dd2e191a 100644 --- a/Firmware/mmu2/progress_codes.h +++ b/Firmware/mmu2/progress_codes.h @@ -36,7 +36,10 @@ enum class ProgressCode : uint_fast8_t { EjectingFilament, // P24 RetractingFromFinda, // P25 - Homing, + Homing, // P26 + MovingSelector, // P27 + + FeedingToFSensor, // P28 Empty = 0xff // dummy empty state }; From 0bd3dfdcf7b439c2cb6c88918b558444b40f81c2 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 25 May 2022 20:37:14 +0200 Subject: [PATCH 098/319] This starts to print ;) Temporarily disabled filament runout as this breaks ToolChange operation yet for unknown reason. --- Firmware/Filament_sensor.cpp | 486 +++++++++++++++++++++++++++++++- Firmware/Filament_sensor.h | 527 ++++------------------------------- Firmware/Tcodes.cpp | 21 +- Firmware/mmu2.cpp | 8 +- Firmware/ultralcd.cpp | 4 +- 5 files changed, 554 insertions(+), 492 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index ec8045eb0..431196e6f 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -1,4 +1,15 @@ +#include +#include +#include + #include "Filament_sensor.h" +#include "Timer.h" +#include "cardreader.h" +#include "eeprom.h" +#include "menu.h" +#include "pat9125.h" +#include "temperature.h" +#include "ultralcd.h" #ifdef FILAMENT_SENSOR #if FILAMENT_SENSOR_TYPE == FSENSOR_IR @@ -8,4 +19,477 @@ IR_sensor_analog fsensor; #elif FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 PAT9125_sensor fsensor; #endif -#endif //FILAMENT_SENSOR +#endif // FILAMENT_SENSOR + +void Filament_sensor::setEnabled(bool enabled) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, enabled); + if (enabled) { + init(); + } else { + deinit(); + } +} + +void Filament_sensor::setAutoLoadEnabled(bool state, bool updateEEPROM) { + autoLoadEnabled = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENS_AUTOLOAD_ENABLED, state); + } +} + +void Filament_sensor::setRunoutEnabled(bool state, bool updateEEPROM) { + runoutEnabled = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENS_RUNOUT_ENABLED, state); + } +} + +void Filament_sensor::setActionOnError(SensorActionOnError state, bool updateEEPROM) { + sensorActionOnError = state; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_ACTION_NA, (uint8_t)state); + } +} + +void Filament_sensor::settings_init_common() { + bool enabled = eeprom_read_byte((uint8_t *)EEPROM_FSENSOR); + if ((state != State::disabled) != enabled) { + state = enabled ? State::initializing : State::disabled; + } + + autoLoadEnabled = eeprom_read_byte((uint8_t *)EEPROM_FSENS_AUTOLOAD_ENABLED); + runoutEnabled = eeprom_read_byte((uint8_t *)EEPROM_FSENS_RUNOUT_ENABLED); + sensorActionOnError = (SensorActionOnError)eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_ACTION_NA); + if (sensorActionOnError == SensorActionOnError::_Undef) { + sensorActionOnError = SensorActionOnError::_Continue; + } +} + +bool Filament_sensor::checkFilamentEvents() { + if (state != State::ready) + return false; + if (eventBlankingTimer.running() && !eventBlankingTimer.expired(100)) { // event blanking for 100ms + return false; + } + + bool newFilamentPresent = getFilamentPresent(); + if (oldFilamentPresent != newFilamentPresent) { + oldFilamentPresent = newFilamentPresent; + eventBlankingTimer.start(); + if (newFilamentPresent) { // filament insertion + puts_P(PSTR("filament inserted")); + triggerFilamentInserted(); + postponedLoadEvent = true; + } else { // filament removal + puts_P(PSTR("filament removed")); + triggerFilamentRemoved(); + } + return true; + } + return false; +} + +void Filament_sensor::triggerFilamentInserted() { + if (autoLoadEnabled && (eFilamentAction == FilamentAction::None) && + !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || + eeprom_read_byte((uint8_t *)EEPROM_WIZARD_ACTIVE))) { + filAutoLoad(); + } +} + +void Filament_sensor::triggerFilamentRemoved() { + if (runoutEnabled + && (eFilamentAction == FilamentAction::None) + && !saved_printing + && ( + moves_planned() + || IS_SD_PRINTING + || usb_timer.running() + || (lcd_commands_type == LcdCommands::Layer1Cal) + || eeprom_read_byte((uint8_t *)EEPROM_WIZARD_ACTIVE) + ) + ){ +// filRunout(); + } +} + +void Filament_sensor::filAutoLoad() { + eFilamentAction = FilamentAction::AutoLoad; + if (target_temperature[0] >= EXTRUDE_MINTEMP) { + bFilamentPreheatState = true; + menu_submenu(mFilamentItemForce); + } else { + menu_submenu(lcd_generic_preheat_menu); + lcd_timeoutToStatus.start(); + } +} + +void Filament_sensor::filRunout() { + runoutEnabled = false; + autoLoadEnabled = false; + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + eeprom_update_byte((uint8_t *)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t *)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t *)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t *)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); +} + +void Filament_sensor::triggerError() { + state = State::error; + + /// some message, idk + ; // +} + +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +void IR_sensor::init() { + if (state == State::error) { + deinit(); // deinit first if there was an error. + } + puts_P(PSTR("fsensor::init()")); + SET_INPUT(IR_SENSOR_PIN); // input mode + WRITE(IR_SENSOR_PIN, 1); // pullup + settings_init(); // also sets the state to State::initializing +} + +void IR_sensor::deinit() { + puts_P(PSTR("fsensor::deinit()")); + SET_INPUT(IR_SENSOR_PIN); // input mode + WRITE(IR_SENSOR_PIN, 0); // no pullup + state = State::disabled; +} + +bool IR_sensor::update() { + switch (state) { + case State::initializing: + state = State::ready; // the IR sensor gets ready instantly as it's just a gpio read operation. + oldFilamentPresent = + getFilamentPresent(); // initialize the current filament state so that we don't create a switching event right after the sensor is ready. + // fallthru + case State::ready: { + postponedLoadEvent = false; + bool event = checkFilamentEvents(); + + ; // + + return event; + } break; + case State::disabled: + case State::error: + default: + return false; + } + return false; +} + +bool IR_sensor::getFilamentPresent() { return !READ(IR_SENSOR_PIN); } + +bool IR_sensor::probeOtherType() { return pat9125_probe(); } + +void IR_sensor::settings_init() { Filament_sensor::settings_init_common(); } + +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +void IR_sensor_analog::init() { + IR_sensor::init(); + settings_init(); +} + +void IR_sensor_analog::deinit() { IR_sensor::deinit(); } + +bool IR_sensor_analog::update() { + bool event = IR_sensor::update(); + if (state == State::ready) { + if (voltReady) { + voltReady = false; + uint16_t volt = getVoltRaw(); + printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); + + // detect min-max, some long term sliding window for filtration may be added + // avoiding floating point operations, thus computing in raw + if (volt > maxVolt) { + maxVolt = volt; + } else if (volt < minVolt) { + minVolt = volt; + } + //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage + //! to be detected as the new fsensor + //! We can either fake it by extending the detection window to a looooong time + //! or do some other countermeasures + + //! what we want to detect: + //! if minvolt gets below ~0.3V, it means there is an old fsensor + //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor + //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> + //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor + if (minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && + maxVolt <= IRsensor_Hopen_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04); + } + //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor + //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why + //! we need to have both voltages detected correctly to allow switching back to the old fsensor. + else if (minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { + IR_ANALOG_Check(SensorRevision::_Rev04, SensorRevision::_Old); + } + + if (!checkVoltage(volt)) { + triggerError(); + } + } + } + + ; // + + return event; +} + +void IR_sensor_analog::voltUpdate(uint16_t raw) { // to be called from the ADC ISR when a cycle is finished + voltRaw = raw; + voltReady = true; +} + +uint16_t IR_sensor_analog::getVoltRaw() { + uint16_t newVoltRaw; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { newVoltRaw = voltRaw; } + return newVoltRaw; +} + +void IR_sensor_analog::settings_init() { + IR_sensor::settings_init(); + sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_PCB); +} + +const char *IR_sensor_analog::getIRVersionText() { + switch (sensorRevision) { + case SensorRevision::_Old: + return _T(MSG_IR_03_OR_OLDER); + case SensorRevision::_Rev04: + return _T(MSG_IR_04_OR_NEWER); + default: + return _T(MSG_IR_UNKNOWN); + } +} + +void IR_sensor_analog::setSensorRevision(SensorRevision rev, bool updateEEPROM) { + sensorRevision = rev; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_PCB, (uint8_t)rev); + } +} + +bool IR_sensor_analog::checkVoltage(uint16_t raw) { + if (IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD) { + /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. + /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, + /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual + /// and would have been considered more like a sabotage than normal printer operation + if (voltageErrorCnt++ > 4) { + puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); + return false; + } + } else { + voltageErrorCnt = 0; + } + if (sensorRevision == SensorRevision::_Rev04) { + /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount + if (IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { + puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); + return false; + } + /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure +#if 0 // Disabled as it has to be decided if we gonna use this or not. + if(IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { + puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); + return false; + } +#endif + } + /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false +#if 0 +#error "I really think this code can't be enabled anymore because we are constantly checking this voltage." + if((sensorRevision == SensorRevision::_Undef) && (raw > IRsensor_Lmax_TRESHOLD)) { + puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); + return false; + } +#endif + // otherwise the IR fsensor is considered working correctly + return true; +} + +void IR_sensor_analog::IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo) { + bool bTemp = (!CHECK_ALL_HEATERS); + bTemp = bTemp && (menu_menu == lcd_status_screen); + bTemp = bTemp && ((sensorRevision == isVersion) || (sensorRevision == SensorRevision::_Undef)); + bTemp = bTemp && (state == State::ready); + if (bTemp) { + nFSCheckCount++; + if (nFSCheckCount > FS_CHECK_COUNT) { + nFSCheckCount = 0; // not necessary + setSensorRevision(switchTo, true); + printf_IRSensorAnalogBoardChange(); + switch (switchTo) { + case SensorRevision::_Old: + lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 + break; + case SensorRevision::_Rev04: + lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 + break; + default: + break; + } + } + } else { + nFSCheckCount = 0; + } +} +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) + +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +void PAT9125_sensor::init() { + if (state == State::error) { + deinit(); // deinit first if there was an error. + } + puts_P(PSTR("fsensor::init()")); + + settings_init(); // also sets the state to State::initializing + + calcChunkSteps(cs.axis_steps_per_unit[E_AXIS]); // for jam detection + + if (!pat9125_init()) { + deinit(); + triggerError(); + ; // + } +#ifdef IR_SENSOR_PIN + else if (!READ(IR_SENSOR_PIN)) { + ; // MK3 fw on MK3S printer + } +#endif // IR_SENSOR_PIN +} + +void PAT9125_sensor::deinit() { + puts_P(PSTR("fsensor::deinit()")); + ; // + state = State::disabled; + filter = 0; +} + +bool PAT9125_sensor::update() { + switch (state) { + case State::initializing: + if (!updatePAT9125()) { + break; // still not stable. Stay in the initialization state. + } + oldFilamentPresent = + getFilamentPresent(); // initialize the current filament state so that we don't create a switching event right after the sensor is ready. + oldPos = pat9125_y; + state = State::ready; + break; + case State::ready: { + updatePAT9125(); + postponedLoadEvent = false; + bool event = checkFilamentEvents(); + + ; // + + return event; + } break; + case State::disabled: + case State::error: + default: + return false; + } + return false; +} + +bool PAT9125_sensor::probeOtherType() { + SET_INPUT(IR_SENSOR_PIN); // input mode + WRITE(IR_SENSOR_PIN, 1); // pullup + _delay_us(100); // wait for the pullup to pull the line high (might be needed, not really sure. The internal pullups are quite weak and there might be a + // long wire attached). + bool fsensorDetected = !READ(IR_SENSOR_PIN); + WRITE(IR_SENSOR_PIN, 0); // no pullup + return fsensorDetected; +} + +void PAT9125_sensor::setJamDetectionEnabled(bool state, bool updateEEPROM) { + jamDetection = state; + oldPos = pat9125_y; + resetStepCount(); + jamErrCnt = 0; + if (updateEEPROM) { + eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_JAM_DETECTION, state); + } +} + +void PAT9125_sensor::settings_init() { + puts_P(PSTR("settings_init")); + Filament_sensor::settings_init_common(); + setJamDetectionEnabled(eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_JAM_DETECTION)); +} + +int16_t PAT9125_sensor::getStepCount() { + int16_t st_cnt; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { st_cnt = stepCount; } + return st_cnt; +} + +void PAT9125_sensor::resetStepCount() { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { stepCount = 0; } +} + +void PAT9125_sensor::filJam() { + runoutEnabled = false; + autoLoadEnabled = false; + jamDetection = false; + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + eeprom_update_byte((uint8_t *)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t *)EEPROM_FERROR_COUNT) + 1); + eeprom_update_word((uint16_t *)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t *)EEPROM_FERROR_COUNT_TOT) + 1); + enquecommand_front_P((PSTR("M600"))); +} + +bool PAT9125_sensor::updatePAT9125() { + if (jamDetection) { + int16_t _stepCount = getStepCount(); + if (abs(_stepCount) >= chunkSteps) { // end of chunk. Check distance + resetStepCount(); + if (!pat9125_update()) { // get up to date data. reinit on error. + init(); // try to reinit. + } + bool fsDir = (pat9125_y - oldPos) > 0; + bool stDir = _stepCount > 0; + if (fsDir != stDir) { + jamErrCnt++; + } else if (jamErrCnt) { + jamErrCnt--; + } + oldPos = pat9125_y; + } + if (jamErrCnt > 10) { + jamErrCnt = 0; + filJam(); + } + } + + if (!pollingTimer.running() || pollingTimer.expired(pollingPeriod)) { + pollingTimer.start(); + if (!pat9125_update()) { + init(); // try to reinit. + } + + bool present = (pat9125_s < 17) || (pat9125_s >= 17 && pat9125_b >= 50); + if (present != filterFilPresent) { + filter++; + } else if (filter) { + filter--; + } + if (filter >= filterCnt) { + filter = 0; + filterFilPresent = present; + } + } + return (filter == 0); // return stability +} +#endif // #if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index cc664d746..bc7694a07 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -1,22 +1,10 @@ #pragma once - #include -#include -#include -#include -#include "Marlin.h" -#include "ultralcd.h" -#include "menu.h" -#include "cardreader.h" -#include "temperature.h" #include "cmdqueue.h" -#include "eeprom.h" #include "pins.h" #include "fastio.h" #include "adc.h" -#include "Timer.h" -#include "pat9125.h" #define FSENSOR_IR 1 #define FSENSOR_IR_ANALOG 2 @@ -46,44 +34,21 @@ public: _Undef = EEPROM_EMPTY_VALUE }; - void setEnabled(bool enabled) { - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, enabled); - if (enabled) { - init(); - } - else { - deinit(); - } - } + void setEnabled(bool enabled); - void setAutoLoadEnabled(bool state, bool updateEEPROM = false) { - autoLoadEnabled = state; - if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENS_AUTOLOAD_ENABLED, state); - } - } + void setAutoLoadEnabled(bool state, bool updateEEPROM = false); bool getAutoLoadEnabled() { return autoLoadEnabled; } - void setRunoutEnabled(bool state, bool updateEEPROM = false) { - runoutEnabled = state; - if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENS_RUNOUT_ENABLED, state); - } - } + void setRunoutEnabled(bool state, bool updateEEPROM = false); bool getRunoutEnabled() { return runoutEnabled; } - void setActionOnError(SensorActionOnError state, bool updateEEPROM = false) { - sensorActionOnError = state; - if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_ACTION_NA, (uint8_t)state); - } - } + void setActionOnError(SensorActionOnError state, bool updateEEPROM = false); SensorActionOnError getActionOnError() { return sensorActionOnError; @@ -106,85 +71,19 @@ public: } protected: - void settings_init() { - bool enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); - if ((state != State::disabled) != enabled) { - state = enabled ? State::initializing : State::disabled; - } - - autoLoadEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); - runoutEnabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_RUNOUT_ENABLED); - sensorActionOnError = (SensorActionOnError)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA); - if (sensorActionOnError == SensorActionOnError::_Undef) { - sensorActionOnError = SensorActionOnError::_Continue; - } - } + void settings_init_common(); - bool checkFilamentEvents() { - if (state != State::ready) - return false; - if (eventBlankingTimer.running() && !eventBlankingTimer.expired(100)) {// event blanking for 100ms - return false; - } - - bool newFilamentPresent = getFilamentPresent(); - if (oldFilamentPresent != newFilamentPresent) { - oldFilamentPresent = newFilamentPresent; - eventBlankingTimer.start(); - if (newFilamentPresent) { //filament insertion - puts_P(PSTR("filament inserted")); - triggerFilamentInserted(); - postponedLoadEvent = true; - } - else { //filament removal - puts_P(PSTR("filament removed")); - triggerFilamentRemoved(); - } - return true; - } - return false; - }; + bool checkFilamentEvents(); - void triggerFilamentInserted() { - if (autoLoadEnabled && (eFilamentAction == FilamentAction::None) && !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { - filAutoLoad(); - } - } + void triggerFilamentInserted(); - void triggerFilamentRemoved() { - if (runoutEnabled && (eFilamentAction == FilamentAction::None) && !saved_printing && (moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))) { - filRunout(); - } - } + void triggerFilamentRemoved(); - void filAutoLoad() { - eFilamentAction = FilamentAction::AutoLoad; - if(target_temperature[0] >= EXTRUDE_MINTEMP){ - bFilamentPreheatState = true; - menu_submenu(mFilamentItemForce); - } - else { - menu_submenu(lcd_generic_preheat_menu); - lcd_timeoutToStatus.start(); - } - } + void filAutoLoad(); - void filRunout() { - runoutEnabled = false; - autoLoadEnabled = false; - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); - eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); - eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); - enquecommand_front_P((PSTR("M600"))); - } + void filRunout(); - void triggerError() { - state = State::error; - - /// some message, idk - ;// - } + void triggerError(); State state; bool autoLoadEnabled; @@ -198,137 +97,34 @@ protected: #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) class IR_sensor: public Filament_sensor { public: - void init() { - if (state == State::error) { - deinit(); //deinit first if there was an error. - } - puts_P(PSTR("fsensor::init()")); - SET_INPUT(IR_SENSOR_PIN); //input mode - WRITE(IR_SENSOR_PIN, 1); //pullup - settings_init(); //also sets the state to State::initializing - } - - void deinit() { - puts_P(PSTR("fsensor::deinit()")); - SET_INPUT(IR_SENSOR_PIN); //input mode - WRITE(IR_SENSOR_PIN, 0); //no pullup - state = State::disabled; - } - - bool update() { - switch (state) { - case State::initializing: - state = State::ready; //the IR sensor gets ready instantly as it's just a gpio read operation. - oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. - // fallthru - case State::ready: { - postponedLoadEvent = false; - bool event = checkFilamentEvents(); - - ;// - - return event; - } break; - case State::disabled: - case State::error: - default: - return false; - } - return false; - } - - bool getFilamentPresent() { - return !READ(IR_SENSOR_PIN); - } - + void init() override; + void deinit() override; + bool update()override ; + bool getFilamentPresent()override; #ifdef FSENSOR_PROBING - bool probeOtherType() { - return pat9125_probe(); - } + bool probeOtherType()override; #endif - - void settings_init() { - Filament_sensor::settings_init(); - } -protected: + void settings_init(); }; #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) +constexpr static uint16_t Voltage2Raw(float V) { + return (V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; +} +constexpr static float Raw2Voltage(uint16_t raw) { + return VOLT_DIV_REF * (raw / (1023.F * OVERSAMPLENR)); +} + class IR_sensor_analog: public IR_sensor { public: - void init() { - IR_sensor::init(); - settings_init(); - } + void init()override; + void deinit()override; + bool update()override; + void voltUpdate(uint16_t raw); - void deinit() { - IR_sensor::deinit(); - } + uint16_t getVoltRaw(); - bool update() { - bool event = IR_sensor::update(); - if (state == State::ready) { - if (voltReady) { - voltReady = false; - uint16_t volt = getVoltRaw(); - printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); - - // detect min-max, some long term sliding window for filtration may be added - // avoiding floating point operations, thus computing in raw - if(volt > maxVolt) { - maxVolt = volt; - } - else if(volt < minVolt) { - minVolt = volt; - } - //! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage - //! to be detected as the new fsensor - //! We can either fake it by extending the detection window to a looooong time - //! or do some other countermeasures - - //! what we want to detect: - //! if minvolt gets below ~0.3V, it means there is an old fsensor - //! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor - //! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5> - //! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor - if(minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Old, SensorRevision::_Rev04); - } - //! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range <4.6, 5.0V>, I'm considering a situation with the old fsensor - //! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why - //! we need to have both voltages detected correctly to allow switching back to the old fsensor. - else if( minVolt < IRsensor_Ldiode_TRESHOLD && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD) { - IR_ANALOG_Check(SensorRevision::_Rev04, SensorRevision::_Old); - } - - if (!checkVoltage(volt)) { - triggerError(); - } - } - } - - ;// - - return event; - } - - void voltUpdate(uint16_t raw) { //to be called from the ADC ISR when a cycle is finished - voltRaw = raw; - voltReady = true; - } - - uint16_t getVoltRaw() { - uint16_t newVoltRaw; - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - newVoltRaw = voltRaw; - } - return newVoltRaw; - } - - void settings_init() { - IR_sensor::settings_init(); - sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB); - } + void settings_init(); enum class SensorRevision : uint8_t { _Old = 0, @@ -340,83 +136,24 @@ public: return sensorRevision; } - const char* getIRVersionText() { - switch(sensorRevision) { - case SensorRevision::_Old: - return _T(MSG_IR_03_OR_OLDER); - case SensorRevision::_Rev04: - return _T(MSG_IR_04_OR_NEWER); - default: - return _T(MSG_IR_UNKNOWN); - } - } + const char* getIRVersionText(); - void setSensorRevision(SensorRevision rev, bool updateEEPROM = false) { - sensorRevision = rev; - if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_PCB, (uint8_t)rev); - } - } + void setSensorRevision(SensorRevision rev, bool updateEEPROM = false); - uint16_t Voltage2Raw(float V) { - return (V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F; - } - float Raw2Voltage(uint16_t raw) { - return VOLT_DIV_REF * (raw / (1023.F * OVERSAMPLENR)); - } - - bool checkVoltage(uint16_t raw) { - if(IRsensor_Lmax_TRESHOLD <= raw && raw <= IRsensor_Hmin_TRESHOLD) { - /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly. - /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way, - /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual - /// and would have been considered more like a sabotage than normal printer operation - if (voltageErrorCnt++ > 4) { - puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor")); - return false; - } - } - else { - voltageErrorCnt = 0; - } - if(sensorRevision == SensorRevision::_Rev04) { - /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount - if(IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { - puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected")); - return false; - } - /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure - #if 0 //Disabled as it has to be decided if we gonna use this or not. - if(IRsensor_Hopen_TRESHOLD <= raw && raw <= IRsensor_VMax_TRESHOLD) { - puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor")); - return false; - } - #endif - } - /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false - #if 0 - #error "I really think this code can't be enabled anymore because we are constantly checking this voltage." - if((sensorRevision == SensorRevision::_Undef) && (raw > IRsensor_Lmax_TRESHOLD)) { - puts_P(PSTR("Unknown IR sensor version and no filament loaded detected.")); - return false; - } - #endif - // otherwise the IR fsensor is considered working correctly - return true; - } + bool checkVoltage(uint16_t raw); // Voltage2Raw is not constexpr :/ - const uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3f); // ~0.3V, raw value=982 - const uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5f); // ~1.5V (0.3*Vcc), raw value=4910 - const uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0f); // ~3.0V (0.6*Vcc), raw value=9821 - const uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6f); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 - const uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.f); // ~5V, raw value=16368 + constexpr static uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982 + constexpr static uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910 + constexpr static uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821 + constexpr static uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059 + constexpr static uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368 private: SensorRevision sensorRevision; volatile bool voltReady; //this gets set by the adc ISR volatile uint16_t voltRaw; - uint16_t minVolt = Voltage2Raw(6.f); + uint16_t minVolt = Voltage2Raw(6.F); uint16_t maxVolt = 0; uint16_t nFSCheckCount; uint8_t voltageErrorCnt; @@ -426,33 +163,7 @@ private: /// Called from 2 spots which have a very similar behavior /// 1: SensorRevision::_Old -> SensorRevision::_Rev04 and print _i("FS v0.4 or newer") /// 2: SensorRevision::_Rev04 -> sensorRevision=SensorRevision::_Old and print _i("FS v0.3 or older") - void IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo) { - bool bTemp = (!CHECK_ALL_HEATERS); - bTemp = bTemp && (menu_menu == lcd_status_screen); - bTemp = bTemp && ((sensorRevision == isVersion) || (sensorRevision == SensorRevision::_Undef)); - bTemp = bTemp && (state == State::ready); - if (bTemp) { - nFSCheckCount++; - if (nFSCheckCount > FS_CHECK_COUNT) { - nFSCheckCount = 0; // not necessary - setSensorRevision(switchTo, true); - printf_IRSensorAnalogBoardChange(); - switch (switchTo) { - case SensorRevision::_Old: - lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 - break; - case SensorRevision::_Rev04: - lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 - break; - default: - break; - } - } - } - else { - nFSCheckCount = 0; - } - } + void IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo); }; #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) @@ -460,86 +171,18 @@ private: #if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) class PAT9125_sensor: public Filament_sensor { public: - void init() { - if (state == State::error) { - deinit(); //deinit first if there was an error. - } - puts_P(PSTR("fsensor::init()")); - - settings_init(); //also sets the state to State::initializing - - calcChunkSteps(cs.axis_steps_per_unit[E_AXIS]); //for jam detection - - if (!pat9125_init()) { - deinit(); - triggerError(); - ;// - } -#ifdef IR_SENSOR_PIN - else if (!READ(IR_SENSOR_PIN)) { - ;// MK3 fw on MK3S printer - } -#endif //IR_SENSOR_PIN - } - - void deinit() { - puts_P(PSTR("fsensor::deinit()")); - ;// - state = State::disabled; - filter = 0; - } - - bool update() { - switch (state) { - case State::initializing: - if (!updatePAT9125()) { - break; // still not stable. Stay in the initialization state. - } - oldFilamentPresent = getFilamentPresent(); //initialize the current filament state so that we don't create a switching event right after the sensor is ready. - oldPos = pat9125_y; - state = State::ready; - break; - case State::ready: { - updatePAT9125(); - postponedLoadEvent = false; - bool event = checkFilamentEvents(); - - ;// - - return event; - } break; - case State::disabled: - case State::error: - default: - return false; - } - return false; - } - - bool getFilamentPresent() { + void init()override; + void deinit()override; + bool update()override; + bool getFilamentPresent() override{ return filterFilPresent; } #ifdef FSENSOR_PROBING - bool probeOtherType() { - SET_INPUT(IR_SENSOR_PIN); //input mode - WRITE(IR_SENSOR_PIN, 1); //pullup - _delay_us(100); //wait for the pullup to pull the line high (might be needed, not really sure. The internal pullups are quite weak and there might be a long wire attached). - bool fsensorDetected = !READ(IR_SENSOR_PIN); - WRITE(IR_SENSOR_PIN, 0); //no pullup - return fsensorDetected; - } + bool probeOtherType() override; #endif - void setJamDetectionEnabled(bool state, bool updateEEPROM = false) { - jamDetection = state; - oldPos = pat9125_y; - resetStepCount(); - jamErrCnt = 0; - if (updateEEPROM) { - eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_JAM_DETECTION, state); - } - } + void setJamDetectionEnabled(bool state, bool updateEEPROM = false); bool getJamDetectionEnabled() { return jamDetection; @@ -549,11 +192,7 @@ public: stepCount += rev ? -1 : 1; } - void settings_init() { - puts_P(PSTR("settings_init")); - Filament_sensor::settings_init(); - setJamDetectionEnabled(eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_JAM_DETECTION)); - } + void settings_init(); private: static constexpr uint16_t pollingPeriod = 10; //[ms] static constexpr uint8_t filterCnt = 5; //how many checks need to be done in order to determine the filament presence precisely. @@ -567,79 +206,17 @@ private: int16_t chunkSteps; uint8_t jamErrCnt; - void calcChunkSteps(float u) { + constexpr void calcChunkSteps(float u) { chunkSteps = (int16_t)(1.25 * u); //[mm] } - int16_t getStepCount() { - int16_t st_cnt; - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - st_cnt = stepCount; - } - return st_cnt; - } + int16_t getStepCount(); - void resetStepCount() { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - stepCount = 0; - } - } + void resetStepCount(); - void filJam() { - runoutEnabled = false; - autoLoadEnabled = false; - jamDetection = false; - stop_and_save_print_to_ram(0, 0); - restore_print_from_ram_and_continue(0); - eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1); - eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1); - enquecommand_front_P((PSTR("M600"))); - } + void filJam(); - bool updatePAT9125() { - if (jamDetection) { - int16_t _stepCount = getStepCount(); - if (abs(_stepCount) >= chunkSteps) { //end of chunk. Check distance - resetStepCount(); - if (!pat9125_update()) { //get up to date data. reinit on error. - init(); //try to reinit. - } - bool fsDir = (pat9125_y - oldPos) > 0; - bool stDir = _stepCount > 0; - if (fsDir != stDir) { - jamErrCnt++; - } - else if (jamErrCnt) { - jamErrCnt--; - } - oldPos = pat9125_y; - } - if (jamErrCnt > 10) { - jamErrCnt = 0; - filJam(); - } - } - - if (!pollingTimer.running() || pollingTimer.expired(pollingPeriod)) { - pollingTimer.start(); - if (!pat9125_update()) { - init(); //try to reinit. - } - - bool present = (pat9125_s < 17) || (pat9125_s >= 17 && pat9125_b >= 50); - if (present != filterFilPresent) { - filter++; - } - else if (filter) { - filter--; - } - if (filter >= filterCnt) { - filter = 0; - filterFilPresent = present; - } - } - return (filter == 0); //return stability - } + bool updatePAT9125(); }; #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index e61584f52..52141ddf9 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -45,7 +45,7 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { if (IsInvalidTCode(strchr_pointer, index)){ TCodeInvalid(); - } else if (strchr_pointer[index] == 'x'){ + } /*else if (strchr_pointer[index] == 'x'){ // load to bondtech gears; if mmu is not present do nothing if (MMU2::mmu2.Enabled()) { MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER))); @@ -55,16 +55,16 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { if (MMU2::mmu2.Enabled()) { MMU2::mmu2.tool_change(strchr_pointer[index], 0); } - } else { + }*/ else { SChooseFromMenu selectedSlot; - if (strchr_pointer[index] == '?') - selectedSlot = TCodeChooseFromMenu(); - else { +// if (strchr_pointer[index] == '?') +// selectedSlot = TCodeChooseFromMenu(); +// else { selectedSlot.slot = codeValue; - if (MMU2::mmu2.Enabled() && lcd_autoDepleteEnabled()) { - selectedSlot.slot = ad_getAlternative(selectedSlot.slot); - } - } +// if (MMU2::mmu2.Enabled() && lcd_autoDepleteEnabled()) { +// selectedSlot.slot = ad_getAlternative(selectedSlot.slot); +// } +// } st_synchronize(); if (MMU2::mmu2.Enabled()) { @@ -78,9 +78,10 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { manage_response(true, true, MMU_UNLOAD_MOVE); } #endif // defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) - MMU2::mmu2.tool_change(selectedSlot.slot); if (selectedSlot.loadToNozzle){ // for single material usage with mmu MMU2::mmu2.load_filament_to_nozzle(selectedSlot.slot); + } else { + MMU2::mmu2.tool_change(selectedSlot.slot); } } } else { diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index a2474e2a4..7f4ab5b05 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -59,8 +59,8 @@ static constexpr E_Step ramming_sequence[] PROGMEM = { }; static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { - { 36.0F, 810.0F / 60.F}, // feed rate = 13.5mm/s - Load fast until filament reach end of nozzle - { 30.0F, 198.0F / 60.F}, // feed rate = 3.3mm/s - Load slower once filament is out of the nozzle + { 10.0F, 810.0F / 60.F}, // feed rate = 13.5mm/s - Load fast until filament reach end of nozzle + { 25.0F, 198.0F / 60.F}, // feed rate = 3.3mm/s - Load slower once filament is out of the nozzle }; namespace MMU2 { @@ -663,14 +663,14 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // After the MMU knows the FSENSOR is triggered it will: // 1. Push the filament by additional 30mm (see fsensorToNozzle) // 2. Disengage the idler and push another 5mm. - current_position[E_AXIS] += 30.0f + 5.0f; + current_position[E_AXIS] += 30.0f + 2.0f; plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); break; case FilamentState::NOT_PRESENT: // fsensor not triggered, continue moving extruder if(!blocks_queued()) { // Only plan a move if there is no move ongoing - current_position[E_AXIS] += 5.0f; + current_position[E_AXIS] += 2.0f; plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); } break; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7f1c9f69e..f3e635678 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6217,7 +6217,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone) uint16_t volt_IR_int = fsensor.getVoltRaw(); newSensorRevision = (volt_IR_int < fsensor.IRsensor_Hopen_TRESHOLD) ? IR_sensor_analog::SensorRevision::_Rev04 : IR_sensor_analog::SensorRevision::_Old; - printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), fsensor.Raw2Voltage(volt_IR_int) ); + printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) ); if(volt_IR_int < fsensor.IRsensor_Hmin_TRESHOLD){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"HIGH",""); @@ -6225,7 +6225,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone) } lcd_show_fullscreen_message_and_wait_P(_i("Insert the filament (do not load it) into the extruder and then press the knob."));////MSG_INSERT_FIL c=20 r=6 volt_IR_int = fsensor.getVoltRaw(); - printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), fsensor.Raw2Voltage(volt_IR_int)); + printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), Raw2Voltage(volt_IR_int)); if(volt_IR_int > (fsensor.IRsensor_Lmax_TRESHOLD)){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"LOW",""); From f3f2086f29b8704cd3364b8659f8b1ad1bee80d6 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 25 May 2022 20:55:39 +0200 Subject: [PATCH 099/319] Fix compilation MK3 --- Firmware/Filament_sensor.cpp | 1 - Firmware/Filament_sensor.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 431196e6f..c5f1b7af4 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -7,7 +7,6 @@ #include "cardreader.h" #include "eeprom.h" #include "menu.h" -#include "pat9125.h" #include "temperature.h" #include "ultralcd.h" diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index bc7694a07..e541e5e25 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -5,6 +5,7 @@ #include "pins.h" #include "fastio.h" #include "adc.h" +#include "pat9125.h" #define FSENSOR_IR 1 #define FSENSOR_IR_ANALOG 2 From d628525a945750b3b9c86bbd3afb8b7c951bbd7a Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 25 May 2022 21:00:37 +0200 Subject: [PATCH 100/319] Fix build MK25S --- Firmware/Filament_sensor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index c5f1b7af4..d88c8aa99 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -183,7 +183,9 @@ bool IR_sensor::update() { bool IR_sensor::getFilamentPresent() { return !READ(IR_SENSOR_PIN); } +#ifdef FSENSOR_PROBING bool IR_sensor::probeOtherType() { return pat9125_probe(); } +#endif void IR_sensor::settings_init() { Filament_sensor::settings_init_common(); } From ba8332cd3e4104bb8fcbee991cc760720cc88a5e Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 25 May 2022 21:10:23 +0200 Subject: [PATCH 101/319] Fix MK25 build --- Firmware/Filament_sensor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index d88c8aa99..9c87b27df 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -404,6 +404,7 @@ bool PAT9125_sensor::update() { return false; } +#ifdef FSENSOR_PROBING bool PAT9125_sensor::probeOtherType() { SET_INPUT(IR_SENSOR_PIN); // input mode WRITE(IR_SENSOR_PIN, 1); // pullup @@ -413,6 +414,7 @@ bool PAT9125_sensor::probeOtherType() { WRITE(IR_SENSOR_PIN, 0); // no pullup return fsensorDetected; } +#endif void PAT9125_sensor::setJamDetectionEnabled(bool state, bool updateEEPROM) { jamDetection = state; From a0e9a302b862f2f775211d37c131b38df5d9c7f2 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 27 May 2022 07:02:22 +0200 Subject: [PATCH 102/319] Suppress communication drop-out < 8s (MMU in bootloader) PFW-1327 --- Firmware/mmu2_protocol_logic.cpp | 2 +- Firmware/mmu2_protocol_logic.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index d748c3c61..1492b9058 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -548,7 +548,7 @@ StepStatus ProtocolLogic::Step() { uint8_t ProtocolLogic::CommandInProgress() const { if( currentState != &command ) return 0; - return (uint8_t)command.ReqMsg().code; + return (uint8_t)command.ReqMsg().code; } bool DropOutFilter::Record(StepStatus ss){ diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index e96f93cd2..eb8c26834 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -177,7 +177,7 @@ class DropOutFilter { StepStatus cause; uint8_t occurrences; public: - static constexpr uint8_t maxOccurrences = 3; + static constexpr uint8_t maxOccurrences = 10; // ideally set this to >8 seconds -> 12x heartBeatPeriod static_assert (maxOccurrences > 1, "we should really silently ignore at least 1 comm drop out if recovered immediately afterwards"); DropOutFilter() = default; From 5082da78d2cf4af1d4962d06ff114b2332a646d8 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 27 May 2022 07:07:48 +0200 Subject: [PATCH 103/319] Convert button on LCD into button for MMU - Dependent on current MMU error being processed - Includes rename of LEFT_BUTTON_CHOICE -> LCD_LEFT_BUTTON_CHOICE (and right, middle as well) to avoid confusion with MMU buttons' ordering --- Firmware/Marlin_main.cpp | 12 +-- Firmware/mmu2/buttons.h | 18 ++++- Firmware/mmu2/errors_list.h | 15 ++-- Firmware/mmu2_error_converter.cpp | 129 ++++++++++++++++++++++++++++++ Firmware/mmu2_error_converter.h | 8 ++ Firmware/mmu2_reporting.cpp | 69 ++++------------ Firmware/mmu2_reporting.h | 15 ---- Firmware/ultralcd.cpp | 67 ++++++++-------- Firmware/ultralcd.h | 11 ++- 9 files changed, 222 insertions(+), 122 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index e53233ca0..1c09e52ec 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -648,7 +648,7 @@ void crashdet_detected(uint8_t mask) lcd_puts_P(_T(MSG_RESUME_PRINT)); lcd_putc('?'); bool yesno = lcd_show_yes_no_and_wait(false); - if (yesno == LEFT_BUTTON_CHOICE) + if (yesno == LCD_LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("CRASH_RECOVER")); } @@ -1604,7 +1604,7 @@ void setup() #ifdef DEBUG_UVLO_AUTOMATIC_RECOVER puts_P(_N("Normal recovery!")); #endif - if ( lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false) == LEFT_BUTTON_CHOICE) { + if ( lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false) == LCD_LEFT_BUTTON_CHOICE) { recover_print(0); } else { eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); @@ -3289,7 +3289,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); - if(result == LEFT_BUTTON_CHOICE) { + if(result == LCD_LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); } #endif //STEEL_SHEET @@ -3586,8 +3586,8 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (!MMU2::mmu2.Enabled()) { KEEPALIVE_STATE(PAUSED_FOR_USER); lcd_change_fil_state = - lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 - if (lcd_change_fil_state == MIDDLE_BUTTON_CHOICE) { + lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LCD_LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 + if (lcd_change_fil_state == LCD_MIDDLE_BUTTON_CHOICE) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); current_position[X_AXIS] -= 100; @@ -4920,7 +4920,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); - if (result == LEFT_BUTTON_CHOICE) + if (result == LCD_LEFT_BUTTON_CHOICE) { current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; plan_buffer_line_curposXYZE(3000 / 60); diff --git a/Firmware/mmu2/buttons.h b/Firmware/mmu2/buttons.h index 68673971b..73413289a 100644 --- a/Firmware/mmu2/buttons.h +++ b/Firmware/mmu2/buttons.h @@ -2,8 +2,8 @@ #include // Helper macros to parse the operations from Btns() -#define BUTTON_OP_HI_NIBBLE(X) ( ( X & 0xF0 ) >> 4 ) -#define BUTTON_OP_LO_NIBBLE(X) ( X & 0x0F ) +#define BUTTON_OP_RIGHT(X) ( ( X & 0xF0 ) >> 4 ) +#define BUTTON_OP_MIDDLE(X) ( X & 0x0F ) namespace MMU2 { @@ -19,4 +19,18 @@ enum class ButtonOperations : uint8_t { DisableMMU = 6, }; +/// Button codes + extended actions performed on the printer's side +enum Buttons : uint8_t { + Left = 0, + Middle, + Right, + + // performed on the printer's side + RestartMMU, + StopPrint, + + NoButton = 0xff // shall be kept last +}; + + } // namespace MMU2 diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index dd8783140..921b034d6 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -273,7 +273,8 @@ static const char * const errorDescs[] PROGMEM = { // 01234567890123456789 // >bttxt >bttxt >MoreW // Therefore at least some of the buttons, which can occur on the screen together, need to be 5-chars long max @@TODO. -// @@TODO beware - this doesn't correspond to the HW MMU buttons - needs to be discussed +// Beware - we only have space for 2 buttons on the LCD while the MMU has 3 buttons +// -> the left button on the MMU is not used/rendered on the LCD (it is also almost unused on the MMU side) static const char btnRetry[] PROGMEM_I1 = ISTR("Retry"); static const char btnContinue[] PROGMEM_I1 = ISTR("Done"); static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); @@ -295,15 +296,15 @@ static const char * const btnOperation[] PROGMEM = { // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. // Since one of the buttons is always "More", we can skip that one. // Therefore we need just 1 byte to describe the necessary buttons for each screen. -uint8_t constexpr Btns(ButtonOperations b0, ButtonOperations b1){ - return ((uint8_t)b1) << 4 | ((uint8_t)b0); +uint8_t constexpr Btns(ButtonOperations bMiddle, ButtonOperations bRight){ + return ((uint8_t)bRight) << 4 | ((uint8_t)bMiddle); } static const uint8_t errorButtons[] PROGMEM = { - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), + Btns(ButtonOperations::Retry, ButtonOperations::Continue), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 153811930..f0d08912c 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -6,6 +6,8 @@ namespace MMU2 { +static ButtonOperations buttonSelectedOperation = ButtonOperations::NoOperation; + // we don't have a constexpr find_if in C++17/STL yet template constexpr InputIt find_if_cx(InputIt first, InputIt last, UnaryPredicate p) { @@ -151,4 +153,131 @@ const char * const PrusaErrorButtonMore(){ return btnMore; } +struct ResetOnExit { + ResetOnExit() = default; + ~ResetOnExit(){ + buttonSelectedOperation = ButtonOperations::NoOperation; + } +}; + +Buttons ButtonPressed(uint16_t ec) { + if (buttonSelectedOperation == ButtonOperations::NoOperation) { + return NoButton; // no button + } + + ResetOnExit ros; // clear buttonSelectedOperation on exit from this call + + uint8_t ei = PrusaErrorCodeIndex(ec); + + // The list of responses which occur in mmu error dialogs + // Return button index or perform some action on the MK4 by itself (like restart MMU) + // Based on Prusa-Error-Codes errors_list.h + // So far hardcoded, but shall be generated in the future + switch ( PrusaErrorCode(ei) ) { + case ERR_MECHANICAL_FINDA_DIDNT_TRIGGER: + case ERR_MECHANICAL_FINDA_DIDNT_GO_OFF: + case ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER: + case ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF: + case ERR_MECHANICAL_FSENSOR_TOO_EARLY: + switch (buttonSelectedOperation) { + case ButtonOperations::Retry: // "Repeat action" + return Middle; + case ButtonOperations::Continue: // "Continue" + return Right; + default: + break; + } + break; + case ERR_MECHANICAL_SELECTOR_CANNOT_HOME: + case ERR_MECHANICAL_IDLER_CANNOT_HOME: + case ERR_MECHANICAL_PULLEY_CANNOT_MOVE: + switch (buttonSelectedOperation) { + // may be allow move selector right and left in the future + case ButtonOperations::Retry: // "Repeat action" + return Middle; + default: + break; + } + break; + + case ERR_TEMPERATURE_PULLEY_WARNING_TMC_TOO_HOT: + case ERR_TEMPERATURE_SELECTOR_WARNING_TMC_TOO_HOT: + case ERR_TEMPERATURE_IDLER_WARNING_TMC_TOO_HOT: + switch (buttonSelectedOperation) { + case ButtonOperations::Continue: // "Continue" + return Left; + case ButtonOperations::RestartMMU: // "Restart MMU" + return RestartMMU; + default: + break; + } + break; + + case ERR_TEMPERATURE_PULLEY_TMC_OVERHEAT_ERROR: + case ERR_TEMPERATURE_SELECTOR_TMC_OVERHEAT_ERROR: + case ERR_TEMPERATURE_IDLER_TMC_OVERHEAT_ERROR: + + case ERR_ELECTRICAL_PULLEY_TMC_DRIVER_ERROR: + case ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_ERROR: + case ERR_ELECTRICAL_IDLER_TMC_DRIVER_ERROR: + + case ERR_ELECTRICAL_PULLEY_TMC_DRIVER_RESET: + case ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_RESET: + case ERR_ELECTRICAL_IDLER_TMC_DRIVER_RESET: + + case ERR_ELECTRICAL_PULLEY_TMC_UNDERVOLTAGE_ERROR: + case ERR_ELECTRICAL_SELECTOR_TMC_UNDERVOLTAGE_ERROR: + case ERR_ELECTRICAL_IDLER_TMC_UNDERVOLTAGE_ERROR: + + case ERR_ELECTRICAL_PULLEY_TMC_DRIVER_SHORTED: + case ERR_ELECTRICAL_SELECTOR_TMC_DRIVER_SHORTED: + case ERR_ELECTRICAL_IDLER_TMC_DRIVER_SHORTED: + + case ERR_CONNECT_MMU_NOT_RESPONDING: + case ERR_CONNECT_COMMUNICATION_ERROR: + + case ERR_SYSTEM_QUEUE_FULL: + case ERR_SYSTEM_FW_RUNTIME_ERROR: + switch (buttonSelectedOperation) { + case ButtonOperations::RestartMMU: // "Restart MMU" + return RestartMMU; + default: + break; + } + break; + + case ERR_SYSTEM_FILAMENT_ALREADY_LOADED: + switch (buttonSelectedOperation) { + case ButtonOperations::Unload: // "Unload" + return Left; + case ButtonOperations::Continue: // "Proceed/Continue" + return Right; + case ButtonOperations::RestartMMU: // "Restart MMU" + return RestartMMU; + default: + break; + } + break; + + case ERR_SYSTEM_INVALID_TOOL: + switch (buttonSelectedOperation) { + case ButtonOperations::StopPrint: // "Stop print" + return StopPrint; + case ButtonOperations::RestartMMU: // "Restart MMU" + return RestartMMU; + default: + break; + } + break; + default: + break; + } + + return NoButton; +} + +void SetButtonResponse(ButtonOperations rsp){ + buttonSelectedOperation = rsp; +} + } // namespace MMU2 diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h index 257b3e5d3..27dbfbce5 100644 --- a/Firmware/mmu2_error_converter.h +++ b/Firmware/mmu2_error_converter.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include "mmu2/buttons.h" namespace MMU2 { @@ -31,4 +32,11 @@ const char * const PrusaErrorButtonTitle(uint8_t bi); /// @returns pointer to a PROGMEM string representing the "More" button const char * const PrusaErrorButtonMore(); +/// Sets the selected button for later pick-up by the MMU state machine. +/// Used to save the GUI selection/decoupling +void SetButtonResponse(ButtonOperations rsp); + +/// @returns button index/code based on currently processed error/screen +Buttons ButtonPressed(uint16_t ec); + } // namespace MMU2 diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 3b9ca0637..6e0a9b628 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -62,12 +62,11 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { // Read and determine what operations should be shown on the menu // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* const uint8_t button_operation = PrusaErrorButtons(ei); - const uint8_t button_high_nibble = BUTTON_OP_HI_NIBBLE(button_operation); - const uint8_t button_low_nibble = BUTTON_OP_LO_NIBBLE(button_operation); + const uint8_t button_op_right = BUTTON_OP_RIGHT(button_operation); + const uint8_t button_op_middle = BUTTON_OP_MIDDLE(button_operation); // Check if the menu should have three or two choices - if (button_high_nibble == (uint8_t)ButtonOperations::NoOperation) - { + if (button_op_right == (uint8_t)ButtonOperations::NoOperation){ // Two operations not specified, the error menu should only show two choices two_choices = true; } @@ -75,69 +74,37 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { back_to_choices: lcd_clear(); lcd_update_enable(false); - + // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); - // Render static characters in third line - lcd_set_cursor(0, 2); - lcd_printf_P(PSTR("FI: FS: > %c %c"), LCD_STR_THERMOMETER[0], LCD_STR_DEGREE[0]); - // Render the choices and store selection in 'choice_selected' choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( NULL, // NULL, since title screen is not in PROGMEM false, - two_choices ? LEFT_BUTTON_CHOICE : MIDDLE_BUTTON_CHOICE, - _T(PrusaErrorButtonTitle(button_low_nibble)), - _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_high_nibble)), + two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, // beware - LEFT button on the LCD matches the MIDDLE button on the MMU! + _T(PrusaErrorButtonTitle(button_op_middle)), + _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), two_choices ? nullptr : _T(PrusaErrorButtonMore()), - two_choices ? - 10 // If two choices, allow the first choice to have more characters - : 7, - ReportErrorHook_cb + two_choices ? 10 : 7 // If two choices, allow the first choice to have more characters ); - if ((two_choices && choice_selected == MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected - || (!two_choices && choice_selected == RIGHT_BUTTON_CHOICE)) // Three choices and right most button selected + if ((two_choices && choice_selected == LCD_MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected + || (!two_choices && choice_selected == LCD_RIGHT_BUTTON_CHOICE)) // Three choices and right most button selected { // 'More' show error description lcd_show_fullscreen_message_and_wait_P(_T(PrusaErrorDesc(ei))); // Return back to the choice menu goto back_to_choices; - } else if(choice_selected == MIDDLE_BUTTON_CHOICE) { - // TODO: User selected middle choice, not sure what to do. - // At the moment just return to the status screen - switch (button_high_nibble) - { - case (uint8_t)ButtonOperations::Retry: - case (uint8_t)ButtonOperations::Continue: - case (uint8_t)ButtonOperations::RestartMMU: - case (uint8_t)ButtonOperations::Unload: - case (uint8_t)ButtonOperations::StopPrint: - case (uint8_t)ButtonOperations::DisableMMU: - default: - lcd_update_enable(true); - lcd_return_to_status(); - break; - } + } else if(choice_selected == LCD_MIDDLE_BUTTON_CHOICE) { + SetButtonResponse((ButtonOperations)button_op_right); } else { - // TODO: User selected the left most choice, not sure what to do. - // At the moment just return to the status screen - switch (button_low_nibble) - { - case (uint8_t)ButtonOperations::Retry: - case (uint8_t)ButtonOperations::Continue: - case (uint8_t)ButtonOperations::RestartMMU: - case (uint8_t)ButtonOperations::Unload: - case (uint8_t)ButtonOperations::StopPrint: - case (uint8_t)ButtonOperations::DisableMMU: - default: - lcd_update_enable(true); - lcd_return_to_status(); - break; - } + SetButtonResponse((ButtonOperations)button_op_middle); } + // if any button/command selected, close the screen + lcd_update_enable(true); + lcd_return_to_status(); } void ReportProgressHook(CommandInProgress cip, uint16_t ec) { @@ -145,8 +112,4 @@ void ReportProgressHook(CommandInProgress cip, uint16_t ec) { lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); } -Buttons ButtonPressed(uint16_t ec) { - // query the MMU error screen if a button has been pressed/selected -} - } // namespace MMU2 diff --git a/Firmware/mmu2_reporting.h b/Firmware/mmu2_reporting.h index 66fd5100c..5317153ba 100644 --- a/Firmware/mmu2_reporting.h +++ b/Firmware/mmu2_reporting.h @@ -28,21 +28,6 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec); /// Called when the MMU sends operation progress update void ReportProgressHook(CommandInProgress cip, uint16_t ec); -/// Button codes + extended actions performed on the printer's side -enum Buttons : uint8_t { - Left = 0, - Middle, - Right, - - // performed on the printer's side - RestartMMU, - StopPrint, - - NoButton = 0xff // shall be kept last -}; - -Buttons ButtonPressed(uint16_t ec); - /// @returns true if the MMU is communicating and available /// can change at runtime bool MMUAvailable(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f3e635678..bc18fd90a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2299,11 +2299,11 @@ void show_preheat_nozzle_warning() void lcd_load_filament_color_check() { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LEFT_BUTTON_CHOICE); - while (clean == MIDDLE_BUTTON_CHOICE) { + bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); + while (clean == LCD_MIDDLE_BUTTON_CHOICE) { load_filament_final_feed(); st_synchronize(); - clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LEFT_BUTTON_CHOICE); + clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); } } @@ -3193,23 +3193,25 @@ int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allo void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr) { lcd_set_cursor(0, 3); - lcd_print(selected == LEFT_BUTTON_CHOICE ? '>': ' '); + lcd_print(selected == LCD_LEFT_BUTTON_CHOICE ? '>': ' '); lcd_puts_P(first_choice); if (third_choice) { lcd_set_cursor(7, 3); - lcd_print(selected == MIDDLE_BUTTON_CHOICE ? '>': ' '); + lcd_print(selected == LCD_MIDDLE_BUTTON_CHOICE ? '>': ' '); lcd_puts_P(second_choice); lcd_set_cursor(13, 3); - lcd_print(selected == RIGHT_BUTTON_CHOICE ? '>': ' '); + lcd_print(selected == LCD_RIGHT_BUTTON_CHOICE ? '>': ' '); lcd_puts_P(third_choice); } else { lcd_set_cursor(second_col, 3); - lcd_print(selected == MIDDLE_BUTTON_CHOICE ? '>': ' '); + lcd_print(selected == LCD_MIDDLE_BUTTON_CHOICE ? '>': ' '); lcd_puts_P(second_choice); } } +typedef ; + //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting bool, if true, allows time outing of the screen @@ -3231,25 +3233,24 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m bool multi_screen = msg_next != NULL; lcd_set_custom_characters_nextpage(); - // Initial status/prompt on single-screen messages - uint8_t current_selection = default_selection; - if (!msg_next) { - lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); - } - // Wait for user confirmation or a timeout. - unsigned long previous_millis_cmd = _millis(); - int8_t enc_dif = lcd_encoder_diff; - lcd_consume_click(); - KEEPALIVE_STATE(PAUSED_FOR_USER); - for (;;) { - for (uint8_t i = 0; i < 100; ++i) { - delay_keep_alive(50); - if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) - { - return -1; - } - manage_heater(); - manage_inactivity(true); + // Initial status/prompt on single-screen messages + uint8_t current_selection = default_selection; + if (!msg_next) { + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); + } + // Wait for user confirmation or a timeout. + unsigned long previous_millis_cmd = _millis(); + int8_t enc_dif = lcd_encoder_diff; + lcd_consume_click(); + KEEPALIVE_STATE(PAUSED_FOR_USER); + for (;;) { + for (uint8_t i = 0; i < 100; ++i) { + delay_keep_alive(50); + if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) { + return -1; + } + manage_heater(); + manage_inactivity(true); if (multiscreen_cb) { @@ -3848,7 +3849,7 @@ void lcd_v2_calibration() } else { - loaded = !lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, LEFT_BUTTON_CHOICE); + loaded = !lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, LCD_LEFT_BUTTON_CHOICE); lcd_update_enabled = true; } @@ -4040,8 +4041,8 @@ void lcd_wizard(WizState state) lcd_show_fullscreen_message_and_wait_P(_T(MSG_WIZARD_WELCOME_SHIPPING)); state = S::Restore; } else { - wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_WIZARD_WELCOME), false, LEFT_BUTTON_CHOICE); - if (wizard_event == LEFT_BUTTON_CHOICE) { + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_WIZARD_WELCOME), false, LCD_LEFT_BUTTON_CHOICE); + if (wizard_event == LCD_LEFT_BUTTON_CHOICE) { state = S::Restore; eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); } else { // MIDDLE_BUTTON_CHOICE @@ -4080,7 +4081,7 @@ void lcd_wizard(WizState state) lcd_show_fullscreen_message_and_wait_P(_i("Now remove the test print from steel sheet."));////MSG_REMOVE_TEST_PRINT c=20 r=4 lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8 wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); - if (wizard_event == MIDDLE_BUTTON_CHOICE) { + if (wizard_event == LCD_MIDDLE_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); } wizard_event = gcode_M45(true, 0); @@ -4104,7 +4105,7 @@ void lcd_wizard(WizState state) setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); setTargetBed(PLA_PREHEAT_HPB_TEMP); wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true); - if (wizard_event == LEFT_BUTTON_CHOICE) { + if (wizard_event == LCD_LEFT_BUTTON_CHOICE) { state = S::Lay1CalCold; } else { // MIDDLE_BUTTON_CHOICE if(MMU2::mmu2.Enabled()) state = S::LoadFilCold; @@ -4137,7 +4138,7 @@ void lcd_wizard(WizState state) break; case S::RepeatLay1Cal: wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Do you want to repeat last step to readjust distance between nozzle and heatbed?"), false);////MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 - if (wizard_event == LEFT_BUTTON_CHOICE) + if (wizard_event == LCD_LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_i("Please clean heatbed and then press the knob."));////MSG_WIZARD_CLEAN_HEATBED c=20 r=8 state = S::Lay1CalCold; @@ -5092,7 +5093,7 @@ char reset_menu() { static void lcd_disable_farm_mode() { int8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true); //allow timeouting, default no - if (disable == LEFT_BUTTON_CHOICE) + if (disable == LCD_LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("G99")); lcd_return_to_status(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index d097165c5..43922721a 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -64,11 +64,10 @@ void lcd_crash_detect_enable(); void lcd_crash_detect_disable(); #endif -enum ButtonChoice -{ - LEFT_BUTTON_CHOICE = 0, - MIDDLE_BUTTON_CHOICE = 1, - RIGHT_BUTTON_CHOICE = 2, +enum LCDButtonChoice : uint_fast8_t { + LCD_LEFT_BUTTON_CHOICE = 0, + LCD_MIDDLE_BUTTON_CHOICE = 1, + LCD_RIGHT_BUTTON_CHOICE = 2, }; extern const char* lcd_display_message_fullscreen_P(const char *msg); @@ -78,7 +77,7 @@ extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); // 1: no, 0: yes, -1: timeouted -extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); +extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, From f04d83fc4cdc1d5390feb2da22f9c76341a244ad Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 27 May 2022 07:27:57 +0200 Subject: [PATCH 104/319] Update printer's type (MMU/non-MMU) at runtime + reformat utils.cpp --- Firmware/Marlin_main.cpp | 3 +- Firmware/util.cpp | 378 ++++++++++++++++++--------------------- 2 files changed, 181 insertions(+), 200 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1c09e52ec..2046a420d 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1621,7 +1621,6 @@ void setup() #endif //UVLO_SUPPORT fCheckModeInit(); - fSetMmuMode(MMU2::mmu2.Enabled()); KEEPALIVE_STATE(NOT_BUSY); #ifdef WATCHDOG wdt_enable(WDTO_4S); @@ -8140,6 +8139,8 @@ Sigma_Exit: { uint16_t nPrinterModel; nPrinterModel=(uint16_t)code_value_long(); + // based on current state of MMU (active/stopped/connecting) perform a runtime update of the printer type + fSetMmuMode(MMU2::mmu2.Enabled()); printer_model_check(nPrinterModel); } else if(code_seen('Q')) diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 3a0203b19..2576967eb 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -227,7 +227,6 @@ void update_current_firmware_version_to_eeprom() } -//-// #define MSG_PRINT_CHECKING_FAILED_TIMEOUT 30 ClNozzleDiameter oNozzleDiameter=ClNozzleDiameter::_Diameter_400; @@ -236,207 +235,192 @@ ClCheckModel oCheckModel=ClCheckModel::_None; ClCheckVersion oCheckVersion=ClCheckVersion::_None; ClCheckGcode oCheckGcode=ClCheckGcode::_None; -void fCheckModeInit() -{ -oCheckMode=(ClCheckMode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE); -if(oCheckMode==ClCheckMode::_Undef) - { - oCheckMode=ClCheckMode::_Warn; - eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode); - } -if(farm_mode) - { - oCheckMode=ClCheckMode::_Strict; - if(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)==EEPROM_EMPTY_VALUE16) - eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,EEPROM_NOZZLE_DIAMETER_uM_DEFAULT); - } -oNozzleDiameter=(ClNozzleDiameter)eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER); -if((oNozzleDiameter==ClNozzleDiameter::_Diameter_Undef)&& !farm_mode) - { - oNozzleDiameter=ClNozzleDiameter::_Diameter_400; - eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter); - eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,EEPROM_NOZZLE_DIAMETER_uM_DEFAULT); - } -oCheckModel=(ClCheckModel)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODEL); -if(oCheckModel==ClCheckModel::_Undef) - { - oCheckModel=ClCheckModel::_Warn; - eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel); - } -oCheckVersion=(ClCheckVersion)eeprom_read_byte((uint8_t*)EEPROM_CHECK_VERSION); -if(oCheckVersion==ClCheckVersion::_Undef) - { - oCheckVersion=ClCheckVersion::_Warn; - eeprom_update_byte((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion); - } -oCheckGcode=(ClCheckGcode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_GCODE); -if(oCheckGcode==ClCheckGcode::_Undef) - { - oCheckGcode=ClCheckGcode::_Warn; - eeprom_update_byte((uint8_t*)EEPROM_CHECK_GCODE,(uint8_t)oCheckGcode); - } +void fCheckModeInit() { + oCheckMode = (ClCheckMode)eeprom_read_byte((uint8_t *)EEPROM_CHECK_MODE); + if (oCheckMode == ClCheckMode::_Undef) { + oCheckMode = ClCheckMode::_Warn; + eeprom_update_byte((uint8_t *)EEPROM_CHECK_MODE, (uint8_t)oCheckMode); + } + if (farm_mode) { + oCheckMode = ClCheckMode::_Strict; + if (eeprom_read_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM) == EEPROM_EMPTY_VALUE16) + eeprom_update_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM, EEPROM_NOZZLE_DIAMETER_uM_DEFAULT); + } + oNozzleDiameter = (ClNozzleDiameter)eeprom_read_byte((uint8_t *)EEPROM_NOZZLE_DIAMETER); + if ((oNozzleDiameter == ClNozzleDiameter::_Diameter_Undef) && !farm_mode) { + oNozzleDiameter = ClNozzleDiameter::_Diameter_400; + eeprom_update_byte((uint8_t *)EEPROM_NOZZLE_DIAMETER, (uint8_t)oNozzleDiameter); + eeprom_update_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM, EEPROM_NOZZLE_DIAMETER_uM_DEFAULT); + } + oCheckModel = (ClCheckModel)eeprom_read_byte((uint8_t *)EEPROM_CHECK_MODEL); + if (oCheckModel == ClCheckModel::_Undef) { + oCheckModel = ClCheckModel::_Warn; + eeprom_update_byte((uint8_t *)EEPROM_CHECK_MODEL, (uint8_t)oCheckModel); + } + oCheckVersion = (ClCheckVersion)eeprom_read_byte((uint8_t *)EEPROM_CHECK_VERSION); + if (oCheckVersion == ClCheckVersion::_Undef) { + oCheckVersion = ClCheckVersion::_Warn; + eeprom_update_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)oCheckVersion); + } + oCheckGcode = (ClCheckGcode)eeprom_read_byte((uint8_t *)EEPROM_CHECK_GCODE); + if (oCheckGcode == ClCheckGcode::_Undef) { + oCheckGcode = ClCheckGcode::_Warn; + eeprom_update_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)oCheckGcode); + } } -void nozzle_diameter_check(uint16_t nDiameter) -{ -uint16_t nDiameter_um; +void nozzle_diameter_check(uint16_t nDiameter) { + uint16_t nDiameter_um; -if(oCheckMode==ClCheckMode::_None) - return; -nDiameter_um=eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM); -if(nDiameter==nDiameter_um) - return; -//SERIAL_ECHO_START; -//SERIAL_ECHOLNPGM("Printer nozzle diameter differs from the G-code ..."); -//SERIAL_ECHOPGM("actual : "); -//SERIAL_ECHOLN((float)(nDiameter_um/1000.0)); -//SERIAL_ECHOPGM("expected: "); -//SERIAL_ECHOLN((float)(nDiameter/1000.0)); -switch(oCheckMode) - { - case ClCheckMode::_Warn: -// lcd_show_fullscreen_message_and_wait_P(_i("Printer nozzle diameter differs from the G-code. Continue?")); -lcd_display_message_fullscreen_P(_i("Printer nozzle diameter differs from the G-code. Continue?"));////MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT); -//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery -lcd_update_enable(true); // display / status-line recovery - break; - case ClCheckMode::_Strict: - lcd_show_fullscreen_message_and_wait_P(_i("Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."));////MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 - lcd_print_stop(); - break; - case ClCheckMode::_None: - case ClCheckMode::_Undef: - break; - } -if(!farm_mode) - { - bSettings=false; // flag ('fake parameter') for 'lcd_hw_setup_menu()' function - menu_submenu(lcd_hw_setup_menu); - } + if (oCheckMode == ClCheckMode::_None) + return; + nDiameter_um = eeprom_read_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM); + if (nDiameter == nDiameter_um) + return; + // SERIAL_ECHO_START; + // SERIAL_ECHOLNPGM("Printer nozzle diameter differs from the G-code ..."); + // SERIAL_ECHOPGM("actual : "); + // SERIAL_ECHOLN((float)(nDiameter_um/1000.0)); + // SERIAL_ECHOPGM("expected: "); + // SERIAL_ECHOLN((float)(nDiameter/1000.0)); + switch (oCheckMode) { + case ClCheckMode::_Warn: + // lcd_show_fullscreen_message_and_wait_P(_i("Printer nozzle diameter differs from the G-code. Continue?")); + lcd_display_message_fullscreen_P(_i("Printer nozzle diameter differs from the G-code. Continue?")); ////MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 + lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT); + //???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery + lcd_update_enable(true); // display / status-line recovery + break; + case ClCheckMode::_Strict: + lcd_show_fullscreen_message_and_wait_P(_i( + "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled.")); ////MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 + lcd_print_stop(); + break; + case ClCheckMode::_None: + case ClCheckMode::_Undef: + break; + } + if (!farm_mode) { + bSettings = false; // flag ('fake parameter') for 'lcd_hw_setup_menu()' function + menu_submenu(lcd_hw_setup_menu); + } } -void printer_model_check(uint16_t nPrinterModel) -{ -if(oCheckModel==ClCheckModel::_None) - return; -if(nPrinterModel==nPrinterType) - return; -//SERIAL_ECHO_START; -//SERIAL_ECHOLNPGM("Printer model differs from the G-code ..."); -//SERIAL_ECHOPGM("actual : "); -//SERIAL_ECHOLN(nPrinterType); -//SERIAL_ECHOPGM("expected: "); -//SERIAL_ECHOLN(nPrinterModel); -switch(oCheckModel) - { - case ClCheckModel::_Warn: -// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?")); -lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE)); -lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT); -//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery -lcd_update_enable(true); // display / status-line recovery - break; - case ClCheckModel::_Strict: - lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED)); - lcd_print_stop(); - break; - case ClCheckModel::_None: - case ClCheckModel::_Undef: - break; - } +void printer_model_check(uint16_t nPrinterModel) { + if (oCheckModel == ClCheckModel::_None) + return; + if (nPrinterModel == nPrinterType) + return; + // SERIAL_ECHO_START; + // SERIAL_ECHOLNPGM("Printer model differs from the G-code ..."); + // SERIAL_ECHOPGM("actual : "); + // SERIAL_ECHOLN(nPrinterType); + // SERIAL_ECHOPGM("expected: "); + // SERIAL_ECHOLN(nPrinterModel); + switch (oCheckModel) { + case ClCheckModel::_Warn: + // lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?")); + lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE)); + lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT); + //???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery + lcd_update_enable(true); // display / status-line recovery + break; + case ClCheckModel::_Strict: + lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED)); + lcd_print_stop(); + break; + case ClCheckModel::_None: + case ClCheckModel::_Undef: + break; + } } -uint8_t mCompareValue(uint16_t nX,uint16_t nY) -{ -if(nX>nY) - return((uint8_t)ClCompareValue::_Greater); -if(nX nY) + return ((uint8_t)ClCompareValue::_Greater); + if (nX < nY) + return ((uint8_t)ClCompareValue::_Less); + return ((uint8_t)ClCompareValue::_Equal); } -void fw_version_check(const char *pVersion) -{ -uint16_t aVersion[4]; -uint8_t nCompareValueResult; +void fw_version_check(const char *pVersion) { + uint16_t aVersion[4]; + uint8_t nCompareValueResult; -if(oCheckVersion==ClCheckVersion::_None) - return; -parse_version(pVersion,aVersion); -nCompareValueResult=mCompareValue(aVersion[0],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MAJOR))<<6; -nCompareValueResult+=mCompareValue(aVersion[1],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MINOR))<<4; -nCompareValueResult+=mCompareValue(aVersion[2],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_REVISION))<<2; -nCompareValueResult+=mCompareValue(aVersion[3],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_FLAVOR)); -if(nCompareValueResult==COMPARE_VALUE_EQUAL) - return; -if((nCompareValueResult cmdqueue ??? -#define PRINTER_NAME_LENGTH ((sizeof(PRINTER_MMU_NAME)>sizeof(PRINTER_NAME))?(sizeof(PRINTER_MMU_NAME)-1):(sizeof(PRINTER_NAME)-1)) +#define PRINTER_NAME_LENGTH ((sizeof(PRINTER_MMU_NAME) > sizeof(PRINTER_NAME)) ? (sizeof(PRINTER_MMU_NAME) - 1) : (sizeof(PRINTER_NAME) - 1)) #define GCODE_DELIMITER '"' #define ELLIPSIS "..." -char* code_string(const char* pStr,size_t* nLength) -{ +char *code_string(char *pStr, size_t *nLength) { char* pStrBegin; char* pStrEnd; @@ -448,16 +432,16 @@ pStrEnd=strchr(pStrBegin,GCODE_DELIMITER); if(!pStrEnd) return(NULL); *nLength=pStrEnd-pStrBegin; +pStrBegin[*nLength] = '\0'; return pStrBegin; } -void printer_smodel_check(const char* pStrPos) -{ +void printer_smodel_check(char *pStrPos) { char* pResult; size_t nLength,nPrinterNameLength; nPrinterNameLength = strlen_P(sPrinterName); -pResult = code_string(pStrPos,&nLength); +pResult=code_string(pStrPos,&nLength); if(pResult != NULL && nLength == nPrinterNameLength) { // Only compare them if the lengths match @@ -483,20 +467,16 @@ lcd_update_enable(true); // display / status-line recovery } } -void fSetMmuMode(bool bMMu) -{ -if(bMMu) - { - nPrinterType=pgm_read_word(&_nPrinterMmuType); - sPrinterName=_sPrinterMmuName; - } -else { - nPrinterType=pgm_read_word(&_nPrinterType); - sPrinterName=_sPrinterName; - } +void fSetMmuMode(bool bMMu) { + if (bMMu) { + nPrinterType = pgm_read_word(&_nPrinterMmuType); + sPrinterName = _sPrinterMmuName; + } else { + nPrinterType = pgm_read_word(&_nPrinterType); + sPrinterName = _sPrinterName; + } } - void ip4_to_str(char* dest, uint8_t* IP) { sprintf_P(dest, PSTR("%u.%u.%u.%u"), IP[0], IP[1], IP[2], IP[3]); From d7270e0b80cab11f493210dc1dc50d85ee190e98 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 30 May 2022 09:22:13 +0200 Subject: [PATCH 105/319] Fix lang build --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index bc18fd90a..f90b6d4bf 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3656,7 +3656,7 @@ void menu_setlang(unsigned char lang) { if (!lang_select(lang)) { - if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, LEFT_BUTTON_CHOICE) == LEFT_BUTTON_CHOICE)////MSG_COPY_SEL_LANG c=20 r=3 + if (lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language?"), false, LCD_LEFT_BUTTON_CHOICE) == LCD_LEFT_BUTTON_CHOICE)////MSG_COPY_SEL_LANG c=20 r=3 lang_boot_update_start(lang); lcd_update_enable(true); lcd_clear(); From eed816d9de6f14554f8628b2c625b8901b6c4daf Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 30 May 2022 09:24:32 +0200 Subject: [PATCH 106/319] Fix build --- Firmware/ultralcd.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f90b6d4bf..edd864aef 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3210,8 +3210,6 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const } } -typedef ; - //! @brief Show single or multiple screen message with two possible choices and wait with possible timeout //! @param msg Message to show. If NULL, do not clear the screen and handle choice selection only. //! @param allow_timeouting bool, if true, allows time outing of the screen From 0e75a03c8c6203834d77bc775ac95bc1292af1af Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 31 May 2022 09:20:51 +0200 Subject: [PATCH 107/319] Reuse FSensor runout blocking impl. throughout the whole FW --- Firmware/Filament_sensor.cpp | 24 +++++- Firmware/Filament_sensor.h | 9 ++ Firmware/Marlin_main.cpp | 157 +++++++++++++++-------------------- Firmware/mmu2.cpp | 6 +- Firmware/mmu2_fsensor.cpp | 17 ---- Firmware/mmu2_fsensor.h | 9 +- Firmware/ultralcd.cpp | 17 +--- 7 files changed, 104 insertions(+), 135 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 9c87b27df..ab9c81228 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -11,13 +11,29 @@ #include "ultralcd.h" #ifdef FILAMENT_SENSOR -#if FILAMENT_SENSOR_TYPE == FSENSOR_IR +FSensorBlockRunout::FSensorBlockRunout() { + fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. + fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. +#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) + fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. +#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +} + +FSensorBlockRunout::~FSensorBlockRunout() { + fsensor.settings_init(); // restore filament runout state. +} + +# if FILAMENT_SENSOR_TYPE == FSENSOR_IR IR_sensor fsensor; -#elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG +# elif FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG IR_sensor_analog fsensor; -#elif FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 +# elif FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 PAT9125_sensor fsensor; -#endif +# endif + +#else // FILAMENT_SENSOR +FSensorBlockRunout::FSensorBlockRunout() { } +FSensorBlockRunout::~FSensorBlockRunout() { } #endif // FILAMENT_SENSOR void Filament_sensor::setEnabled(bool enabled) { diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index e541e5e25..65cd01732 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -11,6 +11,15 @@ #define FSENSOR_IR_ANALOG 2 #define FSENSOR_PAT9125 3 +/// Can be used to block printer's filament sensor handling - to avoid errorneous injecting of M600 +/// while doing a toolchange with the MMU +/// In case of "no filament sensor" these methods default to an empty implementation +class FSensorBlockRunout { +public: + FSensorBlockRunout(); + ~FSensorBlockRunout(); +}; + #ifdef FILAMENT_SENSOR class Filament_sensor { public: diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2046a420d..112e072d8 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3573,101 +3573,86 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float else unload_filament(true); // unload filament for single material (used also in M702) st_synchronize(); // finish moves - -#ifdef FILAMENT_SENSOR - fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. - fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. -#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) - fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. -#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) -#endif - - if (!MMU2::mmu2.Enabled()) { - KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_change_fil_state = - lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LCD_LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 - if (lcd_change_fil_state == LCD_MIDDLE_BUTTON_CHOICE) { - lcd_clear(); - lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); - current_position[X_AXIS] -= 100; - plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED); - st_synchronize(); - lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually.")); ////MSG_CHECK_IDLER c=20 r=5 - } - } - - if (MMU2::mmu2.Enabled()) { - if (!automatic) { - if (saved_printing){ - // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it - MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), false); - } - mmu_M600_wait_and_beep(); - if (saved_printing) { + { + FSensorBlockRunout fsBlockRunout; + + if (!MMU2::mmu2.Enabled()) { + KEEPALIVE_STATE(PAUSED_FOR_USER); + lcd_change_fil_state = + lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LCD_LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 + if (lcd_change_fil_state == LCD_MIDDLE_BUTTON_CHOICE) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); -//@@TODO mmu_command(MmuCmd::R0); -// manage_response(false, false); + current_position[X_AXIS] -= 100; + plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED); + st_synchronize(); + lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually.")); ////MSG_CHECK_IDLER c=20 r=5 } } - mmu_M600_load_filament(automatic, HotendTempBckp); - } else - M600_load_filament(); - - if (!automatic) - M600_check_state(HotendTempBckp); - - lcd_update_enable(true); - - // Not let's go back to print - fanSpeed = fanSpeedBckp; - - // Feed a little of filament to stabilize pressure - if (!automatic) { - current_position[E_AXIS] += FILAMENTCHANGE_RECFEED; - plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); + + if (MMU2::mmu2.Enabled()) { + if (!automatic) { + if (saved_printing){ + // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it + MMU2::mmu2.eject_filament(MMU2::mmu2.get_current_tool(), false); + } + mmu_M600_wait_and_beep(); + if (saved_printing) { + lcd_clear(); + lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); +//@@TODO mmu_command(MmuCmd::R0); +// manage_response(false, false); + } + } + mmu_M600_load_filament(automatic, HotendTempBckp); + } else + M600_load_filament(); + + if (!automatic) + M600_check_state(HotendTempBckp); + + lcd_update_enable(true); + + // Not let's go back to print + fanSpeed = fanSpeedBckp; + + // Feed a little of filament to stabilize pressure + if (!automatic) { + current_position[E_AXIS] += FILAMENTCHANGE_RECFEED; + plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); + } + + // Move XY back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); + st_synchronize(); + // Move Z back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder); + st_synchronize(); + + // Set E position to original + plan_set_e_position(lastpos[E_AXIS]); + + memcpy(current_position, lastpos, sizeof(lastpos)); + set_destination_to_current(); + + // Recover feed rate + feedmultiply = feedmultiplyBckp; + char cmd[9]; + sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); + enquecommand(cmd); + } - - // Move XY back - plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); - st_synchronize(); - // Move Z back - plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder); - st_synchronize(); - - // Set E position to original - plan_set_e_position(lastpos[E_AXIS]); - - memcpy(current_position, lastpos, sizeof(lastpos)); - set_destination_to_current(); - - // Recover feed rate - feedmultiply = feedmultiplyBckp; - char cmd[9]; - sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); - enquecommand(cmd); - -#ifdef FILAMENT_SENSOR - fsensor.settings_init(); -#endif - + lcd_setstatuspgm(MSG_WELCOME); custom_message_type = CustomMsg::Status; } void gcode_M701(uint8_t mmuSlotIndex){ printf_P(PSTR("gcode_M701 begin\n")); - -#ifdef FILAMENT_SENSOR - fsensor.setRunoutEnabled(false); // suppress filament runouts while loading filament. - fsensor.setAutoLoadEnabled(false); // suppress filament autoloads while loading filament. -#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) - fsensor.setJamDetectionEnabled(false); // suppress filament jam detection while loading filament. -#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) -#endif - - prusa_statistics(22); - } + + FSensorBlockRunout fsBlockRunout; + + prusa_statistics(22); if (MMU2::mmu2.Enabled() && mmuSlotIndex < MMU_FILAMENT_COUNT) { MMU2::mmu2.load_filament(mmuSlotIndex); // loads current extruder @@ -3705,10 +3690,6 @@ void gcode_M701(uint8_t mmuSlotIndex){ } eFilamentAction = FilamentAction::None; - -#ifdef FILAMENT_SENSOR - fsensor.settings_init(); // restore filament runout state. -#endif } /** * @brief Get serial number from 32U2 processor diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 7f4ab5b05..31e825ba4 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -198,7 +198,7 @@ bool MMU2::tool_change(uint8_t index) { if (index != extruder) { ReportingRAII rep(CommandInProgress::ToolChange); - BlockRunoutRAII blockRunout; + FSensorBlockRunout blockRunout; st_synchronize(); @@ -227,7 +227,7 @@ bool MMU2::tool_change(char code, uint8_t slot) { if( ! WaitForMMUReady()) return false; - BlockRunoutRAII blockRunout; + FSensorBlockRunout blockRunout; switch (code) { case '?': { @@ -333,7 +333,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { { // used for MMU-menu operation "Load to Nozzle" ReportingRAII rep(CommandInProgress::ToolChange); - BlockRunoutRAII blockRunout; + FSensorBlockRunout blockRunout; if( extruder != MMU2_NO_TOOL ){ // we already have some filament loaded - free it + shape its tip properly filament_ramming(); diff --git a/Firmware/mmu2_fsensor.cpp b/Firmware/mmu2_fsensor.cpp index 48fe639a9..eee1b68bd 100644 --- a/Firmware/mmu2_fsensor.cpp +++ b/Firmware/mmu2_fsensor.cpp @@ -7,21 +7,4 @@ FilamentState WhereIsFilament(){ return fsensor.getFilamentPresent() ? FilamentState::AT_FSENSOR : FilamentState::NOT_PRESENT; } - -BlockRunoutRAII::BlockRunoutRAII() { -#ifdef FILAMENT_SENSOR - fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. - fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. -#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) - fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. -#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) -#endif -} - -BlockRunoutRAII::~BlockRunoutRAII() { -#ifdef FILAMENT_SENSOR - fsensor.settings_init(); // restore filament runout state. -#endif -} - } // namespace MMU2 diff --git a/Firmware/mmu2_fsensor.h b/Firmware/mmu2_fsensor.h index 9450c206c..5135aedf1 100644 --- a/Firmware/mmu2_fsensor.h +++ b/Firmware/mmu2_fsensor.h @@ -1,5 +1,6 @@ #pragma once #include +#include "Filament_sensor.h" namespace MMU2 { @@ -13,12 +14,4 @@ enum class FilamentState : uint_fast8_t { FilamentState WhereIsFilament(); -/// Can be used to block printer's filament sensor handling - to avoid errorneous injecting of M600 -/// while doing a toolchange with the MMU -class BlockRunoutRAII { -public: - BlockRunoutRAII(); - ~BlockRunoutRAII(); -}; - } // namespace MMU2 diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index edd864aef..035187d1f 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5196,14 +5196,7 @@ void unload_filament(bool automatic) custom_message_type = CustomMsg::FilamentLoading; lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); -#ifdef FILAMENT_SENSOR - fsensor.setRunoutEnabled(false); //suppress filament runouts while loading filament. - fsensor.setAutoLoadEnabled(false); //suppress filament autoloads while loading filament. -#if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) - fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. -#endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) -#endif - + FSensorBlockRunout fsBlockRunout; raise_z_above(automatic? MIN_Z_FOR_SWAP: MIN_Z_FOR_UNLOAD); // extr_unload2(); @@ -5241,10 +5234,6 @@ void unload_filament(bool automatic) custom_message_type = CustomMsg::Status; eFilamentAction = FilamentAction::None; - -#ifdef FILAMENT_SENSOR - fsensor.settings_init(); //restore filament runout state. -#endif } #include "xflash.h" @@ -6209,8 +6198,7 @@ void printf_IRSensorAnalogBoardChange(){ static bool lcd_selftest_IRsensor(bool bStandalone) { bool ret = false; - fsensor.setAutoLoadEnabled(false); - fsensor.setRunoutEnabled(false); + FSensorBlockRunout fsBlockRunout; IR_sensor_analog::SensorRevision oldSensorRevision = fsensor.getSensorRevision(); IR_sensor_analog::SensorRevision newSensorRevision; uint16_t volt_IR_int = fsensor.getVoltRaw(); @@ -6236,7 +6224,6 @@ static bool lcd_selftest_IRsensor(bool bStandalone) } ret = true; exit: - fsensor.settings_init(); return ret; } From dc87bbae11cc8ea823d4b1b9afd13bdc133f82bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 3 Jun 2022 19:14:45 +0000 Subject: [PATCH 108/319] Fix compile error --- Firmware/mmu2_reporting.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 6e0a9b628..338efbee2 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -6,6 +6,7 @@ #include "ultralcd.h" #include "Filament_sensor.h" #include "language.h" +#include "temperature.h" namespace MMU2 { From ecb4d0804929c4406d1d791e72a3cd310fd4f242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 10:33:47 +0000 Subject: [PATCH 109/319] PFW-1318 Rewrite the implementation to be non-blocking --- Firmware/mmu2_reporting.cpp | 158 +++++++++++++++++++++++++++++++----- Firmware/ultralcd.h | 1 + 2 files changed, 137 insertions(+), 22 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 338efbee2..bbf5be9b4 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -7,6 +7,7 @@ #include "Filament_sensor.h" #include "language.h" #include "temperature.h" +#include "sound.h" namespace MMU2 { @@ -22,12 +23,8 @@ void EndReport(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::Status; } -// Callback which is called while the printer is -// waiting for the user to click a button option -static void ReportErrorHook_cb(void) +static void ReportErrorHookDynamicRender(void) { - //TODO: MK3S needs to request an update for the FINDA value - // if we want it to be updated live on the menu screen lcd_set_cursor(3, 2); lcd_printf_P(PSTR("%d"), mmu2.FindaDetectsFilament()); @@ -48,7 +45,7 @@ static void ReportErrorHook_cb(void) lcd_printf_P(PSTR("%d"), (int)(degHotend(0) + 0.5)); } -void ReportErrorHook(CommandInProgress cip, uint16_t ec) { +static void ReportErrorHookStaticRender(uint16_t ec) { //! Show an error screen //! When an MMU error occurs, the LCD content will look like this: //! |01234567890123456789| @@ -57,7 +54,6 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { //! |FI:1 FS:1 5>3 t201°| <- status line, t is thermometer symbol //! |>Retry >Done >MoreW| <- buttons const uint8_t ei = PrusaErrorCodeIndex(ec); - uint8_t choice_selected = 0; bool two_choices = false; // Read and determine what operations should be shown on the menu @@ -72,40 +68,158 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { two_choices = true; } -back_to_choices: lcd_clear(); lcd_update_enable(false); // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); - // Render the choices and store selection in 'choice_selected' - choice_selected = lcd_show_multiscreen_message_with_choices_and_wait_P( - NULL, // NULL, since title screen is not in PROGMEM - false, - two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, // beware - LEFT button on the LCD matches the MIDDLE button on the MMU! - _T(PrusaErrorButtonTitle(button_op_middle)), - _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), - two_choices ? nullptr : _T(PrusaErrorButtonMore()), - two_choices ? 10 : 7 // If two choices, allow the first choice to have more characters - ); + // Render static characters in third line + lcd_set_cursor(0, 2); + lcd_printf_P(PSTR("FI: FS: > %c %c"), LCD_STR_THERMOMETER[0], LCD_STR_DEGREE[0]); + + // Render the choices + lcd_show_choices_prompt_P(two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, _T(PrusaErrorButtonTitle(button_op_middle)), _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), two_choices ? 10 : 7, two_choices ? nullptr : _T(PrusaErrorButtonMore())); +} + +static uint8_t ReportErrorHookMonitor(uint16_t ec) { + const uint8_t ei = PrusaErrorCodeIndex(ec); + bool two_choices = false; + static int8_t enc_dif = 0; + + // Read and determine what operations should be shown on the menu + // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* + const uint8_t button_operation = PrusaErrorButtons(ei); + const uint8_t button_op_right = BUTTON_OP_RIGHT(button_operation); + const uint8_t button_op_middle = BUTTON_OP_MIDDLE(button_operation); + + // Check if the menu should have three or two choices + if (button_op_right == (uint8_t)ButtonOperations::NoOperation){ + // Two operations not specified, the error menu should only show two choices + two_choices = true; + } + + static int8_t current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + static int8_t choice_selected = -1; + + // Check if knob was rotated + if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { + if (two_choices == false) { // third_choice is not nullptr, safe to dereference + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { + // Rotating knob counter clockwise + current_selection--; + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_RIGHT_BUTTON_CHOICE) { + // Rotating knob clockwise + current_selection++; + } + } else { + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { + // Rotating knob counter clockwise + current_selection = LCD_LEFT_BUTTON_CHOICE; + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_MIDDLE_BUTTON_CHOICE) { + // Rotating knob clockwise + current_selection = LCD_MIDDLE_BUTTON_CHOICE; + } + } + + // Update '>' render only + lcd_set_cursor(0, 3); + lcd_print(current_selection == LCD_LEFT_BUTTON_CHOICE ? '>': ' '); + if (two_choices == false) + { + lcd_set_cursor(7, 3); + lcd_print(current_selection == LCD_MIDDLE_BUTTON_CHOICE ? '>': ' '); + lcd_set_cursor(13, 3); + lcd_print(current_selection == LCD_RIGHT_BUTTON_CHOICE ? '>': ' '); + } else { + lcd_set_cursor(10, 3); + lcd_print(current_selection == LCD_MIDDLE_BUTTON_CHOICE ? '>': ' '); + } + // Consume rotation event and make feedback sound + enc_dif = lcd_encoder_diff; + Sound_MakeSound(e_SOUND_TYPE_EncoderMove); + } + + // Check if knob was clicked and consume the event + if (lcd_clicked()) { + Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); + choice_selected = current_selection; + + // Reset current_selection + current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + } + + // return to loop() + if (choice_selected == -1) { // No selection, continue monitoring + return 0; + } if ((two_choices && choice_selected == LCD_MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected || (!two_choices && choice_selected == LCD_RIGHT_BUTTON_CHOICE)) // Three choices and right most button selected { // 'More' show error description lcd_show_fullscreen_message_and_wait_P(_T(PrusaErrorDesc(ei))); + current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + choice_selected = -1; + return 1; // Return back to the choice menu - goto back_to_choices; } else if(choice_selected == LCD_MIDDLE_BUTTON_CHOICE) { SetButtonResponse((ButtonOperations)button_op_right); + current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + choice_selected = -1; + return 2; } else { SetButtonResponse((ButtonOperations)button_op_middle); + current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + choice_selected = -1; + return 2; + } +} + +enum class ReportErrorHookStates : uint8_t { + RENDER_ERROR_SCREEN = 0, + MONITOR_SELECTION = 1, +}; + +enum ReportErrorHookStates ReportErrorHookState; + +void ReportErrorHook(CommandInProgress cip, uint16_t ec) { + + switch ((uint8_t)ReportErrorHookState) + { + case (uint8_t)ReportErrorHookStates::RENDER_ERROR_SCREEN: + // START + ReportErrorHookStaticRender(ec); + ReportErrorHookState = ReportErrorHookStates::MONITOR_SELECTION; + // Fall through + case (uint8_t)ReportErrorHookStates::MONITOR_SELECTION: + ReportErrorHookDynamicRender(); // Render dynamic characters + switch (ReportErrorHookMonitor(ec)) + { + case 0: + // No choice selected, return to loop() + break; + case 1: + // More button selected, change state + ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; + break; + case 2: + // Exit error screen and enable lcd updates + lcd_set_custom_characters(); + lcd_update_enable(true); + lcd_return_to_status(); + // Reset the state in case a new error is reported + ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; + break; + default: + break; + } + return; // Always return to loop() to let MMU trigger a call to ReportErrorHook again + break; + default: + break; } - // if any button/command selected, close the screen - lcd_update_enable(true); - lcd_return_to_status(); } void ReportProgressHook(CommandInProgress cip, uint16_t ec) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 43922721a..2f547338a 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -75,6 +75,7 @@ extern const char* lcd_display_message_fullscreen_P(const char *msg); extern void lcd_return_to_status(); extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); +void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); From 352a22c22e1a34548a8aa1d7055b2a094613ae1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 11:18:16 +0000 Subject: [PATCH 110/319] Cleanup: Remove unused callback Remove unused callback in lcd_show_multiscreen_message_with_choices_and_wait_P --- Firmware/ultralcd.cpp | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 035187d1f..f2a89bec6 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3227,9 +3227,9 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m const char * const first_choice, const char * const second_choice, const char * const third_choice, uint8_t second_col, void (*multiscreen_cb)(void)) { - const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; - bool multi_screen = msg_next != NULL; - lcd_set_custom_characters_nextpage(); + const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; + bool multi_screen = msg_next != NULL; + lcd_set_custom_characters_nextpage(); // Initial status/prompt on single-screen messages uint8_t current_selection = default_selection; @@ -3258,29 +3258,27 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { if (msg_next == NULL) { - if (third_choice) - { // third_choice is not nullptr, safe to dereference - if (enc_dif > lcd_encoder_diff && current_selection != LEFT_BUTTON_CHOICE) { + if (third_choice) { // third_choice is not nullptr, safe to dereference + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise current_selection--; - } else if (enc_dif < lcd_encoder_diff && current_selection != RIGHT_BUTTON_CHOICE) { + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_RIGHT_BUTTON_CHOICE) { // Rotating knob clockwise current_selection++; } } else { - if (enc_dif > lcd_encoder_diff && current_selection != LEFT_BUTTON_CHOICE) { + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { // Rotating knob counter clockwise - current_selection = LEFT_BUTTON_CHOICE; - } else if (enc_dif < lcd_encoder_diff && current_selection != MIDDLE_BUTTON_CHOICE) { + current_selection = LCD_LEFT_BUTTON_CHOICE; + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_MIDDLE_BUTTON_CHOICE) { // Rotating knob clockwise - current_selection = MIDDLE_BUTTON_CHOICE; + current_selection = LCD_MIDDLE_BUTTON_CHOICE; } } lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); enc_dif = lcd_encoder_diff; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); - } - else { + } else { Sound_MakeSound(e_SOUND_TYPE_BlindAlert); break; //turning knob skips waiting loop } @@ -3292,8 +3290,8 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m lcd_set_custom_characters(); lcd_update_enable(true); return current_selection; - } - else break; + } else + break; } } if (multi_screen) { From 5ced30d8ca828ce5c7d8c66e27654bfd41a6a542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 11:41:24 +0000 Subject: [PATCH 111/319] Cleanup: Add comments and reduce code size slightly --- Firmware/mmu2_reporting.cpp | 56 ++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index bbf5be9b4..2bb0ceba1 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -23,6 +23,10 @@ void EndReport(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::Status; } +/** + * @brief Renders any characters that will be updated live on the MMU error screen. + *Currently, this is FINDA and Filament Sensor status and Extruder temperature. + */ static void ReportErrorHookDynamicRender(void) { lcd_set_cursor(3, 2); @@ -45,6 +49,10 @@ static void ReportErrorHookDynamicRender(void) lcd_printf_P(PSTR("%d"), (int)(degHotend(0) + 0.5)); } +/** + * @brief Renders any characters that are static on the MMU error screen i.e. they don't change. + * @param[in] ec Error code + */ static void ReportErrorHookStaticRender(uint16_t ec) { //! Show an error screen //! When an MMU error occurs, the LCD content will look like this: @@ -82,7 +90,18 @@ static void ReportErrorHookStaticRender(uint16_t ec) { lcd_show_choices_prompt_P(two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, _T(PrusaErrorButtonTitle(button_op_middle)), _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), two_choices ? 10 : 7, two_choices ? nullptr : _T(PrusaErrorButtonMore())); } +/** + * @brief Monitors the LCD button selection without blocking MMU communication + * @param[in] ec Error code + * @return 0 if there is no knob click -- + * 1 if user clicked 'More' and firmware should render + * the error screen when ReportErrorHook is called next -- + * 2 if the user selects an operation and we would like + * to exit the error screen. The MMU will raise the menu + * again if the error is not solved. + */ static uint8_t ReportErrorHookMonitor(uint16_t ec) { + uint8_t ret = 0; const uint8_t ei = PrusaErrorCodeIndex(ec); bool two_choices = false; static int8_t enc_dif = 0; @@ -144,14 +163,9 @@ static uint8_t ReportErrorHookMonitor(uint16_t ec) { if (lcd_clicked()) { Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); choice_selected = current_selection; - - // Reset current_selection - current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; - } - - // return to loop() - if (choice_selected == -1) { // No selection, continue monitoring - return 0; + } else { + // continue monitoring + return ret; } if ((two_choices && choice_selected == LCD_MIDDLE_BUTTON_CHOICE) // Two choices and middle button selected @@ -159,22 +173,19 @@ static uint8_t ReportErrorHookMonitor(uint16_t ec) { { // 'More' show error description lcd_show_fullscreen_message_and_wait_P(_T(PrusaErrorDesc(ei))); - current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; - choice_selected = -1; - return 1; - - // Return back to the choice menu + ret = 1; } else if(choice_selected == LCD_MIDDLE_BUTTON_CHOICE) { SetButtonResponse((ButtonOperations)button_op_right); - current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; - choice_selected = -1; - return 2; + ret = 2; } else { SetButtonResponse((ButtonOperations)button_op_middle); - current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; - choice_selected = -1; - return 2; + ret = 2; } + + // Reset static variables to their default value + current_selection = two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE; + choice_selected = -1; + return ret; } enum class ReportErrorHookStates : uint8_t { @@ -184,12 +195,17 @@ enum class ReportErrorHookStates : uint8_t { enum ReportErrorHookStates ReportErrorHookState; +/** + * @brief Render MMU error screen on the LCD. This must be non-blocking + * and allow the MMU and printer to communicate with each other. + * @param[in] cip Command in progress + * @param[in] ec Error code + */ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { switch ((uint8_t)ReportErrorHookState) { case (uint8_t)ReportErrorHookStates::RENDER_ERROR_SCREEN: - // START ReportErrorHookStaticRender(ec); ReportErrorHookState = ReportErrorHookStates::MONITOR_SELECTION; // Fall through From 98d07e6a09ddccfea8c21e76135bffa122c2793c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 11:50:03 +0000 Subject: [PATCH 112/319] Call lcd_set_custom_characters_nextpage --- Firmware/mmu2_reporting.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 2bb0ceba1..0285b1827 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -76,8 +76,9 @@ static void ReportErrorHookStaticRender(uint16_t ec) { two_choices = true; } - lcd_clear(); + lcd_set_custom_characters_nextpage(); lcd_update_enable(false); + lcd_clear(); // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); From 7b91e73c8bbb0df7001b315dab2e5d77f63b8d5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 15:44:00 +0000 Subject: [PATCH 113/319] Fix issue where error screen updates too slowly in manage_response --- Firmware/mmu2.cpp | 12 ++++++++++-- Firmware/mmu2.h | 3 +++ Firmware/mmu2_reporting.cpp | 6 +++--- Firmware/mmu2_reporting.h | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 31e825ba4..0985073a9 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -91,6 +91,7 @@ MMU2::MMU2() , mmu_print_saved(false) , loadFilamentStarted(false) , loadingToNozzle(false) + , is_mmu_error_monitor_active(false) { } @@ -166,7 +167,14 @@ void MMU2::mmu_loop() { avoidRecursion = true; logicStepLastStatus = LogicStep(); // it looks like the mmu_loop doesn't need to be a blocking call - + + if (is_mmu_error_monitor_active) + { + // Call this every iteration to keep the knob rotation responsive + // This includes when mmu_loop is called within manage_response + ReportErrorHook((uint16_t)lastErrorCode); + } + avoidRecursion = false; } @@ -607,7 +615,7 @@ void MMU2::ReportError(ErrorCode ec) { // - report only changes of states (we can miss an error message) // - may be some combination of MMUAvailable + UseMMU flags and decide based on their state // Right now the filtering of MMU_NOT_RESPONDING is done in ReportErrorHook() as it is not a problem if mmu2.cpp - ReportErrorHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)ec); + ReportErrorHook((uint16_t)ec); if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index d08e8624a..f4fa41772 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -130,6 +130,9 @@ public: } } + // Helper variable to monitor knob in MMU error screen in blocking functions e.g. manage_response + bool is_mmu_error_monitor_active; + /// Method to read-only mmu_print_saved bool MMU_PRINT_SAVED() const { return mmu_print_saved; } diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 0285b1827..69bcc9b66 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -199,11 +199,9 @@ enum ReportErrorHookStates ReportErrorHookState; /** * @brief Render MMU error screen on the LCD. This must be non-blocking * and allow the MMU and printer to communicate with each other. - * @param[in] cip Command in progress * @param[in] ec Error code */ -void ReportErrorHook(CommandInProgress cip, uint16_t ec) { - +void ReportErrorHook(uint16_t ec) { switch ((uint8_t)ReportErrorHookState) { case (uint8_t)ReportErrorHookStates::RENDER_ERROR_SCREEN: @@ -211,6 +209,7 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { ReportErrorHookState = ReportErrorHookStates::MONITOR_SELECTION; // Fall through case (uint8_t)ReportErrorHookStates::MONITOR_SELECTION: + mmu2.is_mmu_error_monitor_active = true; ReportErrorHookDynamicRender(); // Render dynamic characters switch (ReportErrorHookMonitor(ec)) { @@ -227,6 +226,7 @@ void ReportErrorHook(CommandInProgress cip, uint16_t ec) { lcd_update_enable(true); lcd_return_to_status(); // Reset the state in case a new error is reported + mmu2.is_mmu_error_monitor_active = false; ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; break; default: diff --git a/Firmware/mmu2_reporting.h b/Firmware/mmu2_reporting.h index 5317153ba..fedc6c1d7 100644 --- a/Firmware/mmu2_reporting.h +++ b/Firmware/mmu2_reporting.h @@ -23,7 +23,7 @@ void BeginReport(CommandInProgress cip, uint16_t ec); void EndReport(CommandInProgress cip, uint16_t ec); /// Called when the MMU sends operation error (even repeatedly) -void ReportErrorHook(CommandInProgress cip, uint16_t ec); +void ReportErrorHook(uint16_t ec); /// Called when the MMU sends operation progress update void ReportProgressHook(CommandInProgress cip, uint16_t ec); From d49e858cf740c28dd76a2401f4b68c65277851f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 17:32:09 +0000 Subject: [PATCH 114/319] PFW-1323 Fix MMU error screen doesn't disappear when error resolved on the MMU --- Firmware/mmu2.h | 5 ++++- Firmware/mmu2_reporting.cpp | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index f4fa41772..1870c9933 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -119,7 +119,10 @@ public: /// @returns current state of FINDA (true=filament present, false=filament not present) inline bool FindaDetectsFilament()const { return logic.FindaPressed(); } - + + /// @returns Current error code + inline ErrorCode MMUCurrentErrorCode() const { return logic.Error(); } + /// @returns the version of the connected MMU FW. /// In the future we'll return the trully detected FW version Version GetMMUFWVersion()const { diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 69bcc9b66..25d463e14 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -190,8 +190,9 @@ static uint8_t ReportErrorHookMonitor(uint16_t ec) { } enum class ReportErrorHookStates : uint8_t { - RENDER_ERROR_SCREEN = 0, - MONITOR_SELECTION = 1, + RENDER_ERROR_SCREEN = 0, + MONITOR_SELECTION = 1, + DISMISS_ERROR_SCREEN = 2, }; enum ReportErrorHookStates ReportErrorHookState; @@ -202,6 +203,14 @@ enum ReportErrorHookStates ReportErrorHookState; * @param[in] ec Error code */ void ReportErrorHook(uint16_t ec) { + if (mmu2.MMUCurrentErrorCode() == ErrorCode::OK) + { + // If the error code suddenly changes to OK, that means + // a button was pushed on the MMU and the LCD should + // dismiss the error screen until MMU raises a new error + ReportErrorHookState = ReportErrorHookStates::DISMISS_ERROR_SCREEN; + } + switch ((uint8_t)ReportErrorHookState) { case (uint8_t)ReportErrorHookStates::RENDER_ERROR_SCREEN: @@ -234,6 +243,14 @@ void ReportErrorHook(uint16_t ec) { } return; // Always return to loop() to let MMU trigger a call to ReportErrorHook again break; + case (uint8_t)ReportErrorHookStates::DISMISS_ERROR_SCREEN: + lcd_set_custom_characters(); + lcd_update_enable(true); + lcd_return_to_status(); + // Reset the state in case a new error is reported + mmu2.is_mmu_error_monitor_active = false; + ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; + break; default: break; } From 268c96334b77379332d7867c8ceb59fdf00c1d62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 18:17:33 +0000 Subject: [PATCH 115/319] Cleanup: Pull out PrusaErrorCodeIndex Saves 8 bytes of flash --- Firmware/mmu2_reporting.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 25d463e14..fe0bef8c3 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -53,7 +53,7 @@ static void ReportErrorHookDynamicRender(void) * @brief Renders any characters that are static on the MMU error screen i.e. they don't change. * @param[in] ec Error code */ -static void ReportErrorHookStaticRender(uint16_t ec) { +static void ReportErrorHookStaticRender(uint8_t ei) { //! Show an error screen //! When an MMU error occurs, the LCD content will look like this: //! |01234567890123456789| @@ -61,7 +61,6 @@ static void ReportErrorHookStaticRender(uint16_t ec) { //! |prusa3d.com/ERR04504| <- URL 20 characters //! |FI:1 FS:1 5>3 t201°| <- status line, t is thermometer symbol //! |>Retry >Done >MoreW| <- buttons - const uint8_t ei = PrusaErrorCodeIndex(ec); bool two_choices = false; // Read and determine what operations should be shown on the menu @@ -101,9 +100,8 @@ static void ReportErrorHookStaticRender(uint16_t ec) { * to exit the error screen. The MMU will raise the menu * again if the error is not solved. */ -static uint8_t ReportErrorHookMonitor(uint16_t ec) { +static uint8_t ReportErrorHookMonitor(uint8_t ei) { uint8_t ret = 0; - const uint8_t ei = PrusaErrorCodeIndex(ec); bool two_choices = false; static int8_t enc_dif = 0; @@ -211,16 +209,18 @@ void ReportErrorHook(uint16_t ec) { ReportErrorHookState = ReportErrorHookStates::DISMISS_ERROR_SCREEN; } + const uint8_t ei = PrusaErrorCodeIndex(ec); + switch ((uint8_t)ReportErrorHookState) { case (uint8_t)ReportErrorHookStates::RENDER_ERROR_SCREEN: - ReportErrorHookStaticRender(ec); + ReportErrorHookStaticRender(ei); ReportErrorHookState = ReportErrorHookStates::MONITOR_SELECTION; // Fall through case (uint8_t)ReportErrorHookStates::MONITOR_SELECTION: mmu2.is_mmu_error_monitor_active = true; ReportErrorHookDynamicRender(); // Render dynamic characters - switch (ReportErrorHookMonitor(ec)) + switch (ReportErrorHookMonitor(ei)) { case 0: // No choice selected, return to loop() From cfc56af95c603ae968640c19b28127250cdfc211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 20:24:26 +0000 Subject: [PATCH 116/319] Cleanup: fix parameter comments --- Firmware/mmu2_reporting.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index fe0bef8c3..35b8e09bd 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -51,7 +51,7 @@ static void ReportErrorHookDynamicRender(void) /** * @brief Renders any characters that are static on the MMU error screen i.e. they don't change. - * @param[in] ec Error code + * @param[in] ei Error code index */ static void ReportErrorHookStaticRender(uint8_t ei) { //! Show an error screen @@ -92,7 +92,7 @@ static void ReportErrorHookStaticRender(uint8_t ei) { /** * @brief Monitors the LCD button selection without blocking MMU communication - * @param[in] ec Error code + * @param[in] ei Error code index * @return 0 if there is no knob click -- * 1 if user clicked 'More' and firmware should render * the error screen when ReportErrorHook is called next -- From bd932b3b1047467266e4982c0ed1f1e2bd465f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 5 Jun 2022 21:15:57 +0000 Subject: [PATCH 117/319] Cleanup: Fix two compiler warnings --- Firmware/mmu2.cpp | 4 ++-- Firmware/ultralcd.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 0985073a9..3ec5282a2 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -82,7 +82,8 @@ void WaitForHotendTargetTempBeep(){ MMU2 mmu2; MMU2::MMU2() - : logic(&mmu2Serial) + : is_mmu_error_monitor_active(false) + , logic(&mmu2Serial) , extruder(MMU2_NO_TOOL) , resume_position() , resume_hotend_temp(0) @@ -91,7 +92,6 @@ MMU2::MMU2() , mmu_print_saved(false) , loadFilamentStarted(false) , loadingToNozzle(false) - , is_mmu_error_monitor_active(false) { } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f2a89bec6..a03e0f847 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3190,7 +3190,7 @@ int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allo //! @param second_choice text caption of second possible choice //! @param second_col column on LCD where second choice is rendered. If third choice is set, this value is hardcoded to 7 //! @param third_choice text caption of third, optional, choice. -void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr) +void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice) { lcd_set_cursor(0, 3); lcd_print(selected == LCD_LEFT_BUTTON_CHOICE ? '>': ' '); From c1134e7e68e25fa088012c14133c3f61194c08d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 5 Jun 2022 21:16:14 +0000 Subject: [PATCH 118/319] Cleanup: Remove an old comment --- Firmware/mmu2_reporting.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 35b8e09bd..0e5c12d67 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -64,7 +64,6 @@ static void ReportErrorHookStaticRender(uint8_t ei) { bool two_choices = false; // Read and determine what operations should be shown on the menu - // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* const uint8_t button_operation = PrusaErrorButtons(ei); const uint8_t button_op_right = BUTTON_OP_RIGHT(button_operation); const uint8_t button_op_middle = BUTTON_OP_MIDDLE(button_operation); @@ -106,7 +105,6 @@ static uint8_t ReportErrorHookMonitor(uint8_t ei) { static int8_t enc_dif = 0; // Read and determine what operations should be shown on the menu - // Note: uint16_t is used here to avoid compiler warning. uint8_t is only half the size of void* const uint8_t button_operation = PrusaErrorButtons(ei); const uint8_t button_op_right = BUTTON_OP_RIGHT(button_operation); const uint8_t button_op_middle = BUTTON_OP_MIDDLE(button_operation); From b6b265e371ce91bd126776f14b4522a819a63109 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 7 Jun 2022 09:14:01 +0200 Subject: [PATCH 119/319] Hack around old MMU FW's msgs --- Firmware/mmu2/errors_list.h | 78 ++++++++++++++++---------------- Firmware/mmu2_protocol_logic.cpp | 41 ++++++++++++++++- 2 files changed, 78 insertions(+), 41 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 921b034d6..827fd8385 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -148,7 +148,7 @@ static const char titleCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ER static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); static const char titleINVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); static const char titleQUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); -static const char titleFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("FW UPDATE NEEDED"); +static const char titleFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); static const char titleFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); static const char titleUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); @@ -301,46 +301,46 @@ uint8_t constexpr Btns(ButtonOperations bMiddle, ButtonOperations bRight){ } static const uint8_t errorButtons[] PROGMEM = { - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - Btns(ButtonOperations::Retry, ButtonOperations::Continue), - - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FINDA_DIDNT_TRIGGER + Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FINDA_DIDNT_GO_OFF + Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FSENSOR_DIDNT_TRIGGER + Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FSENSOR_DIDNT_GO_OFF - Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), - Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), - Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU), - - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//PULLEY_STALLED + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//FSENSOR_TOO_EARLY + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//SELECTOR_CANNOT_HOME + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//SELECTOR_CANNOT_MOVE + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//IDLER_CANNOT_HOME + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//IDLER_CANNOT_MOVE - Btns(ButtonOperations::Unload, ButtonOperations::Continue), - Btns(ButtonOperations::StopPrint, ButtonOperations::RestartMMU), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::DisableMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation), - Btns(ButtonOperations::Retry, ButtonOperations::NoOperation), + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU),//PULLEY_WARNING_TMC_TOO_HOT + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU),//SELECTOR_WARNING_TMC_TOO_HOT + Btns(ButtonOperations::Continue, ButtonOperations::RestartMMU),//IDLER_WARNING_TMC_TOO_HOT + + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//PULLEY_TMC_OVERHEAT_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//SELECTOR_TMC_OVERHEAT_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//IDLER_TMC_OVERHEAT_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//PULLEY_TMC_DRIVER_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//SELECTOR_TMC_DRIVER_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//IDLER_TMC_DRIVER_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//PULLEY_TMC_DRIVER_RESET + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//SELECTOR_TMC_DRIVER_RESET + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//IDLER_TMC_DRIVER_RESET + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//PULLEY_TMC_UNDERVOLTAGE_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//SELECTOR_TMC_UNDERVOLTAGE_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//IDLER_TMC_UNDERVOLTAGE_ERROR + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//PULLEY_TMC_DRIVER_SHORTED + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//SELECTOR_TMC_DRIVER_SHORTED + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//IDLER_TMC_DRIVER_SHORTED + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//MMU_NOT_RESPONDING + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//COMMUNICATION_ERROR + + Btns(ButtonOperations::Unload, ButtonOperations::Continue),//FILAMENT_ALREADY_LOADED + Btns(ButtonOperations::StopPrint, ButtonOperations::RestartMMU),//INVALID_TOOL + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//QUEUE_FULL + Btns(ButtonOperations::DisableMMU, ButtonOperations::NoOperation),//FW_UPDATE_NEEDED + Btns(ButtonOperations::RestartMMU, ButtonOperations::NoOperation),//FW_RUNTIME_ERROR + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//UNLOAD_MANUALLY }; static_assert( sizeof(errorCodes) / sizeof(errorCodes[0]) == sizeof(errorDescs) / sizeof (errorDescs[0])); diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 1492b9058..35c65b1b6 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -56,10 +56,35 @@ StepStatus ProtocolLogic::ProcessUARTByte(uint8_t c) { } } +// searches for "ok\n" in the incoming serial data (that's the usual response of the old MMU FW) +struct OldMMUFWDetector { + uint8_t ok; + inline constexpr OldMMUFWDetector():ok(0) { } + + enum class State : uint8_t { MatchingPart, SomethingElse, Matched }; + + /// @returns true when "ok\n" gets detected + State Detect(uint8_t c){ + // consume old MMU FW's data if any -> avoid confusion of protocol decoder + if(ok == 0 && c == 'o'){ + ++ok; + return State::MatchingPart; + } else if(ok == 1 && c == 'k'){ + ++ok; + return State::MatchingPart; + } else if(ok == 2 && c == '\n'){ + return State::Matched; + } + return State::SomethingElse; + } +}; + StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { int bytesConsumed = 0; int c = -1; + OldMMUFWDetector oldMMUh4x0r; // old MMU FW hacker ;) + // try to consume as many rx bytes as possible (until a message has been completed) while((c = uart->read()) >= 0){ ++bytesConsumed; @@ -72,7 +97,19 @@ StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { return MessageReady; case DecodeStatus::NeedMoreData: break; - case DecodeStatus::Error: + case DecodeStatus::Error:{ + // consume old MMU FW's data if any -> avoid confusion of protocol decoder + auto old = oldMMUh4x0r.Detect(c); + if( old == OldMMUFWDetector::State::Matched ){ + // hack bad FW version - BEWARE - we silently assume that the first query is an "S0" + // The old MMU FW responds with "ok\n" and we fake the response to a bad FW version at this spot + rsp = ResponseMsg(RequestMsg(RequestMsgCodes::Version, 0), ResponseMsgParamCodes::Accepted, 0); + return MessageReady; + } else if( old == OldMMUFWDetector::State::MatchingPart ){ + break; + } + } + // otherwise [[fallthrough]] default: RecordUARTActivity(); // something has happened on the UART, update the timeout record return ProtocolError; @@ -394,7 +431,7 @@ void ProtocolLogic::RecordReceivedByte(uint8_t c){ lrb = (lrb+1) % lastReceivedBytes.size(); } -char NibbleToChar(uint8_t c){ +constexpr char NibbleToChar(uint8_t c){ switch (c) { case 0: case 1: From 1ff74597430ac6110c48b3d0939ac458a928c926 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 9 Jun 2022 13:49:30 +0200 Subject: [PATCH 120/319] Re-enable filament runout + add debug msgs Needs a fix on the MMU side (report FeedToBondtech::DisengageIdler) --- Firmware/Filament_sensor.cpp | 9 +++++++- Firmware/mmu2.cpp | 42 +++++++++++++++++++++++++----------- Firmware/ultralcd.cpp | 9 +++----- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index ab9c81228..5bd65e470 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -17,10 +17,12 @@ FSensorBlockRunout::FSensorBlockRunout() { #if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) fsensor.setJamDetectionEnabled(false); //suppress filament jam detection while loading filament. #endif //(FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) +// SERIAL_ECHOLNPGM("FSBlockRunout"); } FSensorBlockRunout::~FSensorBlockRunout() { fsensor.settings_init(); // restore filament runout state. +// SERIAL_ECHOLNPGM("FSUnBlockRunout"); } # if FILAMENT_SENSOR_TYPE == FSENSOR_IR @@ -113,6 +115,7 @@ void Filament_sensor::triggerFilamentInserted() { } void Filament_sensor::triggerFilamentRemoved() { +// SERIAL_ECHOLNPGM("triggerFilamentRemoved"); if (runoutEnabled && (eFilamentAction == FilamentAction::None) && !saved_printing @@ -124,7 +127,10 @@ void Filament_sensor::triggerFilamentRemoved() { || eeprom_read_byte((uint8_t *)EEPROM_WIZARD_ACTIVE) ) ){ -// filRunout(); +// SERIAL_ECHOPGM("runoutEnabled="); SERIAL_ECHOLN((int)runoutEnabled); +// SERIAL_ECHOPGM("eFilamentAction="); SERIAL_ECHOLN((int)eFilamentAction); +// SERIAL_ECHOPGM("saved_printing="); SERIAL_ECHOLN((int)saved_printing); + filRunout(); } } @@ -140,6 +146,7 @@ void Filament_sensor::filAutoLoad() { } void Filament_sensor::filRunout() { + SERIAL_ECHOLNPGM("filRunout"); runoutEnabled = false; autoLoadEnabled = false; stop_and_save_print_to_ram(0, 0); diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 3ec5282a2..ccc1dbba3 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -168,8 +168,7 @@ void MMU2::mmu_loop() { logicStepLastStatus = LogicStep(); // it looks like the mmu_loop doesn't need to be a blocking call - if (is_mmu_error_monitor_active) - { + if (is_mmu_error_monitor_active){ // Call this every iteration to keep the knob rotation responsive // This includes when mmu_loop is called within manage_response ReportErrorHook((uint16_t)lastErrorCode); @@ -214,7 +213,15 @@ bool MMU2::tool_change(uint8_t index) { manage_response(false, false); // true, true); // reset current position to whatever the planner thinks it is +// SERIAL_ECHOPGM("TC1:p="); +// SERIAL_ECHO(position[E_AXIS]); +// SERIAL_ECHOPGM("TC1:cp="); +// SERIAL_ECHOLN(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]); +// SERIAL_ECHOPGM("TC2:p="); +// SERIAL_ECHO(position[E_AXIS]); +// SERIAL_ECHOPGM("TC2:cp="); +// SERIAL_ECHOLN(current_position[E_AXIS]); extruder = index; //filament change is finished SetActiveExtruder(0); @@ -355,7 +362,15 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { // reset current position to whatever the planner thinks it is st_synchronize(); +// SERIAL_ECHOPGM("LFTN1:p="); +// SERIAL_ECHO(position[E_AXIS]); +// SERIAL_ECHOPGM("LFTN1:cp="); +// SERIAL_ECHOLN(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]); +// SERIAL_ECHOPGM("LFTN2:p="); +// SERIAL_ECHO(position[E_AXIS]); +// SERIAL_ECHOPGM("LFTN2:cp="); +// SERIAL_ECHOLN(current_position[E_AXIS]); // Finish loading to the nozzle with finely tuned steps. execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); @@ -372,8 +387,6 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { if( ! WaitForMMUReady()) return false; - WaitForHotendTargetTempBeep(); - ReportingRAII rep(CommandInProgress::EjectFilament); current_position[E_AXIS] -= MMU2_FILAMENTCHANGE_EJECT_FEED; plan_buffer_line_curposXYZE(2500.F / 60.F); @@ -595,6 +608,8 @@ void MMU2::execute_extruder_sequence(const E_Step *sequence, uint8_t steps) { current_position[E_AXIS] += pgm_read_float(&(step->extrude)); plan_buffer_line_curposXYZE(pgm_read_float(&(step->feedRate))); st_synchronize(); +// SERIAL_ECHOPGM("EES:"); +// SERIAL_ECHOLN(position[E_AXIS]); step++; } } @@ -641,12 +656,12 @@ void MMU2::ReportProgress(ProgressCode pc) { } void MMU2::OnMMUProgressMsg(ProgressCode pc){ - if( pc != lastProgressCode){ + if (pc != lastProgressCode) { ReportProgress(pc); lastProgressCode = pc; // Act accordingly - one-time handling - switch(pc){ + switch (pc) { case ProgressCode::FeedingToBondtech: // prepare for the movement of the E-motor st_synchronize(); @@ -658,26 +673,27 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ } } else { // Act accordingly - every status change (even the same state) - switch(pc){ + switch (pc) { case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: - if ( loadFilamentStarted ) - { - switch ( WhereIsFilament() ) - { + if (loadFilamentStarted) { + switch (WhereIsFilament()) { case FilamentState::AT_FSENSOR: // fsensor triggered, finish FeedingToBondtech state loadFilamentStarted = false; // After the MMU knows the FSENSOR is triggered it will: // 1. Push the filament by additional 30mm (see fsensorToNozzle) // 2. Disengage the idler and push another 5mm. +// SERIAL_ECHOPGM("ATF1="); +// SERIAL_ECHO(current_position[E_AXIS]); current_position[E_AXIS] += 30.0f + 2.0f; plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); +// SERIAL_ECHOPGM("ATF2="); +// SERIAL_ECHOLN(current_position[E_AXIS]); break; case FilamentState::NOT_PRESENT: // fsensor not triggered, continue moving extruder - if(!blocks_queued()) - { // Only plan a move if there is no move ongoing + if (!blocks_queued()) { // Only plan a move if there is no move ongoing current_position[E_AXIS] += 2.0f; plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a03e0f847..7676cd69a 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6195,7 +6195,6 @@ void printf_IRSensorAnalogBoardChange(){ static bool lcd_selftest_IRsensor(bool bStandalone) { - bool ret = false; FSensorBlockRunout fsBlockRunout; IR_sensor_analog::SensorRevision oldSensorRevision = fsensor.getSensorRevision(); IR_sensor_analog::SensorRevision newSensorRevision; @@ -6206,7 +6205,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone) if(volt_IR_int < fsensor.IRsensor_Hmin_TRESHOLD){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"HIGH",""); - goto exit; + return false; } lcd_show_fullscreen_message_and_wait_P(_i("Insert the filament (do not load it) into the extruder and then press the knob."));////MSG_INSERT_FIL c=20 r=6 volt_IR_int = fsensor.getVoltRaw(); @@ -6214,15 +6213,13 @@ static bool lcd_selftest_IRsensor(bool bStandalone) if(volt_IR_int > (fsensor.IRsensor_Lmax_TRESHOLD)){ if(!bStandalone) lcd_selftest_error(TestError::FsensorLevel,"LOW",""); - goto exit; + return false; } if(newSensorRevision != oldSensorRevision) { fsensor.setSensorRevision(newSensorRevision, true); printf_IRSensorAnalogBoardChange(); } - ret = true; -exit: - return ret; + return true; } static void lcd_detect_IRsensor(){ From b880559ba78b08756024c35a437a7802e3aec990 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 10 Jun 2022 08:21:34 +0200 Subject: [PATCH 121/319] Reset MMU upon start + fix reporting its start errors --- Firmware/mmu2.cpp | 4 +++- Firmware/mmu2_protocol_logic.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ccc1dbba3..1917383c8 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -103,7 +103,9 @@ void MMU2::Start() { mmu2Serial.begin(MMU_BAUD); - PowerOn(); + // PowerOn(); we cannot do that on MK3, but at least reset the MMU + Reset(ResetForm::ResetPin); + mmu2Serial.flush(); // make sure the UART buffer is clear before starting communication extruder = MMU2_NO_TOOL; diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 35c65b1b6..12134d010 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -294,6 +294,19 @@ StepStatus Idle::Step() { logic->SwitchFromIdleToCommand(); return Processing; } + break; + case RequestMsgCodes::Reset: + // this one is kind of special + // we do not transfer to any "running" command (i.e. we stay in Idle), + // but in case there is an error reported we must make sure it gets propagated + if( logic->rsp.paramCode != ResponseMsgParamCodes::Finished ){ + logic->errorCode = static_cast(logic->rsp.paramValue); + SendFINDAQuery(); // continue Idle state without restarting the communication + return CommandError; + } else { + logic->errorCode = ErrorCode::OK; + } + break; default: break; } From 236098dbca814c920b7653d0873f94b84399c3c5 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 10 Jun 2022 09:00:51 +0200 Subject: [PATCH 122/319] Make init MMU error screens send buttons (Idle mode) --- Firmware/mmu2.cpp | 5 ++++- Firmware/mmu2_error_converter.cpp | 2 ++ Firmware/mmu2_protocol_logic.cpp | 6 ++++-- Firmware/mmu2_reporting.cpp | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 1917383c8..0c0abc9e2 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -510,7 +510,7 @@ void MMU2::CheckUserInput(){ Button(btn); break; case RestartMMU: - Reset(CutThePower); + Reset(ResetPin); // we cannot do power cycle on the MK3 break; case StopPrint: // @@TODO not sure if we shall handle this high level operation at this spot @@ -576,14 +576,17 @@ StepStatus MMU2::LogicStep() { break; case CommandError: ReportError(logic.Error()); + CheckUserInput(); break; case CommunicationTimeout: state = xState::Connecting; ReportError(ErrorCode::MMU_NOT_RESPONDING); + CheckUserInput(); break; case ProtocolError: state = xState::Connecting; ReportError(ErrorCode::PROTOCOL_ERROR); + CheckUserInput(); break; case VersionMismatch: StopKeepPowered(); diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index f0d08912c..0ff906699 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -189,7 +189,9 @@ Buttons ButtonPressed(uint16_t ec) { } break; case ERR_MECHANICAL_SELECTOR_CANNOT_HOME: + case ERR_MECHANICAL_SELECTOR_CANNOT_MOVE: case ERR_MECHANICAL_IDLER_CANNOT_HOME: + case ERR_MECHANICAL_IDLER_CANNOT_MOVE: case ERR_MECHANICAL_PULLEY_CANNOT_MOVE: switch (buttonSelectedOperation) { // may be allow move selector right and left in the future diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 12134d010..45fc741fc 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -271,8 +271,7 @@ StepStatus Idle::Step() { switch (state) { case State::Ready: // check timeout if (logic->Elapsed(heartBeatPeriod)) { - logic->SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); - state = State::QuerySent; + SendQuery(); return Processing; } break; @@ -397,6 +396,9 @@ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { bool ProtocolLogic::ActivatePlannedRequest(){ if( plannedRq.code == RequestMsgCodes::Button ){ // only issue the button to the MMU and do not restart the state machines + // @@TODO - this is not completely correct, but it does the job. + // In Idle mode the command part is not active, but we still need button handling in Idle mode (resolve MMU init errors) + // -> command.SendButton is not correct, but it sends the message and everything works (for now) command.SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 0e5c12d67..38a14d108 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -191,7 +191,7 @@ enum class ReportErrorHookStates : uint8_t { DISMISS_ERROR_SCREEN = 2, }; -enum ReportErrorHookStates ReportErrorHookState; +enum ReportErrorHookStates ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; /** * @brief Render MMU error screen on the LCD. This must be non-blocking From 46184a9447351eb5e435ec352258b727d0c60eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Jun 2022 16:18:34 +0000 Subject: [PATCH 123/319] Update printer name if M862.3 is called but not M862.2 --- Firmware/Marlin_main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 112e072d8..3eca0c909 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8129,7 +8129,10 @@ Sigma_Exit: break; case ClPrintChecking::_Smodel: // ~ .3 if(code_seen('P')) - printer_smodel_check(strchr_pointer); + { + fSetMmuMode(MMU2::mmu2.Enabled()); + printer_smodel_check(strchr_pointer); + } else if(code_seen('Q')) SERIAL_PROTOCOLLNRPGM(sPrinterName); break; From 204b43dce4e0346ea882255ec5c4dea5ef4acbc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 11 Jun 2022 08:27:39 +0000 Subject: [PATCH 124/319] PFW-1336 The following situation is now fixed, steps: 1. Load filament through LCD 2. Load to nozzle through LCD 3. Before filament reaches Fsensor => turn off the printer 4. Wait a few seconds and then turn the printer on again 5. Start a print through the SD card 6. Printer will unload and then re-load the filament Previously in step 6, the printer would start a print without any filament loaded. --- Firmware/Marlin_main.cpp | 30 +++++++++++++++++++----------- Firmware/Tcodes.cpp | 6 +++--- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 3eca0c909..cd48edad3 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5448,24 +5448,32 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); ### M24 - Start SD print M24: Start/resume SD print */ case 24: - if (isPrintPaused) - lcd_resume_print(); - else + if (isPrintPaused) + lcd_resume_print(); + else + { + if (!card.get_sdpos()) { - if (!card.get_sdpos()) - { // A new print has started from scratch, reset stats failstats_reset_print(); sdpos_atomic = 0; #ifndef LA_NOCOMPAT - la10c_reset(); + la10c_reset(); #endif - } - - card.startFileprint(); - starttime=_millis(); } - break; + + card.startFileprint(); + starttime=_millis(); + if (MMU2::mmu2.Enabled()) + { + if (MMU2::mmu2.FindaDetectsFilament() && !fsensor.getFilamentPresent()) + { // Filament only half way into the PTFE. Unload the filament. + MMU2::mmu2.unload(); + // Tx and Tc gcodes take care of loading the filament to the nozzle. + } + } + } + break; /*! ### M26 - Set SD index M26: Set SD position diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index 52141ddf9..b0f4730e8 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -45,7 +45,7 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { if (IsInvalidTCode(strchr_pointer, index)){ TCodeInvalid(); - } /*else if (strchr_pointer[index] == 'x'){ + } else if (strchr_pointer[index] == 'x'){ // load to bondtech gears; if mmu is not present do nothing if (MMU2::mmu2.Enabled()) { MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER))); @@ -53,9 +53,9 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { } else if (strchr_pointer[index] == 'c'){ // load from bondtech gears to nozzle (nozzle should be preheated) if (MMU2::mmu2.Enabled()) { - MMU2::mmu2.tool_change(strchr_pointer[index], 0); + MMU2::mmu2.tool_change(strchr_pointer[index], MMU2::mmu2.get_current_tool()); } - }*/ else { + } else { SChooseFromMenu selectedSlot; // if (strchr_pointer[index] == '?') // selectedSlot = TCodeChooseFromMenu(); From 73c486cc2fdd00847d268df7c3fe54a6846793c7 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 11 Jun 2022 14:37:17 -0400 Subject: [PATCH 125/319] - Fix DisableMMU button on FW incompat 5823c14 - Implement eeprom var, fix reset --- Firmware/Marlin_main.cpp | 5 ++++- Firmware/eeprom.h | 6 ++++-- Firmware/mmu2.cpp | 10 ++++++++-- Firmware/mmu2/buttons.h | 1 + Firmware/mmu2_error_converter.cpp | 9 ++++++++- Firmware/mmu2_power.cpp | 23 ++++++++++++++++++++--- Firmware/ultralcd.cpp | 26 ++++++++++++++++++++++++++ 7 files changed, 71 insertions(+), 9 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index cd48edad3..841bd16c2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1044,7 +1044,10 @@ void setup() { timer2_init(); // enables functional millis - MMU2::mmu2.Start(); + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) + { + MMU2::mmu2.Start(); + } ultralcd_init(); diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index 44b41bfa5..f78acc259 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -334,7 +334,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP | ^ | ^ | ^ | 04h 4 | ^ | bad_pullup_temp_isr | ^ | ^ | ^ | ^ | ^ | 05h 5 | ^ | bad_pullup_step_isr | ^ | ^ | 0x0D03 3321 | uint8_t | EEPROM_FW_CRASH_FLAG | 01h 1 | ff/00 | Last FW crash reason (dump_crash_reason) | D21/D22 | D3 Ax0d03 C1 -| 0x0D03 3320 | uint8_t | EEPROM_FSENSOR_JAM_DETECTION | 01h 1 | ff/01 | fsensor pat9125 jam detection feature | LCD menu | D3 Ax0d02 C1 +| 0x0D02 3320 | uint8_t | EEPROM_FSENSOR_JAM_DETECTION | 01h 1 | ff/01 | fsensor pat9125 jam detection feature | LCD menu | D3 Ax0d02 C1 +| 0x0D01 3319 | uint8_t | EEPROM_MMU_ENABLED | 01h 1 | ff/01 | MMU enabled | LCD menu | D3 Ax0d01 C1 | Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: @@ -559,8 +560,9 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE); #define EEPROM_TEMP_MODEL_E (EEPROM_TEMP_MODEL_W-4) // float #define EEPROM_FSENSOR_JAM_DETECTION (EEPROM_TEMP_MODEL_E-1) // uint8_t +#define EEPROM_MMU_ENABLED (EEPROM_FSENSOR_JAM_DETECTION-1) // uint8_t //This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items. -#define EEPROM_LAST_ITEM EEPROM_FSENSOR_JAM_DETECTION +#define EEPROM_LAST_ITEM EEPROM_MMU_ENABLED // !!!!! // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!! // !!!!! diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 0c0abc9e2..c40856687 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -103,7 +103,7 @@ void MMU2::Start() { mmu2Serial.begin(MMU_BAUD); - // PowerOn(); we cannot do that on MK3, but at least reset the MMU + PowerOn(); // I repurposed this to serve as our EEPROM disable toggle. Reset(ResetForm::ResetPin); mmu2Serial.flush(); // make sure the UART buffer is clear before starting communication @@ -117,7 +117,7 @@ void MMU2::Start() { void MMU2::Stop() { StopKeepPowered(); - PowerOff(); + PowerOff(); // This also disables the MMU in the EEPROM. } void MMU2::StopKeepPowered(){ @@ -146,6 +146,8 @@ void MMU2::TriggerResetPin(){ void MMU2::PowerCycle(){ // cut the power to the MMU and after a while restore it // Sadly, MK3/S/+ cannot do this + // NOTE: the below will toggle the EEPROM var. Should we + // assert this function is never called in the MK3 FW? Do we even care? PowerOff(); delay_keep_alive(1000); PowerOn(); @@ -511,6 +513,10 @@ void MMU2::CheckUserInput(){ break; case RestartMMU: Reset(ResetPin); // we cannot do power cycle on the MK3 + // ... but mmu2_power.cpp knows this and triggers a soft-reset instead. + break; + case DisableMMU: + Stop(); // Poweroff handles updating the EEPROM shutoff. break; case StopPrint: // @@TODO not sure if we shall handle this high level operation at this spot diff --git a/Firmware/mmu2/buttons.h b/Firmware/mmu2/buttons.h index 73413289a..0e407e43b 100644 --- a/Firmware/mmu2/buttons.h +++ b/Firmware/mmu2/buttons.h @@ -28,6 +28,7 @@ enum Buttons : uint8_t { // performed on the printer's side RestartMMU, StopPrint, + DisableMMU, NoButton = 0xff // shall be kept last }; diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 0ff906699..54c345590 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -247,7 +247,14 @@ Buttons ButtonPressed(uint16_t ec) { break; } break; - + case ERR_SYSTEM_FW_UPDATE_NEEDED: + switch (buttonSelectedOperation) { + case ButtonOperations::RestartMMU: // "Restart MMU" + return DisableMMU; + default: + break; + } + break; case ERR_SYSTEM_FILAMENT_ALREADY_LOADED: switch (buttonSelectedOperation) { case ButtonOperations::Unload: // "Unload" diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp index 7096358e4..77f8b0c79 100644 --- a/Firmware/mmu2_power.cpp +++ b/Firmware/mmu2_power.cpp @@ -3,19 +3,36 @@ #include "pins.h" #include "fastio.h" #include +#include "mmu2.h" +#include "eeprom.h" namespace MMU2 { -// sadly, on MK3 we cannot do this on HW -void power_on() { } +// sadly, on MK3 we cannot do actual power cycle on HW... +// so we just block the MMU via EEPROM var instead. +void power_on() +{ + if (!eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) + { + eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, true); + } +} -void power_off() { } +void power_off() +{ + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) + { + eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, false); + } +} void reset() { #ifdef MMU_HWRESET // HW - pulse reset pin WRITE(MMU_RST_PIN, 0); _delay_us(100); WRITE(MMU_RST_PIN, 1); +#else + MMU2::Reset(MMU2::Software); #endif // otherwise HW reset is not available } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7676cd69a..37ac7cc0c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4347,6 +4347,25 @@ while(0) #define SETTINGS_CUTTER #endif //MMU_HAS_CUTTER +static void mmu_enable_switch() +{ + uint8_t current_state = eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED); + // EEPROM update is handled by the stop and start functions. + if (current_state) + { + MMU2::mmu2.Stop(); + } + else + { + MMU2::mmu2.Start(); + } +} + +static void mmu_reset() +{ + MMU2::mmu2.Reset(MMU2::MMU2::ResetForm::Software); +} + #ifdef TMC2130 #define SETTINGS_SILENT_MODE \ do\ @@ -4796,6 +4815,13 @@ static void lcd_settings_menu() SETTINGS_CUTTER; + MENU_ITEM_TOGGLE_P(PSTR("MMU"), eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED) ? _T(MSG_ON) : _T(MSG_OFF), mmu_enable_switch); + + if (MMU2::mmu2.Enabled()) + { + MENU_ITEM_FUNCTION_P(PSTR("Reset MMU"), mmu_reset); + } + MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check); SETTINGS_SILENT_MODE; From 888a37450b3ec2ebe8dceef3f14a90d66897f094 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 11 Jun 2022 15:38:32 -0400 Subject: [PATCH 126/319] Fix wrong return --- Firmware/mmu2_error_converter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 54c345590..4db7c83f3 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -249,7 +249,7 @@ Buttons ButtonPressed(uint16_t ec) { break; case ERR_SYSTEM_FW_UPDATE_NEEDED: switch (buttonSelectedOperation) { - case ButtonOperations::RestartMMU: // "Restart MMU" + case ButtonOperations::DisableMMU: // "Restart MMU" return DisableMMU; default: break; From e8088b016118762b3415395dc65355f29d42f258 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sun, 12 Jun 2022 12:17:37 -0400 Subject: [PATCH 127/319] Allow reset if the EEPROM is set to "on" --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 37ac7cc0c..b2faf09c4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4817,7 +4817,7 @@ static void lcd_settings_menu() MENU_ITEM_TOGGLE_P(PSTR("MMU"), eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED) ? _T(MSG_ON) : _T(MSG_OFF), mmu_enable_switch); - if (MMU2::mmu2.Enabled()) + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) { MENU_ITEM_FUNCTION_P(PSTR("Reset MMU"), mmu_reset); } From f155c7664d61830c9c48b7bfa7d1d5497e615bdb Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sun, 12 Jun 2022 14:05:47 -0400 Subject: [PATCH 128/319] Add missing CheckUserInput calls, fix bad array entry for FW_update --- Firmware/mmu2.cpp | 2 ++ Firmware/mmu2/errors_list.h | 2 +- Firmware/mmu2_error_converter.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index c40856687..df2e093ad 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -555,6 +555,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { st_synchronize(); return; case VersionMismatch: // this basically means the MMU will be disabled until reconnected + CheckUserInput(); return; case CommunicationTimeout: case CommandError: @@ -597,6 +598,7 @@ StepStatus MMU2::LogicStep() { case VersionMismatch: StopKeepPowered(); ReportError(ErrorCode::VERSION_MISMATCH); + CheckUserInput(); break; default: break; diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 827fd8385..7d7f94a0f 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -110,7 +110,7 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { ERR_SYSTEM_INVALID_TOOL, ERR_SYSTEM_QUEUE_FULL, ERR_SYSTEM_FW_UPDATE_NEEDED, - ERR_SYSTEM_FW_UPDATE_NEEDED, + ERR_SYSTEM_FW_RUNTIME_ERROR, ERR_SYSTEM_UNLOAD_MANUALLY }; diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 4db7c83f3..a450e848c 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -249,7 +249,7 @@ Buttons ButtonPressed(uint16_t ec) { break; case ERR_SYSTEM_FW_UPDATE_NEEDED: switch (buttonSelectedOperation) { - case ButtonOperations::DisableMMU: // "Restart MMU" + case ButtonOperations::DisableMMU: // "Disable" return DisableMMU; default: break; From 01f926f07417426e8644cac5421055c26ca73be5 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 13 Jun 2022 15:30:34 +0200 Subject: [PATCH 129/319] Fix build MK25S --- Firmware/mmu2_power.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp index 77f8b0c79..405f0d7c3 100644 --- a/Firmware/mmu2_power.cpp +++ b/Firmware/mmu2_power.cpp @@ -32,7 +32,7 @@ void reset() { _delay_us(100); WRITE(MMU_RST_PIN, 1); #else - MMU2::Reset(MMU2::Software); + mmu2.Reset(MMU2::Software); // @@TODO needs to be redesigned, this power implementation shall not know anything about the MMU itself #endif // otherwise HW reset is not available } From 8b6941d493495e3e9f756ef07ed99c827cefd400 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 14 Jun 2022 08:42:03 +0200 Subject: [PATCH 130/319] Temporarily disable runout There are still printers which suffer from spurious runouts for no reason. For testing purposes, runout will be disabled until the real cause is found. --- Firmware/Filament_sensor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 5bd65e470..2c1fd3de4 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -130,7 +130,7 @@ void Filament_sensor::triggerFilamentRemoved() { // SERIAL_ECHOPGM("runoutEnabled="); SERIAL_ECHOLN((int)runoutEnabled); // SERIAL_ECHOPGM("eFilamentAction="); SERIAL_ECHOLN((int)eFilamentAction); // SERIAL_ECHOPGM("saved_printing="); SERIAL_ECHOLN((int)saved_printing); - filRunout(); +// filRunout(); } } From 762080ab1a7bd50d72a5e5eea3cab8dee4899826 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Mon, 13 Jun 2022 19:09:19 -0400 Subject: [PATCH 131/319] Fix some partking and recovery bugs --- Firmware/mmu2.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index df2e093ad..510780276 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -214,7 +214,7 @@ bool MMU2::tool_change(uint8_t index) { st_synchronize(); logic.ToolChange(index); // let the MMU pull the filament out and push a new one in - manage_response(false, false); // true, true); + manage_response(true, true); // reset current position to whatever the planner thinks it is // SERIAL_ECHOPGM("TC1:p="); @@ -283,7 +283,7 @@ bool MMU2::set_filament_type(uint8_t index, uint8_t type) { // cmd_arg = filamentType; // command(MMU_CMD_F0 + index); - manage_response(false, false); // true, true); + manage_response(false, false); // true, true); -- Comment: how is it possible for a filament type set to fail? return true; } @@ -299,7 +299,7 @@ bool MMU2::unload() { filament_ramming(); logic.UnloadFilament(); - manage_response(false, false); // false, true); + manage_response(false, true); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); // no active tool @@ -314,7 +314,7 @@ bool MMU2::cut_filament(uint8_t index){ ReportingRAII rep(CommandInProgress::CutFilament); logic.CutFilament(index); - manage_response(false, false); // false, true); + manage_response(false, true); return true; } @@ -359,7 +359,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { } logic.ToolChange(index); - manage_response(false, false); // true, true); + manage_response(true, true); // The MMU's idler is disengaged at this point // That means the MK3/S now has fully control @@ -484,6 +484,7 @@ void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else }); LogEchoEvent("Hotend temperature reached"); + lcd_update_enable(true); // temporary hack to stop this locking the printer... } if (move_axes) { @@ -552,6 +553,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { case Finished: // command/operation completed, let Marlin continue its work // the E may have some more moves to finish - wait for them + ResumeAndUnPark(move_axes, turn_off_nozzle); // This is needed here otherwise recovery doesn't work. st_synchronize(); return; case VersionMismatch: // this basically means the MMU will be disabled until reconnected From a1881b4a07ebfce80936073800c10480fad62cc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 15 Jun 2022 18:41:11 +0000 Subject: [PATCH 132/319] Disable filament runout when MMU is unloading --- Firmware/mmu2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 510780276..550910cae 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -295,6 +295,7 @@ bool MMU2::unload() { WaitForHotendTargetTempBeep(); { + FSensorBlockRunout blockRunout; ReportingRAII rep(CommandInProgress::UnloadFilament); filament_ramming(); From 45a5e719a25fc9274bb60e480dd9e0e9e64e45a2 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 16 Jun 2022 08:33:12 +0200 Subject: [PATCH 133/319] Disable filRunout when MMU.Enabled() It turned out the runout is caused by the ramming sequence in the G-code, which is interpreted before the actual MMU command gets into processing. The frequency of these errors/runouts differed one machine from another and was really hard to track down. Therefore - once the MMU is enabled (active and running) we'll disable filament runout handling caused by the printer's filament sensor. --- Firmware/Filament_sensor.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 2c1fd3de4..8d383b1a5 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -117,6 +117,7 @@ void Filament_sensor::triggerFilamentInserted() { void Filament_sensor::triggerFilamentRemoved() { // SERIAL_ECHOLNPGM("triggerFilamentRemoved"); if (runoutEnabled + && (! MMU2::mmu2.Enabled() ) // quick and dirty hack to prevent spurious runouts just before the toolchange && (eFilamentAction == FilamentAction::None) && !saved_printing && ( @@ -130,7 +131,7 @@ void Filament_sensor::triggerFilamentRemoved() { // SERIAL_ECHOPGM("runoutEnabled="); SERIAL_ECHOLN((int)runoutEnabled); // SERIAL_ECHOPGM("eFilamentAction="); SERIAL_ECHOLN((int)eFilamentAction); // SERIAL_ECHOPGM("saved_printing="); SERIAL_ECHOLN((int)saved_printing); -// filRunout(); + filRunout(); } } @@ -146,7 +147,7 @@ void Filament_sensor::filAutoLoad() { } void Filament_sensor::filRunout() { - SERIAL_ECHOLNPGM("filRunout"); +// SERIAL_ECHOLNPGM("filRunout"); runoutEnabled = false; autoLoadEnabled = false; stop_and_save_print_to_ram(0, 0); From e39bc3f12d59528f9effef621e18b1c98181de20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 17 Jun 2022 20:24:41 +0000 Subject: [PATCH 134/319] During Tx, temporarily allow cold extrusion This prevents a FSENSOR DIDNT TRIGGER error and allows the bondtech gears to grab the filament. --- Firmware/mmu2.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 550910cae..116a02cba 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -255,11 +255,13 @@ bool MMU2::tool_change(char code, uint8_t slot) { } break; case 'x': { + set_extrude_min_temp(0); // Allow cold extrusion since Tx only loads to the gears not nozzle st_synchronize(); logic.ToolChange(slot); manage_response(false, false); extruder = slot; SetActiveExtruder(0); + set_extrude_min_temp(EXTRUDE_MINTEMP); } break; case 'c': { From 2d028776862d029e4489bdf22d5e60ee793809f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 17 Jun 2022 18:46:12 +0000 Subject: [PATCH 135/319] Disable automatic in M600 --- Firmware/Marlin_main.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 841bd16c2..1bf919a2b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3512,9 +3512,11 @@ static void mmu_M600_wait_and_beep() { /// @par nozzle_temp nozzle temperature to load filament void mmu_M600_load_filament(bool automatic, float nozzle_temp) { uint8_t tmp_extruder = MMU2::mmu2.get_current_tool(); - if (automatic) { + + // TODO SpoolJoin + /*if (automatic) { tmp_extruder = ad_getAlternative(tmp_extruder); - } + }*/ lcd_update_enable(false); lcd_clear(); lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); From d5cdb412baaaf427eb343009273436abf39c7265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 17 Jun 2022 18:54:04 +0000 Subject: [PATCH 136/319] Introduce a way to read the previous tool used --- Firmware/Marlin_main.cpp | 2 +- Firmware/mmu2.cpp | 4 ++++ Firmware/mmu2.h | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1bf919a2b..f9725a9c7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3511,7 +3511,7 @@ static void mmu_M600_wait_and_beep() { /// @brief load filament for mmu v2 /// @par nozzle_temp nozzle temperature to load filament void mmu_M600_load_filament(bool automatic, float nozzle_temp) { - uint8_t tmp_extruder = MMU2::mmu2.get_current_tool(); + uint8_t tmp_extruder = MMU2::mmu2.get_previous_tool(); // TODO SpoolJoin /*if (automatic) { diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 116a02cba..73709e534 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -85,6 +85,7 @@ MMU2::MMU2() : is_mmu_error_monitor_active(false) , logic(&mmu2Serial) , extruder(MMU2_NO_TOOL) + , previous_extruder(MMU2_NO_TOOL) , resume_position() , resume_hotend_temp(0) , logicStepLastStatus(StepStatus::Finished) @@ -228,6 +229,7 @@ bool MMU2::tool_change(uint8_t index) { // SERIAL_ECHOLN(current_position[E_AXIS]); extruder = index; //filament change is finished + previous_extruder = extruder; SetActiveExtruder(0); // @@TODO really report onto the serial? May be for the Octoprint? Not important now @@ -260,6 +262,7 @@ bool MMU2::tool_change(char code, uint8_t slot) { logic.ToolChange(slot); manage_response(false, false); extruder = slot; + previous_extruder = extruder; SetActiveExtruder(0); set_extrude_min_temp(EXTRUDE_MINTEMP); } break; @@ -383,6 +386,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); extruder = index; + previous_extruder = extruder; SetActiveExtruder(0); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 1870c9933..4f9306e8f 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -107,6 +107,9 @@ public: /// @returns the active filament slot index (0-4) or 0xff in case of no active tool uint8_t get_current_tool() const; + + /// @returns the previous active filament slot index (0-4) or 0xff in case of no active tool at boot-up + inline uint8_t get_previous_tool() const { return previous_extruder; }; bool set_filament_type(uint8_t index, uint8_t type); @@ -201,6 +204,7 @@ private: ProtocolLogic logic; ///< implementation of the protocol logic layer int extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet + uint8_t previous_extruder; ///< last active slot in the MMU, useful for M600 xyz_pos_t resume_position; int16_t resume_hotend_temp; From b9c23cd6b86c338a6c72500bd6c4d940c11f748f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 18 Jun 2022 09:28:44 +0000 Subject: [PATCH 137/319] Add Unloading message to LCD Also made mmu_M600_load_filament static to limit its scope --- Firmware/Marlin_main.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f9725a9c7..0b3fdb6f2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3508,9 +3508,29 @@ static void mmu_M600_wait_and_beep() { WRITE(BEEPER, LOW); } +/** + * @brief Handling of unload when using MMU with M600 + * A fullscreen message showing "Unloading Filament x" + * should be shown on the LCD and LCD updates should be + * are disabled in the meantime. + */ +static void mmu_M600_unload_filament() { + uint8_t tmp_extruder = MMU2::mmu2.get_current_tool(); + + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 1, _T(MSG_UNLOADING_FILAMENT)); + lcd_print(' '); + lcd_print(tmp_extruder + 1); + + // unload just current filament for multimaterial printers (used also in M702) + MMU2::mmu2.unload(); + lcd_update_enable(true); +} + /// @brief load filament for mmu v2 /// @par nozzle_temp nozzle temperature to load filament -void mmu_M600_load_filament(bool automatic, float nozzle_temp) { +static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { uint8_t tmp_extruder = MMU2::mmu2.get_previous_tool(); // TODO SpoolJoin @@ -3574,7 +3594,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float // Unload filament if (MMU2::mmu2.Enabled()) - MMU2::mmu2.unload(); // unload just current filament for multimaterial printers (used also in M702) + mmu_M600_unload_filament(); else unload_filament(true); // unload filament for single material (used also in M702) st_synchronize(); // finish moves From caf98936e3af211df3e6227fb7fd02dbc2f583f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 18 Jun 2022 09:34:34 +0000 Subject: [PATCH 138/319] Minor cleanup --- Firmware/Marlin_main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 0b3fdb6f2..f564cad26 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3544,7 +3544,6 @@ static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { lcd_print(tmp_extruder + 1); // printf_P(PSTR("T code: %d \n"), tmp_extruder); - // mmu_printf_P(PSTR("T%d\n"), tmp_extruder); setTargetHotend(nozzle_temp, active_extruder); MMU2::mmu2.load_filament_to_nozzle(tmp_extruder); From ed04c24ba09fb3b066fa8fb3b4cf128ef949fb23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 18 Jun 2022 10:08:54 +0000 Subject: [PATCH 139/319] Implement 'Filament not loaded' option for M600 with MMU --- Firmware/Marlin_main.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f564cad26..a61d5d83f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -11344,8 +11344,14 @@ void M600_check_state(float nozzle_temp) // Filament failed to load so load it again case 2: if (MMU2::mmu2.Enabled()){ -//@@TODO mmu_M600_load_filament(false, nozzle_temp); //nonautomatic load; change to "wrong filament loaded" option? - + // Unload filament + mmu_M600_unload_filament(); + + // Ask to remove any old filament and load new + mmu_M600_wait_and_beep(); + + // After user clicks knob, MMU will load the filament + mmu_M600_load_filament(false, nozzle_temp); } else { M600_load_filament_movements(); } From 8fd1653b84c239c3d3546f4b048fa3469853a764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 18 Jun 2022 13:03:10 +0000 Subject: [PATCH 140/319] PFW-1343 initial commit --- Firmware/mmu2.cpp | 12 +++++++++++- Firmware/mmu2.h | 6 +++++- Firmware/ultralcd.cpp | 24 +++++++++++++----------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 73709e534..1303deb29 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -86,6 +86,7 @@ MMU2::MMU2() , logic(&mmu2Serial) , extruder(MMU2_NO_TOOL) , previous_extruder(MMU2_NO_TOOL) + , tool_change_extruder(MMU2_NO_TOOL) , resume_position() , resume_hotend_temp(0) , logicStepLastStatus(StepStatus::Finished) @@ -214,6 +215,7 @@ bool MMU2::tool_change(uint8_t index) { st_synchronize(); + tool_change_extruder = index; logic.ToolChange(index); // let the MMU pull the filament out and push a new one in manage_response(true, true); @@ -259,6 +261,7 @@ bool MMU2::tool_change(char code, uint8_t slot) { case 'x': { set_extrude_min_temp(0); // Allow cold extrusion since Tx only loads to the gears not nozzle st_synchronize(); + tool_change_extruder = slot; logic.ToolChange(slot); manage_response(false, false); extruder = slot; @@ -277,7 +280,11 @@ bool MMU2::tool_change(char code, uint8_t slot) { } uint8_t MMU2::get_current_tool() const { - return extruder == MMU2_NO_TOOL ? -1 : extruder; + return extruder == MMU2_NO_TOOL ? (uint8_t)FILAMENT_UNKNOWN : extruder; +} + +uint8_t MMU2::get_tool_change_tool() const { + return tool_change_extruder == MMU2_NO_TOOL ? (uint8_t)FILAMENT_UNKNOWN : tool_change_extruder; } bool MMU2::set_filament_type(uint8_t index, uint8_t type) { @@ -310,6 +317,7 @@ bool MMU2::unload() { // no active tool extruder = MMU2_NO_TOOL; + tool_change_extruder = MMU2_NO_TOOL; } return true; } @@ -364,6 +372,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { filament_ramming(); } + tool_change_extruder = index; logic.ToolChange(index); manage_response(true, true); @@ -426,6 +435,7 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { // no active tool extruder = MMU2_NO_TOOL; + tool_change_extruder = MMU2_NO_TOOL; Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); // disable_E0(); diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 4f9306e8f..7008ac212 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -104,13 +104,16 @@ public: /// Requires unloaded filament from the printer (obviously) /// @returns false if the operation cannot be performed (Stopped) bool cut_filament(uint8_t index); - + /// @returns the active filament slot index (0-4) or 0xff in case of no active tool uint8_t get_current_tool() const; /// @returns the previous active filament slot index (0-4) or 0xff in case of no active tool at boot-up inline uint8_t get_previous_tool() const { return previous_extruder; }; + /// @returns The filament slot index (0 to 4) that will be loaded next, 0xff in case of no active tool change + uint8_t get_tool_change_tool() const; + bool set_filament_type(uint8_t index, uint8_t type); /// Issue a "button" click into the MMU - to be used from Error screens of the MMU @@ -205,6 +208,7 @@ private: ProtocolLogic logic; ///< implementation of the protocol logic layer int extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet uint8_t previous_extruder; ///< last active slot in the MMU, useful for M600 + uint8_t tool_change_extruder; ///< only used for UI purposes xyz_pos_t resume_position; int16_t resume_hotend_temp; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b2faf09c4..8175fec56 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -452,17 +452,19 @@ void lcdui_print_percent_done(void) // Print extruder status (5 chars total) void lcdui_print_extruder(void) { uint8_t chars = 0; -// @@TODO if (MMU2::mmu2.get_current_tool() == tmp_extruder) { -// if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) -// chars = lcd_printf_P(_N(" F?")); -// else -// chars = lcd_printf_P(_N(" F%u"), MMU2::mmu2.get_current_tool() + 1); -// } else { -// if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) -// chars = lcd_printf_P(_N(" ?>%u"), tmp_extruder + 1); -// else -// chars = lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, tmp_extruder + 1); -// } + if (MMU2::mmu2.get_current_tool() == MMU2::mmu2.get_tool_change_tool()) { + if (MMU2::mmu2.get_current_tool() == (uint8_t)MMU2::FILAMENT_UNKNOWN) { + chars = lcd_printf_P(_N(" F?")); + } else { + chars = lcd_printf_P(_N(" F%u"), MMU2::mmu2.get_current_tool() + 1); + } + } else { + if (MMU2::mmu2.get_current_tool() == (uint8_t)MMU2::FILAMENT_UNKNOWN) { + chars = lcd_printf_P(_N(" ?>%u"), MMU2::mmu2.get_tool_change_tool() + 1); + } else { + chars = lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, MMU2::mmu2.get_tool_change_tool() + 1); + } + } lcd_space(5 - chars); } From 8aa16a6429cd832c1a89ec9073200bc209f09126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 18 Jun 2022 16:57:44 +0000 Subject: [PATCH 141/319] Write documentation for lcdui_print_extruder --- Firmware/ultralcd.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8175fec56..98a60d23d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -450,6 +450,18 @@ void lcdui_print_percent_done(void) } // Print extruder status (5 chars total) +// Scenario 1: "F?" +// There is no filament loaded and no tool change is in progress +// Scenario 2: "F[nr.]" +// [nr.] ranges from 1 to 5. +// Shows which filament is loaded. No tool change is in progress +// Scenario 3: "?>[nr.]" +// [nr.] ranges from 1 to 5. +// There is no filament currently loaded, but [nr.] is currently being loaded via tool change +// Scenario 4: "[nr1.] > [nr2.]" +// [nr1.] ranges from 1 to 5. +// [nr2.] ranges from 1 to 5. +// Filament [nr1.] was loaded, but [nr2.] is currently being loaded via tool change void lcdui_print_extruder(void) { uint8_t chars = 0; if (MMU2::mmu2.get_current_tool() == MMU2::mmu2.get_tool_change_tool()) { From 1e391f303c8d1110c0c7f1bcc6b4a2297d00b270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 19 Jun 2022 11:43:15 +0000 Subject: [PATCH 142/319] PFW-1344 Fullscreen message Loading Filament When loading a filament through the LCD, show a full screen message: Loading Filament N Where N can range from 0 to 5. --- Firmware/mmu2.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 1303deb29..a88cfad45 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -337,11 +337,18 @@ bool MMU2::load_filament(uint8_t index) { if( ! WaitForMMUReady()) return false; + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); + lcd_print(' '); + lcd_print(index + 1); + ReportingRAII rep(CommandInProgress::LoadFilament); logic.LoadFilament(index); manage_response(false, false); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); - + lcd_update_enable(true); + return true; } From 9a20c85a5d45fc46369b91d09bcbbc7b3f6bcf10 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 10:17:56 -0400 Subject: [PATCH 143/319] First pass, improving the error recovery. --- Firmware/mmu2.cpp | 74 +++++++++++++++++++------------------ Firmware/mmu2.h | 18 +++++++-- Firmware/mmu2_protocol.h | 3 +- Firmware/mmu2_reporting.cpp | 16 +++++--- Firmware/mmu2_reporting.h | 6 +++ 5 files changed, 72 insertions(+), 45 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index a88cfad45..d3fdd3641 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -91,7 +91,7 @@ MMU2::MMU2() , resume_hotend_temp(0) , logicStepLastStatus(StepStatus::Finished) , state(xState::Stopped) - , mmu_print_saved(false) + , mmu_print_saved(SavedState::None) , loadFilamentStarted(false) , loadingToNozzle(false) { @@ -458,15 +458,14 @@ void MMU2::Home(uint8_t mode){ } void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { - if (!mmu_print_saved) { // First occurrence. Save current position, park print head, disable nozzle heater. + if (mmu_print_saved == SavedState::None) { // First occurrence. Save current position, park print head, disable nozzle heater. LogEchoEvent("Saving and parking"); st_synchronize(); - - mmu_print_saved = true; - + resume_hotend_temp = degTargetHotend(active_extruder); if (move_axes){ + mmu_print_saved |= SavedState::ParkExtruder; // save current pos for(uint8_t i = 0; i < 3; ++i){ resume_position.xyz[i] = current_position[i]; @@ -487,6 +486,7 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { } if (turn_off_nozzle){ + mmu_print_saved |= SavedState::Cooldown; LogEchoEvent("Heater off"); setAllTargetHotends(0); } @@ -496,35 +496,37 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { // gcode.reset_stepper_timeout(); } -void MMU2::ResumeAndUnPark(bool move_axes, bool turn_off_nozzle) { - if (mmu_print_saved) { - LogEchoEvent("Resuming print"); +void MMU2::ResumeHotendTemp() { + if ((mmu_print_saved & SavedState::Cooldown) && resume_hotend_temp) { + LogEchoEvent("Resuming Temp"); + MMU2_ECHO_MSG("Restoring hotend temperature "); + SERIAL_ECHOLN(resume_hotend_temp); + setTargetHotend(resume_hotend_temp, active_extruder); + lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else + ReportErrorHookSensorLineRender(); + waitForHotendTargetTemp(1000, []{ + ReportErrorHookDynamicRender(); + }); + LogEchoEvent("Hotend temperature reached"); + lcd_update_enable(true); // temporary hack to stop this locking the printer... + } +} - if (turn_off_nozzle && resume_hotend_temp) { - MMU2_ECHO_MSG("Restoring hotend temperature "); - SERIAL_ECHOLN(resume_hotend_temp); - setTargetHotend(resume_hotend_temp, active_extruder); - waitForHotendTargetTemp(3000, []{ - lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else - }); - LogEchoEvent("Hotend temperature reached"); - lcd_update_enable(true); // temporary hack to stop this locking the printer... - } +void MMU2::ResumeUnpark() +{ + if (mmu_print_saved & SavedState::ParkExtruder) { + LogEchoEvent("Resuming XYZ"); - if (move_axes) { - LogEchoEvent("Resuming XYZ"); - - current_position[X_AXIS] = resume_position.xyz[X_AXIS]; - current_position[Y_AXIS] = resume_position.xyz[Y_AXIS]; - plan_buffer_line_curposXYZE(NOZZLE_PARK_XY_FEEDRATE); - st_synchronize(); - - current_position[Z_AXIS] = resume_position.xyz[Z_AXIS]; - plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); - st_synchronize(); - } else { - LogEchoEvent("NOT resuming XYZ"); - } + current_position[X_AXIS] = resume_position.xyz[X_AXIS]; + current_position[Y_AXIS] = resume_position.xyz[Y_AXIS]; + plan_buffer_line_curposXYZE(NOZZLE_PARK_XY_FEEDRATE); + st_synchronize(); + + current_position[Z_AXIS] = resume_position.xyz[Z_AXIS]; + plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); + st_synchronize(); + } else { + LogEchoEvent("NOT resuming XYZ"); } } @@ -534,6 +536,7 @@ void MMU2::CheckUserInput(){ case Left: case Middle: case Right: + ResumeHotendTemp(); // Recover the hotend temp before we attempt to do anything else... Button(btn); break; case RestartMMU: @@ -559,7 +562,7 @@ void MMU2::CheckUserInput(){ /// But - in case of an error, the command is not yet finished, but we must react accordingly - move the printhead elsewhere, stop heating, eat a cat or so. /// That's what's being done here... void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { - mmu_print_saved = false; + mmu_print_saved = SavedState::None; KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -577,7 +580,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { case Finished: // command/operation completed, let Marlin continue its work // the E may have some more moves to finish - wait for them - ResumeAndUnPark(move_axes, turn_off_nozzle); // This is needed here otherwise recovery doesn't work. + ResumeUnpark(); // We can now travel back to the tower or wherever we were when we saved. st_synchronize(); return; case VersionMismatch: // this basically means the MMU will be disabled until reconnected @@ -591,7 +594,8 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { break; case CommunicationRecovered: // @@TODO communication recovered and may be an error recovered as well // may be the logic layer can detect the change of state a respond with one "Recovered" to be handled here - ResumeAndUnPark(move_axes, turn_off_nozzle); + ResumeHotendTemp(); + ResumeUnpark(); break; case Processing: // wait for the MMU to respond default: diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 7008ac212..93a5ca3aa 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -58,6 +58,13 @@ public: ResetPin = 1, ///< trigger the reset pin of the MMU CutThePower = 2 ///< power off and power on (that includes +5V and +24V power lines) }; + + /// Saved print state on error. + enum SavedState: uint8_t { + None = 0, // No state saved. + ParkExtruder = 1, // The extruder was parked. + Cooldown = 2, // The extruder was allowed to cool. + }; /// Perform a reset of the MMU /// @param level physical form of the reset @@ -143,7 +150,7 @@ public: bool is_mmu_error_monitor_active; /// Method to read-only mmu_print_saved - bool MMU_PRINT_SAVED() const { return mmu_print_saved; } + bool MMU_PRINT_SAVED() const { return mmu_print_saved != SavedState::None; } private: /// Perform software self-reset of the MMU (sends an X0 command) @@ -193,8 +200,11 @@ private: /// Save print and park the print head void SaveAndPark(bool move_axes, bool turn_off_nozzle); - /// Resume print (unpark, turn on heating etc.) - void ResumeAndUnPark(bool move_axes, bool turn_off_nozzle); + /// Resume hotend temperature, if it was cooled. Safe to call if we aren't saved. + void ResumeHotendTemp(); + + /// Resume position, if the extruder was parked. Safe to all if state was not saved. + void ResumeUnpark(); /// Check for any button/user input coming from the printer's UI void CheckUserInput(); @@ -220,7 +230,7 @@ private: enum xState state; - bool mmu_print_saved; + uint8_t mmu_print_saved; bool loadFilamentStarted; friend struct LoadingToNozzleRAII; diff --git a/Firmware/mmu2_protocol.h b/Firmware/mmu2_protocol.h index 68fde9a1a..21170b131 100644 --- a/Firmware/mmu2_protocol.h +++ b/Firmware/mmu2_protocol.h @@ -37,7 +37,8 @@ enum class ResponseMsgParamCodes : uint8_t { Error = 'E', Finished = 'F', Accepted = 'A', - Rejected = 'R' + Rejected = 'R', + Button = 'B' // the MMU registered a button press and is sending it to the printer for processing }; /// A request message - requests are being sent by the printer into the MMU. diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 38a14d108..226ee3ea9 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -27,7 +27,7 @@ void EndReport(CommandInProgress cip, uint16_t ec) { * @brief Renders any characters that will be updated live on the MMU error screen. *Currently, this is FINDA and Filament Sensor status and Extruder temperature. */ -static void ReportErrorHookDynamicRender(void) +extern void ReportErrorHookDynamicRender(void) { lcd_set_cursor(3, 2); lcd_printf_P(PSTR("%d"), mmu2.FindaDetectsFilament()); @@ -78,17 +78,23 @@ static void ReportErrorHookStaticRender(uint8_t ei) { lcd_update_enable(false); lcd_clear(); + ReportErrorHookSensorLineRender(); + // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); - // Render static characters in third line - lcd_set_cursor(0, 2); - lcd_printf_P(PSTR("FI: FS: > %c %c"), LCD_STR_THERMOMETER[0], LCD_STR_DEGREE[0]); - // Render the choices lcd_show_choices_prompt_P(two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, _T(PrusaErrorButtonTitle(button_op_middle)), _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), two_choices ? 10 : 7, two_choices ? nullptr : _T(PrusaErrorButtonMore())); } +extern void ReportErrorHookSensorLineRender() +{ + // Render static characters in third line + lcd_set_cursor(0, 2); + lcd_printf_P(PSTR("FI: FS: > %c %c"), LCD_STR_THERMOMETER[0], LCD_STR_DEGREE[0]); +} + + /** * @brief Monitors the LCD button selection without blocking MMU communication * @param[in] ei Error code index diff --git a/Firmware/mmu2_reporting.h b/Firmware/mmu2_reporting.h index fedc6c1d7..8cb531780 100644 --- a/Firmware/mmu2_reporting.h +++ b/Firmware/mmu2_reporting.h @@ -28,6 +28,12 @@ void ReportErrorHook(uint16_t ec); /// Called when the MMU sends operation progress update void ReportProgressHook(CommandInProgress cip, uint16_t ec); +/// Remders the sensor status line. Also used by the "resume temperature" screen. +void ReportErrorHookDynamicRender(); + +/// Renders the static part of the sensor state line. Also used by "resuming temperature screen" +void ReportErrorHookSensorLineRender(); + /// @returns true if the MMU is communicating and available /// can change at runtime bool MMUAvailable(); From f9bedc3c947304ce7910191ec12bdf2be772bc74 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 11:34:44 -0400 Subject: [PATCH 144/319] Button handling WIP --- Firmware/mmu2.cpp | 14 +++++++++++++- Firmware/mmu2.h | 1 + Firmware/mmu2_protocol.cpp | 1 + Firmware/mmu2_protocol_logic.cpp | 5 +++++ Firmware/mmu2_protocol_logic.h | 6 ++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index d3fdd3641..25332e631 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -502,12 +502,13 @@ void MMU2::ResumeHotendTemp() { MMU2_ECHO_MSG("Restoring hotend temperature "); SERIAL_ECHOLN(resume_hotend_temp); setTargetHotend(resume_hotend_temp, active_extruder); - lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); // better report the event and let the GUI do its work somewhere else + lcd_display_message_fullscreen_P(_i("MMU Retry: Restoring temperature...")); // better report the event and let the GUI do its work somewhere else ReportErrorHookSensorLineRender(); waitForHotendTargetTemp(1000, []{ ReportErrorHookDynamicRender(); }); LogEchoEvent("Hotend temperature reached"); + lcd_clear(); lcd_update_enable(true); // temporary hack to stop this locking the printer... } } @@ -532,6 +533,13 @@ void MMU2::ResumeUnpark() void MMU2::CheckUserInput(){ auto btn = ButtonPressed((uint16_t)lastErrorCode); + + // Was a button pressed on the MMU itself instead of the LCD? + if (btn == Buttons::NoButton && lastButton != Buttons::NoButton) + { + btn = lastButton; + lastButton = Buttons::NoButton; // Clear it. + } switch (btn) { case Left: case Middle: @@ -629,6 +637,10 @@ StepStatus MMU2::LogicStep() { StopKeepPowered(); ReportError(ErrorCode::VERSION_MISMATCH); CheckUserInput(); + case ButtonPushed: + lastButton = logic.Button(); + LogEchoEvent("MMU Button pushed"); + CheckUserInput(); break; default: break; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 93a5ca3aa..aa84c8787 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -225,6 +225,7 @@ private: ProgressCode lastProgressCode = ProgressCode::OK; ErrorCode lastErrorCode = ErrorCode::MMU_NOT_RESPONDING; + Buttons lastButton = Buttons::NoButton; StepStatus logicStepLastStatus; diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp index 6fdf9c1b7..140c4e49b 100644 --- a/Firmware/mmu2_protocol.cpp +++ b/Firmware/mmu2_protocol.cpp @@ -138,6 +138,7 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { case 'F': case 'A': case 'R': + case 'B': rspState = ResponseStates::ParamValue; responseMsg.paramCode = (ResponseMsgParamCodes)c; responseMsg.paramValue = 0; diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 45fc741fc..a1677d383 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -234,6 +234,11 @@ StepStatus Command::Step() { // - the MMU checks FINDA and fsensor even while recovering from errors SendAndUpdateFilamentSensor(); return CommandError; + case ResponseMsgParamCodes::Button: + // The user pushed a button on the MMU. Save it, do what we need to do + // to prepare, then pass it back to the MMU so it can work its magic. + logic->buttonCode = static_cast(logic->rsp.paramValue); + return ButtonPushed; case ResponseMsgParamCodes::Finished: logic->progressCode = ProgressCode::OK; state = State::Ready; diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index eb8c26834..85632d88c 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -16,6 +16,7 @@ public: #include "mmu2/error_codes.h" #include "mmu2/progress_codes.h" +#include "mmu2/buttons.h" #include "mmu2_protocol.h" #include "mmu2_serial.h" @@ -38,6 +39,7 @@ enum StepStatus : uint_fast8_t { CommandError, ///< the command in progress stopped due to unrecoverable error, user interaction required VersionMismatch, ///< the MMU reports its firmware version incompatible with our implementation CommunicationRecovered, + ButtonPushed, ///< The MMU reported the user pushed one of its three buttons. }; @@ -221,6 +223,9 @@ public: /// @returns the current/latest process code as reported by the MMU ProgressCode Progress() const { return progressCode; } + /// @returns the current/latest button code as reported by the MMU + Buttons Button() const { return buttonCode; } + uint8_t CommandInProgress()const; inline bool Running()const { @@ -297,6 +302,7 @@ private: ErrorCode errorCode; ///< last received error code from the MMU ProgressCode progressCode; ///< last received progress code from the MMU + Buttons buttonCode; ///< Last received button from the MMU. uint8_t lastFSensor; ///< last state of filament sensor From d9676eff25830407c2667fb6e93bdd2dd0a669da Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 12:07:42 -0400 Subject: [PATCH 145/319] Fixed buged temperature resume. --- Firmware/mmu2.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 25332e631..bfa6982a7 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -506,7 +506,9 @@ void MMU2::ResumeHotendTemp() { ReportErrorHookSensorLineRender(); waitForHotendTargetTemp(1000, []{ ReportErrorHookDynamicRender(); + manage_inactivity(true); }); + mmu_print_saved &= ~(SavedState::Cooldown); LogEchoEvent("Hotend temperature reached"); lcd_clear(); lcd_update_enable(true); // temporary hack to stop this locking the printer... @@ -526,6 +528,7 @@ void MMU2::ResumeUnpark() current_position[Z_AXIS] = resume_position.xyz[Z_AXIS]; plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); st_synchronize(); + mmu_print_saved &= ~(SavedState::ParkExtruder); } else { LogEchoEvent("NOT resuming XYZ"); } @@ -637,6 +640,7 @@ StepStatus MMU2::LogicStep() { StopKeepPowered(); ReportError(ErrorCode::VERSION_MISMATCH); CheckUserInput(); + break; case ButtonPushed: lastButton = logic.Button(); LogEchoEvent("MMU Button pushed"); From c07a5f396d7d25f188c2c91a2c4adccd9152a1a6 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 12:59:55 -0400 Subject: [PATCH 146/319] Fix button enum --- Firmware/mmu2/buttons.h | 4 ++-- Firmware/mmu2_protocol_logic.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2/buttons.h b/Firmware/mmu2/buttons.h index 0e407e43b..e02a6b065 100644 --- a/Firmware/mmu2/buttons.h +++ b/Firmware/mmu2/buttons.h @@ -21,9 +21,9 @@ enum class ButtonOperations : uint8_t { /// Button codes + extended actions performed on the printer's side enum Buttons : uint8_t { - Left = 0, + Right = 0, Middle, - Right, + Left, // performed on the printer's side RestartMMU, diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index a1677d383..20e6754aa 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -238,6 +238,7 @@ StepStatus Command::Step() { // The user pushed a button on the MMU. Save it, do what we need to do // to prepare, then pass it back to the MMU so it can work its magic. logic->buttonCode = static_cast(logic->rsp.paramValue); + SendAndUpdateFilamentSensor(); return ButtonPushed; case ResponseMsgParamCodes::Finished: logic->progressCode = ProgressCode::OK; From 4ea53ad4bf5e7570597acea3749c8e9cccf2a389 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 13:42:40 -0400 Subject: [PATCH 147/319] fix bug I introduced --- Firmware/mmu2_reporting.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 226ee3ea9..84b2ff5a6 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -78,11 +78,11 @@ static void ReportErrorHookStaticRender(uint8_t ei) { lcd_update_enable(false); lcd_clear(); - ReportErrorHookSensorLineRender(); - // Print title and header lcd_printf_P(PSTR("%.20S\nprusa3d.com/ERR04%hu"), _T(PrusaErrorTitle(ei)), PrusaErrorCode(ei) ); + ReportErrorHookSensorLineRender(); + // Render the choices lcd_show_choices_prompt_P(two_choices ? LCD_LEFT_BUTTON_CHOICE : LCD_MIDDLE_BUTTON_CHOICE, _T(PrusaErrorButtonTitle(button_op_middle)), _T(two_choices ? PrusaErrorButtonMore() : PrusaErrorButtonTitle(button_op_right)), two_choices ? 10 : 7, two_choices ? nullptr : _T(PrusaErrorButtonMore())); } From 0e96169bb32b4a14ce996a9003721bcf348986e1 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sat, 18 Jun 2022 19:46:03 -0400 Subject: [PATCH 148/319] remove logspam --- Firmware/mmu2.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index bfa6982a7..689162851 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -529,8 +529,6 @@ void MMU2::ResumeUnpark() plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); st_synchronize(); mmu_print_saved &= ~(SavedState::ParkExtruder); - } else { - LogEchoEvent("NOT resuming XYZ"); } } From 121d43f8966c5d70ae1f27f6aedda785e7e16c7b Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 21 Jun 2022 07:21:48 +0200 Subject: [PATCH 149/319] Add a Try-Load-to-Bondtech operation PFW-1347 --- Firmware/messages.cpp | 2 ++ Firmware/messages.h | 2 ++ Firmware/mmu2.cpp | 28 ++++++++++++++++++++++------ Firmware/mmu2.h | 6 ++++++ Firmware/ultralcd.cpp | 34 ++++++++++++++++++++++++++++++++++ Firmware/ultralcd.h | 1 + 6 files changed, 67 insertions(+), 6 deletions(-) diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 7752e8083..a36e25b44 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -54,7 +54,9 @@ const char MSG_SELECT_FILAMENT[] PROGMEM_I1 = ISTR("Select filament:"); ////MSG_ const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////MSG_LAST_PRINT c=18 const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////MSG_LAST_PRINT_FAILURES c=20 const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////MSG_LOAD_FILAMENT c=17 +const char MSG_LOAD_TO_BONDTECH[] PROGMEM_I1 = ISTR("Load to Bondtech"); ////c=18 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////MSG_LOADING_FILAMENT c=20 +const char MSG_TESTING_FILAMENT[] PROGMEM_I1 = ISTR("Testing filament"); ////c=20 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); ////MSG_EJECT_FILAMENT c=17 const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); ////MSG_CUT_FILAMENT c=17 const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////MSG_MAIN c=18 diff --git a/Firmware/messages.h b/Firmware/messages.h index 4c9890b2a..c12d51b42 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -60,7 +60,9 @@ extern const char MSG_SELECT_FILAMENT[]; extern const char MSG_LAST_PRINT[]; extern const char MSG_LAST_PRINT_FAILURES[]; extern const char MSG_LOAD_FILAMENT[]; +extern const char MSG_LOAD_TO_BONDTECH[]; extern const char MSG_LOADING_FILAMENT[]; +extern const char MSG_TESTING_FILAMENT[]; extern const char MSG_M117_V2_CALIBRATION[]; extern const char MSG_MAIN[]; extern const char MSG_BACK[]; diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 689162851..60289a195 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -333,20 +333,34 @@ bool MMU2::cut_filament(uint8_t index){ return true; } +void FullScreenMsg(const char *pgmS, uint8_t slot){ + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 1, pgmS); + lcd_print(' '); + lcd_print(slot + 1); +} + +bool MMU2::load_to_bondtech(uint8_t index){ + FullScreenMsg(_T(MSG_TESTING_FILAMENT), index); + tool_change(index); + st_synchronize(); + unload(); + lcd_update_enable(true); + return true; +} + bool MMU2::load_filament(uint8_t index) { if( ! WaitForMMUReady()) return false; - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); - lcd_print(' '); - lcd_print(index + 1); + FullScreenMsg(_T(MSG_LOADING_FILAMENT), index); ReportingRAII rep(CommandInProgress::LoadFilament); logic.LoadFilament(index); manage_response(false, false); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); + lcd_update_enable(true); return true; @@ -370,6 +384,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { WaitForHotendTargetTempBeep(); + FullScreenMsg(_T(MSG_LOADING_FILAMENT), index); { // used for MMU-menu operation "Load to Nozzle" ReportingRAII rep(CommandInProgress::ToolChange); @@ -406,8 +421,9 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { SetActiveExtruder(0); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); - return true; } + lcd_update_enable(true); + return true; } bool MMU2::eject_filament(uint8_t index, bool recover) { diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index aa84c8787..98a9bfea3 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -112,6 +112,12 @@ public: /// @returns false if the operation cannot be performed (Stopped) bool cut_filament(uint8_t index); + /// Issue a Try-Load command + /// It behaves very similarly like a ToolChange, but it doesn't load the filament + /// all the way down to the nozzle. The sole purpose of this operation + /// is to check, that the filament will be ready for printing. + bool load_to_bondtech(uint8_t index); + /// @returns the active filament slot index (0-4) or 0xff in case of no active tool uint8_t get_current_tool() const; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 98a60d23d..25bdcbeb1 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -125,6 +125,7 @@ static void lcd_v2_calibration(); static void mmu_fil_eject_menu(); static void mmu_load_to_nozzle_menu(); +static void mmu_load_to_bondtech_menu(); static void preheat_or_continue(); #ifdef MMU_HAS_CUTTER @@ -1836,6 +1837,7 @@ switch(eFilamentAction) case FilamentAction::Load: case FilamentAction::AutoLoad: case FilamentAction::MmuLoad: + case FilamentAction::MmuLoadBondtech: lcd_puts_P(_i("to load filament")); ////MSG_TO_LOAD_FIL c=20 break; case FilamentAction::UnLoad: @@ -1874,6 +1876,7 @@ switch(eFilamentAction) enquecommand_P(PSTR("M702")); // unload filament break; case FilamentAction::MmuLoad: + case FilamentAction::MmuLoadBondtech: case FilamentAction::MmuUnLoad: case FilamentAction::MmuEject: case FilamentAction::MmuCut: @@ -1945,6 +1948,12 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) menu_back(nLevel); menu_submenu(mmu_load_to_nozzle_menu); break; + case FilamentAction::MmuLoadBondtech: + nLevel = bFilamentPreheatState ? 1 : 2; + bFilamentAction = true; + menu_back(nLevel); + menu_submenu(mmu_load_to_bondtech_menu); + break; case FilamentAction::MmuUnLoad: nLevel = bFilamentPreheatState ? 1 : 2; bFilamentAction = true; @@ -1999,6 +2008,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) case FilamentAction::Load: case FilamentAction::AutoLoad: case FilamentAction::MmuLoad: + case FilamentAction::MmuLoadBondtech: lcd_puts_P(_i("Preheating to load")); ////MSG_PREHEATING_TO_LOAD c=20 if (once) raise_z_above(MIN_Z_FOR_LOAD); break; @@ -5226,6 +5236,29 @@ static void mmu_cut_filament_menu() { } #endif //MMU_HAS_CUTTER +static inline void load_to_bondtech_all_wrapper(){ + for(uint8_t i = 0; i < 5; ++i){ + MMU2::mmu2.load_to_bondtech(i); + } +} + +static inline void load_to_bondtech_wrapper(uint8_t i){ + MMU2::mmu2.load_to_bondtech(i); +} + +static void mmu_load_to_bondtech_menu() { + if (bFilamentAction) { + MENU_BEGIN(); + MENU_ITEM_BACK_P(_T(MSG_MAIN)); + MENU_ITEM_FUNCTION_P(_i("Load all"), load_to_bondtech_all_wrapper); ////MSG_LOAD_ALL c=18 + for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) + MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_to_bondtech_wrapper, i); ////MSG_LOAD_FILAMENT c=16 + MENU_END(); + } else { + eFilamentAction = FilamentAction::MmuLoadBondtech; + preheat_or_continue(); + } +} // unload filament for single material printer (used in M702 gcode) // @param automatic: If true, unload_filament is part of a unload+load sequence (M600) @@ -5600,6 +5633,7 @@ static void lcd_main_menu() if ( ! ( IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) { if (MMU2::mmu2.Enabled()) { MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), mmu_load_filament_menu); + MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_TO_BONDTECH), mmu_load_to_bondtech_menu); MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);////MSG_LOAD_TO_NOZZLE c=18 MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament); MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 2f547338a..8d5fbfb45 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -180,6 +180,7 @@ enum class FilamentAction : uint_least8_t MmuUnLoad, MmuEject, MmuCut, + MmuLoadBondtech, Preheat, Lay1Cal, }; From dab26fe50b270050979fddfeff7eaeb6cc772247 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 21 Jun 2022 07:37:54 +0200 Subject: [PATCH 150/319] Report detected MMU version in the Support menu It was just subtly broken, all the functionality had already been implemented. --- Firmware/mmu2.h | 2 +- Firmware/mmu2_protocol_logic.cpp | 9 ++++++--- Firmware/mmu2_protocol_logic.h | 22 ++++++++++++++++++---- Firmware/ultralcd.cpp | 2 +- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 98a9bfea3..1f92ae15a 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -146,7 +146,7 @@ public: /// In the future we'll return the trully detected FW version Version GetMMUFWVersion()const { if( State() == xState::Active ){ - return { 2, 0, 0 }; + return { logic.MmuFwVersionMajor(), logic.MmuFwVersionMinor(), logic.MmuFwVersionBuild() }; } else { return { 0, 0, 0}; } diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 20e6754aa..faa172faa 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -145,7 +145,8 @@ StepStatus StartSeq::Step() { // solve initial handshake switch (state) { case State::S0Sent: // received response to S0 - major - if (logic->rsp.paramValue != 2) { + logic->mmuFwVersionMajor = logic->rsp.paramValue; + if (logic->mmuFwVersionMajor != 2) { return VersionMismatch; } logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking @@ -153,14 +154,16 @@ StepStatus StartSeq::Step() { state = State::S1Sent; break; case State::S1Sent: // received response to S1 - minor - if (logic->rsp.paramValue != 0) { + logic->mmuFwVersionMinor = logic->rsp.paramValue; + if (logic->mmuFwVersionMinor != 0) { return VersionMismatch; } logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 2)); state = State::S2Sent; break; case State::S2Sent: // received response to S2 - revision - if (logic->rsp.paramValue != 0) { + logic->mmuFwVersionBuild = logic->rsp.paramValue; + if (logic->mmuFwVersionBuild != 0) { return VersionMismatch; } // Start General Interrogation after line up. diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 85632d88c..a9109d750 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -227,15 +227,26 @@ public: Buttons Button() const { return buttonCode; } uint8_t CommandInProgress()const; - + inline bool Running()const { return state == State::Running; } - + inline bool FindaPressed() const { return findaPressed; } + inline uint8_t MmuFwVersionMajor() const { + return mmuFwVersionMajor; + } + + inline uint8_t MmuFwVersionMinor() const { + return mmuFwVersionMinor; + } + + inline uint16_t MmuFwVersionBuild() const { + return mmuFwVersionBuild; + } #ifndef UNITTEST private: #endif @@ -305,9 +316,12 @@ private: Buttons buttonCode; ///< Last received button from the MMU. uint8_t lastFSensor; ///< last state of filament sensor - + bool findaPressed; - + + uint8_t mmuFwVersionMajor, mmuFwVersionMinor; + uint16_t mmuFwVersionBuild; + friend class ProtocolLogicPartBase; friend class Stopped; friend class Command; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 25bdcbeb1..4ccf41bcc 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1706,7 +1706,7 @@ static void lcd_support_menu() { lcd_set_cursor(6, menu_row); MMU2::Version mmu_version = MMU2::mmu2.GetMMUFWVersion(); - if ((mmu_version.major > 0) && (mmu_version.build > 0)) + if (mmu_version.major > 0) lcd_printf_P(PSTR("%d.%d.%d"), mmu_version.major, mmu_version.minor, mmu_version.build); else lcd_puts_P(_i("unknown")); ////MSG_UNKNOWN c=13 From 98adcbaff24715559ae03261981739276f3a9ecd Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 21 Jun 2022 09:00:29 +0200 Subject: [PATCH 151/319] Bump required MMU FW version to 2.0.18 --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index faa172faa..c5179cef7 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -163,7 +163,7 @@ StepStatus StartSeq::Step() { break; case State::S2Sent: // received response to S2 - revision logic->mmuFwVersionBuild = logic->rsp.paramValue; - if (logic->mmuFwVersionBuild != 0) { + if (logic->mmuFwVersionBuild < 18) { return VersionMismatch; } // Start General Interrogation after line up. From a004273e8f98fe80babaf0a38c87ae61ebcac1ad Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 22 Jun 2022 06:41:58 +0200 Subject: [PATCH 152/319] Avoid drawing MMU Error screen while MMU moves manually --- Firmware/mmu2_protocol_logic.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index c5179cef7..ca5de501e 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -307,12 +307,18 @@ StepStatus Idle::Step() { // this one is kind of special // we do not transfer to any "running" command (i.e. we stay in Idle), // but in case there is an error reported we must make sure it gets propagated - if( logic->rsp.paramCode != ResponseMsgParamCodes::Finished ){ + switch( logic->rsp.paramCode ){ + case ResponseMsgParamCodes::Processing: + // @@TODO we may actually use this branch to report progress of manual operation on the MMU + // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector + // For now let's behave just like "finished" + case ResponseMsgParamCodes::Finished: + logic->errorCode = ErrorCode::OK; + break; + default: logic->errorCode = static_cast(logic->rsp.paramValue); SendFINDAQuery(); // continue Idle state without restarting the communication return CommandError; - } else { - logic->errorCode = ErrorCode::OK; } break; default: From f94c2cba460c2fd85a3447ea91a7e38d51fad887 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 22 Jun 2022 07:22:08 +0200 Subject: [PATCH 153/319] Fix rendering temp. + toolchange on MMU error screen --- Firmware/mmu2_reporting.cpp | 24 ++++++++---------------- Firmware/ultralcd.cpp | 21 +++++++++++---------- Firmware/ultralcd.h | 2 ++ 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 84b2ff5a6..5290ec966 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -27,26 +27,18 @@ void EndReport(CommandInProgress cip, uint16_t ec) { * @brief Renders any characters that will be updated live on the MMU error screen. *Currently, this is FINDA and Filament Sensor status and Extruder temperature. */ -extern void ReportErrorHookDynamicRender(void) -{ - lcd_set_cursor(3, 2); - lcd_printf_P(PSTR("%d"), mmu2.FindaDetectsFilament()); +extern void ReportErrorHookDynamicRender(void){ + // beware - this optimization abuses the fact, that FindaDetectsFilament returns 0 or 1 and '0' is followed by '1' in the ASCII table + lcd_putc_at(3, 2, mmu2.FindaDetectsFilament() + '0'); + lcd_putc_at(8, 2, fsensor.getFilamentPresent() + '0'); - lcd_set_cursor(8, 2); - lcd_printf_P(PSTR("%d"), fsensor.getFilamentPresent()); - - lcd_set_cursor(11, 2); - lcd_print("?>?"); // This is temporary until below TODO is resolved - - // TODO, see lcdui_print_extruder(void) - //if (MMU2::mmu2.get_current_tool() == MMU2::FILAMENT_UNKNOWN) - // lcd_printf_P(_N(" ?>%u"), tmp_extruder + 1); - //else - // lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, tmp_extruder + 1); + // print active/changing filament slot + lcd_set_cursor(10, 2); + lcdui_print_extruder(); // Print active extruder temperature lcd_set_cursor(16, 2); - lcd_printf_P(PSTR("%d"), (int)(degHotend(0) + 0.5)); + lcd_printf_P(PSTR("%3d"), (int)(degHotend(0) + 0.5)); } /** diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4ccf41bcc..dae03e8f7 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -463,7 +463,7 @@ void lcdui_print_percent_done(void) // [nr1.] ranges from 1 to 5. // [nr2.] ranges from 1 to 5. // Filament [nr1.] was loaded, but [nr2.] is currently being loaded via tool change -void lcdui_print_extruder(void) { +uint8_t lcdui_print_extruder(void) { uint8_t chars = 0; if (MMU2::mmu2.get_current_tool() == MMU2::mmu2.get_tool_change_tool()) { if (MMU2::mmu2.get_current_tool() == (uint8_t)MMU2::FILAMENT_UNKNOWN) { @@ -478,7 +478,7 @@ void lcdui_print_extruder(void) { chars = lcd_printf_P(_N(" %u>%u"), MMU2::mmu2.get_current_tool() + 1, MMU2::mmu2.get_tool_change_tool() + 1); } } - lcd_space(5 - chars); + return chars; } // Print farm number (5 chars total) @@ -737,14 +737,15 @@ void lcdui_print_status_screen(void) //Print SD status (7 chars) lcdui_print_percent_done(); - if (MMU2::mmu2.Enabled()) - //Print extruder status (5 chars) - lcdui_print_extruder(); - else if (farm_mode) - //Print farm number (5 chars) - lcdui_print_farm(); - else - lcd_space(5); //5 spaces + if (MMU2::mmu2.Enabled()) { + // Print extruder status (5 chars) + lcd_space(5 - lcdui_print_extruder()); + } else if (farm_mode) { + // Print farm number (5 chars) + lcdui_print_farm(); + } else { + lcd_space(5); // 5 spaces + } #ifdef CMD_DIAGNOSTICS //Print cmd queue diagnostics (8chars) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 8d5fbfb45..5441198a3 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -242,6 +242,8 @@ void lcd_wizard(WizState state); extern void lcd_experimental_toggle(); extern void lcd_experimental_menu(); +uint8_t lcdui_print_extruder(void); + #ifdef PINDA_TEMP_COMP extern void lcd_pinda_temp_compensation_toggle(); #endif //PINDA_TEMP_COMP From d1b216da0df1dc809611da2d8142d49e3ddcf293 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 22 Jun 2022 08:05:01 +0200 Subject: [PATCH 154/319] Disable fsensor newVolt debug reporting --- Firmware/Filament_sensor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 8d383b1a5..9f17eea19 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -227,7 +227,7 @@ bool IR_sensor_analog::update() { if (voltReady) { voltReady = false; uint16_t volt = getVoltRaw(); - printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); +// printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); // detect min-max, some long term sliding window for filtration may be added // avoiding floating point operations, thus computing in raw From d7d68857650249e441da374d704747824ebaa6b3 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Sun, 26 Jun 2022 10:10:15 -0400 Subject: [PATCH 155/319] PFW-1351 Cooldown timeout (#33) * PFW-1351 WIP * Fix bug with cooldown timing due to bad bitfield. * Use default safety timer value for timeout --- Firmware/mmu2.cpp | 40 +++++++++++++++++++++++++++++++++++----- Firmware/mmu2.h | 1 + 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 60289a195..ba9b5216f 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -502,9 +502,10 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { } if (turn_off_nozzle){ - mmu_print_saved |= SavedState::Cooldown; - LogEchoEvent("Heater off"); - setAllTargetHotends(0); + mmu_print_saved |= SavedState::CooldownPending; + LogEchoEvent("Heater cooldown pending"); + // This just sets the flag that we should timeout and shut off the nozzle in 30 minutes... + //setAllTargetHotends(0); } } // keep the motors powered forever (until some other strategy is chosen) @@ -513,10 +514,17 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { } void MMU2::ResumeHotendTemp() { + if ((mmu_print_saved & SavedState::CooldownPending)) + { + // Clear the "pending" flag if we haven't cooled yet. + mmu_print_saved &= ~(SavedState::CooldownPending); + LogEchoEvent("Cooldown flag cleared"); + } if ((mmu_print_saved & SavedState::Cooldown) && resume_hotend_temp) { LogEchoEvent("Resuming Temp"); MMU2_ECHO_MSG("Restoring hotend temperature "); SERIAL_ECHOLN(resume_hotend_temp); + mmu_print_saved &= ~(SavedState::Cooldown); setTargetHotend(resume_hotend_temp, active_extruder); lcd_display_message_fullscreen_P(_i("MMU Retry: Restoring temperature...")); // better report the event and let the GUI do its work somewhere else ReportErrorHookSensorLineRender(); @@ -524,10 +532,9 @@ void MMU2::ResumeHotendTemp() { ReportErrorHookDynamicRender(); manage_inactivity(true); }); - mmu_print_saved &= ~(SavedState::Cooldown); + lcd_update_enable(true); // temporary hack to stop this locking the printer... LogEchoEvent("Hotend temperature reached"); lcd_clear(); - lcd_update_enable(true); // temporary hack to stop this locking the printer... } } @@ -591,6 +598,8 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { KEEPALIVE_STATE(PAUSED_FOR_USER); + LongTimer nozzleTimeout; + for (;;) { // in our new implementation, we know the exact state of the MMU at any moment, we do not have to wait for a timeout // So in this case we shall decide if the operation is: @@ -601,6 +610,27 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { manage_inactivity(true); // calls LogicStep() and remembers its return status lcd_update(0); + if (mmu_print_saved & SavedState::CooldownPending) + { + if (!nozzleTimeout.running()) + { + nozzleTimeout.start(); + LogEchoEvent(" Cooling Timeout started"); + } + else if (nozzleTimeout.expired(DEFAULT_SAFETYTIMER_TIME_MINS*60*1000ul)) // mins->msec. TODO: do we use the global or have our own independent timeout + { + mmu_print_saved &= ~(SavedState::CooldownPending); + mmu_print_saved |= SavedState::Cooldown; + setAllTargetHotends(0); + LogEchoEvent("Heater cooldown"); + } + } + else if (nozzleTimeout.running()) + { + nozzleTimeout.stop(); + LogEchoEvent("Cooling timer stopped"); + } + switch (logicStepLastStatus) { case Finished: // command/operation completed, let Marlin continue its work diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 1f92ae15a..5adb34da1 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -64,6 +64,7 @@ public: None = 0, // No state saved. ParkExtruder = 1, // The extruder was parked. Cooldown = 2, // The extruder was allowed to cool. + CooldownPending = 4, }; /// Perform a reset of the MMU From 4dd689ba9a6b3859f63ee5a74a2103f1f69af588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 26 Jun 2022 14:11:02 +0000 Subject: [PATCH 156/319] Fix PFW-1357 (#35) lcd_encoder_diff would be set to 0 if lcd_update_enable(true) is called outside ReportErrorHookMonitor This would put enc_dif out of sync with lcd_encoder_diff and could cause false rotation triggering --- Firmware/mmu2_reporting.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 5290ec966..4622703b2 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -100,7 +100,14 @@ extern void ReportErrorHookSensorLineRender() static uint8_t ReportErrorHookMonitor(uint8_t ei) { uint8_t ret = 0; bool two_choices = false; - static int8_t enc_dif = 0; + static int8_t enc_dif = lcd_encoder_diff; + + if (lcd_encoder_diff == 0) + { + // lcd_update_enable(true) was called outside ReportErrorHookMonitor + // It will set lcd_encoder_diff to 0, sync enc_dif + enc_dif = 0; + } // Read and determine what operations should be shown on the menu const uint8_t button_operation = PrusaErrorButtons(ei); From 7d3a50450d01c3f9ebf16d551c4522de73c13f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 26 Jun 2022 20:01:42 +0000 Subject: [PATCH 157/319] PFW-1340 Hide Done button for two errors * FSENSOR_DIDNT_TRIGGER * FSENSOR_DIDNT_GO_OFF The Done button does not Move the E-motor because it expects the user to have manually resolved the problem Also if the filament is in the gears, we cannot pull the filament out. In this case the Retry button is more suited as it will unload the filament. --- Firmware/mmu2/errors_list.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 7d7f94a0f..d077238a9 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -303,8 +303,8 @@ uint8_t constexpr Btns(ButtonOperations bMiddle, ButtonOperations bRight){ static const uint8_t errorButtons[] PROGMEM = { Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FINDA_DIDNT_TRIGGER Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FINDA_DIDNT_GO_OFF - Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FSENSOR_DIDNT_TRIGGER - Btns(ButtonOperations::Retry, ButtonOperations::Continue),//FSENSOR_DIDNT_GO_OFF + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//FSENSOR_DIDNT_TRIGGER + Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//FSENSOR_DIDNT_GO_OFF Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//PULLEY_STALLED Btns(ButtonOperations::Retry, ButtonOperations::NoOperation),//FSENSOR_TOO_EARLY From ace5130d9f5e7f94fc8f0942c08dd6071619fdb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 9 Jul 2022 09:53:49 +0000 Subject: [PATCH 158/319] PFW-1375 MMU error reported by MK3S does not appear on LCD --- Firmware/mmu2.cpp | 14 +++++++------- Firmware/mmu2.h | 11 +++++++++-- Firmware/mmu2_reporting.cpp | 9 ++------- Firmware/mmu2_reporting.h | 10 ++++++++-- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ba9b5216f..ad073f276 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -177,7 +177,7 @@ void MMU2::mmu_loop() { if (is_mmu_error_monitor_active){ // Call this every iteration to keep the knob rotation responsive // This includes when mmu_loop is called within manage_response - ReportErrorHook((uint16_t)lastErrorCode); + ReportErrorHook((uint16_t)lastErrorCode, mmu2.MMUCurrentErrorCode() == ErrorCode::OK ? ErrorSourcePrinter : ErrorSourceMMU); } avoidRecursion = false; @@ -667,22 +667,22 @@ StepStatus MMU2::LogicStep() { OnMMUProgressMsg(logic.Progress()); break; case CommandError: - ReportError(logic.Error()); + ReportError(logic.Error(), ErrorSourceMMU); CheckUserInput(); break; case CommunicationTimeout: state = xState::Connecting; - ReportError(ErrorCode::MMU_NOT_RESPONDING); + ReportError(ErrorCode::MMU_NOT_RESPONDING, ErrorSourcePrinter); CheckUserInput(); break; case ProtocolError: state = xState::Connecting; - ReportError(ErrorCode::PROTOCOL_ERROR); + ReportError(ErrorCode::PROTOCOL_ERROR, ErrorSourcePrinter); CheckUserInput(); break; case VersionMismatch: StopKeepPowered(); - ReportError(ErrorCode::VERSION_MISMATCH); + ReportError(ErrorCode::VERSION_MISMATCH, ErrorSourcePrinter); CheckUserInput(); break; case ButtonPushed: @@ -721,7 +721,7 @@ void MMU2::SetActiveExtruder(uint8_t ex){ active_extruder = ex; } -void MMU2::ReportError(ErrorCode ec) { +void MMU2::ReportError(ErrorCode ec, uint8_t res) { // Due to a potential lossy error reporting layers linked to this hook // we'd better report everything to make sure especially the error states // do not get lost. @@ -733,7 +733,7 @@ void MMU2::ReportError(ErrorCode ec) { // - report only changes of states (we can miss an error message) // - may be some combination of MMUAvailable + UseMMU flags and decide based on their state // Right now the filtering of MMU_NOT_RESPONDING is done in ReportErrorHook() as it is not a problem if mmu2.cpp - ReportErrorHook((uint16_t)ec); + ReportErrorHook((uint16_t)ec, res); if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 5adb34da1..26caac6cd 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -66,7 +66,13 @@ public: Cooldown = 2, // The extruder was allowed to cool. CooldownPending = 4, }; - + + /// Source of operation error + enum ReportErrorSource: uint8_t { + ErrorSourcePrinter = 0, + ErrorSourceMMU = 1, + }; + /// Perform a reset of the MMU /// @param level physical form of the reset void Reset(ResetForm level); @@ -188,7 +194,8 @@ private: /// Reports an error into attached ExtUIs /// @param ec error code, see ErrorCode - void ReportError(ErrorCode ec); + /// @param res reporter error source, is either Printer (0) or MMU (1) + void ReportError(ErrorCode ec, uint8_t res); /// Reports progress of operations into attached ExtUIs /// @param pc progress code, see ProgressCode diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 4622703b2..3ba935da1 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -198,13 +198,8 @@ enum class ReportErrorHookStates : uint8_t { enum ReportErrorHookStates ReportErrorHookState = ReportErrorHookStates::RENDER_ERROR_SCREEN; -/** - * @brief Render MMU error screen on the LCD. This must be non-blocking - * and allow the MMU and printer to communicate with each other. - * @param[in] ec Error code - */ -void ReportErrorHook(uint16_t ec) { - if (mmu2.MMUCurrentErrorCode() == ErrorCode::OK) +void ReportErrorHook(uint16_t ec, uint8_t res) { + if (mmu2.MMUCurrentErrorCode() == ErrorCode::OK && res == MMU2::ErrorSourceMMU) { // If the error code suddenly changes to OK, that means // a button was pushed on the MMU and the LCD should diff --git a/Firmware/mmu2_reporting.h b/Firmware/mmu2_reporting.h index 8cb531780..7e9fa587f 100644 --- a/Firmware/mmu2_reporting.h +++ b/Firmware/mmu2_reporting.h @@ -22,8 +22,14 @@ void BeginReport(CommandInProgress cip, uint16_t ec); /// Called at the end of every MMU operation void EndReport(CommandInProgress cip, uint16_t ec); -/// Called when the MMU sends operation error (even repeatedly) -void ReportErrorHook(uint16_t ec); +/** + * @brief Called when the MMU or MK3S sends operation error (even repeatedly). + * Render MMU error screen on the LCD. This must be non-blocking + * and allow the MMU and printer to communicate with each other. + * @param[in] ec error code + * @param[in] res reporter error source, is either Printer (0) or MMU (1) + */ +void ReportErrorHook(uint16_t ec, uint8_t res); /// Called when the MMU sends operation progress update void ReportProgressHook(CommandInProgress cip, uint16_t ec); From 8eb054e7899b1f7a45eb3b4446c76cc38f32338b Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Fri, 1 Jul 2022 08:37:32 -0400 Subject: [PATCH 159/319] Fix trying to use serial before it's intiialized --- Firmware/Marlin_main.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a61d5d83f..d27bca47b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1044,10 +1044,6 @@ void setup() { timer2_init(); // enables functional millis - if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) - { - MMU2::mmu2.Start(); - } ultralcd_init(); @@ -1063,6 +1059,12 @@ void setup() fdev_setup_stream(uartout, uart_putchar, NULL, _FDEV_SETUP_WRITE); //setup uart out stream stdout = uartout; + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) + { + MMU2::mmu2.Start(); + } + + #ifdef XFLASH bool xflash_success = xflash_init(); uint8_t optiboot_status = 1; From 2aa6cfc1abccb431587eaabd7592bf50861fa148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 2 Jul 2022 07:04:14 +0000 Subject: [PATCH 160/319] Optimise mmu_cut_filament_menu (#40) preheat_or_continue should be used here to reduce copying code --- Firmware/ultralcd.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index dae03e8f7..104597797 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5222,17 +5222,9 @@ static void mmu_cut_filament_menu() { for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), i + '1', mmu_cut_filament_wrapper, i); ////MSG_CUT_FILAMENT c=16 MENU_END(); - } - else - { + } else { eFilamentAction=FilamentAction::MmuCut; - bFilamentFirstRun=false; - if(target_temperature[0] >= extrude_min_temp) - { - bFilamentPreheatState=true; - mFilamentItem(target_temperature[0],target_temperature_bed); - } - else lcd_generic_preheat_menu(); + preheat_or_continue(); } } #endif //MMU_HAS_CUTTER From b8432e6bf29cb9938b0e2b8b8228f9ac8fe99caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 25 Jun 2022 09:13:39 +0000 Subject: [PATCH 161/319] Partial fix for PFW-1334 When a FSENSOR error happens, the first step for the MK3S should be to stop any loading by stopping the E-motor. From this point, the buttons should determine what the MK3S does next. --- Firmware/mmu2.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ad073f276..b9d6e5b21 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -733,6 +733,19 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { // - report only changes of states (we can miss an error message) // - may be some combination of MMUAvailable + UseMMU flags and decide based on their state // Right now the filtering of MMU_NOT_RESPONDING is done in ReportErrorHook() as it is not a problem if mmu2.cpp + + // Depending on the Progress code, we may want to do some action when an error occurs + switch (logic.Progress()) + { + case ProgressCode::FeedingToBondtech: + case ProgressCode::FeedingToFSensor: + // FSENSOR error during load. Make sure E-motor stops moving. + loadFilamentStarted = false; + break; + default: + break; + } + ReportErrorHook((uint16_t)ec, res); if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log From 59d19a83309052722d6d5f494a5f935d9cedf777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 26 Jun 2022 11:52:13 +0000 Subject: [PATCH 162/319] PFW-1334 Move E-motor on FSENSOR error retry --- Firmware/mmu2.cpp | 29 +++++++++++++++++++++++++++++ Firmware/mmu2.h | 1 + 2 files changed, 30 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index b9d6e5b21..eb41fd607 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -93,6 +93,7 @@ MMU2::MMU2() , state(xState::Stopped) , mmu_print_saved(SavedState::None) , loadFilamentStarted(false) + , unloadFilamentStarted(false) , loadingToNozzle(false) { } @@ -737,6 +738,8 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { // Depending on the Progress code, we may want to do some action when an error occurs switch (logic.Progress()) { + case ProgressCode::UnloadingToFinda: + unloadFilamentStarted = false; case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: // FSENSOR error during load. Make sure E-motor stops moving. @@ -778,6 +781,19 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // Act accordingly - one-time handling switch (pc) { + case ProgressCode::UnloadingToFinda: + // This is intended to handle Retry option on MMU error screen + // MMU sends P3 progress code during Query, and if filament is stuck + // in the gears, the MK3S needs to move e-axis as well. + st_synchronize(); + unloadFilamentStarted = true; + // Unload slowly while MMU is initalising its axis + current_position[E_AXIS] -= 10.0f; + plan_buffer_line_curposXYZE(10.0f); + st_synchronize(); + // Now do a fast unload in sync with the MMU + current_position[E_AXIS] -= 427.0f - 42.85f - 20.0f; // Roughly same distance as MMU plans + plan_buffer_line_curposXYZE(120.0f); case ProgressCode::FeedingToBondtech: // prepare for the movement of the E-motor st_synchronize(); @@ -790,6 +806,19 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ } else { // Act accordingly - every status change (even the same state) switch (pc) { + case ProgressCode::UnloadingToFinda: + if (unloadFilamentStarted && !blocks_queued()) { // Only plan a move if there is no move ongoing + + if (mmu2.FindaDetectsFilament() == 1) + { // Keep moving the E-motor until and error happens or FINDA untriggers + current_position[E_AXIS] -= 6.0f; + plan_buffer_line_curposXYZE(60.0f); + } else { + // Only stop moving the motor if FINDA is still triggered. + // Even if the FSENSOR is 0, the filament may get stuck in the bondtech gears + unloadFilamentStarted = false; + } + } case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: if (loadFilamentStarted) { diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 26caac6cd..6731147b6 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -247,6 +247,7 @@ private: uint8_t mmu_print_saved; bool loadFilamentStarted; + bool unloadFilamentStarted; friend struct LoadingToNozzleRAII; /// true in case we are doing the LoadToNozzle operation - that means the filament shall be loaded all the way down to the nozzle From 9a52bb5d046351e2fef0fdf1bf45f8b2b4416555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 26 Jun 2022 12:18:25 +0000 Subject: [PATCH 163/319] Add MMU2_UNLOAD_TO_FINDA_FEED_RATE --- Firmware/mmu2.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index eb41fd607..8d023a810 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -36,6 +36,7 @@ static constexpr float MMU2_LOAD_TO_NOZZLE_LENGTH = 87.0F + 5.0F; static constexpr float MMU2_TOOL_CHANGE_LOAD_LENGTH = 30.0F; static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; +static constexpr float MMU2_UNLOAD_TO_FINDA_FEED_RATE = 120.0F; static constexpr uint8_t MMU2_NO_TOOL = 99; static constexpr uint32_t MMU_BAUD = 115200; @@ -793,7 +794,8 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ st_synchronize(); // Now do a fast unload in sync with the MMU current_position[E_AXIS] -= 427.0f - 42.85f - 20.0f; // Roughly same distance as MMU plans - plan_buffer_line_curposXYZE(120.0f); + plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); + break; case ProgressCode::FeedingToBondtech: // prepare for the movement of the E-motor st_synchronize(); From 6eb2767dd2ef262f61928e6c2e683d5fc496f331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 26 Jun 2022 12:20:29 +0000 Subject: [PATCH 164/319] PFW-1334 Distinguish between a retry unload and U0 unload U0 unload uses the ramming sequence, while the retry unload does not because the MMU starts unloading much sooner --- Firmware/mmu2.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 8d023a810..450730b9d 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -783,6 +783,12 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // Act accordingly - one-time handling switch (pc) { case ProgressCode::UnloadingToFinda: + if ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::UnloadFilament) + { + // If MK3S sent U0 command, then the code below is not relevant. + break; + } + // This is intended to handle Retry option on MMU error screen // MMU sends P3 progress code during Query, and if filament is stuck // in the gears, the MK3S needs to move e-axis as well. From 3520020b2483bdefed48c043924bdebeb93e95e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 28 Jun 2022 20:44:35 +0000 Subject: [PATCH 165/319] * Correct the unload length on the MK3S side * Pull all numbers into global constants --- Firmware/mmu2.cpp | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 450730b9d..3584f6580 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -35,8 +35,24 @@ static constexpr float MMU2_LOAD_TO_NOZZLE_LENGTH = 87.0F + 5.0F; // in the profile static constexpr float MMU2_TOOL_CHANGE_LOAD_LENGTH = 30.0F; -static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; -static constexpr float MMU2_UNLOAD_TO_FINDA_FEED_RATE = 120.0F; +static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; // mm/s +static constexpr float MMU2_UNLOAD_TO_FINDA_FEED_RATE = 120.0F; // mm/s + +// The first the MMU does is initialise its axis. Meanwhile the E-motor will unload 10mm of filament in approx. 1 second. +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_START_LENGTH = 10.0f; // mm +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_START_FEED_RATE = 10.0f; // mm/s + +// This is -config::defaultBowdenLength - config::feedToFinda - config::filamentMinLoadedToMMU +// To prevent an error 'too long extrusion prevented' this distance is split into two constants: +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_BOWDEN_LENGTH = 427.0f; // mm +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_EXTRA_LENGTH = 42.85f + 20.0f; // mm + +// The E-motor must move endlessly until the MMU raises an error, or the FINDA untriggers +// This must be non-blocking for the MMU communications, so we need to unload small segments of +// filament at a time. A fine balance is 6mm of filament at 60mm/s. Though this can be fine tuned. +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_LENGTH = 6.0f; // mm +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_FEED_RATE = 60.0f; // mm/s + static constexpr uint8_t MMU2_NO_TOOL = 99; static constexpr uint32_t MMU_BAUD = 115200; @@ -794,12 +810,15 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // in the gears, the MK3S needs to move e-axis as well. st_synchronize(); unloadFilamentStarted = true; - // Unload slowly while MMU is initalising its axis - current_position[E_AXIS] -= 10.0f; - plan_buffer_line_curposXYZE(10.0f); + // Unload slowly while MMU is initialising its axis + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_START_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_START_FEED_RATE); st_synchronize(); // Now do a fast unload in sync with the MMU - current_position[E_AXIS] -= 427.0f - 42.85f - 20.0f; // Roughly same distance as MMU plans + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_EXTRA_LENGTH; + plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); + st_synchronize(); + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_BOWDEN_LENGTH; // Roughly same distance as MMU plans plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); break; case ProgressCode::FeedingToBondtech: @@ -818,12 +837,13 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ if (unloadFilamentStarted && !blocks_queued()) { // Only plan a move if there is no move ongoing if (mmu2.FindaDetectsFilament() == 1) - { // Keep moving the E-motor until and error happens or FINDA untriggers - current_position[E_AXIS] -= 6.0f; - plan_buffer_line_curposXYZE(60.0f); + { + // We cannot rely on the FSENSOR reading to stop the E-motor + // because the filament can get stuck in the bondtech gears. + // Use FINDA instead. + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_FEED_RATE); } else { - // Only stop moving the motor if FINDA is still triggered. - // Even if the FSENSOR is 0, the filament may get stuck in the bondtech gears unloadFilamentStarted = false; } } From d420b20bd9849a816ed477896fb4d3b6cde6ef5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 2 Jul 2022 11:05:36 +0000 Subject: [PATCH 166/319] Add a missing break I don't see any difference in behaviour but this should be more correct --- Firmware/mmu2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 3584f6580..6f120114a 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -847,6 +847,7 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ unloadFilamentStarted = false; } } + break; case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: if (loadFilamentStarted) { From 6b7a018f9b7125d326519af5aba105ffda28bcb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 9 Jul 2022 15:06:25 +0000 Subject: [PATCH 167/319] PFW-1354 Fix slow button processing (#37) * Fix MK3S buttons being processed too slowly After a button is selected on the MK3S MMU error screen, we need to process it before asking for another MMU Query. Because the MMU Query will make the Error screen return and overwrite the status screen * Add back CheckUserInput for ButtonPushed event --- Firmware/mmu2.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 6f120114a..1c47eab24 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -678,6 +678,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { } StepStatus MMU2::LogicStep() { + CheckUserInput(); // Process any buttons before proceeding with another MMU Query StepStatus ss = logic.Step(); switch (ss) { case Finished: @@ -686,27 +687,23 @@ StepStatus MMU2::LogicStep() { break; case CommandError: ReportError(logic.Error(), ErrorSourceMMU); - CheckUserInput(); break; case CommunicationTimeout: state = xState::Connecting; ReportError(ErrorCode::MMU_NOT_RESPONDING, ErrorSourcePrinter); - CheckUserInput(); break; case ProtocolError: state = xState::Connecting; ReportError(ErrorCode::PROTOCOL_ERROR, ErrorSourcePrinter); - CheckUserInput(); break; case VersionMismatch: StopKeepPowered(); ReportError(ErrorCode::VERSION_MISMATCH, ErrorSourcePrinter); - CheckUserInput(); break; case ButtonPushed: lastButton = logic.Button(); LogEchoEvent("MMU Button pushed"); - CheckUserInput(); + CheckUserInput(); // Process the button immediately break; default: break; From 999320f671947b23e13979e9ca599b612a9435ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 10 Jul 2022 13:01:52 +0000 Subject: [PATCH 168/319] Limit build number to uint8_t (#49) Currently the MMU only sends one byte so there is no need in storing the version with two bytes --- Firmware/mmu2_protocol_logic.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index a9109d750..92257615f 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -244,7 +244,7 @@ public: return mmuFwVersionMinor; } - inline uint16_t MmuFwVersionBuild() const { + inline uint8_t MmuFwVersionBuild() const { return mmuFwVersionBuild; } #ifndef UNITTEST @@ -320,7 +320,7 @@ private: bool findaPressed; uint8_t mmuFwVersionMajor, mmuFwVersionMinor; - uint16_t mmuFwVersionBuild; + uint8_t mmuFwVersionBuild; friend class ProtocolLogicPartBase; friend class Stopped; From c412f062c8dea9a12e9c24964a4793067bd7fd81 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 23 Jun 2022 14:53:32 +0200 Subject: [PATCH 169/319] Perform 3xRetry automatically This is a draft PR showing the potential 3x retry implementation on the printer's side. It is much less code and looks more reliable than the same functionality in the MMU FW. Still, more work needs to be done: - [ ] Button is sent to the MMU even before returning from the parking position - [ ] Then the button is sent again - [ ] Then the printer runs out of retryAttempts We need to find a better spot to check for "automatic" retry and issuing of the buttons --- Firmware/mmu2.cpp | 22 ++++++++++++++++++++++ Firmware/mmu2.h | 12 +++++++++--- Firmware/mmu2_error_converter.cpp | 5 ++++- Firmware/mmu2_error_converter.h | 6 ++++++ Firmware/mmu2_reporting.cpp | 8 ++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 1c47eab24..cf5f353a9 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -113,6 +113,7 @@ MMU2::MMU2() , unloadFilamentStarted(false) , loadingToNozzle(false) { + ResetRetryAttempts(); } void MMU2::Start() { @@ -223,6 +224,25 @@ bool MMU2::WaitForMMUReady(){ } } +bool MMU2::RetryIfPossible(uint16_t ec){ + if( retryAttempts ){ + SERIAL_ECHOPGM("retryAttempts=");SERIAL_ECHOLN((uint16_t)retryAttempts); + SetButtonResponse(ButtonOperations::Retry); + // check, that Retry is actually allowed on that operation + if( ButtonAvailable(ec) != NoButton ){ + SERIAL_ECHOLNPGM("RetryButtonPressed"); + --retryAttempts; // "used" one retry attempt + return true; + } + } + return false; +} + +void MMU2::ResetRetryAttempts(){ + SERIAL_ECHOLNPGM("ResetRetryAttempts"); + retryAttempts = 3; +} + bool MMU2::tool_change(uint8_t index) { if( ! WaitForMMUReady()) return false; @@ -484,6 +504,7 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { } void MMU2::Button(uint8_t index){ + SERIAL_ECHOLNPGM("Button"); logic.Button(index); } @@ -586,6 +607,7 @@ void MMU2::CheckUserInput(){ case Left: case Middle: case Right: + SERIAL_ECHOLNPGM("CheckUserInput-btnLMR"); ResumeHotendTemp(); // Recover the hotend temp before we attempt to do anything else... Button(btn); break; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 6731147b6..75091e1ed 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -165,6 +165,12 @@ public: /// Method to read-only mmu_print_saved bool MMU_PRINT_SAVED() const { return mmu_print_saved != SavedState::None; } + /// Automagically "press" a Retry button if we have any retry attempts left + bool RetryIfPossible(uint16_t ec); + + /// Reset the retryAttempts back to the default value + void ResetRetryAttempts(); + private: /// Perform software self-reset of the MMU (sends an X0 command) void ResetX0(); @@ -222,13 +228,13 @@ private: /// Check for any button/user input coming from the printer's UI void CheckUserInput(); - + /// Entry check of all external commands. /// It can wait until the MMU becomes ready. /// Optionally, it can also emit/display an error screen and the user can decide what to do next. /// @returns false if the MMU is not ready to perform the command (for whatever reason) bool WaitForMMUReady(); - + ProtocolLogic logic; ///< implementation of the protocol logic layer int extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet uint8_t previous_extruder; ///< last active slot in the MMU, useful for M600 @@ -254,7 +260,7 @@ private: /// unlike the mid-print ToolChange commands, which only load the first ~30mm and then the G-code takes over. bool loadingToNozzle; - + uint8_t retryAttempts; }; /// following Marlin's way of doing stuff - one and only instance of MMU implementation in the code base diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index a450e848c..b035a628d 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -166,7 +166,10 @@ Buttons ButtonPressed(uint16_t ec) { } ResetOnExit ros; // clear buttonSelectedOperation on exit from this call - + return ButtonAvailable(ec); +} + +Buttons ButtonAvailable(uint16_t ec) { uint8_t ei = PrusaErrorCodeIndex(ec); // The list of responses which occur in mmu error dialogs diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h index 27dbfbce5..597cc35a5 100644 --- a/Firmware/mmu2_error_converter.h +++ b/Firmware/mmu2_error_converter.h @@ -37,6 +37,12 @@ const char * const PrusaErrorButtonMore(); void SetButtonResponse(ButtonOperations rsp); /// @returns button index/code based on currently processed error/screen +/// Clears the "pressed" button upon exit Buttons ButtonPressed(uint16_t ec); +/// @returns button index/code based on currently processed error/screen +/// Used as a subfunction of ButtonPressed. +/// Does not clear the "pressed" button upon exit +Buttons ButtonAvailable(uint16_t ec); + } // namespace MMU2 diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 3ba935da1..8f2127394 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -205,6 +205,14 @@ void ReportErrorHook(uint16_t ec, uint8_t res) { // a button was pushed on the MMU and the LCD should // dismiss the error screen until MMU raises a new error ReportErrorHookState = ReportErrorHookStates::DISMISS_ERROR_SCREEN; + mmu2.ResetRetryAttempts(); + } else { + // attempt an automatic Retry button + if( ReportErrorHookState == ReportErrorHookStates::MONITOR_SELECTION ){ + if( mmu2.RetryIfPossible(ec) ){ + ReportErrorHookState = ReportErrorHookStates::DISMISS_ERROR_SCREEN; + } + } } const uint8_t ei = PrusaErrorCodeIndex(ec); From 69c39e2281bc6d2aacaca49ce38c5b471b605ec7 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Sun, 26 Jun 2022 13:58:25 -0400 Subject: [PATCH 170/319] An attempt at fixing the retry. Discussion needed. --- Firmware/mmu2.cpp | 28 ++++++++++++++++++++++++---- Firmware/mmu2.h | 9 +++++++-- Firmware/mmu2_protocol_logic.cpp | 13 +++++++++---- Firmware/mmu2_reporting.cpp | 1 - 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index cf5f353a9..503de8417 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -112,6 +112,7 @@ MMU2::MMU2() , loadFilamentStarted(false) , unloadFilamentStarted(false) , loadingToNozzle(false) + , inAutoRetry(false) { ResetRetryAttempts(); } @@ -230,11 +231,14 @@ bool MMU2::RetryIfPossible(uint16_t ec){ SetButtonResponse(ButtonOperations::Retry); // check, that Retry is actually allowed on that operation if( ButtonAvailable(ec) != NoButton ){ + inAutoRetry = true; SERIAL_ECHOLNPGM("RetryButtonPressed"); - --retryAttempts; // "used" one retry attempt + // We don't decrement until the button is acknowledged by the MMU. + //--retryAttempts; // "used" one retry attempt return true; } } + inAutoRetry = false; return false; } @@ -243,6 +247,14 @@ void MMU2::ResetRetryAttempts(){ retryAttempts = 3; } +void MMU2::DecrementRetryAttempts(){ + if (inAutoRetry && retryAttempts) + { + SERIAL_ECHOLNPGM("DecrementRetryAttempts"); + retryAttempts--; + } +} + bool MMU2::tool_change(uint8_t index) { if( ! WaitForMMUReady()) return false; @@ -607,7 +619,8 @@ void MMU2::CheckUserInput(){ case Left: case Middle: case Right: - SERIAL_ECHOLNPGM("CheckUserInput-btnLMR"); + SERIAL_ECHOPGM("CheckUserInput-btnLMR "); + SERIAL_ECHOLN(btn); ResumeHotendTemp(); // Recover the hotend temp before we attempt to do anything else... Button(btn); break; @@ -655,7 +668,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { if (!nozzleTimeout.running()) { nozzleTimeout.start(); - LogEchoEvent(" Cooling Timeout started"); + LogEchoEvent("Cooling Timeout started"); } else if (nozzleTimeout.expired(DEFAULT_SAFETYTIMER_TIME_MINS*60*1000ul)) // mins->msec. TODO: do we use the global or have our own independent timeout { @@ -676,13 +689,20 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { // command/operation completed, let Marlin continue its work // the E may have some more moves to finish - wait for them ResumeUnpark(); // We can now travel back to the tower or wherever we were when we saved. + ResetRetryAttempts(); // Reset the retry counter. st_synchronize(); return; case VersionMismatch: // this basically means the MMU will be disabled until reconnected CheckUserInput(); return; - case CommunicationTimeout: case CommandError: + // Don't proceed to the park/save if we are doing an autoretry. + if (inAutoRetry) + { + continue; + } + /* FALLTHRU */ + case CommunicationTimeout: case ProtocolError: SaveAndPark(move_axes, turn_off_nozzle); // and wait for the user to resolve the problem CheckUserInput(); diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 75091e1ed..6113d45fa 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -168,10 +168,13 @@ public: /// Automagically "press" a Retry button if we have any retry attempts left bool RetryIfPossible(uint16_t ec); - /// Reset the retryAttempts back to the default value - void ResetRetryAttempts(); + /// Decrement the retry attempts, if in a retry. + // Called by the MMU protocol when a sent button is acknowledged. + void DecrementRetryAttempts(); private: + /// Reset the retryAttempts back to the default value + void ResetRetryAttempts(); /// Perform software self-reset of the MMU (sends an X0 command) void ResetX0(); @@ -261,6 +264,8 @@ private: bool loadingToNozzle; uint8_t retryAttempts; + + bool inAutoRetry; }; /// following Marlin's way of doing stuff - one and only instance of MMU implementation in the code base diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index ca5de501e..b1cc8f493 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -261,10 +261,15 @@ StepStatus Command::Step() { return ProcessFINDAReqSent(Processing, State::Wait); case State::ButtonSent:{ // button is never confirmed ... may be it should be - // auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - // if (expmsg != MessageReady) - // return expmsg; - SendQuery(); + auto expmsg = logic->ExpectingMessage(linkLayerTimeout); + if (expmsg != MessageReady) + return expmsg; + if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) + { + // Button was accepted, decrement the retry. + mmu2.DecrementRetryAttempts(); + } + SendAndUpdateFilamentSensor(); } break; default: return ProtocolError; diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 8f2127394..db4c0de08 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -205,7 +205,6 @@ void ReportErrorHook(uint16_t ec, uint8_t res) { // a button was pushed on the MMU and the LCD should // dismiss the error screen until MMU raises a new error ReportErrorHookState = ReportErrorHookStates::DISMISS_ERROR_SCREEN; - mmu2.ResetRetryAttempts(); } else { // attempt an automatic Retry button if( ReportErrorHookState == ReportErrorHookStates::MONITOR_SELECTION ){ From ba52430e1ded753a2ed330167c181e0b4bc09e09 Mon Sep 17 00:00:00 2001 From: VintagePC <53943260+vintagepc@users.noreply.github.com> Date: Tue, 19 Jul 2022 20:08:19 -0400 Subject: [PATCH 171/319] Magic numbers are bad... --- Firmware/mmu2.cpp | 2 +- Firmware/mmu2.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 503de8417..e36592732 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -244,7 +244,7 @@ bool MMU2::RetryIfPossible(uint16_t ec){ void MMU2::ResetRetryAttempts(){ SERIAL_ECHOLNPGM("ResetRetryAttempts"); - retryAttempts = 3; + retryAttempts = MAX_RETRIES; } void MMU2::DecrementRetryAttempts(){ diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 6113d45fa..a1cd8ee7a 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -6,6 +6,8 @@ struct E_Step; namespace MMU2 { +static constexpr uint8_t MAX_RETRIES = 3U; + /// @@TODO hmmm, 12 bytes... may be we can reduce that struct xyz_pos_t { float xyz[3]; From 80c640deb95d7bb68d7003b5838f136315678f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 3 Jul 2022 16:21:48 +0000 Subject: [PATCH 172/319] PFW-1373 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix the unload procedure when the user has paused a print then stopped the print after the temperature has reached below 175°C Now the E-motor will move as expected --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 18 +++++++++++------- Firmware/ultralcd.cpp | 13 ++++++++++++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 475051669..eb048dd25 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -414,6 +414,7 @@ extern void print_physical_coordinates(); extern void print_mesh_bed_leveling_table(); extern void stop_and_save_print_to_ram(float z_move, float e_move); +void restore_extruder_temperture_from_ram(); extern void restore_print_from_ram_and_continue(float e_move); extern void cancel_saved_printing(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d27bca47b..c9a71fab4 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -11172,6 +11172,16 @@ void stop_and_save_print_to_ram(float z_move, float e_move) } } +void restore_extruder_temperture_from_ram() { + if (degTargetHotend(saved_active_extruder) != saved_extruder_temperature) + { + setTargetHotendSafe(saved_extruder_temperature, saved_active_extruder); + heating_status = HeatingStatus::EXTRUDER_HEATING; + wait_for_heater(_millis(), saved_active_extruder); + heating_status = HeatingStatus::EXTRUDER_HEATING_COMPLETE; + } +} + //! @brief Restore print from ram //! //! Restore print saved by stop_and_save_print_to_ram(). Is blocking, restores @@ -11198,13 +11208,7 @@ void restore_print_from_ram_and_continue(float e_move) // restore active_extruder active_extruder = saved_active_extruder; fanSpeed = saved_fan_speed; - if (degTargetHotend(saved_active_extruder) != saved_extruder_temperature) - { - setTargetHotendSafe(saved_extruder_temperature, saved_active_extruder); - heating_status = HeatingStatus::EXTRUDER_HEATING; - wait_for_heater(_millis(), saved_active_extruder); - heating_status = HeatingStatus::EXTRUDER_HEATING_COMPLETE; - } + restore_extruder_temperture_from_ram(); axis_relative_modes ^= (-saved_extruder_relative_mode ^ axis_relative_modes) & E_AXIS_MASK; float e = saved_pos[E_AXIS] - e_move; plan_set_e_position(e); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 104597797..2b75e383e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6005,7 +6005,18 @@ void print_stop() fanSpeed = 0; } - if (MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //M702 C + if (MMU2::mmu2.Enabled()) + { + if (isPrintPaused) + { + // Restore temperature saved in ram after pausing print + restore_extruder_temperture_from_ram(); + } + MMU2::mmu2.unload(); //M702 C + } + + lcd_cooldown(); //turns off heaters and fan; goes to status screen. + finishAndDisableSteppers(); //M84 axis_relative_modes = E_AXIS_MASK; //XYZ absolute, E relative } From 6bf2aebf04db41b19aa8d79865b02a6e1982a51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Mon, 11 Jul 2022 14:21:31 +0000 Subject: [PATCH 173/319] Fix typo --- Firmware/Marlin.h | 2 +- Firmware/Marlin_main.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index eb048dd25..348b4d7f7 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -414,7 +414,7 @@ extern void print_physical_coordinates(); extern void print_mesh_bed_leveling_table(); extern void stop_and_save_print_to_ram(float z_move, float e_move); -void restore_extruder_temperture_from_ram(); +void restore_extruder_temperature_from_ram(); extern void restore_print_from_ram_and_continue(float e_move); extern void cancel_saved_printing(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c9a71fab4..a5d73e68e 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -11172,7 +11172,7 @@ void stop_and_save_print_to_ram(float z_move, float e_move) } } -void restore_extruder_temperture_from_ram() { +void restore_extruder_temperature_from_ram() { if (degTargetHotend(saved_active_extruder) != saved_extruder_temperature) { setTargetHotendSafe(saved_extruder_temperature, saved_active_extruder); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2b75e383e..6d9864597 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6010,7 +6010,7 @@ void print_stop() if (isPrintPaused) { // Restore temperature saved in ram after pausing print - restore_extruder_temperture_from_ram(); + restore_extruder_temperature_from_ram(); } MMU2::mmu2.unload(); //M702 C } From fa176c69dbcb59d9b269619618178f749d89dd70 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Jul 2022 10:20:28 +0200 Subject: [PATCH 174/319] Fix protocol error recovery Communication timeout and Protocol Errors are now distinguished. In case of a Protocol Error, the printer waits for heartBeatTimeout to allow filling up the input UART buffer (we expect the MMU still produces some bytes). Once the timeout elapsed, the input UART buffer is cleared and a new Start Sequence is initiated. --- Firmware/mmu2_protocol_logic.cpp | 172 +++++++++++++++++++------------ Firmware/mmu2_protocol_logic.h | 24 +++-- 2 files changed, 123 insertions(+), 73 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index b1cc8f493..1ae935483 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -7,8 +7,7 @@ namespace MMU2 { StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, State nextState){ - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; logic->findaPressed = logic->rsp.paramValue; state = nextState; @@ -44,16 +43,9 @@ void ProtocolLogicPartBase::SendButton(uint8_t btn){ state = State::ButtonSent; } -StepStatus ProtocolLogic::ProcessUARTByte(uint8_t c) { - switch (protocol.DecodeResponse(c)) { - case DecodeStatus::MessageCompleted: - return MessageReady; - case DecodeStatus::NeedMoreData: - return Processing; - case DecodeStatus::Error: - default: - return ProtocolError; - } +void ProtocolLogicPartBase::SendVersion(uint8_t stage) { + logic->SendMsg(RequestMsg(RequestMsgCodes::Version, stage)); + state = (State)((uint_fast8_t)State::S0Sent + stage); } // searches for "ok\n" in the incoming serial data (that's the usual response of the old MMU FW) @@ -133,54 +125,92 @@ void ProtocolLogic::SendMsg(RequestMsg rq) { } void StartSeq::Restart() { - state = State::S0Sent; - logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 0)); + SendVersion(0); } StepStatus StartSeq::Step() { - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; // solve initial handshake switch (state) { case State::S0Sent: // received response to S0 - major - logic->mmuFwVersionMajor = logic->rsp.paramValue; - if (logic->mmuFwVersionMajor != 2) { - return VersionMismatch; + if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 0 ){ + // got a response to something else - protocol corruption probably, repeat the query + SendVersion(0); + } else { + logic->mmuFwVersionMajor = logic->rsp.paramValue; + if (logic->mmuFwVersionMajor != 2) { + return VersionMismatch; + } + logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking + SendVersion(1); } - logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking - logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 1)); - state = State::S1Sent; break; case State::S1Sent: // received response to S1 - minor - logic->mmuFwVersionMinor = logic->rsp.paramValue; - if (logic->mmuFwVersionMinor != 0) { - return VersionMismatch; + if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 1 ){ + // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? + SendVersion(1); + } else { + logic->mmuFwVersionMinor = logic->rsp.paramValue; + if (logic->mmuFwVersionMinor != 0) { + return VersionMismatch; + } + SendVersion(2); } - logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 2)); - state = State::S2Sent; break; case State::S2Sent: // received response to S2 - revision - logic->mmuFwVersionBuild = logic->rsp.paramValue; - if (logic->mmuFwVersionBuild < 18) { - return VersionMismatch; + if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 2 ){ + // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? + SendVersion(2); + } else { + logic->mmuFwVersionBuild = logic->rsp.paramValue; + if (logic->mmuFwVersionBuild < 18) { + return VersionMismatch; + } + // Start General Interrogation after line up. + // For now we just send the state of the filament sensor, but we may request + // data point states from the MMU as well. TBD in the future, especially with another protocol + SendAndUpdateFilamentSensor(); } - // Start General Interrogation after line up. - // For now we just send the state of the filament sensor, but we may request - // data point states from the MMU as well. TBD in the future, especially with another protocol - SendAndUpdateFilamentSensor(); break; case State::FilamentSensorStateSent: state = State::Ready; return Finished; break; + case State::RecoveringProtocolError: + // timer elapsed, clear the input buffer + while (logic->uart->read() >= 0) + ; + SendVersion(0); + break; default: return VersionMismatch; } return Processing; } +void DelayedRestart::Restart() { + state = State::RecoveringProtocolError; +} + +StepStatus DelayedRestart::Step() { + switch (state) { + case State::RecoveringProtocolError: + if (logic->Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on + while (logic->uart->read() != -1) + ; // clear the input buffer + // switch to StartSeq + logic->Start(); + } + return Processing; + break; + default: + break; + } + return Finished; +} + void Command::Restart() { state = State::CommandSent; logic->SendMsg(logic->command.rq); @@ -189,8 +219,7 @@ void Command::Restart() { StepStatus Command::Step() { switch (state) { case State::CommandSent: { - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; switch (logic->rsp.paramCode) { // the response should be either accepted or rejected @@ -217,12 +246,10 @@ StepStatus Command::Step() { CheckAndReportAsyncEvents(); } break; - case State::QuerySent: { - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + case State::QuerySent: + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; - } - // [[fallthrough]]; + [[fallthrough]]; case State::ContinueFromIdle: switch (logic->rsp.paramCode) { case ResponseMsgParamCodes::Processing: @@ -251,21 +278,18 @@ StepStatus Command::Step() { return ProtocolError; } break; - case State::FilamentSensorStateSent:{ - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + case State::FilamentSensorStateSent: + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; SendFINDAQuery(); - } break; + break; case State::FINDAReqSent: return ProcessFINDAReqSent(Processing, State::Wait); case State::ButtonSent:{ // button is never confirmed ... may be it should be - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; - if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) - { + if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { // Button was accepted, decrement the retry. mmu2.DecrementRetryAttempts(); } @@ -289,9 +313,8 @@ StepStatus Idle::Step() { return Processing; } break; - case State::QuerySent: { // check UART - auto expmsg = logic->ExpectingMessage(linkLayerTimeout); - if (expmsg != MessageReady) + case State::QuerySent: // check UART + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. // That causes no issues here, we just need to switch to Command processing and continue there from now on. @@ -331,7 +354,7 @@ StepStatus Idle::Step() { } SendFINDAQuery(); return Processing; - } break; + break; case State::FINDAReqSent: return ProcessFINDAReqSent(Finished, State::Ready); default: @@ -351,21 +374,31 @@ StepStatus Idle::Step() { ProtocolLogic::ProtocolLogic(MMU2Serial *uart) : stopped(this) , startSeq(this) + , delayedRestart(this) , idle(this) , command(this) , currentState(&stopped) , plannedRq(RequestMsgCodes::unknown, 0) , lastUARTActivityMs(0) + , dataTO() , rsp(RequestMsg(RequestMsgCodes::unknown, 0), ResponseMsgParamCodes::unknown, 0) , state(State::Stopped) , lrb(0) , uart(uart) + , errorCode(ErrorCode::OK) + , progressCode(ProgressCode::OK) + , buttonCode(NoButton) , lastFSensor((uint8_t)WhereIsFilament()) + , findaPressed(false) + , mmuFwVersionMajor(0) + , mmuFwVersionMinor(0) + , mmuFwVersionBuild(0) {} void ProtocolLogic::Start() { state = State::InitSequence; currentState = &startSeq; + protocol.ResetResponseDecoder(); // important - finished delayed restart relies on this startSeq.Restart(); } @@ -446,13 +479,6 @@ void ProtocolLogic::SwitchToIdle() { idle.Restart(); } -void ProtocolLogic::HandleCommunicationTimeout() { - uart->flush(); // clear the output buffer - currentState = &startSeq; - state = State::InitSequence; - startSeq.Restart(); -} - bool ProtocolLogic::Elapsed(uint32_t timeout) const { return _millis() >= (lastUARTActivityMs + timeout); } @@ -554,9 +580,7 @@ void ProtocolLogic::LogResponse(){ SERIAL_ECHOLN(); } -StepStatus ProtocolLogic::HandleCommError(const char *msg, StepStatus ss){ - protocol.ResetResponseDecoder(); - HandleCommunicationTimeout(); +StepStatus ProtocolLogic::SuppressShortDropOuts(const char *msg, StepStatus ss) { if( dataTO.Record(ss) ){ LogError(msg); return dataTO.InitialCause(); @@ -565,6 +589,21 @@ StepStatus ProtocolLogic::HandleCommError(const char *msg, StepStatus ss){ } } +StepStatus ProtocolLogic::HandleCommunicationTimeout() { + uart->flush(); // clear the output buffer + protocol.ResetResponseDecoder(); + Start(); + return SuppressShortDropOuts("Communication timeout", CommunicationTimeout); +} + +StepStatus ProtocolLogic::HandleProtocolError() { + uart->flush(); // clear the output buffer + state = State::InitSequence; + currentState = &delayedRestart; + delayedRestart.Restart(); + return SuppressShortDropOuts("Protocol Error", ProtocolError); +} + StepStatus ProtocolLogic::Step() { if( ! currentState->ExpectsResponse() ){ // if not waiting for a response, activate a planned request immediately ActivatePlannedRequest(); @@ -587,8 +626,7 @@ StepStatus ProtocolLogic::Step() { currentStatus = Processing; } } - } - break; + } break; case CommandRejected: // we have to repeat it - that's the only thing we can do // no change in state @@ -606,10 +644,10 @@ StepStatus ProtocolLogic::Step() { Stop(); // cannot continue break; case ProtocolError: - currentStatus = HandleCommError("Protocol error", ProtocolError); + currentStatus = HandleProtocolError(); break; case CommunicationTimeout: - currentStatus = HandleCommError("Communication timeout", CommunicationTimeout); + currentStatus = HandleCommunicationTimeout(); break; default: break; diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 92257615f..5f4689ba5 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -77,7 +77,7 @@ protected: Ready, Wait, - S0Sent, + S0Sent, // beware - due to optimization reasons these SxSent must be kept one after another S1Sent, S2Sent, QuerySent, @@ -86,7 +86,8 @@ protected: FINDAReqSent, ButtonSent, - ContinueFromIdle + ContinueFromIdle, + RecoveringProtocolError }; State state; ///< internal state of the sub-automaton @@ -108,6 +109,8 @@ protected: void SendAndUpdateFilamentSensor(); void SendButton(uint8_t btn); + + void SendVersion(uint8_t stage); }; /// Starting sequence of the communication with the MMU. @@ -122,6 +125,14 @@ public: StepStatus Step() override; }; +class DelayedRestart : public ProtocolLogicPartBase { +public: + inline DelayedRestart(ProtocolLogic *logic) + : ProtocolLogicPartBase(logic) {} + void Restart() override; + StepStatus Step() override; +}; + /// A command and its lifecycle. /// CommandSent: /// - the command was placed into the UART TX buffer, awaiting response from the MMU @@ -250,13 +261,12 @@ public: #ifndef UNITTEST private: #endif - - StepStatus ProcessUARTByte(uint8_t c); StepStatus ExpectingMessage(uint32_t timeout); void SendMsg(RequestMsg rq); void SwitchToIdle(); - void HandleCommunicationTimeout(); - StepStatus HandleCommError(const char *msg, StepStatus ss); + StepStatus SuppressShortDropOuts(const char *msg, StepStatus ss); + StepStatus HandleCommunicationTimeout(); + StepStatus HandleProtocolError(); bool Elapsed(uint32_t timeout) const; void RecordUARTActivity(); void RecordReceivedByte(uint8_t c); @@ -276,6 +286,7 @@ private: // individual sub-state machines - may be they can be combined into a union since only one is active at once Stopped stopped; StartSeq startSeq; + DelayedRestart delayedRestart; Idle idle; Command command; ProtocolLogicPartBase *currentState; ///< command currently being processed @@ -327,6 +338,7 @@ private: friend class Command; friend class Idle; friend class StartSeq; + friend class DelayedRestart; friend class MMU2; }; From 1d2acb5bd683a225dea73d56b271f185b179d591 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 22 Jul 2022 15:51:09 +0200 Subject: [PATCH 175/319] Bump MMU FW version to 2.0.19 to match/enforce the necessary compatibility level --- Firmware/mmu2_protocol_logic.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 1ae935483..535702a75 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -6,6 +6,10 @@ namespace MMU2 { +static constexpr uint8_t supportedMmuFWVersionMajor = 2; +static constexpr uint8_t supportedMmuFWVersionMinor = 0; +static constexpr uint8_t supportedMmuFWVersionBuild = 19; + StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, State nextState){ if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; @@ -140,7 +144,7 @@ StepStatus StartSeq::Step() { SendVersion(0); } else { logic->mmuFwVersionMajor = logic->rsp.paramValue; - if (logic->mmuFwVersionMajor != 2) { + if (logic->mmuFwVersionMajor != supportedMmuFWVersionMajor) { return VersionMismatch; } logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking @@ -153,7 +157,7 @@ StepStatus StartSeq::Step() { SendVersion(1); } else { logic->mmuFwVersionMinor = logic->rsp.paramValue; - if (logic->mmuFwVersionMinor != 0) { + if (logic->mmuFwVersionMinor != supportedMmuFWVersionMinor) { return VersionMismatch; } SendVersion(2); @@ -165,7 +169,7 @@ StepStatus StartSeq::Step() { SendVersion(2); } else { logic->mmuFwVersionBuild = logic->rsp.paramValue; - if (logic->mmuFwVersionBuild < 18) { + if (logic->mmuFwVersionBuild < supportedMmuFWVersionBuild) { return VersionMismatch; } // Start General Interrogation after line up. From 09cb9c6ecd3b787a1ba1a3212b548945901bb059 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 28 Jul 2022 10:10:52 +0200 Subject: [PATCH 176/319] Fixup after rebase + discussion --- Firmware/Marlin_main.cpp | 8 +-- Firmware/Tcodes.cpp | 6 +- Firmware/eeprom.h | 1 - Firmware/lcd.h | 24 ++++++++ Firmware/menu.cpp | 2 + Firmware/messages.cpp | 12 ++-- Firmware/ultralcd.cpp | 123 ++++++++++++++++++++------------------- Firmware/ultralcd.h | 6 +- 8 files changed, 104 insertions(+), 78 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a5d73e68e..d0592beb4 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -647,12 +647,12 @@ void crashdet_detected(uint8_t mask) lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_RESUME_PRINT)); lcd_putc('?'); - bool yesno = lcd_show_yes_no_and_wait(false); + int8_t yesno = lcd_show_yes_no_and_wait(false); if (yesno == LCD_LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("CRASH_RECOVER")); } - else // MIDDLE_BUTTON_CHOICE + else // LCD_MIDDLE_BUTTON_CHOICE { enquecommand_P(PSTR("CRASH_CANCEL")); } @@ -3292,7 +3292,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) { KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); + int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if(result == LCD_LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); } @@ -4924,7 +4924,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); break; } lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); + int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if (result == LCD_LEFT_BUTTON_CHOICE) { diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index b0f4730e8..3231648f0 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -30,9 +30,9 @@ struct SChooseFromMenu { SChooseFromMenu TCodeChooseFromMenu() { if (MMU2::mmu2.Enabled()) { - return SChooseFromMenu( choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT)), true ); + return SChooseFromMenu( choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT)), true ); } else { - return SChooseFromMenu( choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER)), false ); + return SChooseFromMenu( choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER)), false ); } } @@ -48,7 +48,7 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { } else if (strchr_pointer[index] == 'x'){ // load to bondtech gears; if mmu is not present do nothing if (MMU2::mmu2.Enabled()) { - MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER))); + MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER))); } } else if (strchr_pointer[index] == 'c'){ // load from bondtech gears to nozzle (nozzle should be preheated) diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index f78acc259..edb7b0680 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -333,7 +333,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP | ^ | ^ | ^ | 03h 3 | ^ | bad_isr | ^ | ^ | ^ | ^ | ^ | 04h 4 | ^ | bad_pullup_temp_isr | ^ | ^ | ^ | ^ | ^ | 05h 5 | ^ | bad_pullup_step_isr | ^ | ^ -| 0x0D03 3321 | uint8_t | EEPROM_FW_CRASH_FLAG | 01h 1 | ff/00 | Last FW crash reason (dump_crash_reason) | D21/D22 | D3 Ax0d03 C1 | 0x0D02 3320 | uint8_t | EEPROM_FSENSOR_JAM_DETECTION | 01h 1 | ff/01 | fsensor pat9125 jam detection feature | LCD menu | D3 Ax0d02 C1 | 0x0D01 3319 | uint8_t | EEPROM_MMU_ENABLED | 01h 1 | ff/01 | MMU enabled | LCD menu | D3 Ax0d01 C1 diff --git a/Firmware/lcd.h b/Firmware/lcd.h index 8ac643f58..9b6b667ca 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -127,6 +127,30 @@ extern void lcd_update_enable(uint8_t enabled); extern void lcd_buttons_update(void); +//! @brief Helper class to temporarily disable LCD updates +//! +//! When constructed (on stack), original state state of lcd_update_enabled is stored +//! and LCD updates are disabled. +//! When destroyed (gone out of scope), original state of LCD update is restored. +//! It has zero overhead compared to storing bool saved = lcd_update_enabled +//! and calling lcd_update_enable(false) and lcd_update_enable(saved). +class LcdUpdateDisabler +{ +public: + LcdUpdateDisabler(): m_updateEnabled(lcd_update_enabled) + { + lcd_update_enable(false); + } + ~LcdUpdateDisabler() + { + lcd_update_enable(m_updateEnabled); + } + +private: + bool m_updateEnabled; +}; + + //////////////////////////////////// // Setup button and encode mappings for each panel (into 'lcd_buttons' variable // diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index 712a74686..b4761304f 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -384,7 +384,9 @@ uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t) { menu_clicked = false; lcd_consume_click(); + lcd_update_enabled = 0; if (func) func(fn_par); + lcd_update_enabled = 1; return menu_item_ret(); } } diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index a36e25b44..0bdfa685e 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -41,9 +41,9 @@ const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////MSG_FINISHING_MOVEMENTS c=20 const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -const char MSG_FSENSOR_RUNOUT[] PROGMEM_I1 = ISTR("F. runout"); ////c=13 +const char MSG_FSENSOR_RUNOUT[] PROGMEM_I1 = ISTR("F. runout"); ////MSG_FSENSOR_RUNOUT c=13 const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////MSG_FSENSOR_AUTOLOAD c=13 -const char MSG_FSENSOR_JAM_DETECTION[] PROGMEM_I1 = ISTR("F. jam detect"); ////c=13 +const char MSG_FSENSOR_JAM_DETECTION[] PROGMEM_I1 = ISTR("F. jam detect"); ////MSG_FSENSOR_JAM_DETECTION c=13 const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////MSG_FSENSOR c=12 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////MSG_HEATING c=20 const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////MSG_HEATING_COMPLETE c=20 @@ -54,9 +54,9 @@ const char MSG_SELECT_FILAMENT[] PROGMEM_I1 = ISTR("Select filament:"); ////MSG_ const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////MSG_LAST_PRINT c=18 const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////MSG_LAST_PRINT_FAILURES c=20 const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////MSG_LOAD_FILAMENT c=17 -const char MSG_LOAD_TO_BONDTECH[] PROGMEM_I1 = ISTR("Load to Bondtech"); ////c=18 +const char MSG_LOAD_TO_BONDTECH[] PROGMEM_I1 = ISTR("Load to Bondtech"); ////MSG_LOAD_TO_BONDTECH c=18 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////MSG_LOADING_FILAMENT c=20 -const char MSG_TESTING_FILAMENT[] PROGMEM_I1 = ISTR("Testing filament"); ////c=20 +const char MSG_TESTING_FILAMENT[] PROGMEM_I1 = ISTR("Testing filament"); ////MSG_TESTING_FILAMENT c=20 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); ////MSG_EJECT_FILAMENT c=17 const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); ////MSG_CUT_FILAMENT c=17 const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////MSG_MAIN c=18 @@ -159,8 +159,8 @@ const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////MSG_TIMEOUT c=12 const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////MSG_BRIGHT c=6 const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////MSG_DIM c=6 const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////MSG_AUTO c=6 -const char MSG_FS_V_03_OR_OLDER[] PROGMEM_I1 = ISTR("FS v0.3 or older"); ////c=18 -const char MSG_FS_V_04_OR_NEWER[] PROGMEM_I1 = ISTR("FS v0.4 or newer"); ////c=18 +const char MSG_FS_V_03_OR_OLDER[] PROGMEM_I1 = ISTR("FS v0.3 or older"); ////MSG_FS_V_03_OR_OLDER c=18 +const char MSG_FS_V_04_OR_NEWER[] PROGMEM_I1 = ISTR("FS v0.4 or newer"); ////MSG_FS_V_04_OR_NEWER c=18 #ifdef IR_SENSOR_ANALOG // Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////MSG_IR_04_OR_NEWER c=18 diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6d9864597..dd88c7a3d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1268,6 +1268,7 @@ static void lcd_menu_fails_stats_total() //! @endcode //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. +//! @todo leptun refactor this piece of code please static void lcd_menu_fails_stats_print() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1854,6 +1855,7 @@ switch(eFilamentAction) } if(lcd_clicked() #ifdef FILAMENT_SENSOR +/// @todo leptun - add this as a specific retest item || (((eFilamentAction == FilamentAction::Load) || (eFilamentAction == FilamentAction::AutoLoad)) && fsensor.getFilamentLoadEvent()) #endif //FILAMENT_SENSOR ) { @@ -2324,7 +2326,7 @@ void show_preheat_nozzle_warning() void lcd_load_filament_color_check() { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); + int8_t clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); while (clean == LCD_MIDDLE_BUTTON_CHOICE) { load_filament_final_feed(); st_synchronize(); @@ -2340,14 +2342,13 @@ static void lcd_menu_AutoLoadFilament() } #endif //FILAMENT_SENSOR -static void preheat_or_continue() -{ - if (target_temperature[0] >= extrude_min_temp) - { +static void preheat_or_continue() { + if (target_temperature[0] >= extrude_min_temp) { bFilamentPreheatState = true; mFilamentItem(target_temperature[0], target_temperature_bed); + } else { + lcd_generic_preheat_menu(); } - else lcd_generic_preheat_menu(); } static void lcd_LoadFilament() @@ -3131,7 +3132,7 @@ const char* lcd_display_message_fullscreen_P(const char *msg) */ void lcd_show_fullscreen_message_and_wait_P(const char *msg) { - lcd_update_enable(false); + LcdUpdateDisabler lcdUpdateDisabler; const char *msg_next = lcd_display_message_fullscreen_P(msg); bool multi_screen = msg_next != NULL; lcd_set_custom_characters_nextpage(); @@ -3151,7 +3152,6 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) if (msg_next == NULL) { KEEPALIVE_STATE(IN_HANDLER); lcd_set_custom_characters(); - lcd_update_enable(true); return; } else { @@ -3275,60 +3275,60 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m manage_heater(); manage_inactivity(true); - if (multiscreen_cb) - { - multiscreen_cb(); - } - + if (multiscreen_cb) { + multiscreen_cb(); + } - if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { - if (msg_next == NULL) { + + + if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { + if (msg_next == NULL) { if (third_choice) { // third_choice is not nullptr, safe to dereference - if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { - // Rotating knob counter clockwise - current_selection--; - } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_RIGHT_BUTTON_CHOICE) { - // Rotating knob clockwise - current_selection++; - } - } else { - if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { - // Rotating knob counter clockwise - current_selection = LCD_LEFT_BUTTON_CHOICE; - } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_MIDDLE_BUTTON_CHOICE) { - // Rotating knob clockwise - current_selection = LCD_MIDDLE_BUTTON_CHOICE; - } - } - lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); - enc_dif = lcd_encoder_diff; - Sound_MakeSound(e_SOUND_TYPE_EncoderMove); + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { + // Rotating knob counter clockwise + current_selection--; + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_RIGHT_BUTTON_CHOICE) { + // Rotating knob clockwise + current_selection++; + } + } else { + if (enc_dif > lcd_encoder_diff && current_selection != LCD_LEFT_BUTTON_CHOICE) { + // Rotating knob counter clockwise + current_selection = LCD_LEFT_BUTTON_CHOICE; + } else if (enc_dif < lcd_encoder_diff && current_selection != LCD_MIDDLE_BUTTON_CHOICE) { + // Rotating knob clockwise + current_selection = LCD_MIDDLE_BUTTON_CHOICE; + } + } + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); + enc_dif = lcd_encoder_diff; + Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } else { - Sound_MakeSound(e_SOUND_TYPE_BlindAlert); - break; //turning knob skips waiting loop - } - } - if (lcd_clicked()) { - Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); - if (msg_next == NULL) { - KEEPALIVE_STATE(IN_HANDLER); - lcd_set_custom_characters(); - lcd_update_enable(true); - return current_selection; + Sound_MakeSound(e_SOUND_TYPE_BlindAlert); + break; // turning knob skips waiting loop + } + } + if (lcd_clicked()) { + Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); + if (msg_next == NULL) { + KEEPALIVE_STATE(IN_HANDLER); + lcd_set_custom_characters(); + lcd_update_enable(true); + return current_selection; } else break; - } - } - if (multi_screen) { - if (msg_next == NULL) { - msg_next = msg; - } - msg_next = lcd_display_message_fullscreen_P(msg_next); - } - if (msg_next == NULL) { - lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); - } - } + } + } + if (multi_screen) { + if (msg_next == NULL) { + msg_next = msg; + } + msg_next = lcd_display_message_fullscreen_P(msg_next); + } + if (msg_next == NULL) { + lcd_show_choices_prompt_P(current_selection, first_choice, second_choice, second_col, third_choice); + } + } } //! @brief Display and wait for a Yes/No choice using the last line of the LCD @@ -3970,7 +3970,7 @@ static void lcd_wizard_load() { bool lcd_autoDepleteEnabled() { return (lcd_autoDeplete -#ifdef FILAMENT_SENSOR ///should be removed during mmu2 refactoring +#ifdef FILAMENT_SENSOR // @todo leptun: should be removed during mmu2 refactoring - needs checking && fsensor.isReady() #endif ); @@ -4296,10 +4296,10 @@ static void lcd_fsensor_settings_menu() { switch(fsensor.getActionOnError()) { case Filament_sensor::SensorActionOnError::_Continue: - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set); + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_CONTINUE_SHORT), lcd_fsensor_actionNA_set); break; case Filament_sensor::SensorActionOnError::_Pause: - MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set); + MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_PAUSE), lcd_fsensor_actionNA_set); break; default: lcd_fsensor_actionNA_set(); @@ -7520,6 +7520,7 @@ static void menu_action_sdfile(const char* filename) //to open a file. Instead, the cached filename in cmd is used as that one is static for the whole lifetime of this function. if (!check_file(cmd + 4)) { result = !lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false);////MSG_FILE_INCOMPLETE c=20 r=3 + lcd_update_enable(true); } if (result) { enquecommand(cmd); @@ -7776,7 +7777,7 @@ void menu_lcd_lcdupdate_func(void) } #endif//CARDINSERTED backlight_update(); - if (lcd_next_update_millis < _millis() || lcd_draw_update) + if (lcd_next_update_millis < _millis()) { if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 5441198a3..767c2c952 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -80,11 +80,11 @@ extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // 1: no, 0: yes, -1: timeouted -extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); +extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7, void (*multiscreen_cb)(void) = nullptr); -extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = MIDDLE_BUTTON_CHOICE); +extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. @@ -129,7 +129,7 @@ enum class CustomMsg : uint_least8_t TempCompPreheat, //!< Temperature compensation preheat M0Wait, //!< M0/M1 Wait command working even from SD M117, //!< M117 Set the status line message on the LCD - Resuming, //!< Resuming message + Resuming, //!< Resuming message MMUProgress, ///< MMU progress message }; From be3f9376ba48272fef0acfad8cccdd1980df9788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Thu, 28 Jul 2022 10:20:29 +0000 Subject: [PATCH 177/319] Add missing break --- Firmware/mmu2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index e36592732..9b10de9a1 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -796,6 +796,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { { case ProgressCode::UnloadingToFinda: unloadFilamentStarted = false; + break; case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: // FSENSOR error during load. Make sure E-motor stops moving. From 2fc8b50f11087e942b35fa0308bba5feff045716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Thu, 28 Jul 2022 08:47:58 +0000 Subject: [PATCH 178/319] Fix lcd_show_multiscreen_message_yes_no_and_wait_P after rebase --- Firmware/ultralcd.cpp | 16 +++++----------- Firmware/ultralcd.h | 7 ++++--- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index dd88c7a3d..460806add 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3243,15 +3243,15 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @param second_choice text caption of second possible choice. Must be in PROGMEM //! @param third_choice text caption of second possible choice. Must be in PROGMEM. When not set to nullptr first_choice and second_choice may not be more than 5 characters long. //! @param second_col column on LCD where second_choice starts -//! @param multiscreen_cb an optional call back that will be called periodically when the printer is paused for user //! @retval 0 first choice selected by user //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user //! @retval -1 screen timed out (only possible if allow_timeouting is true) -int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, - const char * const first_choice, const char * const second_choice, const char * const third_choice, uint8_t second_col, - void (*multiscreen_cb)(void)) -{ +int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( + const char *const msg, bool allow_timeouting, uint8_t default_selection, + const char *const first_choice, const char *const second_choice, const char *const third_choice, + uint8_t second_col +) { const char *msg_next = msg ? lcd_display_message_fullscreen_P(msg) : NULL; bool multi_screen = msg_next != NULL; lcd_set_custom_characters_nextpage(); @@ -3275,12 +3275,6 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const m manage_heater(); manage_inactivity(true); - if (multiscreen_cb) { - multiscreen_cb(); - } - - - if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { if (msg_next == NULL) { if (third_choice) { // third_choice is not nullptr, safe to dereference diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 767c2c952..2037e990e 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -81,9 +81,10 @@ extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); -extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P(const char * const msg, bool allow_timeouting, uint8_t default_selection, - const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7, - void (*multiscreen_cb)(void) = nullptr); +extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( + const char * const msg, bool allow_timeouting, uint8_t default_selection, + const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, + uint8_t second_col = 7); extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From e59651a279fb41256591d24bb27155fcc72d73bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Thu, 28 Jul 2022 08:49:09 +0000 Subject: [PATCH 179/319] Remove description in header file The description are more detailed in the ultralcd.cpp file No need to document the function in two places :) --- Firmware/ultralcd.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 2037e990e..5fe09ffbc 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -77,9 +77,7 @@ extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); -// 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); -// 1: no, 0: yes, -1: timeouted extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( const char * const msg, bool allow_timeouting, uint8_t default_selection, From 5b184d885cdbcc1c29c98bcd9e0bf32e4cbb023b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Thu, 28 Jul 2022 10:05:09 +0000 Subject: [PATCH 180/319] Add LCD_BUTTON_TIMEOUT to enum --- Firmware/Marlin_main.cpp | 6 +++--- Firmware/ultralcd.cpp | 30 +++++++++++++++--------------- Firmware/ultralcd.h | 9 +++++---- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d0592beb4..2e086a52b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -647,7 +647,7 @@ void crashdet_detected(uint8_t mask) lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_RESUME_PRINT)); lcd_putc('?'); - int8_t yesno = lcd_show_yes_no_and_wait(false); + uint8_t yesno = lcd_show_yes_no_and_wait(false); if (yesno == LCD_LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("CRASH_RECOVER")); @@ -3292,7 +3292,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) { KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET - int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); + uint8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if(result == LCD_LEFT_BUTTON_CHOICE) { lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); } @@ -4924,7 +4924,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF); break; } lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 - int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); + uint8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false); if (result == LCD_LEFT_BUTTON_CHOICE) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 460806add..3ccc4dd6c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2326,7 +2326,7 @@ void show_preheat_nozzle_warning() void lcd_load_filament_color_check() { - int8_t clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); + uint8_t clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, LCD_LEFT_BUTTON_CHOICE); while (clean == LCD_MIDDLE_BUTTON_CHOICE) { load_filament_final_feed(); st_synchronize(); @@ -3018,10 +3018,10 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) } } // Let the user confirm, that the Z carriage is at the top end stoppers. - int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Are left and right Z~carriages all up?"), false);////MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 - if (result == -1) + uint8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Are left and right Z~carriages all up?"), false);////MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 + if (result == LCD_BUTTON_TIMEOUT) goto canceled; - else if (result == 1) + else if (result == LCD_MIDDLE_BUTTON_CHOICE) goto calibrated; // otherwise perform another round of the Z up dialog. } @@ -3204,8 +3204,8 @@ lcd_wait_for_click_delay(0); //! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user -//! @retval -1 screen timed out -int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) //currently just max. n*4 + 3 lines supported (set in language header files) +//! @retval 0xFF button timeout (only possible if allow_timeouting is true) +uint8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) //currently just max. n*4 + 3 lines supported (set in language header files) { return lcd_show_multiscreen_message_with_choices_and_wait_P(msg, allow_timeouting, default_selection, _T(MSG_YES), _T(MSG_NO), nullptr, 10); } @@ -3246,8 +3246,8 @@ void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const //! @retval 0 first choice selected by user //! @retval 1 first choice selected by user //! @retval 2 third choice selected by user -//! @retval -1 screen timed out (only possible if allow_timeouting is true) -int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( +//! @retval 0xFF button timeout (only possible if allow_timeouting is true) +uint8_t lcd_show_multiscreen_message_with_choices_and_wait_P( const char *const msg, bool allow_timeouting, uint8_t default_selection, const char *const first_choice, const char *const second_choice, const char *const third_choice, uint8_t second_col @@ -3270,7 +3270,7 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( for (uint8_t i = 0; i < 100; ++i) { delay_keep_alive(50); if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) { - return -1; + return LCD_BUTTON_TIMEOUT; } manage_heater(); manage_inactivity(true); @@ -3330,8 +3330,8 @@ int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( //! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user -//! @retval -1 screen timed out -int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, uint8_t default_selection) +//! @retval 0xFF button timeout (only possible if allow_timeouting is true) +uint8_t lcd_show_yes_no_and_wait(bool allow_timeouting, uint8_t default_selection) { return lcd_show_multiscreen_message_yes_no_and_wait_P(NULL, allow_timeouting, default_selection); } @@ -3342,9 +3342,9 @@ int8_t lcd_show_yes_no_and_wait(bool allow_timeouting, uint8_t default_selection //! @param default_selection if 0, 'Yes' choice is selected by default, otherwise 'No' choice is preselected //! @retval 0 yes choice selected by user //! @retval 1 no choice selected by user -//! @retval -1 screen timed out +//! @retval 0xFF button timeout (only possible if allow_timeouting is true) //! @relates lcd_show_yes_no_and_wait -int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) +uint8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, uint8_t default_selection) { return lcd_show_multiscreen_message_yes_no_and_wait_P(msg, allow_timeouting, default_selection); } @@ -4028,7 +4028,7 @@ void lcd_wizard(WizState state) { using S = WizState; bool end = false; - int8_t wizard_event; + uint8_t wizard_event; const char *msg = NULL; // Make sure EEPROM_WIZARD_ACTIVE is true if entering using different entry point // other than WizState::Run - it is useful for debugging wizard. @@ -5133,7 +5133,7 @@ char reset_menu() { static void lcd_disable_farm_mode() { - int8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true); //allow timeouting, default no + uint8_t disable = lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Disable farm mode?"), true); //allow timeouting, default no if (disable == LCD_LEFT_BUTTON_CHOICE) { enquecommand_P(PSTR("G99")); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 5fe09ffbc..2262cc5e3 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -68,6 +68,7 @@ enum LCDButtonChoice : uint_fast8_t { LCD_LEFT_BUTTON_CHOICE = 0, LCD_MIDDLE_BUTTON_CHOICE = 1, LCD_RIGHT_BUTTON_CHOICE = 2, + LCD_BUTTON_TIMEOUT = 0xFF, }; extern const char* lcd_display_message_fullscreen_P(const char *msg); @@ -77,13 +78,13 @@ extern void lcd_wait_for_click(); extern bool lcd_wait_for_click_delay(uint16_t nDelay); void lcd_show_choices_prompt_P(uint8_t selected, const char *first_choice, const char *second_choice, uint8_t second_col, const char *third_choice = nullptr); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); -extern int8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); -extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); -extern int8_t lcd_show_multiscreen_message_with_choices_and_wait_P( +extern uint8_t lcd_show_yes_no_and_wait(bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); +extern uint8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); +extern uint8_t lcd_show_multiscreen_message_with_choices_and_wait_P( const char * const msg, bool allow_timeouting, uint8_t default_selection, const char * const first_choice, const char * const second_choice, const char * const third_choice = nullptr, uint8_t second_col = 7); -extern int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); +extern uint8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, uint8_t default_selection = LCD_MIDDLE_BUTTON_CHOICE); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done. From 400fec5d9f7ba5fd3a2085eec394825d9a780e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 31 Jul 2022 11:50:54 +0000 Subject: [PATCH 181/319] Reset CustomMsg when Command in progress is None When a Progress report is started, we set the CustomMsg to MMUProgress. But there was an issue where, once the reported "Progress" action was done. We did not reset the CustomMsg to Status. So if we are printing from the SD card, the file name is not displayed on the LCD. --- Firmware/mmu2_reporting.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index db4c0de08..70e2f2b66 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -262,8 +262,16 @@ void ReportErrorHook(uint16_t ec, uint8_t res) { } void ReportProgressHook(CommandInProgress cip, uint16_t ec) { - custom_message_type = CustomMsg::MMUProgress; - lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); + if (cip != CommandInProgress::NoCommand) + { + custom_message_type = CustomMsg::MMUProgress; + lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); + } else { + // If there is no command in progress we can display other + // useful information such as the name of the SD file + // being printed + custom_message_type = CustomMsg::Status; + } } } // namespace MMU2 From 14b2befb7d1623d73572c1ddc228072cf5cb876e Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 4 Aug 2022 09:34:04 +0200 Subject: [PATCH 182/319] Switch from Start Seq into Idle immediately + disable FS autoload on MMU --- Firmware/Filament_sensor.cpp | 14 +++++++++++--- Firmware/mmu2_protocol_logic.cpp | 13 ++++++++++++- Firmware/mmu2_protocol_logic.h | 1 + 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 9f17eea19..5e16c809e 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -107,9 +107,17 @@ bool Filament_sensor::checkFilamentEvents() { } void Filament_sensor::triggerFilamentInserted() { - if (autoLoadEnabled && (eFilamentAction == FilamentAction::None) && - !(moves_planned() || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) || - eeprom_read_byte((uint8_t *)EEPROM_WIZARD_ACTIVE))) { + if (autoLoadEnabled + && (eFilamentAction == FilamentAction::None) + && (! MMU2::mmu2.Enabled() ) // quick and dirty hack to prevent spurious runouts while the MMU is in charge + && !( + moves_planned() + || IS_SD_PRINTING + || usb_timer.running() + || (lcd_commands_type == LcdCommands::Layer1Cal) + || eeprom_read_byte((uint8_t *)EEPROM_WIZARD_ACTIVE) + ) + ) { filAutoLoad(); } } diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 535702a75..f135404c5 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -180,7 +180,10 @@ StepStatus StartSeq::Step() { break; case State::FilamentSensorStateSent: state = State::Ready; - return Finished; + logic->SwitchFromStartToIdle(); + return Processing; // Returning Finished is not a good idea in case of a fast error recovery + // - it tells the printer, that the command which experienced a protocol error and recovered successfully actually terminated. + // In such a case we must return "Processing" in order to keep the MMU state machine running and prevent the printer from executing next G-codes. break; case State::RecoveringProtocolError: // timer elapsed, clear the input buffer @@ -483,6 +486,14 @@ void ProtocolLogic::SwitchToIdle() { idle.Restart(); } +void ProtocolLogic::SwitchFromStartToIdle(){ + state = State::Running; + currentState = &idle; + idle.Restart(); + idle.SendQuery(); // force sending Q0 immediately + idle.state = Idle::State::QuerySent; +} + bool ProtocolLogic::Elapsed(uint32_t timeout) const { return _millis() >= (lastUARTActivityMs + timeout); } diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 5f4689ba5..fa5437962 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -276,6 +276,7 @@ private: void LogError(const char *reason); void LogResponse(); void SwitchFromIdleToCommand(); + void SwitchFromStartToIdle(); enum class State : uint_fast8_t { Stopped, ///< stopped for whatever reason From 6e5fcb5838d009ff2a47961a0744ba88f0e1fd53 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 4 Aug 2022 09:36:38 +0200 Subject: [PATCH 183/319] Tune a few MMU progress codes' texts to fit on the LCD --- Firmware/mmu2_progress_converter.cpp | 56 ++++++++++++++-------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index 2e1a6d5ef..548c95b1d 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -4,34 +4,34 @@ #include namespace MMU2 { - -static const char progressOk[] PROGMEM_I1 = ISTR("OK"); -static const char progressEngageIdler[] PROGMEM_I1 = ISTR("Engaging idler"); -static const char progressDisengeIdler[] PROGMEM_I1 = ISTR("Disengaging idler"); -static const char progressUnloadFinda[] PROGMEM_I1 = ISTR("Unloading to FINDA"); -static const char progressUnloadPulley[] PROGMEM_I1 = ISTR("Unloading to pulley"); -static const char progressFeedFinda[] PROGMEM_I1 = ISTR("Feeding to FINDA"); -static const char progressFeedBondtech[] PROGMEM_I1 = ISTR("Feeding to drive gear"); -static const char progressFeedNozzle[] PROGMEM_I1 = ISTR("Feeding to nozzle"); -static const char progressAvoidGrind[] PROGMEM_I1 = ISTR("Avoiding grind"); -static const char progressFinishMoves[] PROGMEM_I1 = ISTR("Finishing moves"); -static const char progressWaitForUser[] PROGMEM_I1 = ISTR("ERR Wait for User"); -static const char progressErrInternal[] PROGMEM_I1 = ISTR("ERR Internal"); -static const char progressErrHelpFil[] PROGMEM_I1 = ISTR("ERR Helping filament"); -static const char progressErrTmc[] PROGMEM_I1 = ISTR("ERR TMC failed"); -static const char progressUnloadFilament[] PROGMEM_I1 = ISTR("Unloading filament"); -static const char progressLoadFilament[] PROGMEM_I1 = ISTR("Loading filament"); -static const char progressSelectSlot[] PROGMEM_I1 = ISTR("Selecting filament slot"); -static const char progressPrepareBlade[] PROGMEM_I1 = ISTR("Preparing blade"); -static const char progressPushFilament[] PROGMEM_I1 = ISTR("Pushing filament"); -static const char progressPerformCut[] PROGMEM_I1 = ISTR("Performing cut"); -static const char progressReturnSelector[] PROGMEM_I1 = ISTR("Returning selector"); -static const char progressParkSelector[] PROGMEM_I1 = ISTR("Parking selector"); -static const char progressEjectFilament[] PROGMEM_I1 = ISTR("Ejecting filament"); -static const char progressRetractFinda[] PROGMEM_I1 = ISTR("Retracting from FINDA"); -static const char progressHoming[] PROGMEM_I1 = ISTR("Homing"); -static const char progressMovingSelector[] PROGMEM_I1 = ISTR("Moving selector"); -static const char progressFeedingToFSensor[] PROGMEM_I1 = ISTR("FeedingToFSensor"); + // 12345678901234567890 +static const char progressOk[] PROGMEM_I1 = ISTR("OK"); +static const char progressEngageIdler[] PROGMEM_I1 = ISTR("Engaging idler"); +static const char progressDisengeIdler[] PROGMEM_I1 = ISTR("Disengaging idler"); +static const char progressUnloadFinda[] PROGMEM_I1 = ISTR("Unloading to FINDA"); +static const char progressUnloadPulley[] PROGMEM_I1 = ISTR("Unloading to pulley"); +static const char progressFeedFinda[] PROGMEM_I1 = ISTR("Feeding to FINDA"); +static const char progressFeedBondtech[] PROGMEM_I1 = ISTR("Feeding to extruder"); +static const char progressFeedNozzle[] PROGMEM_I1 = ISTR("Feeding to nozzle"); +static const char progressAvoidGrind[] PROGMEM_I1 = ISTR("Avoiding grind"); +static const char progressFinishMoves[] PROGMEM_I1 = ISTR("Finishing moves"); +static const char progressWaitForUser[] PROGMEM_I1 = ISTR("ERR Wait for User"); +static const char progressErrInternal[] PROGMEM_I1 = ISTR("ERR Internal"); +static const char progressErrHelpFil[] PROGMEM_I1 = ISTR("ERR Help filament"); +static const char progressErrTmc[] PROGMEM_I1 = ISTR("ERR TMC failed"); +static const char progressUnloadFilament[] PROGMEM_I1 = ISTR("Unloading filament"); +static const char progressLoadFilament[] PROGMEM_I1 = ISTR("Loading filament"); +static const char progressSelectSlot[] PROGMEM_I1 = ISTR("Selecting fil. slot"); +static const char progressPrepareBlade[] PROGMEM_I1 = ISTR("Preparing blade"); +static const char progressPushFilament[] PROGMEM_I1 = ISTR("Pushing filament"); +static const char progressPerformCut[] PROGMEM_I1 = ISTR("Performing cut"); +static const char progressReturnSelector[] PROGMEM_I1 = ISTR("Returning selector"); +static const char progressParkSelector[] PROGMEM_I1 = ISTR("Parking selector"); +static const char progressEjectFilament[] PROGMEM_I1 = ISTR("Ejecting filament"); +static const char progressRetractFinda[] PROGMEM_I1 = ISTR("Retract from FINDA"); +static const char progressHoming[] PROGMEM_I1 = ISTR("Homing"); +static const char progressMovingSelector[] PROGMEM_I1 = ISTR("Moving selector"); +static const char progressFeedingToFSensor[] PROGMEM_I1 = ISTR("Feeding to FSensor"); static const char * const progressTexts[] PROGMEM = { progressOk, From 53e2d681836601533a7d0a6714b17febb35284b1 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 4 Aug 2022 12:14:31 +0200 Subject: [PATCH 184/319] Retry up to 6x in case of incorrect MMU FW version Because it looks like the communication drop outs are caused by some electrical issues and we can loose even a byte from the version response, which is deadly for future operation. --- Firmware/mmu2_protocol_logic.cpp | 51 ++++++++++++++++++++++---------- Firmware/mmu2_protocol_logic.h | 6 +++- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index f135404c5..1970bc792 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -129,6 +129,7 @@ void ProtocolLogic::SendMsg(RequestMsg rq) { } void StartSeq::Restart() { + retries = maxRetries; SendVersion(0); } @@ -141,41 +142,61 @@ StepStatus StartSeq::Step() { case State::S0Sent: // received response to S0 - major if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 0 ){ // got a response to something else - protocol corruption probably, repeat the query - SendVersion(0); + SendVersion(0); } else { logic->mmuFwVersionMajor = logic->rsp.paramValue; if (logic->mmuFwVersionMajor != supportedMmuFWVersionMajor) { - return VersionMismatch; - } - logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking + if( --retries == 0){ + // if (--retries == 0) has a specific meaning - since we are losing bytes on the UART for no obvious reason + // it can happen, that the reported version number is not complete - i.e. "1" instead of "19" + // Therefore we drop the MMU only if we run out of retries for this very reason. + // There is a limited amount of retries per the whole start seq. + // We also must be able to actually detect an unsupported MMU FW version, so the amount of retries shall be kept small. + return VersionMismatch; + } else { + SendVersion(0); + } + } else { + logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking SendVersion(1); + } } break; case State::S1Sent: // received response to S1 - minor if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 1 ){ // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? - SendVersion(1); + SendVersion(1); } else { logic->mmuFwVersionMinor = logic->rsp.paramValue; - if (logic->mmuFwVersionMinor != supportedMmuFWVersionMinor) { - return VersionMismatch; - } + if (logic->mmuFwVersionMinor != supportedMmuFWVersionMinor){ + if( --retries == 0) { + return VersionMismatch; + } else { + SendVersion(1); + } + } else { SendVersion(2); + } } break; case State::S2Sent: // received response to S2 - revision if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 2 ){ // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? - SendVersion(2); + SendVersion(2); } else { logic->mmuFwVersionBuild = logic->rsp.paramValue; - if (logic->mmuFwVersionBuild < supportedMmuFWVersionBuild) { - return VersionMismatch; + if (logic->mmuFwVersionBuild < supportedMmuFWVersionBuild){ + if( --retries == 0 ) { + return VersionMismatch; + } else { + SendVersion(2); + } + } else { + // Start General Interrogation after line up. + // For now we just send the state of the filament sensor, but we may request + // data point states from the MMU as well. TBD in the future, especially with another protocol + SendAndUpdateFilamentSensor(); } - // Start General Interrogation after line up. - // For now we just send the state of the filament sensor, but we may request - // data point states from the MMU as well. TBD in the future, especially with another protocol - SendAndUpdateFilamentSensor(); } break; case State::FilamentSensorStateSent: diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index fa5437962..b31d68b7f 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -120,9 +120,13 @@ protected: class StartSeq : public ProtocolLogicPartBase { public: inline StartSeq(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) {} + : ProtocolLogicPartBase(logic) + , retries(maxRetries) {} void Restart() override; StepStatus Step() override; +private: + static constexpr uint8_t maxRetries = 6; + uint8_t retries; }; class DelayedRestart : public ProtocolLogicPartBase { From bc85a41059f07ce2281b13f69c5e1c95b7ea51da Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sat, 6 Aug 2022 19:42:20 +0300 Subject: [PATCH 185/319] Fix xflash flashing --- Firmware/Marlin_main.cpp | 10 ++++------ Firmware/mmu2.cpp | 6 +++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2e086a52b..923595f84 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1059,12 +1059,6 @@ void setup() fdev_setup_stream(uartout, uart_putchar, NULL, _FDEV_SETUP_WRITE); //setup uart out stream stdout = uartout; - if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) - { - MMU2::mmu2.Start(); - } - - #ifdef XFLASH bool xflash_success = xflash_init(); uint8_t optiboot_status = 1; @@ -1122,6 +1116,10 @@ void setup() SERIAL_ECHO_START; puts_P(PSTR(" " FW_VERSION_FULL)); + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) { + MMU2::mmu2.Start(); + } + //SERIAL_ECHOPAIR("Active sheet before:", static_cast(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))); #ifdef DEBUG_SEC_LANG diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 9b10de9a1..149773782 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -113,9 +113,7 @@ MMU2::MMU2() , unloadFilamentStarted(false) , loadingToNozzle(false) , inAutoRetry(false) -{ - ResetRetryAttempts(); -} +{} void MMU2::Start() { #ifdef MMU_HWRESET @@ -135,6 +133,8 @@ void MMU2::Start() { // start the communication logic.Start(); + + ResetRetryAttempts(); } void MMU2::Stop() { From 4f30cf0ba3745f08612a7a105cdf1d8350f65fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 6 Aug 2022 13:09:52 +0000 Subject: [PATCH 186/319] Add missing ProtocolError --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 1970bc792..d8cca0fd4 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -378,7 +378,7 @@ StepStatus Idle::Step() { } break; default: - break; + return ProtocolError; } SendFINDAQuery(); return Processing; From ab3276948799567852e7af5e8687fc319b98db3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 6 Aug 2022 13:11:15 +0000 Subject: [PATCH 187/319] Send button from current state machine --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index d8cca0fd4..155444c04 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -480,7 +480,7 @@ bool ProtocolLogic::ActivatePlannedRequest(){ // @@TODO - this is not completely correct, but it does the job. // In Idle mode the command part is not active, but we still need button handling in Idle mode (resolve MMU init errors) // -> command.SendButton is not correct, but it sends the message and everything works (for now) - command.SendButton(plannedRq.value); + currentState->SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; } else if( plannedRq.code != RequestMsgCodes::unknown ){ From b9d9308f9fab0110a33649bf92245ac8efdf75a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 6 Aug 2022 13:24:43 +0000 Subject: [PATCH 188/319] Support 3x Retry in Idle state machine --- Firmware/mmu2_protocol_logic.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 155444c04..ca1ca9094 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -364,6 +364,12 @@ StepStatus Idle::Step() { // we do not transfer to any "running" command (i.e. we stay in Idle), // but in case there is an error reported we must make sure it gets propagated switch( logic->rsp.paramCode ){ + case ResponseMsgParamCodes::Button: + // The user pushed a button on the MMU. Save it, do what we need to do + // to prepare, then pass it back to the MMU so it can work its magic. + logic->buttonCode = static_cast(logic->rsp.paramValue); + SendFINDAQuery(); + return ButtonPushed; case ResponseMsgParamCodes::Processing: // @@TODO we may actually use this branch to report progress of manual operation on the MMU // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector @@ -385,6 +391,16 @@ StepStatus Idle::Step() { break; case State::FINDAReqSent: return ProcessFINDAReqSent(Finished, State::Ready); + case State::ButtonSent:{ + // button is never confirmed ... may be it should be + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { + // Button was accepted, decrement the retry. + mmu2.DecrementRetryAttempts(); + } + SendFINDAQuery(); + } break; default: return ProtocolError; } From f717aa161c0c450f67ae13d6b398697d300fa9cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 6 Aug 2022 13:31:32 +0000 Subject: [PATCH 189/319] Remove TODO in ActivatePlannedRequest --- Firmware/mmu2_protocol_logic.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index ca1ca9094..deed3ce5f 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -493,9 +493,6 @@ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { bool ProtocolLogic::ActivatePlannedRequest(){ if( plannedRq.code == RequestMsgCodes::Button ){ // only issue the button to the MMU and do not restart the state machines - // @@TODO - this is not completely correct, but it does the job. - // In Idle mode the command part is not active, but we still need button handling in Idle mode (resolve MMU init errors) - // -> command.SendButton is not correct, but it sends the message and everything works (for now) currentState->SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; From 938fac405839eff70f5ebb0290728f20b6a08a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 6 Aug 2022 17:58:32 +0000 Subject: [PATCH 190/319] Remove old comment, button is acknowledged now --- Firmware/mmu2_protocol_logic.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index deed3ce5f..401f28f12 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -314,7 +314,6 @@ StepStatus Command::Step() { case State::FINDAReqSent: return ProcessFINDAReqSent(Processing, State::Wait); case State::ButtonSent:{ - // button is never confirmed ... may be it should be if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { @@ -392,7 +391,6 @@ StepStatus Idle::Step() { case State::FINDAReqSent: return ProcessFINDAReqSent(Finished, State::Ready); case State::ButtonSent:{ - // button is never confirmed ... may be it should be if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { From 485ed4a2136529a5d6af452c354664507b7e83f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 7 Aug 2022 19:09:41 +0000 Subject: [PATCH 191/319] Fix issue where logs show two corrupted chars Issue only appears when LANG_MODE = 1 --- Firmware/mmu2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 149773782..ae871f8de 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -811,7 +811,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM( PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec)) ); + SERIAL_ECHOLNRPGM( _T(PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec))) ); } static_assert(mmu2Magic[0] == 'M' @@ -828,7 +828,7 @@ void MMU2::ReportProgress(ProgressCode pc) { ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM( ProgressCodeToText((uint16_t)pc) ); + SERIAL_ECHOLNRPGM( _T(ProgressCodeToText((uint16_t)pc)) ); } void MMU2::OnMMUProgressMsg(ProgressCode pc){ From 6d6f9583eac409ebc2f610ca864c2c609e0414d4 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 8 Aug 2022 06:39:25 +0200 Subject: [PATCH 192/319] Initialize retryAttempts in constructor --- Firmware/mmu2.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ae871f8de..ba88cc7de 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -113,7 +113,9 @@ MMU2::MMU2() , unloadFilamentStarted(false) , loadingToNozzle(false) , inAutoRetry(false) -{} + , retryAttempts(MAX_RETRIES) +{ +} void MMU2::Start() { #ifdef MMU_HWRESET From f18721bee3dc51585b6ff2d3dbbec1f776da8172 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 8 Aug 2022 09:15:48 +0200 Subject: [PATCH 193/319] Fix unintentional typo --- Firmware/mmu2_error_converter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index b035a628d..839d43479 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -173,7 +173,7 @@ Buttons ButtonAvailable(uint16_t ec) { uint8_t ei = PrusaErrorCodeIndex(ec); // The list of responses which occur in mmu error dialogs - // Return button index or perform some action on the MK4 by itself (like restart MMU) + // Return button index or perform some action on the MK3 by itself (like restart MMU) // Based on Prusa-Error-Codes errors_list.h // So far hardcoded, but shall be generated in the future switch ( PrusaErrorCode(ei) ) { From 2f0ceabce56fd35498a417a60bcadaf5024d6235 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 10 Aug 2022 12:19:24 +0200 Subject: [PATCH 194/319] Upgrade protocol to v2.1 - read/write registers + CRC --- Firmware/mmu2_crc.cpp | 22 +++ Firmware/mmu2_crc.h | 43 +++++ Firmware/mmu2_protocol.cpp | 280 ++++++++++++++++++++++--------- Firmware/mmu2_protocol.h | 167 ++++++++++++++++-- Firmware/mmu2_protocol_logic.cpp | 4 +- 5 files changed, 417 insertions(+), 99 deletions(-) create mode 100644 Firmware/mmu2_crc.cpp create mode 100644 Firmware/mmu2_crc.h diff --git a/Firmware/mmu2_crc.cpp b/Firmware/mmu2_crc.cpp new file mode 100644 index 000000000..20c68f7c5 --- /dev/null +++ b/Firmware/mmu2_crc.cpp @@ -0,0 +1,22 @@ +/// @file +#include "mmu2_crc.h" + +#ifdef __AVR__ +#include +#endif + +namespace modules { +namespace crc { + +#ifdef __AVR__ +uint8_t CRC8::CCITT_update(uint8_t crc, uint8_t b) { + return _crc8_ccitt_update(crc, b); +} +#else +uint8_t CRC8::CCITT_update(uint8_t crc, uint8_t b) { + return CCITT_updateCX(crc, b); +} +#endif + +} // namespace crc +} // namespace modules diff --git a/Firmware/mmu2_crc.h b/Firmware/mmu2_crc.h new file mode 100644 index 000000000..cc8f06dab --- /dev/null +++ b/Firmware/mmu2_crc.h @@ -0,0 +1,43 @@ +/// @file +#pragma once +#include + +namespace modules { + +/// Contains all the necessary functions for computation of CRC +namespace crc { + +class CRC8 { +public: + /// Compute/update CRC8 CCIIT from 8bits. + /// Details: https://www.nongnu.org/avr-libc/user-manual/group__util__crc.html + static uint8_t CCITT_update(uint8_t crc, uint8_t b); + + static constexpr uint8_t CCITT_updateCX(uint8_t crc, uint8_t b) { + uint8_t data = crc ^ b; + for (uint8_t i = 0; i < 8; i++) { + if ((data & 0x80U) != 0) { + data <<= 1U; + data ^= 0x07U; + } else { + data <<= 1U; + } + } + return data; + } + + /// Compute/update CRC8 CCIIT from 16bits (convenience wrapper) + static constexpr uint8_t CCITT_updateW(uint8_t crc, uint16_t w) { + union U { + uint8_t b[2]; + uint16_t w; + explicit constexpr inline U(uint16_t w) + : w(w) {} + } u(w); + return CCITT_updateCX(CCITT_updateCX(crc, u.b[0]), u.b[1]); + } +}; + +} // namespace crc + +} // namespace modules diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp index 140c4e49b..91c645dd4 100644 --- a/Firmware/mmu2_protocol.cpp +++ b/Firmware/mmu2_protocol.cpp @@ -9,7 +9,7 @@ // any of the running operation statuses: OID: [T|L|U|E|C|W|K][0-4] // P[0-9] : command being processed i.e. operation running, may contain a state number // E[0-9][0-9] : error 1-9 while doing a tool change -// F : operation finished - will be repeated to "Q" messages until a new command is issued +// F[0-9] : operation finished - will be repeated to "Q" messages until a new command is issued namespace modules { namespace protocol { @@ -40,14 +40,17 @@ DecodeStatus Protocol::DecodeRequest(uint8_t c) { case 'S': case 'B': case 'E': - case 'W': + case 'W': // write is gonna be a special one case 'K': case 'F': case 'f': case 'H': + case 'R': requestMsg.code = (RequestMsgCodes)c; requestMsg.value = 0; - rqState = RequestStates::Value; + requestMsg.value2 = 0; + requestMsg.crc8 = 0; + rqState = (c == 'W') ? RequestStates::Address : RequestStates::Value; // prepare special automaton path for Write commands return DecodeStatus::NeedMoreData; default: requestMsg.code = RequestMsgCodes::unknown; @@ -55,18 +58,61 @@ DecodeStatus Protocol::DecodeRequest(uint8_t c) { return DecodeStatus::Error; } case RequestStates::Value: - if (IsDigit(c)) { - requestMsg.value *= 10; - requestMsg.value += c - '0'; + if (IsHexDigit(c)) { + requestMsg.value <<= 4U; + requestMsg.value |= Char2Nibble(c); + return DecodeStatus::NeedMoreData; + } else if (IsCRCSeparator(c)) { + rqState = RequestStates::CRC; return DecodeStatus::NeedMoreData; - } else if (IsNewLine(c)) { - rqState = RequestStates::Code; - return DecodeStatus::MessageCompleted; } else { requestMsg.code = RequestMsgCodes::unknown; rqState = RequestStates::Error; return DecodeStatus::Error; } + case RequestStates::Address: + if (IsHexDigit(c)) { + requestMsg.value <<= 4U; + requestMsg.value |= Char2Nibble(c); + return DecodeStatus::NeedMoreData; + } else if (c == ' ') { // end of address, value coming + rqState = RequestStates::WriteValue; + return DecodeStatus::NeedMoreData; + } else { + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } + case RequestStates::WriteValue: + if (IsHexDigit(c)) { + requestMsg.value2 <<= 4U; + requestMsg.value2 |= Char2Nibble(c); + return DecodeStatus::NeedMoreData; + } else if (IsCRCSeparator(c)) { + rqState = RequestStates::CRC; + return DecodeStatus::NeedMoreData; + } else { + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } + case RequestStates::CRC: + if (IsHexDigit(c)) { + requestMsg.crc8 <<= 4U; + requestMsg.crc8 |= Char2Nibble(c); + return DecodeStatus::NeedMoreData; + } else if (IsNewLine(c)) { + // check CRC at this spot + if (requestMsg.crc8 != requestMsg.ComputeCRC8()) { + // CRC mismatch + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; + } else { + rqState = RequestStates::Code; + return DecodeStatus::MessageCompleted; + } + } default: //case error: if (IsNewLine(c)) { rqState = RequestStates::Code; @@ -80,12 +126,28 @@ DecodeStatus Protocol::DecodeRequest(uint8_t c) { } uint8_t Protocol::EncodeRequest(const RequestMsg &msg, uint8_t *txbuff) { - constexpr uint8_t reqSize = 3; txbuff[0] = (uint8_t)msg.code; - txbuff[1] = msg.value + '0'; - txbuff[2] = '\n'; - return reqSize; - static_assert(reqSize <= MaxRequestSize(), "Request message length exceeded the maximum size, increase the magic constant in MaxRequestSize()"); + uint8_t i = 1 + UInt8ToHex(msg.value, txbuff + 1); + + i += AppendCRC(msg.CRC(), txbuff + i); + + txbuff[i] = '\n'; + ++i; + return i; + static_assert(7 <= MaxRequestSize(), "Request message length exceeded the maximum size, increase the magic constant in MaxRequestSize()"); +} + +uint8_t Protocol::EncodeWriteRequest(uint8_t address, uint16_t value, uint8_t *txbuff) { + const RequestMsg msg(RequestMsgCodes::Write, address, value); + uint8_t i = BeginEncodeRequest(msg, txbuff); + // dump the value + i += UInt16ToHex(value, txbuff + i); + + i += AppendCRC(msg.CRC(), txbuff + i); + + txbuff[i] = '\n'; + ++i; + return i; } DecodeStatus Protocol::DecodeResponse(uint8_t c) { @@ -107,8 +169,11 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { case 'F': case 'f': case 'H': + case 'R': responseMsg.request.code = (RequestMsgCodes)c; responseMsg.request.value = 0; + responseMsg.request.value2 = 0; + responseMsg.request.crc8 = 0; rspState = ResponseStates::RequestValue; return DecodeStatus::NeedMoreData; case 0x0a: @@ -120,9 +185,9 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { return DecodeStatus::Error; } case ResponseStates::RequestValue: - if (IsDigit(c)) { - responseMsg.request.value *= 10; - responseMsg.request.value += c - '0'; + if (IsHexDigit(c)) { + responseMsg.request.value <<= 4U; + responseMsg.request.value += Char2Nibble(c); return DecodeStatus::NeedMoreData; } else if (c == ' ') { rspState = ResponseStates::ParamCode; @@ -149,13 +214,34 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { return DecodeStatus::Error; } case ResponseStates::ParamValue: - if (IsDigit(c)) { - responseMsg.paramValue *= 10; - responseMsg.paramValue += c - '0'; + if (IsHexDigit(c)) { + responseMsg.paramValue <<= 4U; + responseMsg.paramValue += Char2Nibble(c); + return DecodeStatus::NeedMoreData; + } else if (IsCRCSeparator(c)) { + rspState = ResponseStates::CRC; + return DecodeStatus::NeedMoreData; + } else { + responseMsg.paramCode = ResponseMsgParamCodes::unknown; + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } + case ResponseStates::CRC: + if (IsHexDigit(c)) { + responseMsg.request.crc8 <<= 4U; + responseMsg.request.crc8 += Char2Nibble(c); return DecodeStatus::NeedMoreData; } else if (IsNewLine(c)) { - rspState = ResponseStates::RequestCode; - return DecodeStatus::MessageCompleted; + // check CRC at this spot + if (responseMsg.request.crc8 != responseMsg.ComputeCRC8()) { + // CRC mismatch + responseMsg.paramCode = ResponseMsgParamCodes::unknown; + rspState = ResponseStates::Error; + return DecodeStatus::Error; + } else { + rspState = ResponseStates::RequestCode; + return DecodeStatus::MessageCompleted; + } } else { responseMsg.paramCode = ResponseMsgParamCodes::unknown; rspState = ResponseStates::Error; @@ -173,75 +259,103 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { } uint8_t Protocol::EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCodes ar, uint8_t *txbuff) { - txbuff[0] = (uint8_t)msg.code; - txbuff[1] = msg.value + '0'; - txbuff[2] = ' '; - txbuff[3] = (uint8_t)ar; - txbuff[4] = '\n'; - return 5; + const ResponseMsg rsp(msg, ar, 0); // this needs some cleanup @@TODO - check assembly how bad is it + uint8_t i = BeginEncodeRequest(rsp.request, txbuff); + txbuff[i] = (uint8_t)ar; + ++i; + i += AppendCRC(rsp.CRC(), txbuff + i); + txbuff[i] = '\n'; + ++i; + return i; } uint8_t Protocol::EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff) { - txbuff[0] = (uint8_t)msg.code; - txbuff[1] = msg.value + '0'; - txbuff[2] = ' '; - txbuff[3] = (uint8_t)ResponseMsgParamCodes::Accepted; - txbuff[4] = findaValue + '0'; - txbuff[5] = '\n'; - return 6; + return EncodeResponseRead(msg, true, findaValue, txbuff); } -uint8_t Protocol::EncodeResponseVersion(const RequestMsg &msg, uint8_t value, uint8_t *txbuff) { - txbuff[0] = (uint8_t)msg.code; - txbuff[1] = msg.value + '0'; - txbuff[2] = ' '; - txbuff[3] = (uint8_t)ResponseMsgParamCodes::Accepted; - uint8_t *dst = txbuff + 4; - if (value < 10) { - *dst++ = value + '0'; - } else if (value < 100) { - *dst++ = value / 10 + '0'; - *dst++ = value % 10 + '0'; - } else { - *dst++ = value / 100 + '0'; - *dst++ = (value / 10) % 10 + '0'; - *dst++ = value % 10 + '0'; - } - *dst = '\n'; - return dst - txbuff + 1; +uint8_t Protocol::EncodeResponseVersion(const RequestMsg &msg, uint16_t value, uint8_t *txbuff) { + return EncodeResponseRead(msg, true, value, txbuff); } -uint8_t Protocol::EncodeResponseQueryOperation(const RequestMsg &msg, ResponseMsgParamCodes code, uint16_t value, uint8_t *txbuff) { - txbuff[0] = (uint8_t)msg.code; - txbuff[1] = msg.value + '0'; - txbuff[2] = ' '; - txbuff[3] = (uint8_t)code; - uint8_t *dst = txbuff + 4; - if (code != ResponseMsgParamCodes::Finished) { - if (value < 10) { - *dst++ = value + '0'; - } else if (value < 100) { - *dst++ = value / 10 + '0'; - *dst++ = value % 10 + '0'; - } else if (value < 1000) { - *dst++ = value / 100 + '0'; - *dst++ = (value / 10) % 10 + '0'; - *dst++ = value % 10 + '0'; - } else if (value < 10000) { - *dst++ = value / 1000 + '0'; - *dst++ = (value / 100) % 10 + '0'; - *dst++ = (value / 10) % 10 + '0'; - *dst++ = value % 10 + '0'; - } else { - *dst++ = value / 10000 + '0'; - *dst++ = (value / 1000) % 10 + '0'; - *dst++ = (value / 100) % 10 + '0'; - *dst++ = (value / 10) % 10 + '0'; - *dst++ = value % 10 + '0'; - } +uint8_t Protocol::EncodeResponseQueryOperation(const RequestMsg &msg, ResponseCommandStatus rcs, uint8_t *txbuff) { + const ResponseMsg rsp(msg, rcs.code, rcs.value); + uint8_t i = BeginEncodeRequest(msg, txbuff); + txbuff[i] = (uint8_t)rsp.paramCode; + ++i; + i += UInt16ToHex(rsp.paramValue, txbuff + i); + i += AppendCRC(rsp.CRC(), txbuff + i); + txbuff[i] = '\n'; + return i + 1; +} + +uint8_t Protocol::EncodeResponseRead(const RequestMsg &msg, bool accepted, uint16_t value2, uint8_t *txbuff) { + const ResponseMsg rsp(msg, + accepted ? ResponseMsgParamCodes::Accepted : ResponseMsgParamCodes::Rejected, + accepted ? value2 : 0 // be careful about this value for CRC computation - rejected status doesn't have any meaningful value which could be reconstructed from the textual form of the message + ); + uint8_t i = BeginEncodeRequest(msg, txbuff); + txbuff[i] = (uint8_t)rsp.paramCode; + ++i; + if (accepted) { + // dump the value + i += UInt16ToHex(value2, txbuff + i); } - *dst = '\n'; - return dst - txbuff + 1; + i += AppendCRC(rsp.CRC(), txbuff + i); + txbuff[i] = '\n'; + return i + 1; +} + +uint8_t Protocol::UInt8ToHex(uint8_t value, uint8_t *dst) { + if (value == 0) { + *dst = '0'; + return 1; + } + + uint8_t v = value >> 4U; + uint8_t charsOut = 1; + if (v != 0) { // skip the first '0' if any + *dst = Nibble2Char(v); + ++dst; + charsOut = 2; + } + v = value & 0xfU; + *dst = Nibble2Char(v); + return charsOut; +} + +uint8_t Protocol::UInt16ToHex(uint16_t value, uint8_t *dst) { + constexpr uint16_t topNibbleMask = 0xf000; + if (value == 0) { + *dst = '0'; + return 1; + } + // skip initial zeros + uint8_t charsOut = 4; + while ((value & topNibbleMask) == 0) { + value <<= 4U; + --charsOut; + } + for (uint8_t i = 0; i < charsOut; ++i) { + uint8_t n = (value & topNibbleMask) >> (8U + 4U); + value <<= 4U; + *dst = Nibble2Char(n); + ++dst; + } + return charsOut; +} + +uint8_t Protocol::BeginEncodeRequest(const RequestMsg &msg, uint8_t *dst) { + dst[0] = (uint8_t)msg.code; + + uint8_t i = 1 + UInt8ToHex(msg.value, dst + 1); + + dst[i] = ' '; + return i + 1; +} + +uint8_t Protocol::AppendCRC(uint8_t crc, uint8_t *dst) { + dst[0] = '*'; // reprap-style separator of CRC + return 1 + UInt8ToHex(crc, dst + 1); } } // namespace protocol diff --git a/Firmware/mmu2_protocol.h b/Firmware/mmu2_protocol.h index 21170b131..870999df9 100644 --- a/Firmware/mmu2_protocol.h +++ b/Firmware/mmu2_protocol.h @@ -1,13 +1,13 @@ /// @file protocol.h #pragma once #include +#include "mmu2_crc.h" namespace modules { /// @brief The MMU communication protocol implementation and related stuff. /// /// See description of the new protocol in the MMU 2021 doc -/// @@TODO possibly add some checksum to verify the correctness of messages namespace protocol { /// Definition of request message codes @@ -23,11 +23,12 @@ enum class RequestMsgCodes : uint8_t { Version = 'S', Button = 'B', Eject = 'E', - Wait = 'W', + Write = 'W', Cut = 'K', FilamentType = 'F', FilamentSensor = 'f', - Home = 'H' + Home = 'H', + Read = 'R' }; /// Definition of response message parameter codes @@ -37,20 +38,50 @@ enum class ResponseMsgParamCodes : uint8_t { Error = 'E', Finished = 'F', Accepted = 'A', - Rejected = 'R', + Rejected = 'R', Button = 'B' // the MMU registered a button press and is sending it to the printer for processing }; /// A request message - requests are being sent by the printer into the MMU. struct RequestMsg { RequestMsgCodes code; ///< code of the request message - uint8_t value; ///< value of the request message + uint8_t value; ///< value of the request message or address of variable to read/write + uint16_t value2; ///< in case or write messages - value to be written into the register + + /// CRC8 check - please note we abuse this byte for CRC of ResponseMsgs as well. + /// The crc8 byte itself is not added into the CRC computation (obviously ;) ) + /// Beware - adding any members of this data structure may need changing the way CRC is being computed! + uint8_t crc8; + + constexpr uint8_t ComputeCRC8() const { + uint8_t crc = 0; + crc = modules::crc::CRC8::CCITT_updateCX(0, (uint8_t)code); + crc = modules::crc::CRC8::CCITT_updateCX(crc, value); + crc = modules::crc::CRC8::CCITT_updateCX(crc, value2); + return crc; + } /// @param code of the request message /// @param value of the request message - inline RequestMsg(RequestMsgCodes code, uint8_t value) + inline constexpr RequestMsg(RequestMsgCodes code, uint8_t value) : code(code) - , value(value) {} + , value(value) + , value2(0) + , crc8(ComputeCRC8()) { + } + + /// Intended for write requests + /// @param code of the request message ('W') + /// @param address of the register + /// @param value to write into the register + inline constexpr RequestMsg(RequestMsgCodes code, uint8_t address, uint16_t value) + : code(code) + , value(address) + , value2(value) + , crc8(ComputeCRC8()) { + } + + constexpr uint8_t CRC() const { return crc8; } }; /// A response message - responses are being sent from the MMU into the printer as a response to a request message. @@ -59,13 +90,33 @@ struct ResponseMsg { ResponseMsgParamCodes paramCode; ///< code of the parameter uint16_t paramValue; ///< value of the parameter + constexpr uint8_t ComputeCRC8() const { + uint8_t crc = request.ComputeCRC8(); + crc = modules::crc::CRC8::CCITT_updateCX(crc, (uint8_t)paramCode); + crc = modules::crc::CRC8::CCITT_updateW(crc, paramValue); + return crc; + } + /// @param request the source request message this response is a reply to /// @param paramCode code of the parameter /// @param paramValue value of the parameter - inline ResponseMsg(RequestMsg request, ResponseMsgParamCodes paramCode, uint16_t paramValue) + inline constexpr ResponseMsg(RequestMsg request, ResponseMsgParamCodes paramCode, uint16_t paramValue) : request(request) , paramCode(paramCode) - , paramValue(paramValue) {} + , paramValue(paramValue) { + this->request.crc8 = ComputeCRC8(); + } + + constexpr uint8_t CRC() const { return request.crc8; } +}; + +/// Combined commandStatus and its value into one data structure (optimization purposes) +struct ResponseCommandStatus { + ResponseMsgParamCodes code; + uint16_t value; + inline constexpr ResponseCommandStatus(ResponseMsgParamCodes code, uint16_t value) + : code(code) + , value(value) {} }; /// Message decoding return values @@ -101,9 +152,18 @@ public: /// @returns number of bytes written into txbuff static uint8_t EncodeRequest(const RequestMsg &msg, uint8_t *txbuff); + /// Encodes Write request message msg into txbuff memory + /// It is expected the txbuff is large enough to fit the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeWriteRequest(uint8_t address, uint16_t value, uint8_t *txbuff); + /// @returns the maximum byte length necessary to encode a request message /// Beneficial in case of pre-allocating a buffer for enconding a RequestMsg. - static constexpr uint8_t MaxRequestSize() { return 3; } + static constexpr uint8_t MaxRequestSize() { return 13; } + + /// @returns the maximum byte length necessary to encode a response message + /// Beneficial in case of pre-allocating a buffer for enconding a ResponseMsg. + static constexpr uint8_t MaxResponseSize() { return 14; } /// Encode generic response Command Accepted or Rejected /// @param msg source request message for this response @@ -124,7 +184,7 @@ public: /// @param value version number (0-255) /// @param txbuff where to format the message /// @returns number of bytes written into txbuff - static uint8_t EncodeResponseVersion(const RequestMsg &msg, uint8_t value, uint8_t *txbuff); + static uint8_t EncodeResponseVersion(const RequestMsg &msg, uint16_t value, uint8_t *txbuff); /// Encode response to Query operation status /// @param msg source request message for this response @@ -132,7 +192,15 @@ public: /// @param value related to status of operation(e.g. error code or progress) /// @param txbuff where to format the message /// @returns number of bytes written into txbuff - static uint8_t EncodeResponseQueryOperation(const RequestMsg &msg, ResponseMsgParamCodes code, uint16_t value, uint8_t *txbuff); + static uint8_t EncodeResponseQueryOperation(const RequestMsg &msg, ResponseCommandStatus rcs, uint8_t *txbuff); + + /// Encode response to Read query + /// @param msg source request message for this response + /// @param accepted true if the read query was accepted + /// @param value2 variable value + /// @param txbuff where to format the message + /// @returns number of bytes written into txbuff + static uint8_t EncodeResponseRead(const RequestMsg &msg, bool accepted, uint16_t value2, uint8_t *txbuff); /// @returns the most recently lexed request message inline const RequestMsg GetRequestMsg() const { return requestMsg; } @@ -150,10 +218,15 @@ public: rspState = ResponseStates::RequestCode; } +#ifndef UNITTEST private: +#endif enum class RequestStates : uint8_t { Code, ///< starting state - expects message code Value, ///< expecting code value + Address, ///< expecting address for Write command + WriteValue, ///< value to be written (Write command) + CRC, ///< CRC Error ///< automaton in error state }; @@ -165,18 +238,84 @@ private: RequestValue, ///< expecting code value ParamCode, ///< expecting param code ParamValue, ///< expecting param value + CRC, ///< expecting CRC value Error ///< automaton in error state }; ResponseStates rspState; ResponseMsg responseMsg; - static bool IsNewLine(uint8_t c) { + static constexpr bool IsNewLine(uint8_t c) { return c == '\n' || c == '\r'; } - static bool IsDigit(uint8_t c) { + static constexpr bool IsDigit(uint8_t c) { return c >= '0' && c <= '9'; } + static constexpr bool IsCRCSeparator(uint8_t c) { + return c == '*'; + } + static constexpr bool IsHexDigit(uint8_t c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'); + } + static constexpr uint8_t Char2Nibble(uint8_t c) { + switch (c) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return c - '0'; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + return c - 'a' + 10; + default: + return 0; + } + } + + static constexpr uint8_t Nibble2Char(uint8_t n) { + switch (n) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + return n + '0'; + case 0xa: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + return n - 10 + 'a'; + default: + return 0; + } + } + + /// @returns number of characters written + static uint8_t UInt8ToHex(uint8_t value, uint8_t *dst); + + /// @returns number of characters written + static uint8_t UInt16ToHex(uint16_t value, uint8_t *dst); + + static uint8_t BeginEncodeRequest(const RequestMsg &msg, uint8_t *dst); + + static uint8_t AppendCRC(uint8_t crc, uint8_t *dst); }; } // namespace protocol diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 401f28f12..6fa7ff9b3 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -7,8 +7,8 @@ namespace MMU2 { static constexpr uint8_t supportedMmuFWVersionMajor = 2; -static constexpr uint8_t supportedMmuFWVersionMinor = 0; -static constexpr uint8_t supportedMmuFWVersionBuild = 19; +static constexpr uint8_t supportedMmuFWVersionMinor = 1; +static constexpr uint8_t supportedMmuFWVersionBuild = 1; StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, State nextState){ if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) From 47e57646ea6f69cdaccf528a3fe17a51573c5ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 13 Aug 2022 07:38:50 +0000 Subject: [PATCH 195/319] Optimize load Don't start moving the E-motor immediately Instead of starting the E-motor move when the load to extruder starts, we can start when we are loading to the fsensor. At that stage the MMU has changed from a fast load to a slow load. --- Firmware/mmu2.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index ba88cc7de..7e697866f 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -799,7 +799,6 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { case ProgressCode::UnloadingToFinda: unloadFilamentStarted = false; break; - case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: // FSENSOR error during load. Make sure E-motor stops moving. loadFilamentStarted = false; @@ -863,7 +862,7 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_BOWDEN_LENGTH; // Roughly same distance as MMU plans plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); break; - case ProgressCode::FeedingToBondtech: + case ProgressCode::FeedingToFSensor: // prepare for the movement of the E-motor st_synchronize(); loadFilamentStarted = true; @@ -890,7 +889,6 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ } } break; - case ProgressCode::FeedingToBondtech: case ProgressCode::FeedingToFSensor: if (loadFilamentStarted) { switch (WhereIsFilament()) { From 703c463a49ca60df53a00cf685c6b5a75cf5cef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 13 Aug 2022 15:49:51 +0000 Subject: [PATCH 196/319] Optimize unload Toolchange during print is now much quieter. Excessive E-motor movement during print is now gone --- Firmware/mmu2.cpp | 66 +++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 39 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 7e697866f..efb9d13f2 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -14,6 +14,7 @@ #include "strlen_cx.h" #include "temperature.h" #include "ultralcd.h" +#include "cardreader.h" // for IS_SD_PRINTING // Settings for filament load / unload from the LCD menu. // This is for Prusa MK3-style extruders. Customize for your hardware. @@ -38,20 +39,9 @@ static constexpr float MMU2_TOOL_CHANGE_LOAD_LENGTH = 30.0F; static constexpr float MMU2_LOAD_TO_NOZZLE_FEED_RATE = 20.0F; // mm/s static constexpr float MMU2_UNLOAD_TO_FINDA_FEED_RATE = 120.0F; // mm/s -// The first the MMU does is initialise its axis. Meanwhile the E-motor will unload 10mm of filament in approx. 1 second. -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_START_LENGTH = 10.0f; // mm -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_START_FEED_RATE = 10.0f; // mm/s - -// This is -config::defaultBowdenLength - config::feedToFinda - config::filamentMinLoadedToMMU -// To prevent an error 'too long extrusion prevented' this distance is split into two constants: -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_BOWDEN_LENGTH = 427.0f; // mm -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_EXTRA_LENGTH = 42.85f + 20.0f; // mm - -// The E-motor must move endlessly until the MMU raises an error, or the FINDA untriggers -// This must be non-blocking for the MMU communications, so we need to unload small segments of -// filament at a time. A fine balance is 6mm of filament at 60mm/s. Though this can be fine tuned. -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_LENGTH = 6.0f; // mm -static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_FEED_RATE = 60.0f; // mm/s +// The first the MMU does is initialise its axis. Meanwhile the E-motor will unload 20mm of filament in approx. 1 second. +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH = 20.0f; // mm +static constexpr float MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE = 20.0f; // mm/s static constexpr uint8_t MMU2_NO_TOOL = 99; static constexpr uint32_t MMU_BAUD = 115200; @@ -262,6 +252,13 @@ bool MMU2::tool_change(uint8_t index) { return false; if (index != extruder) { + if (!IS_SD_PRINTING && !usb_timer.running()) + { + // If Tcodes are used manually through the serial + // we need to unload manually as well + unload(); + } + ReportingRAII rep(CommandInProgress::ToolChange); FSensorBlockRunout blockRunout; @@ -840,27 +837,22 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ // Act accordingly - one-time handling switch (pc) { case ProgressCode::UnloadingToFinda: - if ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::UnloadFilament) + if ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::UnloadFilament + || ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::ToolChange)) { - // If MK3S sent U0 command, then the code below is not relevant. + // If MK3S sent U0 command, ramming sequence takes care of releasing the filament. + // If Toolchange is done while printing, PrusaSlicer takes care of releasing the filament + // If printing is not in progress, ToolChange will issue a U0 command. break; } - - // This is intended to handle Retry option on MMU error screen - // MMU sends P3 progress code during Query, and if filament is stuck - // in the gears, the MK3S needs to move e-axis as well. - st_synchronize(); - unloadFilamentStarted = true; - // Unload slowly while MMU is initialising its axis - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_START_LENGTH; - plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_START_FEED_RATE); - st_synchronize(); - // Now do a fast unload in sync with the MMU - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_EXTRA_LENGTH; - plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); - st_synchronize(); - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_BOWDEN_LENGTH; // Roughly same distance as MMU plans - plan_buffer_line_curposXYZE(MMU2_UNLOAD_TO_FINDA_FEED_RATE); + else + { + // We're likely recovering from an MMU error + st_synchronize(); + unloadFilamentStarted = true; + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); + } break; case ProgressCode::FeedingToFSensor: // prepare for the movement of the E-motor @@ -876,14 +868,10 @@ void MMU2::OnMMUProgressMsg(ProgressCode pc){ switch (pc) { case ProgressCode::UnloadingToFinda: if (unloadFilamentStarted && !blocks_queued()) { // Only plan a move if there is no move ongoing - - if (mmu2.FindaDetectsFilament() == 1) + if (fsensor.getFilamentPresent() == 1) { - // We cannot rely on the FSENSOR reading to stop the E-motor - // because the filament can get stuck in the bondtech gears. - // Use FINDA instead. - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_LENGTH; - plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FINE_STEP_FEED_RATE); + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); } else { unloadFilamentStarted = false; } From 87a4f58e66ae87c9ca33e73edb516323e9be4470 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 19 Aug 2022 10:08:25 +0200 Subject: [PATCH 197/319] PFW-1363 Change MMU Error parking position --- Firmware/mmu2.cpp | 6 +++--- Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 5 +++++ Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 5 +++++ Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 5 +++++ Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 5 +++++ Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 5 +++++ Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 5 +++++ 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index efb9d13f2..34255892b 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -538,15 +538,15 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { } // lift Z - current_position[Z_AXIS] += Z_PAUSE_LIFT; + current_position[Z_AXIS] += MMU_ERR_Z_PAUSE_LIFT; if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); st_synchronize(); // move XY aside - current_position[X_AXIS] = X_PAUSE_POS; - current_position[Y_AXIS] = Y_PAUSE_POS; + current_position[X_AXIS] = MMU_ERR_X_PAUSE_POS; + current_position[Y_AXIS] = MMU_ERR_Y_PAUSE_POS; plan_buffer_line_curposXYZE(NOZZLE_PARK_XY_FEEDRATE); st_synchronize(); } diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index ccd88c0e8..720757ec8 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -508,6 +508,11 @@ #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + // Default Arc Interpolation Settings (Now configurable via M214) #define DEFAULT_N_ARC_CORRECTION 25 // Number of interpolated segments between corrections. /* A value of 1 or less for N_ARC_CORRECTION will trigger the use of Sin and Cos for every arc, which will improve accuracy at the diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 0de301984..ba72bf228 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -509,6 +509,11 @@ #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + //#define HEATBED_ANALYSIS //for meash bed leveling and heatbed analysis D-codes D80 and D81 //#define MICROMETER_LOGGING //related to D-codes D80 and D81, currently works on MK2.5 only (MK3 board pin definitions missing) diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index a4291ca8d..9c64bdbd9 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -515,6 +515,11 @@ //#define MMU_ALWAYS_CUT #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + // Default Arc Interpolation Settings (Now configurable via M214) #define DEFAULT_N_ARC_CORRECTION 25 // Number of interpolated segments between corrections. /* A value of 1 or less for N_ARC_CORRECTION will trigger the use of Sin and Cos for every arc, which will improve accuracy at the diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index 4248fce6f..d7348c73b 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -516,6 +516,11 @@ //#define MMU_ALWAYS_CUT #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + // Default Arc Interpolation Settings (Now configurable via M214) #define DEFAULT_N_ARC_CORRECTION 25 // Number of interpolated segments between corrections. /* A value of 1 or less for N_ARC_CORRECTION will trigger the use of Sin and Cos for every arc, which will improve accuracy at the diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 44ec28d82..ea498e101 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -681,6 +681,11 @@ #define MMU_HAS_CUTTER #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + // Default Arc Interpolation Settings (Now configurable via M214) #define DEFAULT_N_ARC_CORRECTION 25 // Number of interpolated segments between corrections. /* A value of 1 or less for N_ARC_CORRECTION will trigger the use of Sin and Cos for every arc, which will improve accuracy at the diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index 1ac0bebc1..942151040 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -693,6 +693,11 @@ //#define MMU_ALWAYS_CUT #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +// MMU Error pause position +#define MMU_ERR_X_PAUSE_POS 125 +#define MMU_ERR_Y_PAUSE_POS 0 +#define MMU_ERR_Z_PAUSE_LIFT 20 + // Default Arc Interpolation Settings (Now configurable via M214) #define DEFAULT_N_ARC_CORRECTION 25 // Number of interpolated segments between corrections. /* A value of 1 or less for N_ARC_CORRECTION will trigger the use of Sin and Cos for every arc, which will improve accuracy at the From 0d64cfa2e5589f7e27ac309efad4dbc3077ca9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 19 Aug 2022 22:15:17 +0000 Subject: [PATCH 198/319] extruder variable should be one byte Saves 1 byte of SRAM and 132 bytes of flash --- Firmware/mmu2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index a1cd8ee7a..33800b946 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -241,7 +241,7 @@ private: bool WaitForMMUReady(); ProtocolLogic logic; ///< implementation of the protocol logic layer - int extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet + uint8_t extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet uint8_t previous_extruder; ///< last active slot in the MMU, useful for M600 uint8_t tool_change_extruder; ///< only used for UI purposes From bac3168ca4a5278f4d49e20881715ba8afd205d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 19 Aug 2022 23:01:02 +0000 Subject: [PATCH 199/319] Optimise power_on and power_off eeprom_update_byte only updates the EEPROM if the value is different Saves 40 bytes of flash memory --- Firmware/mmu2_power.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Firmware/mmu2_power.cpp b/Firmware/mmu2_power.cpp index 405f0d7c3..a0359f016 100644 --- a/Firmware/mmu2_power.cpp +++ b/Firmware/mmu2_power.cpp @@ -12,18 +12,12 @@ namespace MMU2 { // so we just block the MMU via EEPROM var instead. void power_on() { - if (!eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) - { - eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, true); - } + eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, true); } void power_off() { - if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) - { - eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, false); - } + eeprom_update_byte((uint8_t *)EEPROM_MMU_ENABLED, false); } void reset() { From 08891097601f4099f71626d0ec48c0dc422510a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 13 Aug 2022 07:26:48 +0000 Subject: [PATCH 200/319] Fix corrupted chars in "Engaging Idler" message --- Firmware/mmu2_reporting.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 70e2f2b66..1a63a9291 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -15,7 +15,7 @@ const char * const ProgressCodeToText(uint16_t pc); // we may join progress conv void BeginReport(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::MMUProgress; - lcd_setstatuspgm( ProgressCodeToText(ec) ); + lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); } void EndReport(CommandInProgress cip, uint16_t ec) { From 022aa53b2d592f523f7a6f0e3b71ca9de3507ece Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 24 Aug 2022 11:31:16 +0200 Subject: [PATCH 201/319] Remove active_extruder completely we only use 1 extruder + saves ~800B --- Firmware/Marlin.h | 5 +- Firmware/Marlin_main.cpp | 17 +-- Firmware/mmu2.cpp | 227 +++++++++++++++++---------------------- Firmware/mmu2.h | 11 +- Firmware/mmu2_log.cpp | 17 +++ Firmware/mmu2_log.h | 12 +++ Firmware/planner.cpp | 2 - Firmware/planner.h | 1 - 8 files changed, 140 insertions(+), 152 deletions(-) create mode 100644 Firmware/mmu2_log.cpp diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 348b4d7f7..810203ea8 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -316,8 +316,9 @@ extern bool fan_state[2]; extern int fan_edge_counter[2]; extern int fan_speed[2]; -// Handling multiple extruders pins -extern uint8_t active_extruder; +// Active extruder becomes a #define to make the whole firmware compilable. +// We may even remove the references to it wherever possible in the future +#define active_extruder 0 //Long pause extern unsigned long pause_time; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 923595f84..91e97c474 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -244,7 +244,6 @@ float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = { }; #endif -uint8_t active_extruder = 0; int fanSpeed=0; uint8_t newFanSpeed = 0; @@ -362,9 +361,7 @@ uint8_t saved_printing_type = PRINTING_TYPE_SD; static float saved_pos[4] = { X_COORD_INVALID, 0, 0, 0 }; static uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float) static int saved_feedmultiply2 = 0; -static uint8_t saved_active_extruder = 0; -float saved_extruder_temperature = 0.0; //!< Active extruder temperature -float saved_bed_temperature = 0.0; //!< Bed temperature +static float saved_extruder_temperature = 0.0; //!< Active extruder temperature static bool saved_extruder_relative_mode = false; int saved_fan_speed = 0; //!< Print fan speed //! @} @@ -11122,7 +11119,6 @@ void stop_and_save_print_to_ram(float z_move, float e_move) if (pos_invalid) saved_pos[X_AXIS] = X_COORD_INVALID; saved_feedmultiply2 = feedmultiply; //save feedmultiply - saved_active_extruder = active_extruder; //save active_extruder saved_extruder_temperature = degTargetHotend(active_extruder); saved_bed_temperature = degTargetBed(); saved_extruder_relative_mode = axis_relative_modes & E_AXIS_MASK; @@ -11171,11 +11167,11 @@ void stop_and_save_print_to_ram(float z_move, float e_move) } void restore_extruder_temperature_from_ram() { - if (degTargetHotend(saved_active_extruder) != saved_extruder_temperature) + if (degTargetHotend(active_extruder) != saved_extruder_temperature) { - setTargetHotendSafe(saved_extruder_temperature, saved_active_extruder); + setTargetHotendSafe(saved_extruder_temperature, active_extruder); heating_status = HeatingStatus::EXTRUDER_HEATING; - wait_for_heater(_millis(), saved_active_extruder); + wait_for_heater(_millis(), active_extruder); heating_status = HeatingStatus::EXTRUDER_HEATING_COMPLETE; } } @@ -11202,11 +11198,8 @@ void restore_print_from_ram_and_continue(float e_move) // restore bed temperature (bed can be disabled during a thermal warning) if (degBed() != saved_bed_temperature) setTargetBed(saved_bed_temperature); - - // restore active_extruder - active_extruder = saved_active_extruder; fanSpeed = saved_fan_speed; - restore_extruder_temperture_from_ram(); + restore_extruder_temperature_from_ram(); axis_relative_modes ^= (-saved_extruder_relative_mode ^ axis_relative_modes) & E_AXIS_MASK; float e = saved_pos[E_AXIS] - e_move; plan_set_e_position(e); diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 34255892b..393982011 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -16,6 +16,10 @@ #include "ultralcd.h" #include "cardreader.h" // for IS_SD_PRINTING +// As of FW 3.12 we only support building the FW with only one extruder, all the multi-extruder infrastructure will be removed. +// Saves at least 800B of code size +static_assert(EXTRUDERS==1); + // Settings for filament load / unload from the LCD menu. // This is for Prusa MK3-style extruders. Customize for your hardware. #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 @@ -281,7 +285,6 @@ bool MMU2::tool_change(uint8_t index) { extruder = index; //filament change is finished previous_extruder = extruder; - SetActiveExtruder(0); // @@TODO really report onto the serial? May be for the Octoprint? Not important now // SERIAL_ECHO_START(); @@ -315,7 +318,6 @@ bool MMU2::tool_change(char code, uint8_t slot) { manage_response(false, false); extruder = slot; previous_extruder = extruder; - SetActiveExtruder(0); set_extrude_min_temp(EXTRUDE_MINTEMP); } break; @@ -467,7 +469,6 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { extruder = index; previous_extruder = extruder; - SetActiveExtruder(0); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); } @@ -515,7 +516,7 @@ bool MMU2::eject_filament(uint8_t index, bool recover) { } void MMU2::Button(uint8_t index){ - SERIAL_ECHOLNPGM("Button"); + LogEchoEvent_P(PSTR("Button")); logic.Button(index); } @@ -525,7 +526,7 @@ void MMU2::Home(uint8_t mode){ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { if (mmu_print_saved == SavedState::None) { // First occurrence. Save current position, park print head, disable nozzle heater. - LogEchoEvent("Saving and parking"); + LogEchoEvent_P(PSTR("Saving and parking")); st_synchronize(); resume_hotend_temp = degTargetHotend(active_extruder); @@ -553,7 +554,7 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { if (turn_off_nozzle){ mmu_print_saved |= SavedState::CooldownPending; - LogEchoEvent("Heater cooldown pending"); + LogEchoEvent_P(PSTR("Heater cooldown pending")); // This just sets the flag that we should timeout and shut off the nozzle in 30 minutes... //setAllTargetHotends(0); } @@ -568,10 +569,10 @@ void MMU2::ResumeHotendTemp() { { // Clear the "pending" flag if we haven't cooled yet. mmu_print_saved &= ~(SavedState::CooldownPending); - LogEchoEvent("Cooldown flag cleared"); + LogEchoEvent_P(PSTR("Cooldown flag cleared")); } if ((mmu_print_saved & SavedState::Cooldown) && resume_hotend_temp) { - LogEchoEvent("Resuming Temp"); + LogEchoEvent_P(PSTR("Resuming Temp")); MMU2_ECHO_MSG("Restoring hotend temperature "); SERIAL_ECHOLN(resume_hotend_temp); mmu_print_saved &= ~(SavedState::Cooldown); @@ -583,15 +584,14 @@ void MMU2::ResumeHotendTemp() { manage_inactivity(true); }); lcd_update_enable(true); // temporary hack to stop this locking the printer... - LogEchoEvent("Hotend temperature reached"); + LogEchoEvent_P(PSTR("Hotend temperature reached")); lcd_clear(); } } -void MMU2::ResumeUnpark() -{ +void MMU2::ResumeUnpark(){ if (mmu_print_saved & SavedState::ParkExtruder) { - LogEchoEvent("Resuming XYZ"); + LogEchoEvent_P(PSTR("Resuming XYZ")); current_position[X_AXIS] = resume_position.xyz[X_AXIS]; current_position[Y_AXIS] = resume_position.xyz[Y_AXIS]; @@ -609,11 +609,11 @@ void MMU2::CheckUserInput(){ auto btn = ButtonPressed((uint16_t)lastErrorCode); // Was a button pressed on the MMU itself instead of the LCD? - if (btn == Buttons::NoButton && lastButton != Buttons::NoButton) - { + if (btn == Buttons::NoButton && lastButton != Buttons::NoButton){ btn = lastButton; lastButton = Buttons::NoButton; // Clear it. } + switch (btn) { case Left: case Middle: @@ -662,25 +662,19 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { manage_inactivity(true); // calls LogicStep() and remembers its return status lcd_update(0); - if (mmu_print_saved & SavedState::CooldownPending) - { - if (!nozzleTimeout.running()) - { + if (mmu_print_saved & SavedState::CooldownPending){ + if (!nozzleTimeout.running()){ nozzleTimeout.start(); - LogEchoEvent("Cooling Timeout started"); - } - else if (nozzleTimeout.expired(DEFAULT_SAFETYTIMER_TIME_MINS*60*1000ul)) // mins->msec. TODO: do we use the global or have our own independent timeout - { + LogEchoEvent_P(PSTR("Cooling Timeout started")); + } else if (nozzleTimeout.expired(DEFAULT_SAFETYTIMER_TIME_MINS*60*1000ul)){ // mins->msec. TODO: do we use the global or have our own independent timeout mmu_print_saved &= ~(SavedState::CooldownPending); mmu_print_saved |= SavedState::Cooldown; setAllTargetHotends(0); - LogEchoEvent("Heater cooldown"); + LogEchoEvent_P(PSTR("Heater cooldown")); } - } - else if (nozzleTimeout.running()) - { + } else if (nozzleTimeout.running()) { nozzleTimeout.stop(); - LogEchoEvent("Cooling timer stopped"); + LogEchoEvent_P(PSTR("Cooling timer stopped")); } switch (logicStepLastStatus) { @@ -696,11 +690,10 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { return; case CommandError: // Don't proceed to the park/save if we are doing an autoretry. - if (inAutoRetry) - { + if (inAutoRetry){ continue; } - /* FALLTHRU */ + [[fallthrough]]; case CommunicationTimeout: case ProtocolError: SaveAndPark(move_axes, turn_off_nozzle); // and wait for the user to resolve the problem @@ -743,7 +736,7 @@ StepStatus MMU2::LogicStep() { break; case ButtonPushed: lastButton = logic.Button(); - LogEchoEvent("MMU Button pushed"); + LogEchoEvent_P(PSTR("MMU Button pushed")); CheckUserInput(); // Process the button immediately break; default: @@ -767,16 +760,10 @@ void MMU2::execute_extruder_sequence(const E_Step *sequence, uint8_t steps) { current_position[E_AXIS] += pgm_read_float(&(step->extrude)); plan_buffer_line_curposXYZE(pgm_read_float(&(step->feedRate))); st_synchronize(); -// SERIAL_ECHOPGM("EES:"); -// SERIAL_ECHOLN(position[E_AXIS]); step++; } } -void MMU2::SetActiveExtruder(uint8_t ex){ - active_extruder = ex; -} - void MMU2::ReportError(ErrorCode ec, uint8_t res) { // Due to a potential lossy error reporting layers linked to this hook // we'd better report everything to make sure especially the error states @@ -791,8 +778,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { // Right now the filtering of MMU_NOT_RESPONDING is done in ReportErrorHook() as it is not a problem if mmu2.cpp // Depending on the Progress code, we may want to do some action when an error occurs - switch (logic.Progress()) - { + switch (logic.Progress()){ case ProgressCode::UnloadingToFinda: unloadFilamentStarted = false; break; @@ -808,8 +794,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; - SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM( _T(PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec))) ); + LogErrorEvent_P( _T(PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec))) ); } static_assert(mmu2Magic[0] == 'M' @@ -824,103 +809,89 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { void MMU2::ReportProgress(ProgressCode pc) { ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); - - SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM( _T(ProgressCodeToText((uint16_t)pc)) ); + LogEchoEvent_P( _T(ProgressCodeToText((uint16_t)pc)) ); } void MMU2::OnMMUProgressMsg(ProgressCode pc){ if (pc != lastProgressCode) { - ReportProgress(pc); - lastProgressCode = pc; - - // Act accordingly - one-time handling - switch (pc) { - case ProgressCode::UnloadingToFinda: - if ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::UnloadFilament - || ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::ToolChange)) - { - // If MK3S sent U0 command, ramming sequence takes care of releasing the filament. - // If Toolchange is done while printing, PrusaSlicer takes care of releasing the filament - // If printing is not in progress, ToolChange will issue a U0 command. - break; - } - else - { - // We're likely recovering from an MMU error - st_synchronize(); - unloadFilamentStarted = true; - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; - plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); - } - break; - case ProgressCode::FeedingToFSensor: - // prepare for the movement of the E-motor - st_synchronize(); - loadFilamentStarted = true; - break; - default: - // do nothing yet - break; - } + OnMMUProgressMsgChanged(pc); } else { - // Act accordingly - every status change (even the same state) - switch (pc) { - case ProgressCode::UnloadingToFinda: - if (unloadFilamentStarted && !blocks_queued()) { // Only plan a move if there is no move ongoing - if (fsensor.getFilamentPresent() == 1) - { - current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; - plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); - } else { - unloadFilamentStarted = false; - } - } - break; - case ProgressCode::FeedingToFSensor: - if (loadFilamentStarted) { - switch (WhereIsFilament()) { - case FilamentState::AT_FSENSOR: - // fsensor triggered, finish FeedingToBondtech state - loadFilamentStarted = false; - // After the MMU knows the FSENSOR is triggered it will: - // 1. Push the filament by additional 30mm (see fsensorToNozzle) - // 2. Disengage the idler and push another 5mm. -// SERIAL_ECHOPGM("ATF1="); -// SERIAL_ECHO(current_position[E_AXIS]); - current_position[E_AXIS] += 30.0f + 2.0f; - plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); -// SERIAL_ECHOPGM("ATF2="); -// SERIAL_ECHOLN(current_position[E_AXIS]); - break; - case FilamentState::NOT_PRESENT: - // fsensor not triggered, continue moving extruder - if (!blocks_queued()) { // Only plan a move if there is no move ongoing - current_position[E_AXIS] += 2.0f; - plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); - } - break; - default: - // Abort here? - break; - } - } - break; - default: - // do nothing yet - break; - } + OnMMUProgressMsgSame(pc); } } -void MMU2::LogErrorEvent(const char *msg){ - MMU2_ERROR_MSG(msg); - SERIAL_ECHOLN(); +void MMU2::OnMMUProgressMsgChanged(ProgressCode pc){ + ReportProgress(pc); + lastProgressCode = pc; + switch (pc) { + case ProgressCode::UnloadingToFinda: + if ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::UnloadFilament + || ((CommandInProgress)logic.CommandInProgress() == CommandInProgress::ToolChange)) + { + // If MK3S sent U0 command, ramming sequence takes care of releasing the filament. + // If Toolchange is done while printing, PrusaSlicer takes care of releasing the filament + // If printing is not in progress, ToolChange will issue a U0 command. + break; + } else { + // We're likely recovering from an MMU error + st_synchronize(); + unloadFilamentStarted = true; + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); + } + break; + case ProgressCode::FeedingToFSensor: + // prepare for the movement of the E-motor + st_synchronize(); + loadFilamentStarted = true; + break; + default: + // do nothing yet + break; + } } -void MMU2::LogEchoEvent(const char *msg){ - MMU2_ECHO_MSG(msg); - SERIAL_ECHOLN(); +void MMU2::OnMMUProgressMsgSame(ProgressCode pc){ + switch (pc) { + case ProgressCode::UnloadingToFinda: + if (unloadFilamentStarted && !blocks_queued()) { // Only plan a move if there is no move ongoing + if (fsensor.getFilamentPresent()) { + current_position[E_AXIS] -= MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH; + plan_buffer_line_curposXYZE(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE); + } else { + unloadFilamentStarted = false; + } + } + break; + case ProgressCode::FeedingToFSensor: + if (loadFilamentStarted) { + switch (WhereIsFilament()) { + case FilamentState::AT_FSENSOR: + // fsensor triggered, finish FeedingToBondtech state + loadFilamentStarted = false; + // After the MMU knows the FSENSOR is triggered it will: + // 1. Push the filament by additional 30mm (see fsensorToNozzle) + // 2. Disengage the idler and push another 5mm. + current_position[E_AXIS] += 30.0f + 2.0f; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); + break; + case FilamentState::NOT_PRESENT: + // fsensor not triggered, continue moving extruder + if (!blocks_queued()) { // Only plan a move if there is no move ongoing + current_position[E_AXIS] += 2.0f; + plan_buffer_line_curposXYZE(MMU2_LOAD_TO_NOZZLE_FEED_RATE); + } + break; + default: + // Abort here? + break; + } + } + break; + default: + // do nothing yet + break; + } } } // namespace MMU2 diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 33800b946..0167fa1d8 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -201,7 +201,6 @@ private: void filament_ramming(); void execute_extruder_sequence(const E_Step *sequence, uint8_t steps); - void SetActiveExtruder(uint8_t ex); /// Reports an error into attached ExtUIs /// @param ec error code, see ErrorCode @@ -215,13 +214,11 @@ private: /// Responds to a change of MMU's progress /// - plans additional steps, e.g. starts the E-motor after fsensor trigger void OnMMUProgressMsg(ProgressCode pc); + /// Progress code changed - act accordingly + void OnMMUProgressMsgChanged(ProgressCode pc); + /// Repeated calls when progress code remains the same + void OnMMUProgressMsgSame(ProgressCode pc); - /// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) - void LogErrorEvent(const char *msg); - - /// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) - void LogEchoEvent(const char *msg); - /// Save print and park the print head void SaveAndPark(bool move_axes, bool turn_off_nozzle); diff --git a/Firmware/mmu2_log.cpp b/Firmware/mmu2_log.cpp new file mode 100644 index 000000000..288317b02 --- /dev/null +++ b/Firmware/mmu2_log.cpp @@ -0,0 +1,17 @@ +#include "mmu2_log.h" + +namespace MMU2 { + +void LogErrorEvent_P(const char *msg){ + SERIAL_ERROR_START; + SERIAL_MMU2(); + SERIAL_ECHOLNRPGM(msg); +} + +void LogEchoEvent_P(const char *msg){ + SERIAL_ECHO_START; + SERIAL_MMU2(); + SERIAL_ECHOLNRPGM(msg); +} + +} // namespace MMU2 diff --git a/Firmware/mmu2_log.h b/Firmware/mmu2_log.h index 0194534d9..a70182489 100644 --- a/Firmware/mmu2_log.h +++ b/Firmware/mmu2_log.h @@ -8,6 +8,18 @@ // and MMU2::ReportError + MMU2::ReportProgress static constexpr char mmu2Magic[] PROGMEM = "MMU2:"; +namespace MMU2 { + +/// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) +/// @param msg pointer to a string in PROGMEM +void LogErrorEvent_P(const char *msg); + +/// Report the msg into the general logging subsystem (through Marlin's SERIAL_ECHO stuff) +/// @param msg pointer to a string in PROGMEM +void LogEchoEvent_P(const char *msg); + +} // namespace + #define SERIAL_MMU2() { serialprintPGM(mmu2Magic); } #define MMU2_ECHO_MSG(S) do{ SERIAL_ECHO_START; SERIAL_MMU2(); SERIAL_ECHO(S); }while(0) diff --git a/Firmware/planner.cpp b/Firmware/planner.cpp index a556918a6..6206af7bf 100644 --- a/Firmware/planner.cpp +++ b/Firmware/planner.cpp @@ -911,8 +911,6 @@ block->steps_y.wide = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-p block->direction_bits |= (1<active_extruder = extruder; - //enable active axes #ifdef COREXY if((block->steps_x.wide != 0) || (block->steps_y.wide != 0)) diff --git a/Firmware/planner.h b/Firmware/planner.h index ed46cc82c..09cb6152c 100644 --- a/Firmware/planner.h +++ b/Firmware/planner.h @@ -75,7 +75,6 @@ typedef struct { dda_usteps_t step_event_count; // The number of step events required to complete this block uint32_t acceleration_rate; // The acceleration rate used for acceleration calculation unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) - unsigned char active_extruder; // Selects the active extruder // accelerate_until and decelerate_after are set by calculate_trapezoid_for_block() and they need to be synchronized with the stepper interrupt controller. uint32_t accelerate_until; // The index of the step event on which to stop acceleration uint32_t decelerate_after; // The index of the step event on which to start decelerating From 0e036b9d8ac9d4310231ab9eb4944fc8fdfadaf7 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 24 Aug 2022 11:49:47 +0200 Subject: [PATCH 202/319] Save some more RAM in protocol_logic --- Firmware/mmu2_log.h | 4 ++++ Firmware/mmu2_protocol_logic.cpp | 22 +++++++++++----------- Firmware/mmu2_protocol_logic.h | 4 ++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Firmware/mmu2_log.h b/Firmware/mmu2_log.h index a70182489..c4ad0bb67 100644 --- a/Firmware/mmu2_log.h +++ b/Firmware/mmu2_log.h @@ -24,6 +24,8 @@ void LogEchoEvent_P(const char *msg); #define MMU2_ECHO_MSG(S) do{ SERIAL_ECHO_START; SERIAL_MMU2(); SERIAL_ECHO(S); }while(0) #define MMU2_ERROR_MSG(S) do{ SERIAL_ERROR_START; SERIAL_MMU2(); SERIAL_ECHO(S); }while(0) +#define MMU2_ECHO_MSGRPGM(S) do{ SERIAL_ECHO_START; SERIAL_MMU2(); SERIAL_ECHORPGM(S); }while(0) +#define MMU2_ERROR_MSGRPGM(S) do{ SERIAL_ERROR_START; SERIAL_MMU2(); SERIAL_ECHORPGM(S); }while(0) #else // #ifndef UNITTEST @@ -31,5 +33,7 @@ void LogEchoEvent_P(const char *msg); #define MMU2_ERROR_MSG(S) /* */ #define SERIAL_ECHO(S) /* */ #define SERIAL_ECHOLN(S) /* */ +#define MMU2_ECHO_MSGRPGM(S) /* */ +#define MMU2_ERROR_MSGRPGM(S) /* */ #endif // #ifndef UNITTEST diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 6fa7ff9b3..480a7af20 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -598,7 +598,7 @@ void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ } tmp[size+1] = '\n'; tmp[size+2] = 0; - if( !strncmp(tmp, ">S0.\n", rqs) && !strncmp(lastMsg, tmp, rqs) ){ + if( !strncmp_P(tmp, PSTR(">S0*99.\n"), rqs) && !strncmp(lastMsg, tmp, rqs) ){ // @@TODO we skip the repeated request msgs for now // to avoid spoiling the whole log just with ">S0" messages // especially when the MMU is not connected. @@ -611,12 +611,12 @@ void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ memcpy(lastMsg, tmp, rqs); } -void ProtocolLogic::LogError(const char *reason){ +void ProtocolLogic::LogError(const char *reason_P){ char lrb[lastReceivedBytes.size() * 3]; FormatLastReceivedBytes(lrb); - MMU2_ERROR_MSG(reason); - SERIAL_ECHO(", last bytes: "); + MMU2_ERROR_MSGRPGM(reason_P); + SERIAL_ECHOPGM(", last bytes: "); SERIAL_ECHOLN(lrb); } @@ -627,9 +627,9 @@ void ProtocolLogic::LogResponse(){ SERIAL_ECHOLN(); } -StepStatus ProtocolLogic::SuppressShortDropOuts(const char *msg, StepStatus ss) { +StepStatus ProtocolLogic::SuppressShortDropOuts(const char *msg_P, StepStatus ss) { if( dataTO.Record(ss) ){ - LogError(msg); + LogError(msg_P); return dataTO.InitialCause(); } else { return Processing; // suppress short drop outs of communication @@ -640,7 +640,7 @@ StepStatus ProtocolLogic::HandleCommunicationTimeout() { uart->flush(); // clear the output buffer protocol.ResetResponseDecoder(); Start(); - return SuppressShortDropOuts("Communication timeout", CommunicationTimeout); + return SuppressShortDropOuts(PSTR("Communication timeout"), CommunicationTimeout); } StepStatus ProtocolLogic::HandleProtocolError() { @@ -648,7 +648,7 @@ StepStatus ProtocolLogic::HandleProtocolError() { state = State::InitSequence; currentState = &delayedRestart; delayedRestart.Restart(); - return SuppressShortDropOuts("Protocol Error", ProtocolError); + return SuppressShortDropOuts(PSTR("Protocol Error"), ProtocolError); } StepStatus ProtocolLogic::Step() { @@ -678,16 +678,16 @@ StepStatus ProtocolLogic::Step() { // we have to repeat it - that's the only thing we can do // no change in state // @@TODO wait until Q0 returns command in progress finished, then we can send this one - LogError("Command rejected"); + LogError(PSTR("Command rejected")); command.Restart(); break; case CommandError: - LogError("Command Error"); + LogError(PSTR("Command Error")); // we shall probably transfer into the Idle state and await further instructions from the upper layer // Idle state may solve the problem of keeping up the heart beat running break; case VersionMismatch: - LogError("Version mismatch"); + LogError(PSTR("Version mismatch")); Stop(); // cannot continue break; case ProtocolError: diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index b31d68b7f..609e20f04 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -268,7 +268,7 @@ private: StepStatus ExpectingMessage(uint32_t timeout); void SendMsg(RequestMsg rq); void SwitchToIdle(); - StepStatus SuppressShortDropOuts(const char *msg, StepStatus ss); + StepStatus SuppressShortDropOuts(const char *msg_P, StepStatus ss); StepStatus HandleCommunicationTimeout(); StepStatus HandleProtocolError(); bool Elapsed(uint32_t timeout) const; @@ -277,7 +277,7 @@ private: void FormatLastReceivedBytes(char *dst); void FormatLastResponseMsgAndClearLRB(char *dst); void LogRequestMsg(const uint8_t *txbuff, uint8_t size); - void LogError(const char *reason); + void LogError(const char *reason_P); void LogResponse(); void SwitchFromIdleToCommand(); void SwitchFromStartToIdle(); From 2662e09f1e87871e2dcfa46e212c3506da31dfab Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 24 Aug 2022 12:04:57 +0200 Subject: [PATCH 203/319] Another message remove from RAM --- Firmware/mmu2.cpp | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 393982011..f7567e5fb 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -273,15 +273,7 @@ bool MMU2::tool_change(uint8_t index) { manage_response(true, true); // reset current position to whatever the planner thinks it is -// SERIAL_ECHOPGM("TC1:p="); -// SERIAL_ECHO(position[E_AXIS]); -// SERIAL_ECHOPGM("TC1:cp="); -// SERIAL_ECHOLN(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]); -// SERIAL_ECHOPGM("TC2:p="); -// SERIAL_ECHO(position[E_AXIS]); -// SERIAL_ECHOPGM("TC2:cp="); -// SERIAL_ECHOLN(current_position[E_AXIS]); extruder = index; //filament change is finished previous_extruder = extruder; @@ -454,15 +446,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { // reset current position to whatever the planner thinks it is st_synchronize(); -// SERIAL_ECHOPGM("LFTN1:p="); -// SERIAL_ECHO(position[E_AXIS]); -// SERIAL_ECHOPGM("LFTN1:cp="); -// SERIAL_ECHOLN(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]); -// SERIAL_ECHOPGM("LFTN2:p="); -// SERIAL_ECHO(position[E_AXIS]); -// SERIAL_ECHOPGM("LFTN2:cp="); -// SERIAL_ECHOLN(current_position[E_AXIS]); // Finish loading to the nozzle with finely tuned steps. execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); @@ -573,7 +557,7 @@ void MMU2::ResumeHotendTemp() { } if ((mmu_print_saved & SavedState::Cooldown) && resume_hotend_temp) { LogEchoEvent_P(PSTR("Resuming Temp")); - MMU2_ECHO_MSG("Restoring hotend temperature "); + MMU2_ECHO_MSGRPGM(PSTR("Restoring hotend temperature ")); SERIAL_ECHOLN(resume_hotend_temp); mmu_print_saved &= ~(SavedState::Cooldown); setTargetHotend(resume_hotend_temp, active_extruder); From 70532333dc8647de377288d1268f10a387868af4 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 24 Aug 2022 10:07:24 +0200 Subject: [PATCH 204/319] Optimize filament sensor implementation - remove virtual methods (we only have one fsensor implementation at a time) - comment out some of the debugging texts - remove volatile and replace them with proper synchronized access to relevant variables --- Firmware/Filament_sensor.cpp | 70 ++++++++++------------ Firmware/Filament_sensor.h | 111 +++++++++++++---------------------- 2 files changed, 74 insertions(+), 107 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 5e16c809e..d540f8911 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -41,9 +41,9 @@ FSensorBlockRunout::~FSensorBlockRunout() { } void Filament_sensor::setEnabled(bool enabled) { eeprom_update_byte((uint8_t *)EEPROM_FSENSOR, enabled); if (enabled) { - init(); + fsensor.init(); } else { - deinit(); + fsensor.deinit(); } } @@ -89,16 +89,16 @@ bool Filament_sensor::checkFilamentEvents() { return false; } - bool newFilamentPresent = getFilamentPresent(); + bool newFilamentPresent = fsensor.getFilamentPresent(); if (oldFilamentPresent != newFilamentPresent) { oldFilamentPresent = newFilamentPresent; eventBlankingTimer.start(); if (newFilamentPresent) { // filament insertion - puts_P(PSTR("filament inserted")); +// puts_P(PSTR("filament inserted")); triggerFilamentInserted(); postponedLoadEvent = true; } else { // filament removal - puts_P(PSTR("filament removed")); +// puts_P(PSTR("filament removed")); triggerFilamentRemoved(); } return true; @@ -111,7 +111,7 @@ void Filament_sensor::triggerFilamentInserted() { && (eFilamentAction == FilamentAction::None) && (! MMU2::mmu2.Enabled() ) // quick and dirty hack to prevent spurious runouts while the MMU is in charge && !( - moves_planned() + moves_planned() != 0 || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) @@ -129,7 +129,7 @@ void Filament_sensor::triggerFilamentRemoved() { && (eFilamentAction == FilamentAction::None) && !saved_printing && ( - moves_planned() + moves_planned() != 0 || IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) @@ -175,16 +175,16 @@ void Filament_sensor::triggerError() { #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) void IR_sensor::init() { if (state == State::error) { - deinit(); // deinit first if there was an error. + fsensor.deinit(); // deinit first if there was an error. } - puts_P(PSTR("fsensor::init()")); +// puts_P(PSTR("fsensor::init()")); SET_INPUT(IR_SENSOR_PIN); // input mode WRITE(IR_SENSOR_PIN, 1); // pullup settings_init(); // also sets the state to State::initializing } void IR_sensor::deinit() { - puts_P(PSTR("fsensor::deinit()")); +// puts_P(PSTR("fsensor::deinit()")); SET_INPUT(IR_SENSOR_PIN); // input mode WRITE(IR_SENSOR_PIN, 0); // no pullup state = State::disabled; @@ -194,16 +194,12 @@ bool IR_sensor::update() { switch (state) { case State::initializing: state = State::ready; // the IR sensor gets ready instantly as it's just a gpio read operation. - oldFilamentPresent = - getFilamentPresent(); // initialize the current filament state so that we don't create a switching event right after the sensor is ready. - // fallthru + // initialize the current filament state so that we don't create a switching event right after the sensor is ready. + oldFilamentPresent = fsensor.getFilamentPresent(); + [[fallthrough]]; case State::ready: { postponedLoadEvent = false; - bool event = checkFilamentEvents(); - - ; // - - return event; + return checkFilamentEvents(); } break; case State::disabled: case State::error: @@ -213,7 +209,7 @@ bool IR_sensor::update() { return false; } -bool IR_sensor::getFilamentPresent() { return !READ(IR_SENSOR_PIN); } + #ifdef FSENSOR_PROBING bool IR_sensor::probeOtherType() { return pat9125_probe(); } @@ -224,16 +220,15 @@ void IR_sensor::settings_init() { Filament_sensor::settings_init_common(); } #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) void IR_sensor_analog::init() { IR_sensor::init(); - settings_init(); + IR_sensor::settings_init(); + sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_PCB); } -void IR_sensor_analog::deinit() { IR_sensor::deinit(); } - bool IR_sensor_analog::update() { bool event = IR_sensor::update(); if (state == State::ready) { - if (voltReady) { - voltReady = false; + if (getVoltReady()) { + clearVoltReady(); uint16_t volt = getVoltRaw(); // printf_P(PSTR("newVoltRaw:%u\n"), volt / OVERSAMPLENR); @@ -282,14 +277,7 @@ void IR_sensor_analog::voltUpdate(uint16_t raw) { // to be called from the ADC I } uint16_t IR_sensor_analog::getVoltRaw() { - uint16_t newVoltRaw; - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { newVoltRaw = voltRaw; } - return newVoltRaw; -} - -void IR_sensor_analog::settings_init() { - IR_sensor::settings_init(); - sensorRevision = (SensorRevision)eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_PCB); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { return voltRaw; } } const char *IR_sensor_analog::getIRVersionText() { @@ -349,6 +337,14 @@ bool IR_sensor_analog::checkVoltage(uint16_t raw) { return true; } +bool IR_sensor_analog::getVoltReady() const { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE){ return voltReady; } +} + +void IR_sensor_analog::clearVoltReady(){ + ATOMIC_BLOCK(ATOMIC_RESTORESTATE){ voltReady = false; } +} + void IR_sensor_analog::IR_ANALOG_Check(SensorRevision isVersion, SensorRevision switchTo) { bool bTemp = (!CHECK_ALL_HEATERS); bTemp = bTemp && (menu_menu == lcd_status_screen); @@ -383,7 +379,7 @@ void PAT9125_sensor::init() { if (state == State::error) { deinit(); // deinit first if there was an error. } - puts_P(PSTR("fsensor::init()")); +// puts_P(PSTR("fsensor::init()")); settings_init(); // also sets the state to State::initializing @@ -402,7 +398,7 @@ void PAT9125_sensor::init() { } void PAT9125_sensor::deinit() { - puts_P(PSTR("fsensor::deinit()")); +// puts_P(PSTR("fsensor::deinit()")); ; // state = State::disabled; filter = 0; @@ -459,15 +455,13 @@ void PAT9125_sensor::setJamDetectionEnabled(bool state, bool updateEEPROM) { } void PAT9125_sensor::settings_init() { - puts_P(PSTR("settings_init")); +// puts_P(PSTR("settings_init")); Filament_sensor::settings_init_common(); setJamDetectionEnabled(eeprom_read_byte((uint8_t *)EEPROM_FSENSOR_JAM_DETECTION)); } int16_t PAT9125_sensor::getStepCount() { - int16_t st_cnt; - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { st_cnt = stepCount; } - return st_cnt; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { return stepCount; } } void PAT9125_sensor::resetStepCount() { diff --git a/Firmware/Filament_sensor.h b/Firmware/Filament_sensor.h index 65cd01732..e5c488a3a 100644 --- a/Firmware/Filament_sensor.h +++ b/Firmware/Filament_sensor.h @@ -20,17 +20,17 @@ public: ~FSensorBlockRunout(); }; +/// Base class Filament sensor +/// +/// Ideally, there could have been a nice class hierarchy of filament sensor types with common functionality +/// extracted into this base class. +/// But: +/// - virtual methods take more space +/// - we don't need to switch among different filament sensors at runtime +/// Therefore the class hierarchy carefully avoids using virtual methods and doesn't look too fancy. #ifdef FILAMENT_SENSOR class Filament_sensor { public: - virtual void init() = 0; - virtual void deinit() = 0; - virtual bool update() = 0; - virtual bool getFilamentPresent() = 0; -#ifdef FSENSOR_PROBING - virtual bool probeOtherType() = 0; //checks if the wrong fsensor type is detected. -#endif - enum class State : uint8_t { disabled = 0, initializing, @@ -44,41 +44,22 @@ public: _Undef = EEPROM_EMPTY_VALUE }; - void setEnabled(bool enabled); + static void setEnabled(bool enabled); void setAutoLoadEnabled(bool state, bool updateEEPROM = false); - - bool getAutoLoadEnabled() { - return autoLoadEnabled; - } + bool getAutoLoadEnabled() const { return autoLoadEnabled; } void setRunoutEnabled(bool state, bool updateEEPROM = false); - - bool getRunoutEnabled() { - return runoutEnabled; - } + bool getRunoutEnabled() const { return runoutEnabled; } void setActionOnError(SensorActionOnError state, bool updateEEPROM = false); + SensorActionOnError getActionOnError() const { return sensorActionOnError; } - SensorActionOnError getActionOnError() { - return sensorActionOnError; - } + bool getFilamentLoadEvent() const { return postponedLoadEvent; } - bool getFilamentLoadEvent() { - return postponedLoadEvent; - } - - bool isError() { - return state == State::error; - } - - bool isReady() { - return state == State::ready; - } - - bool isEnabled() { - return state != State::disabled; - } + bool isError() const { return state == State::error; } + bool isReady() const { return state == State::ready; } + bool isEnabled() const { return state != State::disabled; } protected: void settings_init_common(); @@ -89,7 +70,7 @@ protected: void triggerFilamentRemoved(); - void filAutoLoad(); + static void filAutoLoad(); void filRunout(); @@ -107,12 +88,12 @@ protected: #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) class IR_sensor: public Filament_sensor { public: - void init() override; - void deinit() override; - bool update()override ; - bool getFilamentPresent()override; + void init(); + void deinit(); + bool update(); + bool getFilamentPresent() const { return !READ(IR_SENSOR_PIN); } #ifdef FSENSOR_PROBING - bool probeOtherType()override; + static bool probeOtherType(); //checks if the wrong fsensor type is detected. #endif void settings_init(); }; @@ -127,14 +108,11 @@ constexpr static float Raw2Voltage(uint16_t raw) { class IR_sensor_analog: public IR_sensor { public: - void init()override; - void deinit()override; - bool update()override; + void init(); + bool update(); void voltUpdate(uint16_t raw); - uint16_t getVoltRaw(); - - void settings_init(); + uint16_t __attribute__((noinline)) getVoltRaw(); enum class SensorRevision : uint8_t { _Old = 0, @@ -142,17 +120,12 @@ public: _Undef = EEPROM_EMPTY_VALUE }; - SensorRevision getSensorRevision() { - return sensorRevision; - } + SensorRevision getSensorRevision() const { return sensorRevision; } - const char* getIRVersionText(); + const char* __attribute__((noinline)) getIRVersionText(); void setSensorRevision(SensorRevision rev, bool updateEEPROM = false); - bool checkVoltage(uint16_t raw); - - // Voltage2Raw is not constexpr :/ constexpr static uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982 constexpr static uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910 constexpr static uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821 @@ -161,8 +134,14 @@ public: private: SensorRevision sensorRevision; - volatile bool voltReady; //this gets set by the adc ISR - volatile uint16_t voltRaw; + + bool voltReady; // set by the adc ISR, therefore avoid accessing the variable directly but use getVoltReady() + bool getVoltReady()const; + void clearVoltReady(); + + uint16_t voltRaw; // set by the adc ISR, therefore avoid accessing the variable directly but use getVoltRaw() + bool checkVoltage(uint16_t raw); + uint16_t minVolt = Voltage2Raw(6.F); uint16_t maxVolt = 0; uint16_t nFSCheckCount; @@ -181,22 +160,16 @@ private: #if (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125) class PAT9125_sensor: public Filament_sensor { public: - void init()override; - void deinit()override; - bool update()override; - bool getFilamentPresent() override{ - return filterFilPresent; - } - + void init(); + void deinit(); + bool update(); + bool getFilamentPresent() const { return filterFilPresent; } #ifdef FSENSOR_PROBING - bool probeOtherType() override; + bool probeOtherType(); //checks if the wrong fsensor type is detected. #endif void setJamDetectionEnabled(bool state, bool updateEEPROM = false); - - bool getJamDetectionEnabled() { - return jamDetection; - } + bool getJamDetectionEnabled() const { return jamDetection; } void stStep(bool rev) { //from stepper isr stepCount += rev ? -1 : 1; @@ -212,7 +185,7 @@ private: bool jamDetection; int16_t oldPos; - volatile int16_t stepCount; + int16_t stepCount; int16_t chunkSteps; uint8_t jamErrCnt; From de0539b630e6888c7158436ea58f6314674e035a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 20 Aug 2022 14:01:19 +0000 Subject: [PATCH 205/319] PFW-1386 Implement M704, M705, and M706 --- Firmware/Marlin_main.cpp | 78 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 91e97c474..decac3d7f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8586,6 +8586,84 @@ Sigma_Exit: } break; + /*! + ### M704 - Load to MMU + #### Usage + + M704 [ P ] + + #### Parameters + - `P` - n index of slot (zero based, so 0-4 like T0 and T4) + */ + case 704: + { + uint8_t mmuSlotIndex = 0xffU; + if (MMU2::mmu2.Enabled() && code_seen('P')) + { + mmuSlotIndex = code_value_uint8(); + if (mmuSlotIndex < MMU_FILAMENT_COUNT) { + MMU2::mmu2.load_filament(mmuSlotIndex); + } + } + } + break; + + /*! + ### M705 - Eject filament + #### Usage + + M705 [ P ] + + #### Parameters + - `P` - n index of slot (zero based, so 0-4 like T0 and T4) + */ + case 705: + { + uint8_t mmuSlotIndex = 0xffU; + if (MMU2::mmu2.Enabled() && code_seen('P')) + { + mmuSlotIndex = code_value_uint8(); + if (mmuSlotIndex < MMU_FILAMENT_COUNT) { + // TODO: should recover be false? + MMU2::mmu2.eject_filament(mmuSlotIndex, false); + } + } + } + break; + + + /*! + ### M706 - Cut filament + #### Usage + + M706 [ P ] + + #### Parameters + - `P` - n index of slot (zero based, so 0-4 like T0 and T4) + */ + case 706: + { + uint8_t mmuSlotIndex = 0xffU; + if (MMU2::mmu2.Enabled() && code_seen('P')) + { + mmuSlotIndex = code_value_uint8(); + if (mmuSlotIndex < MMU_FILAMENT_COUNT) { + MMU2::mmu2.cut_filament(mmuSlotIndex); + } + } + } + break; + + /*! + ### M999 - Restart after being stopped M999: Restart after being stopped by error + @todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable. + */ + case 999: + Stopped = false; + lcd_reset_alert_level(); + gcode_LastN = Stopped_gcode_LastN; + FlushSerialRequestResend(); + break; /*! #### End of M-Commands */ From 3664d29b2138d43784543220c31eb10751054b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 20 Aug 2022 16:27:30 +0000 Subject: [PATCH 206/319] PFW-1386 Add M709 --- Firmware/Marlin_main.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index decac3d7f..04a94d7be 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8654,6 +8654,38 @@ Sigma_Exit: } break; + /*! + ### M709 - MMU turn on/off/reset + The MK3S cannot not power off the MMU, for that reason the functionality is not supported. + #### Usage + + M709 [ X ] + + M709 X0 - issue an X0 command via communication into the MMU (soft reset) + M709 X1 - toggle the MMU's reset pin (hardware reset) + + #### Parameters + - `X` - Reset MMU + */ + case 709: + { + if (MMU2::mmu2.Enabled() && code_seen('X')) + { + switch (code_value_uint8()) + { + case 0: + MMU2::mmu2.Reset(MMU2::MMU2::Software); + break; + case 1: + MMU2::mmu2.Reset(MMU2::MMU2::ResetPin); + break; + default: + break; + } + } + } + break; + /*! ### M999 - Restart after being stopped M999: Restart after being stopped by error @todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable. From fb087fc535c531303580147b082b2d7fbdaa282a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 08:58:14 +0000 Subject: [PATCH 207/319] PFW-1386 Add M707 and M708 WriteRegister and ReadRegister function will create new compiler warnings due to unused parameters, we can ignore it for now. --- Firmware/Marlin_main.cpp | 63 ++++++++++++++++++++++++++++++++++++++++ Firmware/mmu2.cpp | 10 +++++++ Firmware/mmu2.h | 13 +++++++++ 3 files changed, 86 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 04a94d7be..2d4a141eb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8654,6 +8654,69 @@ Sigma_Exit: } break; + /*! + ### M707 - Read from MMU register + #### Usage + + M707 [ A | C ] + + M707 A14 C2 - Read two bytes from address 0x14 + + #### Parameters + - `A` - Address of register in hexidecimal. Default value is 0. + - `C` - Number of bytes to read. Default value is 0. + */ + case 707: + { + uint8_t addr = 0; + uint8_t nrbytes = 0; + if ( MMU2::mmu2.Enabled() ) + { + if( code_seen('A') ) { + addr = code_value_uint8(); + } + if( code_seen('C') ) { + nrbytes = code_value_uint8(); + } + MMU2::mmu2.ReadRegister(addr, nrbytes); + } + } + break; + + /*! + ### M708 - Write to MMU register + #### Usage + + M708 [ A | X | C ] + + M708 A14 X30 C1 - Write to register 0x14 the value 30 which is 1 byte. + + #### Parameters + - `A` - Address of register in hexidecimal. Default value is 0. + - `X` - Data to write. Default value is 0. + - `C` - Number of bytes to write. Default value is 0. + */ + case 708: + { + uint8_t addr = 0; + uint8_t data = 0; + uint8_t nrbytes = 0; + if ( MMU2::mmu2.Enabled() ) + { + if( code_seen('A') ) { + addr = code_value_uint8(); + } + if( code_seen('X') ) { + data = code_value_uint8(); + } + if( code_seen('C') ) { + nrbytes = code_value_uint8(); + } + MMU2::mmu2.WriteRegister(addr, data, nrbytes); + } + } + break; + /*! ### M709 - MMU turn on/off/reset The MK3S cannot not power off the MMU, for that reason the functionality is not supported. diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index f7567e5fb..a0c838220 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -179,6 +179,16 @@ void MMU2::PowerOn(){ power_on(); } +void MMU2::ReadRegister(uint8_t address, uint8_t nrbytes){ + // TODO, implement for gcode M707 + // Currently this function is NOP +} + +void MMU2::WriteRegister(uint8_t address, uint8_t data, uint8_t nrbytes){ + // TODO, implement for gcode M708 + // Currently this function is NOP +} + void MMU2::mmu_loop() { // We only leave this method if the current command was successfully completed - that's the Marlin's way of blocking operation // Atomic compare_exchange would have been the most appropriate solution here, but this gets called only in Marlin's task, diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 0167fa1d8..5a6736e70 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -85,6 +85,19 @@ public: /// Power on the MMU void PowerOn(); + /// Read from a MMU register (See gcode M707) + /// @param address Address of register in hexidecimal + /// @param nrbytes Number of bytes to read + /// @returns no return + void ReadRegister(uint8_t address, uint8_t nrbytes); + + /// Write from a MMU register (See gcode M708) + /// @param address Address of register in hexidecimal + /// @param data Data to write to register + /// @param nrbytes Number of bytes to write + /// @returns no return + void WriteRegister(uint8_t address, uint8_t data, uint8_t nrbytes); + /// The main loop of MMU processing. /// Doesn't loop (block) inside, performs just one step of logic state machines. From 5bb36546b4049f8a45ca5b64379629b592dbef74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 09:13:05 +0000 Subject: [PATCH 208/319] PFW-1386 Implement changes to M701 --- Firmware/Marlin_main.cpp | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2d4a141eb..bd9e2b7ea 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8547,22 +8547,42 @@ Sigma_Exit: /*! ### M701 - Load filament M701: Load filament + Load filament into the active extruder. #### Usage - M701 [ E | T ] + M701 [ P | T | L | Z ] #### Parameters - - `E` - ID of filament to load, ranges from 0 to 4 - - `T` - Alias of `E`. Used for compatibility with Marlin + - `P` - n index of MMU slot (zero based, so 0-4 like T0 and T4) + - `T` - Alias of `P`. Used for compatibility with Marlin + - `L` - Extrude distance for insertion (positive value)(manual reload) + - `Z` - Move the Z axis by this distance. Default value MIN_Z_FOR_LOAD */ - case 701: - { + case 701: + { uint8_t mmuSlotIndex = 0xffU; - if (MMU2::mmu2.Enabled() && code_seen('E')) - mmuSlotIndex = code_value_uint8(); - gcode_M701(mmuSlotIndex); - } - break; + if( MMU2::mmu2.Enabled() ) + { + if( code_seen('P') || code_seen('T') ) { + mmuSlotIndex = code_value_uint8(); + } + } + + // TODO: Implement L parameter + + enable_z(); + if (code_seen('Z')) + { + float z_target = code_value(); + raise_z_above(z_target, false); + } else { + raise_z_above(MIN_Z_FOR_LOAD, false); + } + disable_z(); + + gcode_M701(mmuSlotIndex); + } + break; /*! ### M702 - Unload filament G32: Undock Z Probe sled From 9b0d89213ba5d2d11e236b8e429508471988d8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 09:13:53 +0000 Subject: [PATCH 209/319] PFW-1386 Raising Z-axis during M701 is now done via Gcode If the Z-parameter is not issued, then default behavior will raise the Z-axis by MIN_Z_FOR_LOAD --- Firmware/Marlin_main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index bd9e2b7ea..a5765d9fd 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3705,7 +3705,6 @@ void gcode_M701(uint8_t mmuSlotIndex){ lcd_update_enable(true); lcd_update(2); lcd_setstatuspgm(MSG_WELCOME); - disable_z(); loading_flag = false; custom_message_type = CustomMsg::Status; } From 32ec1587b92c764a7d7bed43e09a9e2fc2538be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 09:39:51 +0000 Subject: [PATCH 210/319] PFW-1386 Implement changes to M702 --- Firmware/Marlin_main.cpp | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a5765d9fd..fc1a74df4 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8587,23 +8587,32 @@ Sigma_Exit: ### M702 - Unload filament G32: Undock Z Probe sled #### Usage - M702 [ C ] + M702 [ U | Z ] #### Parameters - - `C` - Unload just current filament - - without any parameters unload all filaments + - `U` - Retract distance for removal (manual reload). Default value is 0. + - `Z` - Move the Z axis by this distance. Default value MIN_Z_FOR_UNLOAD. */ - case 702: - { - if (code_seen('C')) { - if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! if "C" unload current filament; if mmu is not present no action is performed - } - else { - if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! unload current filament - else unload_filament(); - } - } - break; + case 702: + { + // TODO: Implement U parameter + + if (code_seen('Z')) + { + float z_target = code_value(); + raise_z_above(z_target, false); + } else { + raise_z_above(MIN_Z_FOR_UNLOAD, false); + } + + if (MMU2::mmu2.Enabled()) + { + MMU2::mmu2.unload(); + } else { + unload_filament(); + } + } + break; /*! ### M704 - Load to MMU From d6564d36178613f1cc7f17633d91dcb212135b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 09:42:13 +0000 Subject: [PATCH 211/319] PFW-1386 if automatic = false, raising Z-axis is done via gcode --- Firmware/ultralcd.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3ccc4dd6c..9c6a6bcf6 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5255,7 +5255,12 @@ void unload_filament(bool automatic) lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); FSensorBlockRunout fsBlockRunout; - raise_z_above(automatic? MIN_Z_FOR_SWAP: MIN_Z_FOR_UNLOAD); + + if (automatic) + { + // M600 + raise_z_above(MIN_Z_FOR_SWAP); + } // extr_unload2(); From 8462b38446e5b59553c4a8274966156eab3b3a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 10:28:25 +0000 Subject: [PATCH 212/319] PFW-1386 Create a common function for M704 to M706 Saves 36 bytes of flash --- Firmware/Marlin_main.cpp | 55 ++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index fc1a74df4..3c03d6023 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3711,6 +3711,33 @@ void gcode_M701(uint8_t mmuSlotIndex){ eFilamentAction = FilamentAction::None; } + +// Common gcode shared by the gcodes. This saves some flash memory +static void gcodes_M704_M705_M706(uint16_t gcode) +{ + uint8_t mmuSlotIndex = 0xffU; + if (MMU2::mmu2.Enabled() && code_seen('P')) + { + mmuSlotIndex = code_value_uint8(); + if (mmuSlotIndex < MMU_FILAMENT_COUNT) { + switch (gcode) + { + case 704: + MMU2::mmu2.load_filament(mmuSlotIndex); + break; + case 705: + MMU2::mmu2.eject_filament(mmuSlotIndex, false); + break; + case 706: + MMU2::mmu2.cut_filament(mmuSlotIndex); + break; + default: + break; + } + } + } +} + /** * @brief Get serial number from 32U2 processor * @@ -8625,14 +8652,7 @@ Sigma_Exit: */ case 704: { - uint8_t mmuSlotIndex = 0xffU; - if (MMU2::mmu2.Enabled() && code_seen('P')) - { - mmuSlotIndex = code_value_uint8(); - if (mmuSlotIndex < MMU_FILAMENT_COUNT) { - MMU2::mmu2.load_filament(mmuSlotIndex); - } - } + gcodes_M704_M705_M706(704); } break; @@ -8647,15 +8667,7 @@ Sigma_Exit: */ case 705: { - uint8_t mmuSlotIndex = 0xffU; - if (MMU2::mmu2.Enabled() && code_seen('P')) - { - mmuSlotIndex = code_value_uint8(); - if (mmuSlotIndex < MMU_FILAMENT_COUNT) { - // TODO: should recover be false? - MMU2::mmu2.eject_filament(mmuSlotIndex, false); - } - } + gcodes_M704_M705_M706(705); } break; @@ -8671,14 +8683,7 @@ Sigma_Exit: */ case 706: { - uint8_t mmuSlotIndex = 0xffU; - if (MMU2::mmu2.Enabled() && code_seen('P')) - { - mmuSlotIndex = code_value_uint8(); - if (mmuSlotIndex < MMU_FILAMENT_COUNT) { - MMU2::mmu2.cut_filament(mmuSlotIndex); - } - } + gcodes_M704_M705_M706(706); } break; From 94dd4aec73b26da9d03efa8b9caf49b848d4b61d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 10:38:16 +0000 Subject: [PATCH 213/319] PFW-1386 M701 now loads to nozzle with MMU --- Firmware/Marlin_main.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 3c03d6023..5377cb542 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3676,8 +3676,7 @@ void gcode_M701(uint8_t mmuSlotIndex){ prusa_statistics(22); if (MMU2::mmu2.Enabled() && mmuSlotIndex < MMU_FILAMENT_COUNT) { - MMU2::mmu2.load_filament(mmuSlotIndex); // loads current extruder - // mmu_extruder = mmuSlotIndex; // @@TODO shall load filament set current tool to some specific index? We don't do that anymore. + MMU2::mmu2.load_filament_to_nozzle(mmuSlotIndex); } else { enable_z(); custom_message_type = CustomMsg::FilamentLoading; @@ -8572,7 +8571,7 @@ Sigma_Exit: break; /*! - ### M701 - Load filament M701: Load filament + ### M701 - Load filament to extruder M701: Load filament Load filament into the active extruder. #### Usage From 7e9166976f35657abb18a2333cf094745b5cc916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 15:31:57 +0000 Subject: [PATCH 214/319] PFW-1386 Implement 'L' parameter for M701 It is only used when the MMU is disabled. With the MMU we use a defined ramming sequence. When the MMU is disabled I borrowed the usages from Marlin 2. The L parameter only defines the length for the "fast" load length. Default value is 70mm, same as M600 --- Firmware/Marlin.h | 2 +- Firmware/Marlin_main.cpp | 14 +++++++++----- Firmware/ultralcd.cpp | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 810203ea8..4e8246c3e 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -464,7 +464,7 @@ void gcode_M114(); #if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1))))) void gcode_M123(); #endif //FANCHECK and TACH_0 and TACH_1 -void gcode_M701(uint8_t mmuSlotIndex); +void gcode_M701(float fastLoadLength, uint8_t mmuSlotIndex); #define UVLO !(PINE & (1<<4)) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5377cb542..1f696f467 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3668,7 +3668,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float custom_message_type = CustomMsg::Status; } -void gcode_M701(uint8_t mmuSlotIndex){ +void gcode_M701(float fastLoadLength, uint8_t mmuSlotIndex){ printf_P(PSTR("gcode_M701 begin\n")); FSensorBlockRunout fsBlockRunout; @@ -3684,10 +3684,10 @@ void gcode_M701(uint8_t mmuSlotIndex){ const int feed_mm_before_raising = 30; static_assert(feed_mm_before_raising <= FILAMENTCHANGE_FIRSTFEED); - lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT)); + lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT)); current_position[E_AXIS] += FILAMENTCHANGE_FIRSTFEED - feed_mm_before_raising; plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence - st_synchronize(); + st_synchronize(); raise_z_above(MIN_Z_FOR_LOAD, false); current_position[E_AXIS] += feed_mm_before_raising; @@ -8586,6 +8586,7 @@ Sigma_Exit: case 701: { uint8_t mmuSlotIndex = 0xffU; + float fastLoadLength = FILAMENTCHANGE_FIRSTFEED; // Only used without MMU if( MMU2::mmu2.Enabled() ) { if( code_seen('P') || code_seen('T') ) { @@ -8593,7 +8594,10 @@ Sigma_Exit: } } - // TODO: Implement L parameter + if (code_seen('L')) + { + fastLoadLength = code_value(); + } enable_z(); if (code_seen('Z')) @@ -8605,7 +8609,7 @@ Sigma_Exit: } disable_z(); - gcode_M701(mmuSlotIndex); + gcode_M701(fastLoadLength, mmuSlotIndex); } break; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9c6a6bcf6..ae05e09e4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3958,7 +3958,7 @@ static void lcd_wizard_load() { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); loading_flag = true; - gcode_M701(0); + gcode_M701(FILAMENTCHANGE_FIRSTFEED, 0); } bool lcd_autoDepleteEnabled() From 20c865c2d428b2072f6f3dbb4f509e46081f7b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 15:48:31 +0000 Subject: [PATCH 215/319] PFW-1386 Implement 'U' parameter for M702 Similar to 'L' in M701, this does not apply to the MMU The U parameter controls how much mm the extruder will unload Default value is 80mm --- Firmware/Marlin_main.cpp | 12 +++++++----- Firmware/ultralcd.cpp | 18 +++++------------- Firmware/ultralcd.h | 2 +- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1f696f467..f862d6f9f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3592,7 +3592,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (MMU2::mmu2.Enabled()) mmu_M600_unload_filament(); else - unload_filament(true); // unload filament for single material (used also in M702) + unload_filament(FILAMENTCHANGE_FINALRETRACT, true); // unload filament for single material (used also in M702) st_synchronize(); // finish moves { FSensorBlockRunout fsBlockRunout; @@ -8625,7 +8625,10 @@ Sigma_Exit: */ case 702: { - // TODO: Implement U parameter + float unloadLength = FILAMENTCHANGE_FINALRETRACT; + if (code_seen('U')) { + unloadLength = code_value(); + } if (code_seen('Z')) { @@ -8635,11 +8638,10 @@ Sigma_Exit: raise_z_above(MIN_Z_FOR_UNLOAD, false); } - if (MMU2::mmu2.Enabled()) - { + if (MMU2::mmu2.Enabled()) { MMU2::mmu2.unload(); } else { - unload_filament(); + unload_filament(unloadLength, false); } } break; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ae05e09e4..684b963a0 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4107,7 +4107,7 @@ void lcd_wizard(WizState state) lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA.")); ////MSG_WIZARD_WILL_PREHEAT c=20 r=4 wait_preheat(); //unload current filament - unload_filament(true); + unload_filament(FILAMENTCHANGE_FINALRETRACT, true); //load filament lcd_wizard_load(); setTargetHotend(0, 0); //we are finished, cooldown nozzle @@ -5249,7 +5249,7 @@ static void mmu_load_to_bondtech_menu() { // unload filament for single material printer (used in M702 gcode) // @param automatic: If true, unload_filament is part of a unload+load sequence (M600) -void unload_filament(bool automatic) +void unload_filament(float unloadLength, bool automatic) { custom_message_type = CustomMsg::FilamentLoading; lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); @@ -5262,17 +5262,9 @@ void unload_filament(bool automatic) raise_z_above(MIN_Z_FOR_SWAP); } - // extr_unload2(); - - current_position[E_AXIS] -= 45; - plan_buffer_line_curposXYZE(5200 / 60); - st_synchronize(); - current_position[E_AXIS] -= 15; - plan_buffer_line_curposXYZE(1000 / 60); - st_synchronize(); - current_position[E_AXIS] -= 20; - plan_buffer_line_curposXYZE(1000 / 60); - st_synchronize(); + current_position[E_AXIS] -= unloadLength; + plan_buffer_line_curposXYZE(1000 / 60); + st_synchronize(); lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT)); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 2262cc5e3..ff0650ce5 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -191,7 +191,7 @@ extern bool bFilamentAction; void mFilamentItem(uint16_t nTemp,uint16_t nTempBed); void mFilamentItemForce(); void lcd_generic_preheat_menu(); -void unload_filament(bool automatic = false); +void unload_filament(float unloadLength, bool automatic = false); void lcd_wait_for_heater(); From 3192a95e781a37233a2426bc1ed76921e2efeb25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 16:07:24 +0000 Subject: [PATCH 216/319] PFW-1386 Optimise default value assign z_target --- Firmware/Marlin_main.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f862d6f9f..d571088c2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8587,6 +8587,7 @@ Sigma_Exit: { uint8_t mmuSlotIndex = 0xffU; float fastLoadLength = FILAMENTCHANGE_FIRSTFEED; // Only used without MMU + float z_target = MIN_Z_FOR_LOAD; if( MMU2::mmu2.Enabled() ) { if( code_seen('P') || code_seen('T') ) { @@ -8602,11 +8603,11 @@ Sigma_Exit: enable_z(); if (code_seen('Z')) { - float z_target = code_value(); - raise_z_above(z_target, false); - } else { - raise_z_above(MIN_Z_FOR_LOAD, false); + z_target = code_value(); } + + // Raise the Z axis + raise_z_above(z_target, false); disable_z(); gcode_M701(fastLoadLength, mmuSlotIndex); @@ -8625,6 +8626,7 @@ Sigma_Exit: */ case 702: { + float z_target = MIN_Z_FOR_UNLOAD; float unloadLength = FILAMENTCHANGE_FINALRETRACT; if (code_seen('U')) { unloadLength = code_value(); @@ -8632,12 +8634,12 @@ Sigma_Exit: if (code_seen('Z')) { - float z_target = code_value(); - raise_z_above(z_target, false); - } else { - raise_z_above(MIN_Z_FOR_UNLOAD, false); + z_target = code_value(); } + // Raise the Z axis + raise_z_above(z_target, false); + if (MMU2::mmu2.Enabled()) { MMU2::mmu2.unload(); } else { From ba7dae5c79e6c52232e5c2fdd4a6d9c7e6efe8c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 16:08:51 +0000 Subject: [PATCH 217/319] PFW-1386 I don't see a reason for these lines So I'm removing them --- Firmware/Marlin_main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d571088c2..1d19fefbc 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8600,7 +8600,6 @@ Sigma_Exit: fastLoadLength = code_value(); } - enable_z(); if (code_seen('Z')) { z_target = code_value(); @@ -8608,7 +8607,6 @@ Sigma_Exit: // Raise the Z axis raise_z_above(z_target, false); - disable_z(); gcode_M701(fastLoadLength, mmuSlotIndex); } From d78c5753992bb155e8e3831f221aa927cf66244a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 17:08:25 +0000 Subject: [PATCH 218/319] PFW-1386 Address should accept hexidecimal values Now these are equal: M707 A255 C1 M707 A0xFF C1 Both address inputs are interpreted as FF --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1d19fefbc..aaa8ca199 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8711,7 +8711,7 @@ Sigma_Exit: if ( MMU2::mmu2.Enabled() ) { if( code_seen('A') ) { - addr = code_value_uint8(); + addr = uint8_t(strtol(strchr_pointer+1, NULL, 0)); } if( code_seen('C') ) { nrbytes = code_value_uint8(); @@ -8742,7 +8742,7 @@ Sigma_Exit: if ( MMU2::mmu2.Enabled() ) { if( code_seen('A') ) { - addr = code_value_uint8(); + addr = uint8_t(strtol(strchr_pointer+1, NULL, 0)); } if( code_seen('X') ) { data = code_value_uint8(); From bb0bbfb45f7c7749c3ff49fdd628a2ad3d7d0da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 17:47:37 +0000 Subject: [PATCH 219/319] PFW-1386 Minor correction to M707 and M708 useage example --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index aaa8ca199..217a979e7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8698,7 +8698,7 @@ Sigma_Exit: M707 [ A | C ] - M707 A14 C2 - Read two bytes from address 0x14 + M707 A0x14 C2 - Read two bytes from register 0x14 #### Parameters - `A` - Address of register in hexidecimal. Default value is 0. @@ -8727,7 +8727,7 @@ Sigma_Exit: M708 [ A | X | C ] - M708 A14 X30 C1 - Write to register 0x14 the value 30 which is 1 byte. + M708 A0x14 X30 C1 - Write to register 0x14 the value 30 which is 1 byte. #### Parameters - `A` - Address of register in hexidecimal. Default value is 0. From 217b537961769994960bfb85cc5c13753992731d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Aug 2022 18:03:36 +0000 Subject: [PATCH 220/319] PFW-1386 Remove old debug message to save space Saves 34 bytes of flash --- Firmware/Marlin_main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 217a979e7..f1cca9457 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3669,8 +3669,6 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float } void gcode_M701(float fastLoadLength, uint8_t mmuSlotIndex){ - printf_P(PSTR("gcode_M701 begin\n")); - FSensorBlockRunout fsBlockRunout; prusa_statistics(22); From 214b6a92208710fe5ce367dcdb012fe6d96bf460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 28 Aug 2022 12:30:34 +0000 Subject: [PATCH 221/319] PFW-1386 M701, M702: Move Z-axis using relative position * Created a new function raise_z() which will move the Z axis by some X millimeters. If plan = false, the function will return the actual travel distance since the move is blocking. * raise_z_above() is refactored to call raise_z() Now the M701 and M702 will move the Z-axis relatively, and also when done, revert the Z axis position when done. This is a similar behavior as in Marlin 2. --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 76 +++++++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 4e8246c3e..de7d7a99a 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -475,6 +475,7 @@ void M600_wait_for_user(float HotendTempBckp); void M600_check_state(float nozzle_temp); void load_filament_final_feed(); void marlin_wait_for_click(); +float raise_z(float delta, bool plan = true); void raise_z_above(float target, bool plan=true); extern "C" void softReset(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f1cca9457..6af4475c3 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2088,16 +2088,14 @@ bool check_commands() { } - -// raise_z_above: slowly raise Z to the requested height -// -// contrarily to a simple move, this function will carefully plan a move -// when the current Z position is unknown. In such cases, stallguard is -// enabled and will prevent prolonged pushing against the Z tops -void raise_z_above(float target, bool plan) +/// @brief Safely move Z-axis by distance delta (mm) +/// @param delta travel distance in mm +/// @param plan plan the move if the axis is homed (non-blocking) +/// @returns The actual travel distance in mm. Endstop may limit the requested move. Note that +/// when plan = true and the printer is homed, the function returns 0. +float raise_z(float delta, bool plan) { - if (current_position[Z_AXIS] >= target) - return; + float travel_z = current_position[Z_AXIS]; // Z needs raising current_position[Z_AXIS] = target; @@ -2113,7 +2111,7 @@ void raise_z_above(float target, bool plan) { // current position is known or very low, it's safe to raise Z if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); - return; + return 0; } // ensure Z is powered in normal mode to overcome initial load @@ -2127,6 +2125,9 @@ void raise_z_above(float target, bool plan) #endif //TMC2130 plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60); st_synchronize(); + + // Get the final travel distance + travel_z = st_get_position_mm(Z_AXIS) - travel_z; #ifdef TMC2130 if (endstop_z_hit_on_purpose()) { @@ -2137,6 +2138,21 @@ void raise_z_above(float target, bool plan) tmc2130_home_exit(); #endif //TMC2130 enable_z_endstop(z_endstop_enabled); + return travel_z; +} + +// raise_z_above: slowly raise Z to the requested height +// +// contrarily to a simple move, this function will carefully plan a move +// when the current Z position is unknown. In such cases, stallguard is +// enabled and will prevent prolonged pushing against the Z tops +void raise_z_above(float target, bool plan) +{ + if (current_position[Z_AXIS] >= target) + return; + + // Use absolute value in case the current position is unknown + raise_z(fabs(current_position[Z_AXIS] - target), plan); } @@ -8593,20 +8609,19 @@ Sigma_Exit: } } - if (code_seen('L')) - { - fastLoadLength = code_value(); - } + if (code_seen('L')) fastLoadLength = code_value(); - if (code_seen('Z')) - { - z_target = code_value(); - } + // Z lift. For safety only allow positive values + if (code_seen('Z')) z_target = fabs(code_value()); // Raise the Z axis - raise_z_above(z_target, false); + float delta = raise_z(z_target, false); + // Load filament gcode_M701(fastLoadLength, mmuSlotIndex); + + // Restore Z axis + raise_z(-delta); } break; @@ -8624,23 +8639,20 @@ Sigma_Exit: { float z_target = MIN_Z_FOR_UNLOAD; float unloadLength = FILAMENTCHANGE_FINALRETRACT; - if (code_seen('U')) { - unloadLength = code_value(); - } + if (code_seen('U')) unloadLength = code_value(); - if (code_seen('Z')) - { - z_target = code_value(); - } + // For safety only allow positive values + if (code_seen('Z')) z_target = fabs(code_value()); // Raise the Z axis - raise_z_above(z_target, false); + float delta = raise_z(z_target, false); - if (MMU2::mmu2.Enabled()) { - MMU2::mmu2.unload(); - } else { - unload_filament(unloadLength, false); - } + // Unload filament + if (MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); + else unload_filament(unloadLength, false); + + // Restore Z axis + raise_z(-delta); } break; From 38952f1f331796c291771323edc71d721bef7b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 28 Aug 2022 12:34:31 +0000 Subject: [PATCH 222/319] PFW-1386 Optimisation: st_synchronize is not needed after raise_z_above Saves 16 bytes of flash --- Firmware/Marlin_main.cpp | 4 ---- Firmware/ultralcd.cpp | 1 - 2 files changed, 5 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 6af4475c3..c5e9c547c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2552,7 +2552,6 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon //if we are homing all axes, first move z higher to protect heatbed/steel sheet if (home_all_axes) { raise_z_above(MESH_HOME_Z_SEARCH); - st_synchronize(); } #ifdef ENABLE_AUTO_BED_LEVELING plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data) @@ -2657,11 +2656,9 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon if(home_z) { #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) raise_z_above(Z_RAISE_BEFORE_HOMING); - st_synchronize(); #endif // defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) #ifdef MESH_BED_LEVELING // If Mesh bed leveling, move X&Y to safe position for home raise_z_above(MESH_HOME_Z_SEARCH); - st_synchronize(); if (!axis_known_position[X_AXIS]) homeaxis(X_AXIS); if (!axis_known_position[Y_AXIS]) homeaxis(Y_AXIS); // 1st mesh bed leveling measurement point, corrected. @@ -3264,7 +3261,6 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) int l_feedmultiply = setup_for_endstop_move(); lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME)); raise_z_above(MESH_HOME_Z_SEARCH); - st_synchronize(); home_xy(); enable_endstops(false); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 684b963a0..f7785127d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6614,7 +6614,6 @@ static bool lcd_selfcheck_axis_sg(uint8_t axis) { raise_z_above(MESH_HOME_Z_SEARCH); - st_synchronize(); tmc2130_home_enter(1 << axis); // first axis length measurement begin From 099c3a1f1f74100afc3b06ea5b7c98494054b445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 28 Aug 2022 13:10:31 +0000 Subject: [PATCH 223/319] PFW-1386 fixup --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f7785127d..467142283 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5262,7 +5262,7 @@ void unload_filament(float unloadLength, bool automatic) raise_z_above(MIN_Z_FOR_SWAP); } - current_position[E_AXIS] -= unloadLength; + current_position[E_AXIS] += unloadLength; plan_buffer_line_curposXYZE(1000 / 60); st_synchronize(); From ff91b4670dd69e23afcf1b9875015c1cc08f93c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 28 Aug 2022 14:25:37 +0000 Subject: [PATCH 224/319] PFW-1386 Use same code for Z-lift in M600 as in M701/M702 This reduces flash usage by 128 bytes! --- Firmware/Marlin_main.cpp | 60 ++++++++-------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c5e9c547c..61d7f8cda 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3456,32 +3456,6 @@ void gcode_M123() } #endif //FANCHECK and TACH_0 or TACH_1 -//! extracted code to compute z_shift for M600 in case of filament change operation -//! requested from fsensors. -//! The function ensures, that the printhead lifts to at least 25mm above the heat bed -//! unlike the previous implementation, which was adding 25mm even when the head was -//! printing at e.g. 24mm height. -//! A safety margin of FILAMENTCHANGE_ZADD is added in all cases to avoid touching -//! the printout. -//! This function is templated to enable fast change of computation data type. -//! @return new z_shift value -template -static T gcode_M600_filament_change_z_shift() -{ -#ifdef FILAMENTCHANGE_ZADD - static_assert(Z_MAX_POS < (255 - FILAMENTCHANGE_ZADD), "Z-range too high, change the T type from uint8_t to uint16_t"); - // avoid floating point arithmetics when not necessary - results in shorter code - T z_shift = T(FILAMENTCHANGE_ZADD); // always move above printout - T ztmp = T( current_position[Z_AXIS] ); - if((ztmp + z_shift) < T(MIN_Z_FOR_SWAP)){ - z_shift = T(MIN_Z_FOR_SWAP) - ztmp; // make sure to be at least 25mm above the heat bed - } - return z_shift; -#else - return T(0); -#endif -} - static void mmu_M600_wait_and_beep() { // Beep and wait for user to remove old filament and prepare new filament for load KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -3582,11 +3556,8 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED); st_synchronize(); - // Lift Z - current_position[Z_AXIS] += z_shift; - clamp_to_software_endstops(current_position); - plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED); - st_synchronize(); + // Raise the Z axis + float delta = raise_z(z_shift, false); // Move XY to side current_position[X_AXIS] = x_position; @@ -3654,14 +3625,13 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float current_position[E_AXIS] += FILAMENTCHANGE_RECFEED; plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); } - + + // Recover Z axis + raise_z(-delta, false); + // Move XY back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); st_synchronize(); - // Move Z back - plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder); - st_synchronize(); - // Set E position to original plan_set_e_position(lastpos[E_AXIS]); @@ -7866,7 +7836,7 @@ Sigma_Exit: - `X` - X position, default 211 - `Y` - Y position, default 0 - - `Z` - relative lift Z, default 2. + - `Z` - relative lift Z, default MIN_Z_FOR_SWAP. - `E` - initial retract, default -2 - `L` - later retract distance for removal, default -80 - `AUTO` - Automatically (only with MMU) @@ -7877,7 +7847,7 @@ Sigma_Exit: float x_position = current_position[X_AXIS]; float y_position = current_position[Y_AXIS]; - float z_shift = 0; // is it necessary to be a float? + float z_shift = MIN_Z_FOR_SWAP; float e_shift_init = 0; float e_shift_late = 0; bool automatic = false; @@ -7906,16 +7876,10 @@ Sigma_Exit: #endif } - //Lift Z - if(code_seen('Z')) - { - z_shift = code_value(); - } - else - { - z_shift = gcode_M600_filament_change_z_shift(); - } - //Move XY to side + // Z lift. For safety only allow positive values + if (code_seen('Z')) z_shift = fabs(code_value()); + + //Move XY to side if(code_seen('X')) { x_position = code_value(); From 0a90c7ffda1038383dabfe5ed082f14e421725a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 28 Aug 2022 14:51:00 +0000 Subject: [PATCH 225/319] PFW-1386 Use Marlin 2 unload sequence for single material The current unload sequence does not give good results. The Marlin 2 sequence looks good on my end. This can be later used to improve M600 Added all the constants from Marlin 2 --- Firmware/Configuration_adv.h | 56 ++++++++++++++++++++++++++++++++++++ Firmware/ultralcd.cpp | 16 ++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index c6f8a81f0..d115e558d 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -346,6 +346,62 @@ const unsigned int dropsegments=5; //everything with less than this number of st // 2nd and 3rd byte (LSB first) contains a 16bit length of a command including its preceding comments. #define CMDHDRSIZE 3 +/** + * Advanced Pause for Filament Change + * - Adds the G-code M600 Filament Change to initiate a filament change. + * - This feature is required for the default FILAMENT_RUNOUT_SCRIPT. + * + * Requirements: + * - For Filament Change parking enable and configure NOZZLE_PARK_FEATURE. + * - For user interaction enable an LCD display, HOST_PROMPT_SUPPORT, or EMERGENCY_PARSER. + * + * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park. + */ + +#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. +#define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. + // This short retract is done immediately, before parking the nozzle. +#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. +#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. +#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. + // For Bowden, the full length of the tube and nozzle. + // For direct drive, the full length of the nozzle. + // Set to 0 for manual unloading. +#define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. +#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. + // 0 to disable start loading and skip to fast load only +#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. +#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. +#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. + // For Bowden, the full length of the tube and nozzle. + // For direct drive, the full length of the nozzle. +//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. +#define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate. +#define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading. + // Set to 0 for manual extrusion. + // Filament can be extruded repeatedly from the Filament Change menu + // until extrusion is consistent, and to purge old filament. +#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park. +//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused. + + // Filament Unload does a Retract, Delay, and Purge first: +#define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length. +#define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract. +#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. +#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload + +#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. +#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. +#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. +//#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. +//#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing. + +//#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. +//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change + +//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. +//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) + // Firmware based and LCD controlled retract // M207 and M208 can be used to define parameters for the retraction. diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 467142283..1e863f133 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5262,8 +5262,22 @@ void unload_filament(float unloadLength, bool automatic) raise_z_above(MIN_Z_FOR_SWAP); } + // Retract filament + current_position[E_AXIS] += -FILAMENT_UNLOAD_PURGE_RETRACT; + plan_buffer_line_curposXYZE(PAUSE_PARK_RETRACT_FEEDRATE); + st_synchronize(); + + // Wait for filament to cool + delay_keep_alive(FILAMENT_UNLOAD_PURGE_DELAY); + + // Quickly purge + current_position[E_AXIS] += (FILAMENT_UNLOAD_PURGE_RETRACT + FILAMENT_UNLOAD_PURGE_LENGTH); + plan_buffer_line_curposXYZE(FILAMENT_UNLOAD_PURGE_FEEDRATE); + st_synchronize(); + + // Configurable length current_position[E_AXIS] += unloadLength; - plan_buffer_line_curposXYZE(1000 / 60); + plan_buffer_line_curposXYZE(FILAMENT_CHANGE_UNLOAD_FEEDRATE); st_synchronize(); lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT)); From fa6e30389af2ca250a724c38891d37f7dbded038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Mon, 29 Aug 2022 06:55:22 +0000 Subject: [PATCH 226/319] PFW-1386 Add a TODO When recovering the Z-axis in M600, we'd like the Z move to happen after the XY move. --- Firmware/Marlin_main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 61d7f8cda..9698a124f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3626,6 +3626,9 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); } + // TODO: Move the Z-axis after XY, not before. Currently this does not work + // and raise_z seems to have no affect after XY move for unknown reasons. + // This needs to be looked into. // Recover Z axis raise_z(-delta, false); From 4a1479b5bc73d74a33cd840542938b9696717e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 30 Aug 2022 17:32:45 +0000 Subject: [PATCH 227/319] PFW-1386 Clamp Z-axis when homed --- Firmware/Marlin_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 9698a124f..4f5b13bfb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2110,6 +2110,7 @@ float raise_z(float delta, bool plan) if (axis_known_position[Z_AXIS] || z_min_endstop) { // current position is known or very low, it's safe to raise Z + clamp_to_software_endstops(current_position); if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); return 0; } From f409426bdc015f39d31606371d82c77a3797c0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 30 Aug 2022 20:39:04 +0000 Subject: [PATCH 228/319] PFW-1386 Refactor raise_z Removed the "plan" parameter. We were incorrectly returning from the function if the printer was homed, but plan = false. This would leave current_position with an incorrect value If the printer is homed => finish the move and return the travel distance If the printer is not homed => rely on end stop to prevent damage, return travel distance even if the endstop stopped the move. --- Firmware/Marlin.h | 4 +-- Firmware/Marlin_main.cpp | 76 +++++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index de7d7a99a..43ace4ef9 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -475,8 +475,8 @@ void M600_wait_for_user(float HotendTempBckp); void M600_check_state(float nozzle_temp); void load_filament_final_feed(); void marlin_wait_for_click(); -float raise_z(float delta, bool plan = true); -void raise_z_above(float target, bool plan=true); +float raise_z(float delta); +void raise_z_above(float target); extern "C" void softReset(); void stack_error(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4f5b13bfb..3ade776fd 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2090,10 +2090,8 @@ bool check_commands() { /// @brief Safely move Z-axis by distance delta (mm) /// @param delta travel distance in mm -/// @param plan plan the move if the axis is homed (non-blocking) -/// @returns The actual travel distance in mm. Endstop may limit the requested move. Note that -/// when plan = true and the printer is homed, the function returns 0. -float raise_z(float delta, bool plan) +/// @returns The actual travel distance in mm. Endstop may limit the requested move. +float raise_z(float delta) { float travel_z = current_position[Z_AXIS]; @@ -2111,34 +2109,38 @@ float raise_z(float delta, bool plan) { // current position is known or very low, it's safe to raise Z clamp_to_software_endstops(current_position); - if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); - return 0; + plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]); + st_synchronize(); + + // Get the final travel distance + travel_z = current_position[Z_AXIS] - travel_z; + } else { + // ensure Z is powered in normal mode to overcome initial load + enable_z(); + st_synchronize(); + + // rely on crashguard to limit damage + bool z_endstop_enabled = enable_z_endstop(true); +#ifdef TMC2130 + tmc2130_home_enter(Z_AXIS_MASK); +#endif //TMC2130 + plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60); + st_synchronize(); + + // Get the final travel distance + travel_z = current_position[Z_AXIS] - travel_z; +#ifdef TMC2130 + if (endstop_z_hit_on_purpose()) + { + // not necessarily exact, but will avoid further vertical moves + current_position[Z_AXIS] = max_pos[Z_AXIS]; + plan_set_position_curposXYZE(); + } + tmc2130_home_exit(); +#endif //TMC2130 + enable_z_endstop(z_endstop_enabled); } - // ensure Z is powered in normal mode to overcome initial load - enable_z(); - st_synchronize(); - - // rely on crashguard to limit damage - bool z_endstop_enabled = enable_z_endstop(true); -#ifdef TMC2130 - tmc2130_home_enter(Z_AXIS_MASK); -#endif //TMC2130 - plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60); - st_synchronize(); - - // Get the final travel distance - travel_z = st_get_position_mm(Z_AXIS) - travel_z; -#ifdef TMC2130 - if (endstop_z_hit_on_purpose()) - { - // not necessarily exact, but will avoid further vertical moves - current_position[Z_AXIS] = max_pos[Z_AXIS]; - plan_set_position_curposXYZE(); - } - tmc2130_home_exit(); -#endif //TMC2130 - enable_z_endstop(z_endstop_enabled); return travel_z; } @@ -2147,13 +2149,13 @@ float raise_z(float delta, bool plan) // contrarily to a simple move, this function will carefully plan a move // when the current Z position is unknown. In such cases, stallguard is // enabled and will prevent prolonged pushing against the Z tops -void raise_z_above(float target, bool plan) +void raise_z_above(float target) { if (current_position[Z_AXIS] >= target) return; // Use absolute value in case the current position is unknown - raise_z(fabs(current_position[Z_AXIS] - target), plan); + raise_z(fabs(current_position[Z_AXIS] - target)); } @@ -3558,7 +3560,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float st_synchronize(); // Raise the Z axis - float delta = raise_z(z_shift, false); + float delta = raise_z(z_shift); // Move XY to side current_position[X_AXIS] = x_position; @@ -3631,7 +3633,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float // and raise_z seems to have no affect after XY move for unknown reasons. // This needs to be looked into. // Recover Z axis - raise_z(-delta, false); + raise_z(-delta); // Move XY back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); @@ -8579,7 +8581,7 @@ Sigma_Exit: if (code_seen('Z')) z_target = fabs(code_value()); // Raise the Z axis - float delta = raise_z(z_target, false); + float delta = raise_z(z_target); // Load filament gcode_M701(fastLoadLength, mmuSlotIndex); @@ -8609,11 +8611,11 @@ Sigma_Exit: if (code_seen('Z')) z_target = fabs(code_value()); // Raise the Z axis - float delta = raise_z(z_target, false); + float delta = raise_z(z_target); // Unload filament if (MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); - else unload_filament(unloadLength, false); + else unload_filament(unloadLength); // Restore Z axis raise_z(-delta); From 2616df66af8046630fe1488c4b1048e3a0d0f1bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 30 Aug 2022 20:53:19 +0000 Subject: [PATCH 229/319] PFW-1386 st_get_position_mm() is more accurate when using endstops (not homed printer) If the endstops kick in, then st_get_position_mm shows the actual travel distance. current_position[Z-AXIS] does not get updated correctly thus we cannot use it when unhomed. current_position[Z-AXIS] is later set to Z_MAX_POS, we cannot use that either to calculate the travel distance --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 3ade776fd..048344ffe 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2128,7 +2128,7 @@ float raise_z(float delta) st_synchronize(); // Get the final travel distance - travel_z = current_position[Z_AXIS] - travel_z; + travel_z = st_get_position_mm(Z_AXIS) - travel_z; #ifdef TMC2130 if (endstop_z_hit_on_purpose()) { From dfddf3eaa5aa23e3e7d14063723c2a921660536e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 7 Aug 2022 13:25:58 +0000 Subject: [PATCH 230/319] Initial commit for MMU statistics --- Firmware/mmu2.cpp | 4 ++++ Firmware/mmu2.h | 5 +++++ Firmware/mmu2_protocol_logic.cpp | 21 +++++++++++++++++++++ Firmware/mmu2_protocol_logic.h | 14 +++++++++++++- Firmware/ultralcd.cpp | 26 ++++++++++++++++++-------- 5 files changed, 61 insertions(+), 9 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index a0c838220..58c2f4f85 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -332,6 +332,10 @@ bool MMU2::tool_change(char code, uint8_t slot) { return true; } +void MMU2::get_statistics() { + logic.Statistics(); +} + uint8_t MMU2::get_current_tool() const { return extruder == MMU2_NO_TOOL ? (uint8_t)FILAMENT_UNKNOWN : extruder; } diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 5a6736e70..7c27f84b6 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -134,6 +134,9 @@ public: /// @returns false if the operation cannot be performed (Stopped) bool cut_filament(uint8_t index); + /// Issue a planned request for statistics data from MMU + void get_statistics(); + /// Issue a Try-Load command /// It behaves very similarly like a ToolChange, but it doesn't load the filament /// all the way down to the nozzle. The sole purpose of this operation @@ -161,6 +164,8 @@ public: /// @returns current state of FINDA (true=filament present, false=filament not present) inline bool FindaDetectsFilament()const { return logic.FindaPressed(); } + inline uint16_t TotalFailStatistics()const { return logic.FailStatistics(); } + /// @returns Current error code inline ErrorCode MMUCurrentErrorCode() const { return logic.Error(); } diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 480a7af20..4ad998348 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -18,6 +18,14 @@ StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, Sta return finishedRV; } +StepStatus ProtocolLogicPartBase::ProcessStatisticsReqSent(StepStatus finishedRV, State nextState){ + if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + logic->fail_statistics = logic->rsp.paramValue; + state = nextState; + return finishedRV; +} + void ProtocolLogicPartBase::CheckAndReportAsyncEvents(){ // even when waiting for a query period, we need to report a change in filament sensor's state // - it is vital for a precise synchronization of moves of the printer and the MMU @@ -126,6 +134,10 @@ void ProtocolLogic::SendMsg(RequestMsg rq) { uart->write(txbuff, len); LogRequestMsg(txbuff, len); RecordUARTActivity(); + if (rq.code == RequestMsgCodes::Version && rq.value == 3 ){ + // Set the state so the value sent by MMU is read later + currentState->state = currentState->State::S3Sent; + } } void StartSeq::Restart() { @@ -311,6 +323,8 @@ StepStatus Command::Step() { return expmsg; SendFINDAQuery(); break; + case State::S3Sent: + return ProcessStatisticsReqSent(Processing, State::Wait); case State::FINDAReqSent: return ProcessFINDAReqSent(Processing, State::Wait); case State::ButtonSent:{ @@ -388,6 +402,8 @@ StepStatus Idle::Step() { SendFINDAQuery(); return Processing; break; + case State::S3Sent: + return ProcessStatisticsReqSent(Finished, State::Ready); case State::FINDAReqSent: return ProcessFINDAReqSent(Finished, State::Ready); case State::ButtonSent:{ @@ -432,6 +448,7 @@ ProtocolLogic::ProtocolLogic(MMU2Serial *uart) , buttonCode(NoButton) , lastFSensor((uint8_t)WhereIsFilament()) , findaPressed(false) + , fail_statistics(0) , mmuFwVersionMajor(0) , mmuFwVersionMinor(0) , mmuFwVersionBuild(0) @@ -453,6 +470,10 @@ void ProtocolLogic::ToolChange(uint8_t slot) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Tool, slot)); } +void ProtocolLogic::Statistics() { + PlanGenericRequest(RequestMsg(RequestMsgCodes::Version, 3)); +} + void ProtocolLogic::UnloadFilament() { PlanGenericRequest(RequestMsg(RequestMsgCodes::Unload, 0)); } diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 609e20f04..5469146d1 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -80,6 +80,7 @@ protected: S0Sent, // beware - due to optimization reasons these SxSent must be kept one after another S1Sent, S2Sent, + S3Sent, QuerySent, CommandSent, FilamentSensorStateSent, @@ -96,7 +97,12 @@ protected: /// @param finishedRV returned value in case the message was successfully received and processed /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed StepStatus ProcessFINDAReqSent(StepStatus finishedRV, State nextState); - + + /// @returns the status of processing of the statistics query response + /// @param finishedRV returned value in case the message was successfully received and processed + /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed + StepStatus ProcessStatisticsReqSent(StepStatus finishedRV, State nextState); + /// Called repeatedly while waiting for a query (Q0) period. /// All event checks to report immediately from the printer to the MMU shall be done in this method. /// So far, the only such a case is the filament sensor, but there can be more like this in the future. @@ -221,6 +227,7 @@ public: // Issue commands to the MMU void ToolChange(uint8_t slot); + void Statistics(); void UnloadFilament(); void LoadFilament(uint8_t slot); void EjectFilament(uint8_t slot); @@ -251,6 +258,10 @@ public: return findaPressed; } + inline uint16_t FailStatistics() const { + return fail_statistics; + } + inline uint8_t MmuFwVersionMajor() const { return mmuFwVersionMajor; } @@ -334,6 +345,7 @@ private: uint8_t lastFSensor; ///< last state of filament sensor bool findaPressed; + uint16_t fail_statistics; uint8_t mmuFwVersionMajor, mmuFwVersionMinor; uint8_t mmuFwVersionBuild; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 1e863f133..188f48610 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1207,15 +1207,25 @@ static void lcd_menu_fails_stats_mmu_print() //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_mmu_total() { -// @@TODO mmu_command(MmuCmd::S3); - lcd_timeoutToStatus.stop(); //infinite timeout + static uint8_t first_time_opening_menu = 0; + if (!first_time_opening_menu) { + // Send S3 Query; MMU responds with "S3 A%u" where %u is the number of drive errors + MMU2::mmu2.get_statistics(); + first_time_opening_menu = 1; + } + lcd_timeoutToStatus.stop(); //infinite timeout lcd_home(); -// lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), -// _T(MSG_TOTAL_FAILURES), -// _T(MSG_MMU_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_FAIL_TOT) ), -// _T(MSG_MMU_LOAD_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) ), -// _i("MMU power fails"), clamp999( mmu_power_failures )); ////MSG_MMU_POWER_FAILS c=15 - menu_back_if_clicked_fb(); + lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n"/* " %-16.16S%-3d\n" " %-16.16S%-3d"*/), + _T(MSG_TOTAL_FAILURES), + _T(MSG_MMU_FAILS), clamp999( MMU2::mmu2.TotalFailStatistics() ));//, + //_T(MSG_MMU_LOAD_FAILS), clamp999( eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) ), + //_i("MMU power fails"), clamp999( mmu_power_failures )); ////MSG_MMU_POWER_FAILS c=15 + if (lcd_clicked()) + { + first_time_opening_menu = 0; + lcd_quick_feedback(); + menu_back(); + } } #if defined(TMC2130) && defined(FILAMENT_SENSOR) From 05ad1dc2f6514b9be8079effaf74cc799f161801 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 24 Aug 2022 18:59:31 +0200 Subject: [PATCH 231/319] Refactoring of protocol logic to lower RAM consumption Should also place the statistics request to the right spot in the state machine. --- Firmware/mmu2_protocol_logic.cpp | 454 ++++++++++++++++--------------- Firmware/mmu2_protocol_logic.h | 246 +++++++---------- 2 files changed, 325 insertions(+), 375 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 4ad998348..88fd330bc 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -10,56 +10,46 @@ static constexpr uint8_t supportedMmuFWVersionMajor = 2; static constexpr uint8_t supportedMmuFWVersionMinor = 1; static constexpr uint8_t supportedMmuFWVersionBuild = 1; -StepStatus ProtocolLogicPartBase::ProcessFINDAReqSent(StepStatus finishedRV, State nextState){ - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - logic->findaPressed = logic->rsp.paramValue; - state = nextState; - return finishedRV; -} - -StepStatus ProtocolLogicPartBase::ProcessStatisticsReqSent(StepStatus finishedRV, State nextState){ - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - logic->fail_statistics = logic->rsp.paramValue; - state = nextState; - return finishedRV; -} - -void ProtocolLogicPartBase::CheckAndReportAsyncEvents(){ +void ProtocolLogic::CheckAndReportAsyncEvents(){ // even when waiting for a query period, we need to report a change in filament sensor's state // - it is vital for a precise synchronization of moves of the printer and the MMU uint8_t fs = (uint8_t)WhereIsFilament(); - if( fs != logic->lastFSensor ){ + if( fs != lastFSensor ){ SendAndUpdateFilamentSensor(); } } -void ProtocolLogicPartBase::SendQuery(){ - logic->SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); - state = State::QuerySent; +void ProtocolLogic::SendQuery(){ + SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); + scopeState = ScopeState::QuerySent; } -void ProtocolLogicPartBase::SendFINDAQuery(){ - logic->SendMsg(RequestMsg(RequestMsgCodes::Finda, 0 ) ); - state = State::FINDAReqSent; +void ProtocolLogic::SendFINDAQuery(){ + SendMsg(RequestMsg(RequestMsgCodes::Finda, 0 ) ); + scopeState = ScopeState::FINDAReqSent; } -void ProtocolLogicPartBase::SendAndUpdateFilamentSensor(){ - logic->SendMsg(RequestMsg(RequestMsgCodes::FilamentSensor, logic->lastFSensor = (uint8_t)WhereIsFilament() ) ); - state = State::FilamentSensorStateSent; +void ProtocolLogic::SendAndUpdateFilamentSensor(){ + SendMsg(RequestMsg(RequestMsgCodes::FilamentSensor, lastFSensor = (uint8_t)WhereIsFilament() ) ); + scopeState = ScopeState::FilamentSensorStateSent; } -void ProtocolLogicPartBase::SendButton(uint8_t btn){ - logic->SendMsg(RequestMsg(RequestMsgCodes::Button, btn)); - state = State::ButtonSent; +void ProtocolLogic::SendButton(uint8_t btn){ + SendMsg(RequestMsg(RequestMsgCodes::Button, btn)); + scopeState = ScopeState::ButtonSent; } -void ProtocolLogicPartBase::SendVersion(uint8_t stage) { - logic->SendMsg(RequestMsg(RequestMsgCodes::Version, stage)); - state = (State)((uint_fast8_t)State::S0Sent + stage); +void ProtocolLogic::SendVersion(uint8_t stage) { + SendMsg(RequestMsg(RequestMsgCodes::Version, stage)); + scopeState = (ScopeState)((uint_fast8_t)ScopeState::S0Sent + stage); } +void ProtocolLogic::SendReadRegister(uint8_t index, ScopeState nextState) { + SendMsg(RequestMsg(RequestMsgCodes::Read, index)); + scopeState = nextState; +} + + // searches for "ok\n" in the incoming serial data (that's the usual response of the old MMU FW) struct OldMMUFWDetector { uint8_t ok; @@ -113,7 +103,7 @@ StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { break; } } - // otherwise [[fallthrough]] + [[fallthrough]]; // otherwise default: RecordUARTActivity(); // something has happened on the UART, update the timeout record return ProtocolError; @@ -134,30 +124,39 @@ void ProtocolLogic::SendMsg(RequestMsg rq) { uart->write(txbuff, len); LogRequestMsg(txbuff, len); RecordUARTActivity(); - if (rq.code == RequestMsgCodes::Version && rq.value == 3 ){ - // Set the state so the value sent by MMU is read later - currentState->state = currentState->State::S3Sent; - } } -void StartSeq::Restart() { +void ProtocolLogic::StartSeqRestart() { retries = maxRetries; SendVersion(0); } -StepStatus StartSeq::Step() { - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; +void ProtocolLogic::DelayedRestartRestart() { + scopeState = ScopeState::RecoveringProtocolError; +} +void ProtocolLogic::CommandRestart() { + scopeState = ScopeState::CommandSent; + SendMsg(rq); +} + +void ProtocolLogic::IdleRestart() { + scopeState = ScopeState::Ready; +} + +StepStatus ProtocolLogic::StartSeqStep(){ + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + // solve initial handshake - switch (state) { - case State::S0Sent: // received response to S0 - major - if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 0 ){ + switch (scopeState) { + case ScopeState::S0Sent: // received response to S0 - major + if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 0 ){ // got a response to something else - protocol corruption probably, repeat the query SendVersion(0); } else { - logic->mmuFwVersionMajor = logic->rsp.paramValue; - if (logic->mmuFwVersionMajor != supportedMmuFWVersionMajor) { + mmuFwVersionMajor = rsp.paramValue; + if (mmuFwVersionMajor != supportedMmuFWVersionMajor) { if( --retries == 0){ // if (--retries == 0) has a specific meaning - since we are losing bytes on the UART for no obvious reason // it can happen, that the reported version number is not complete - i.e. "1" instead of "19" @@ -169,18 +168,18 @@ StepStatus StartSeq::Step() { SendVersion(0); } } else { - logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking + dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking SendVersion(1); } } break; - case State::S1Sent: // received response to S1 - minor - if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 1 ){ + case ScopeState::S1Sent: // received response to S1 - minor + if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 1 ){ // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? SendVersion(1); } else { - logic->mmuFwVersionMinor = logic->rsp.paramValue; - if (logic->mmuFwVersionMinor != supportedMmuFWVersionMinor){ + mmuFwVersionMinor = rsp.paramValue; + if (mmuFwVersionMinor != supportedMmuFWVersionMinor){ if( --retries == 0) { return VersionMismatch; } else { @@ -191,13 +190,13 @@ StepStatus StartSeq::Step() { } } break; - case State::S2Sent: // received response to S2 - revision - if( logic->rsp.request.code != RequestMsgCodes::Version || logic->rsp.request.value != 2 ){ + case ScopeState::S2Sent: // received response to S2 - revision + if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 2 ){ // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? SendVersion(2); } else { - logic->mmuFwVersionBuild = logic->rsp.paramValue; - if (logic->mmuFwVersionBuild < supportedMmuFWVersionBuild){ + mmuFwVersionBuild = rsp.paramValue; + if (mmuFwVersionBuild < supportedMmuFWVersionBuild){ if( --retries == 0 ) { return VersionMismatch; } else { @@ -211,37 +210,33 @@ StepStatus StartSeq::Step() { } } break; - case State::FilamentSensorStateSent: - state = State::Ready; - logic->SwitchFromStartToIdle(); + case ScopeState::FilamentSensorStateSent: + scopeState = ScopeState::Ready; + SwitchFromStartToIdle(); return Processing; // Returning Finished is not a good idea in case of a fast error recovery // - it tells the printer, that the command which experienced a protocol error and recovered successfully actually terminated. // In such a case we must return "Processing" in order to keep the MMU state machine running and prevent the printer from executing next G-codes. break; - case State::RecoveringProtocolError: + case ScopeState::RecoveringProtocolError: // timer elapsed, clear the input buffer - while (logic->uart->read() >= 0) - ; - SendVersion(0); + while (uart->read() >= 0) + ; + SendVersion(0); break; default: return VersionMismatch; } - return Processing; + return Finished; } -void DelayedRestart::Restart() { - state = State::RecoveringProtocolError; -} - -StepStatus DelayedRestart::Step() { - switch (state) { - case State::RecoveringProtocolError: - if (logic->Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on - while (logic->uart->read() != -1) +StepStatus ProtocolLogic::DelayedRestartStep() { + switch (scopeState) { + case ScopeState::RecoveringProtocolError: + if (Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on + while (uart->read() != -1) ; // clear the input buffer // switch to StartSeq - logic->Start(); + Start(); } return Processing; break; @@ -251,34 +246,10 @@ StepStatus DelayedRestart::Step() { return Finished; } -void Command::Restart() { - state = State::CommandSent; - logic->SendMsg(logic->command.rq); -} - -StepStatus Command::Step() { - switch (state) { - case State::CommandSent: { - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - - switch (logic->rsp.paramCode) { // the response should be either accepted or rejected - case ResponseMsgParamCodes::Accepted: - logic->progressCode = ProgressCode::OK; - logic->errorCode = ErrorCode::RUNNING; - state = State::Wait; - break; - case ResponseMsgParamCodes::Rejected: - // rejected - should normally not happen, but report the error up - logic->progressCode = ProgressCode::OK; - logic->errorCode = ErrorCode::PROTOCOL_ERROR; - return CommandRejected; - default: - return ProtocolError; - } - } break; - case State::Wait: - if (logic->Elapsed(heartBeatPeriod)) { +StepStatus ProtocolLogic::CommandStep() { + switch (scopeState) { + case ScopeState::Wait: + if (Elapsed(heartBeatPeriod)) { SendQuery(); } else { // even when waiting for a query period, we need to report a change in filament sensor's state @@ -286,20 +257,39 @@ StepStatus Command::Step() { CheckAndReportAsyncEvents(); } break; - case State::QuerySent: - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + case ScopeState::CommandSent: { + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + + switch (rsp.paramCode) { // the response should be either accepted or rejected + case ResponseMsgParamCodes::Accepted: + progressCode = ProgressCode::OK; + errorCode = ErrorCode::RUNNING; + scopeState = ScopeState::Wait; + break; + case ResponseMsgParamCodes::Rejected: + // rejected - should normally not happen, but report the error up + progressCode = ProgressCode::OK; + errorCode = ErrorCode::PROTOCOL_ERROR; + return CommandRejected; + default: + return ProtocolError; + } + } break; + case ScopeState::QuerySent: + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; [[fallthrough]]; - case State::ContinueFromIdle: - switch (logic->rsp.paramCode) { + case ScopeState::ContinueFromIdle: + switch (rsp.paramCode) { case ResponseMsgParamCodes::Processing: - logic->progressCode = static_cast(logic->rsp.paramValue); - logic->errorCode = ErrorCode::OK; + progressCode = static_cast(rsp.paramValue); + errorCode = ErrorCode::OK; SendAndUpdateFilamentSensor(); // keep on reporting the state of fsensor regularly break; case ResponseMsgParamCodes::Error: // in case of an error the progress code remains as it has been before - logic->errorCode = static_cast(logic->rsp.paramValue); + errorCode = static_cast(rsp.paramValue); // keep on reporting the state of fsensor regularly even in command error state // - the MMU checks FINDA and fsensor even while recovering from errors SendAndUpdateFilamentSensor(); @@ -307,118 +297,126 @@ StepStatus Command::Step() { case ResponseMsgParamCodes::Button: // The user pushed a button on the MMU. Save it, do what we need to do // to prepare, then pass it back to the MMU so it can work its magic. - logic->buttonCode = static_cast(logic->rsp.paramValue); + buttonCode = static_cast(rsp.paramValue); SendAndUpdateFilamentSensor(); return ButtonPushed; case ResponseMsgParamCodes::Finished: - logic->progressCode = ProgressCode::OK; - state = State::Ready; + progressCode = ProgressCode::OK; + scopeState = ScopeState::Ready; return Finished; default: return ProtocolError; } break; - case State::FilamentSensorStateSent: - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + case ScopeState::FilamentSensorStateSent: + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; SendFINDAQuery(); - break; - case State::S3Sent: - return ProcessStatisticsReqSent(Processing, State::Wait); - case State::FINDAReqSent: - return ProcessFINDAReqSent(Processing, State::Wait); - case State::ButtonSent:{ - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + scopeState = ScopeState::FINDAReqSent; + return Processing; + case ScopeState::FINDAReqSent: + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; - if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { + SendReadRegister(3, ScopeState::StatisticsSent); + scopeState = ScopeState::StatisticsSent; + return Processing; + case ScopeState::StatisticsSent: + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + scopeState = ScopeState::Wait; + return Processing; + case ScopeState::ButtonSent: + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + return expmsg; + if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { // Button was accepted, decrement the retry. mmu2.DecrementRetryAttempts(); } SendAndUpdateFilamentSensor(); - } break; + break; default: return ProtocolError; } return Processing; } -void Idle::Restart() { - state = State::Ready; -} - -StepStatus Idle::Step() { - switch (state) { - case State::Ready: // check timeout - if (logic->Elapsed(heartBeatPeriod)) { +StepStatus ProtocolLogic::IdleStep() { + if(scopeState == ScopeState::Ready){ // check timeout + if (Elapsed(heartBeatPeriod)) { SendQuery(); return Processing; } - break; - case State::QuerySent: // check UART - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) + } else { + if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) return expmsg; - // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. - // That causes no issues here, we just need to switch to Command processing and continue there from now on. - // The usual response in this case should be some command and "F" - finished - that confirms we are in an Idle state even on the MMU side. - switch( logic->rsp.request.code ){ - case RequestMsgCodes::Cut: - case RequestMsgCodes::Eject: - case RequestMsgCodes::Load: - case RequestMsgCodes::Mode: - case RequestMsgCodes::Tool: - case RequestMsgCodes::Unload: - if( logic->rsp.paramCode != ResponseMsgParamCodes::Finished ){ - logic->SwitchFromIdleToCommand(); - return Processing; - } - break; - case RequestMsgCodes::Reset: - // this one is kind of special - // we do not transfer to any "running" command (i.e. we stay in Idle), - // but in case there is an error reported we must make sure it gets propagated - switch( logic->rsp.paramCode ){ - case ResponseMsgParamCodes::Button: - // The user pushed a button on the MMU. Save it, do what we need to do - // to prepare, then pass it back to the MMU so it can work its magic. - logic->buttonCode = static_cast(logic->rsp.paramValue); - SendFINDAQuery(); - return ButtonPushed; - case ResponseMsgParamCodes::Processing: - // @@TODO we may actually use this branch to report progress of manual operation on the MMU - // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector - // For now let's behave just like "finished" - case ResponseMsgParamCodes::Finished: - logic->errorCode = ErrorCode::OK; + + switch (scopeState) { + case ScopeState::QuerySent: // check UART + // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. + // That causes no issues here, we just need to switch to Command processing and continue there from now on. + // The usual response in this case should be some command and "F" - finished - that confirms we are in an Idle state even on the MMU side. + switch( rsp.request.code ){ + case RequestMsgCodes::Cut: + case RequestMsgCodes::Eject: + case RequestMsgCodes::Load: + case RequestMsgCodes::Mode: + case RequestMsgCodes::Tool: + case RequestMsgCodes::Unload: + if( rsp.paramCode != ResponseMsgParamCodes::Finished ){ + SwitchFromIdleToCommand(); + return Processing; + } + break; + case RequestMsgCodes::Reset: + // this one is kind of special + // we do not transfer to any "running" command (i.e. we stay in Idle), + // but in case there is an error reported we must make sure it gets propagated + switch( rsp.paramCode ){ + case ResponseMsgParamCodes::Button: + // The user pushed a button on the MMU. Save it, do what we need to do + // to prepare, then pass it back to the MMU so it can work its magic. + buttonCode = static_cast(rsp.paramValue); + SendFINDAQuery(); + return ButtonPushed; + case ResponseMsgParamCodes::Processing: + // @@TODO we may actually use this branch to report progress of manual operation on the MMU + // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector + // For now let's behave just like "finished" + case ResponseMsgParamCodes::Finished: + errorCode = ErrorCode::OK; + break; + default: + errorCode = static_cast(rsp.paramValue); + SendFINDAQuery(); // continue Idle state without restarting the communication + return CommandError; + } break; default: - logic->errorCode = static_cast(logic->rsp.paramValue); - SendFINDAQuery(); // continue Idle state without restarting the communication - return CommandError; + return ProtocolError; } + SendFINDAQuery(); + return Processing; + break; + case ScopeState::FINDAReqSent: + SendReadRegister(3, ScopeState::StatisticsSent); + scopeState = ScopeState::StatisticsSent; + return Processing; + case ScopeState::StatisticsSent: + failStatistics = rsp.paramValue; + scopeState = ScopeState::Ready; + return Processing; + case ScopeState::ButtonSent: + if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { + // Button was accepted, decrement the retry. + mmu2.DecrementRetryAttempts(); + } + SendFINDAQuery(); break; default: return ProtocolError; } - SendFINDAQuery(); - return Processing; - break; - case State::S3Sent: - return ProcessStatisticsReqSent(Finished, State::Ready); - case State::FINDAReqSent: - return ProcessFINDAReqSent(Finished, State::Ready); - case State::ButtonSent:{ - if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) { - // Button was accepted, decrement the retry. - mmu2.DecrementRetryAttempts(); - } - SendFINDAQuery(); - } break; - default: - return ProtocolError; } - + // The "return Finished" in this state machine requires a bit of explanation: // The Idle state either did nothing (still waiting for the heartbeat timeout) // or just successfully received the answer to Q0, whatever that was. @@ -430,12 +428,8 @@ StepStatus Idle::Step() { } ProtocolLogic::ProtocolLogic(MMU2Serial *uart) - : stopped(this) - , startSeq(this) - , delayedRestart(this) - , idle(this) - , command(this) - , currentState(&stopped) + : currentScope(Scope::Stopped) + , scopeState(ScopeState::Ready) , plannedRq(RequestMsgCodes::unknown, 0) , lastUARTActivityMs(0) , dataTO() @@ -448,7 +442,7 @@ ProtocolLogic::ProtocolLogic(MMU2Serial *uart) , buttonCode(NoButton) , lastFSensor((uint8_t)WhereIsFilament()) , findaPressed(false) - , fail_statistics(0) + , failStatistics(0) , mmuFwVersionMajor(0) , mmuFwVersionMinor(0) , mmuFwVersionBuild(0) @@ -456,14 +450,14 @@ ProtocolLogic::ProtocolLogic(MMU2Serial *uart) void ProtocolLogic::Start() { state = State::InitSequence; - currentState = &startSeq; + currentScope = Scope::StartSeq; protocol.ResetResponseDecoder(); // important - finished delayed restart relies on this - startSeq.Restart(); + StartSeqRestart(); } void ProtocolLogic::Stop() { state = State::Stopped; - currentState = &stopped; + currentScope = Scope::Stopped; } void ProtocolLogic::ToolChange(uint8_t slot) { @@ -504,7 +498,7 @@ void ProtocolLogic::Home(uint8_t mode){ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { plannedRq = rq; - if( ! currentState->ExpectsResponse() ){ + if( ! ExpectsResponse() ){ ActivatePlannedRequest(); } // otherwise wait for an empty window to activate the request } @@ -512,39 +506,57 @@ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { bool ProtocolLogic::ActivatePlannedRequest(){ if( plannedRq.code == RequestMsgCodes::Button ){ // only issue the button to the MMU and do not restart the state machines - currentState->SendButton(plannedRq.value); + SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; } else if( plannedRq.code != RequestMsgCodes::unknown ){ - currentState = &command; - command.SetRequestMsg(plannedRq); + currentScope = Scope::Command; + SetRequestMsg(plannedRq); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); - command.Restart(); + CommandRestart(); return true; } return false; } void ProtocolLogic::SwitchFromIdleToCommand(){ - currentState = &command; - command.SetRequestMsg(rsp.request); + currentScope = Scope::Command; + SetRequestMsg(rsp.request); // we are recovering from a communication drop out, the command is already running // and we have just received a response to a Q0 message about a command progress - command.ContinueFromIdle(); + CommandContinueFromIdle(); } void ProtocolLogic::SwitchToIdle() { state = State::Running; - currentState = &idle; - idle.Restart(); + currentScope = Scope::Idle; + IdleRestart(); } void ProtocolLogic::SwitchFromStartToIdle(){ state = State::Running; - currentState = &idle; - idle.Restart(); - idle.SendQuery(); // force sending Q0 immediately - idle.state = Idle::State::QuerySent; + currentScope = Scope::Idle; + IdleRestart(); + SendQuery(); // force sending Q0 immediately + scopeState = ScopeState::QuerySent; +} + +StepStatus ProtocolLogic::ScopeStep(){ + switch(currentScope){ + case Scope::StartSeq: + return StartSeqStep(); + case Scope::DelayedRestart: + return DelayedRestartStep(); + case Scope::Idle: + return IdleStep(); + case Scope::Command: + return CommandStep(); + case Scope::Stopped: + return StoppedStep(); + default: + break; + } + return Finished; } bool ProtocolLogic::Elapsed(uint32_t timeout) const { @@ -667,16 +679,16 @@ StepStatus ProtocolLogic::HandleCommunicationTimeout() { StepStatus ProtocolLogic::HandleProtocolError() { uart->flush(); // clear the output buffer state = State::InitSequence; - currentState = &delayedRestart; - delayedRestart.Restart(); + currentScope = Scope::DelayedRestart; + DelayedRestartRestart(); return SuppressShortDropOuts(PSTR("Protocol Error"), ProtocolError); } StepStatus ProtocolLogic::Step() { - if( ! currentState->ExpectsResponse() ){ // if not waiting for a response, activate a planned request immediately + if( ! ExpectsResponse() ){ // if not waiting for a response, activate a planned request immediately ActivatePlannedRequest(); } - auto currentStatus = currentState->Step(); + auto currentStatus = ScopeStep(); switch (currentStatus) { case Processing: // we are ok, the state machine continues correctly @@ -685,12 +697,12 @@ StepStatus ProtocolLogic::Step() { // We are ok, switching to Idle if there is no potential next request planned. // But the trouble is we must report a finished command if the previous command has just been finished // i.e. only try to find some planned command if we just finished the Idle cycle - bool previousCommandFinished = currentState == &command; // @@TODO this is a nasty hack :( + bool previousCommandFinished = currentScope == Scope::Command; // @@TODO this is a nasty hack :( if( ! ActivatePlannedRequest() ){ // if nothing is planned, switch to Idle SwitchToIdle(); } else { // if the previous cycle was Idle and now we have planned a new command -> avoid returning Finished - if( ! previousCommandFinished && currentState == &command){ + if( ! previousCommandFinished && currentScope == Scope::Command){ currentStatus = Processing; } } @@ -700,7 +712,7 @@ StepStatus ProtocolLogic::Step() { // no change in state // @@TODO wait until Q0 returns command in progress finished, then we can send this one LogError(PSTR("Command rejected")); - command.Restart(); + CommandRestart(); break; case CommandError: LogError(PSTR("Command Error")); @@ -724,9 +736,9 @@ StepStatus ProtocolLogic::Step() { } uint8_t ProtocolLogic::CommandInProgress() const { - if( currentState != &command ) + if( currentScope != Scope::Command ) return 0; - return (uint8_t)command.ReqMsg().code; + return (uint8_t)ReqMsg().code; } bool DropOutFilter::Record(StepStatus ss){ diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 5469146d1..0ae0ec861 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -49,152 +49,6 @@ static constexpr uint32_t heartBeatPeriod = linkLayerTimeout / 2; ///< period of static_assert( heartBeatPeriod < linkLayerTimeout && linkLayerTimeout < dataLayerTimeout, "Incorrect ordering of timeouts"); -/// Base class for sub-automata of the ProtocolLogic class. -/// Their operation should never block (wait inside). -class ProtocolLogicPartBase { -public: - inline ProtocolLogicPartBase(ProtocolLogic *logic) - : logic(logic) - , state(State::Ready) {} - - /// Restarts the sub-automaton - virtual void Restart() = 0; - - /// Makes one step in the sub-automaton - /// @returns StepStatus - virtual StepStatus Step() = 0; - - /// @returns true if the state machine is waiting for a response from the MMU - bool ExpectsResponse()const { return state != State::Ready && state != State::Wait; } - -protected: - ProtocolLogic *logic; ///< pointer to parent ProtocolLogic layer - friend class ProtocolLogic; - - /// Common internal states of the derived sub-automata - /// General rule of thumb: *Sent states are waiting for a response from the MMU - enum class State : uint_fast8_t { - Ready, - Wait, - - S0Sent, // beware - due to optimization reasons these SxSent must be kept one after another - S1Sent, - S2Sent, - S3Sent, - QuerySent, - CommandSent, - FilamentSensorStateSent, - FINDAReqSent, - ButtonSent, - - ContinueFromIdle, - RecoveringProtocolError - }; - - State state; ///< internal state of the sub-automaton - - /// @returns the status of processing of the FINDA query response - /// @param finishedRV returned value in case the message was successfully received and processed - /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed - StepStatus ProcessFINDAReqSent(StepStatus finishedRV, State nextState); - - /// @returns the status of processing of the statistics query response - /// @param finishedRV returned value in case the message was successfully received and processed - /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed - StepStatus ProcessStatisticsReqSent(StepStatus finishedRV, State nextState); - - /// Called repeatedly while waiting for a query (Q0) period. - /// All event checks to report immediately from the printer to the MMU shall be done in this method. - /// So far, the only such a case is the filament sensor, but there can be more like this in the future. - void CheckAndReportAsyncEvents(); - - void SendQuery(); - - void SendFINDAQuery(); - - void SendAndUpdateFilamentSensor(); - - void SendButton(uint8_t btn); - - void SendVersion(uint8_t stage); -}; - -/// Starting sequence of the communication with the MMU. -/// The printer shall ask for MMU's version numbers. -/// If everything goes well and the MMU's version is good enough, -/// the ProtocolLogic layer may continue talking to the MMU -class StartSeq : public ProtocolLogicPartBase { -public: - inline StartSeq(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) - , retries(maxRetries) {} - void Restart() override; - StepStatus Step() override; -private: - static constexpr uint8_t maxRetries = 6; - uint8_t retries; -}; - -class DelayedRestart : public ProtocolLogicPartBase { -public: - inline DelayedRestart(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) {} - void Restart() override; - StepStatus Step() override; -}; - -/// A command and its lifecycle. -/// CommandSent: -/// - the command was placed into the UART TX buffer, awaiting response from the MMU -/// - if the MMU confirms the command, we'll wait for it to finish -/// - if the MMU refuses the command, we report an error (should normally not happen unless someone is hacking the communication without waiting for the previous command to finish) -/// Wait: -/// - waiting for the MMU to process the command - may take several seconds, for example Tool change operation -/// - meawhile, every 300ms we send a Q0 query to obtain the current state of the command being processed -/// - as soon as we receive a response to Q0 from the MMU, we process it in the next state -/// QuerySent - check the reply from the MMU - can be any of the following: -/// - Processing: the MMU is still working -/// - Error: the command failed on the MMU, we'll have the exact error report in the response message -/// - Finished: the MMU finished the command successfully, another command may be issued now -class Command : public ProtocolLogicPartBase { -public: - inline Command(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) - , rq(RequestMsgCodes::unknown, 0) {} - void Restart() override; - StepStatus Step() override; - inline void SetRequestMsg(RequestMsg msg) { - rq = msg; - } - void ContinueFromIdle(){ - state = State::ContinueFromIdle; - } - inline const RequestMsg &ReqMsg()const { return rq; } - -private: - RequestMsg rq; -}; - -/// Idle state - we have no command for the MMU, so we are only regularly querying its state with Q0 messages. -/// The idle state can be interrupted any time to issue a command into the MMU -class Idle : public ProtocolLogicPartBase { -public: - inline Idle(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) {} - void Restart() override; - StepStatus Step() override; -}; - -/// The communication with the MMU is stopped/disabled (for whatever reason). -/// Nothing is being put onto the UART. -class Stopped : public ProtocolLogicPartBase { -public: - inline Stopped(ProtocolLogic *logic) - : ProtocolLogicPartBase(logic) {} - void Restart() override {} - StepStatus Step() override { return Processing; } -}; - ///< Filter of short consecutive drop outs which are recovered instantly class DropOutFilter { StepStatus cause; @@ -259,7 +113,7 @@ public: } inline uint16_t FailStatistics() const { - return fail_statistics; + return failStatistics; } inline uint8_t MmuFwVersionMajor() const { @@ -300,12 +154,96 @@ private: }; // individual sub-state machines - may be they can be combined into a union since only one is active at once - Stopped stopped; - StartSeq startSeq; - DelayedRestart delayedRestart; - Idle idle; - Command command; - ProtocolLogicPartBase *currentState; ///< command currently being processed + // or we can blend them into ProtocolLogic at the cost of a less nice code (but hopefully shorter) +// Stopped stopped; +// StartSeq startSeq; +// DelayedRestart delayedRestart; +// Idle idle; +// Command command; +// ProtocolLogicPartBase *currentState; ///< command currently being processed + + enum class Scope : uint_fast8_t { + Stopped, + StartSeq, + DelayedRestart, + Idle, + Command + }; + Scope currentScope; + + // basic scope members + /// @returns true if the state machine is waiting for a response from the MMU + bool ExpectsResponse()const { return scopeState != ScopeState::Ready && scopeState != ScopeState::Wait; } + + /// Common internal states of the derived sub-automata + /// General rule of thumb: *Sent states are waiting for a response from the MMU + enum class ScopeState : uint_fast8_t { + Ready, + Wait, + + S0Sent, // beware - due to optimization reasons these SxSent must be kept one after another + S1Sent, + S2Sent, + S3Sent, + QuerySent, + CommandSent, + FilamentSensorStateSent, + FINDAReqSent, + StatisticsSent, + ButtonSent, + + ContinueFromIdle, + RecoveringProtocolError + }; + + ScopeState scopeState; ///< internal state of the sub-automaton + + /// @returns the status of processing of the FINDA query response + /// @param finishedRV returned value in case the message was successfully received and processed + /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed + // StepStatus ProcessFINDAReqSent(StepStatus finishedRV, State nextState); + + /// @returns the status of processing of the statistics query response + /// @param finishedRV returned value in case the message was successfully received and processed + /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed + // StepStatus ProcessStatisticsReqSent(StepStatus finishedRV, State nextState); + + /// Called repeatedly while waiting for a query (Q0) period. + /// All event checks to report immediately from the printer to the MMU shall be done in this method. + /// So far, the only such a case is the filament sensor, but there can be more like this in the future. + void CheckAndReportAsyncEvents(); + void SendQuery(); + void SendFINDAQuery(); + void SendAndUpdateFilamentSensor(); + void SendButton(uint8_t btn); + void SendVersion(uint8_t stage); + void SendReadRegister(uint8_t index, ScopeState nextState); + + /// Top level split - calls the appropriate step based on current scope + StepStatus ScopeStep(); + + static constexpr uint8_t maxRetries = 6; + uint8_t retries; + + void StartSeqRestart(); + void DelayedRestartRestart(); + void IdleRestart(); + void CommandRestart(); + + StepStatus StartSeqStep(); + StepStatus DelayedRestartStep(); + StepStatus IdleStep(); + StepStatus CommandStep(); + StepStatus StoppedStep(){ return Processing; } + + inline void SetRequestMsg(RequestMsg msg) { + rq = msg; + } + void CommandContinueFromIdle(){ + scopeState = ScopeState::ContinueFromIdle; + } + inline const RequestMsg &ReqMsg()const { return rq; } + RequestMsg rq = RequestMsg(RequestMsgCodes::unknown, 0); /// Records the next planned state, "unknown" msg code if no command is planned. /// This is not intended to be a queue of commands to process, protocol_logic must not queue commands. @@ -345,7 +283,7 @@ private: uint8_t lastFSensor; ///< last state of filament sensor bool findaPressed; - uint16_t fail_statistics; + uint16_t failStatistics; uint8_t mmuFwVersionMajor, mmuFwVersionMinor; uint8_t mmuFwVersionBuild; From 6c0d3b0b78343ecf3520ed08dd094401f159dba5 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 29 Aug 2022 17:50:39 +0200 Subject: [PATCH 232/319] Optimize MMU protocol logic --- Firmware/mmu2.h | 2 +- Firmware/mmu2_protocol_logic.cpp | 529 +++++++++++++++---------------- Firmware/mmu2_protocol_logic.h | 114 +++---- 3 files changed, 307 insertions(+), 338 deletions(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 7c27f84b6..7766234b6 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -173,7 +173,7 @@ public: /// In the future we'll return the trully detected FW version Version GetMMUFWVersion()const { if( State() == xState::Active ){ - return { logic.MmuFwVersionMajor(), logic.MmuFwVersionMinor(), logic.MmuFwVersionBuild() }; + return { logic.MmuFwVersionMajor(), logic.MmuFwVersionMinor(), logic.MmuFwVersionRevision() }; } else { return { 0, 0, 0}; } diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 88fd330bc..41deea5f2 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -6,35 +6,33 @@ namespace MMU2 { -static constexpr uint8_t supportedMmuFWVersionMajor = 2; -static constexpr uint8_t supportedMmuFWVersionMinor = 1; -static constexpr uint8_t supportedMmuFWVersionBuild = 1; +static const uint8_t supportedMmuFWVersion[3] PROGMEM = { 2, 1, 1 }; -void ProtocolLogic::CheckAndReportAsyncEvents(){ +void ProtocolLogic::CheckAndReportAsyncEvents() { // even when waiting for a query period, we need to report a change in filament sensor's state // - it is vital for a precise synchronization of moves of the printer and the MMU uint8_t fs = (uint8_t)WhereIsFilament(); - if( fs != lastFSensor ){ + if (fs != lastFSensor) { SendAndUpdateFilamentSensor(); } } -void ProtocolLogic::SendQuery(){ +void ProtocolLogic::SendQuery() { SendMsg(RequestMsg(RequestMsgCodes::Query, 0)); scopeState = ScopeState::QuerySent; } -void ProtocolLogic::SendFINDAQuery(){ - SendMsg(RequestMsg(RequestMsgCodes::Finda, 0 ) ); +void ProtocolLogic::SendFINDAQuery() { + SendMsg(RequestMsg(RequestMsgCodes::Finda, 0)); scopeState = ScopeState::FINDAReqSent; } -void ProtocolLogic::SendAndUpdateFilamentSensor(){ - SendMsg(RequestMsg(RequestMsgCodes::FilamentSensor, lastFSensor = (uint8_t)WhereIsFilament() ) ); +void ProtocolLogic::SendAndUpdateFilamentSensor() { + SendMsg(RequestMsg(RequestMsgCodes::FilamentSensor, lastFSensor = (uint8_t)WhereIsFilament())); scopeState = ScopeState::FilamentSensorStateSent; } -void ProtocolLogic::SendButton(uint8_t btn){ +void ProtocolLogic::SendButton(uint8_t btn) { SendMsg(RequestMsg(RequestMsgCodes::Button, btn)); scopeState = ScopeState::ButtonSent; } @@ -73,14 +71,14 @@ struct OldMMUFWDetector { } }; -StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { +StepStatus ProtocolLogic::ExpectingMessage() { int bytesConsumed = 0; int c = -1; OldMMUFWDetector oldMMUh4x0r; // old MMU FW hacker ;) // try to consume as many rx bytes as possible (until a message has been completed) - while((c = uart->read()) >= 0){ + while ((c = uart->read()) >= 0) { ++bytesConsumed; RecordReceivedByte(c); switch (protocol.DecodeResponse(c)) { @@ -109,10 +107,10 @@ StepStatus ProtocolLogic::ExpectingMessage(uint32_t timeout) { return ProtocolError; } } - if( bytesConsumed != 0 ){ + if (bytesConsumed != 0) { RecordUARTActivity(); // something has happened on the UART, update the timeout record - return Processing; // consumed some bytes, but message still not ready - } else if (Elapsed(timeout)) { + return Processing; // consumed some bytes, but message still not ready + } else if (Elapsed(linkLayerTimeout)) { return CommunicationTimeout; } return Processing; @@ -144,123 +142,147 @@ void ProtocolLogic::IdleRestart() { scopeState = ScopeState::Ready; } -StepStatus ProtocolLogic::StartSeqStep(){ - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - +StepStatus ProtocolLogic::ProcessVersionResponse(uint8_t stage) { + if (rsp.request.code != RequestMsgCodes::Version || rsp.request.value != stage) { + // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? + SendVersion(stage); + } else { + mmuFwVersion[stage] = rsp.paramValue; + if (mmuFwVersion[stage] != pgm_read_byte(supportedMmuFWVersion[stage])) { + if (--retries == 0) { + return VersionMismatch; + } else { + SendVersion(stage); + } + } else { + dataTO.Reset(); // got a meaningful response from the MMU, stop data layer timeout tracking + SendVersion(stage + 1); + } + } + return Processing; +} + +StepStatus ProtocolLogic::ScopeStep() { + if ((uint_fast8_t)scopeState & (uint8_t)ScopeState::NotExpectsResponse) { + // we are waiting for something + switch (currentScope) { + case Scope::DelayedRestart: + return DelayedRestartWait(); + case Scope::Idle: + return IdleWait(); + case Scope::Command: + return CommandWait(); + case Scope::Stopped: + return StoppedStep(); + default: + break; + } + } else { + // we are expecting a message + if (auto expmsg = ExpectingMessage(); expmsg != MessageReady) // this whole statement takes 12B + return expmsg; + + // process message + switch (currentScope) { + case Scope::StartSeq: + return StartSeqStep(); // ~270B + case Scope::Idle: + return IdleStep(); // ~300B + case Scope::Command: + return CommandStep(); // ~430B + case Scope::Stopped: + return StoppedStep(); + default: + break; + } + } + return Finished; +} + +StepStatus ProtocolLogic::StartSeqStep() { // solve initial handshake switch (scopeState) { case ScopeState::S0Sent: // received response to S0 - major - if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 0 ){ - // got a response to something else - protocol corruption probably, repeat the query - SendVersion(0); - } else { - mmuFwVersionMajor = rsp.paramValue; - if (mmuFwVersionMajor != supportedMmuFWVersionMajor) { - if( --retries == 0){ - // if (--retries == 0) has a specific meaning - since we are losing bytes on the UART for no obvious reason - // it can happen, that the reported version number is not complete - i.e. "1" instead of "19" - // Therefore we drop the MMU only if we run out of retries for this very reason. - // There is a limited amount of retries per the whole start seq. - // We also must be able to actually detect an unsupported MMU FW version, so the amount of retries shall be kept small. - return VersionMismatch; - } else { - SendVersion(0); - } - } else { - dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking - SendVersion(1); - } - } - break; case ScopeState::S1Sent: // received response to S1 - minor - if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 1 ){ + case ScopeState::S2Sent: // received response to S2 - minor + return ProcessVersionResponse((uint8_t)scopeState - (uint8_t)ScopeState::S0Sent); + case ScopeState::S3Sent: // received response to S3 - revision + if (rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 3) { // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? - SendVersion(1); + SendVersion(3); } else { - mmuFwVersionMinor = rsp.paramValue; - if (mmuFwVersionMinor != supportedMmuFWVersionMinor){ - if( --retries == 0) { - return VersionMismatch; - } else { - SendVersion(1); - } - } else { - SendVersion(2); - } + mmuFwVersionBuild = rsp.paramValue; // just register the build number + // Start General Interrogation after line up. + // For now we just send the state of the filament sensor, but we may request + // data point states from the MMU as well. TBD in the future, especially with another protocol + SendAndUpdateFilamentSensor(); } - break; - case ScopeState::S2Sent: // received response to S2 - revision - if( rsp.request.code != RequestMsgCodes::Version || rsp.request.value != 2 ){ - // got a response to something else - protocol corruption probably, repeat the query OR restart the comm by issuing S0? - SendVersion(2); - } else { - mmuFwVersionBuild = rsp.paramValue; - if (mmuFwVersionBuild < supportedMmuFWVersionBuild){ - if( --retries == 0 ) { - return VersionMismatch; - } else { - SendVersion(2); - } - } else { - // Start General Interrogation after line up. - // For now we just send the state of the filament sensor, but we may request - // data point states from the MMU as well. TBD in the future, especially with another protocol - SendAndUpdateFilamentSensor(); - } - } - break; + return Processing; case ScopeState::FilamentSensorStateSent: - scopeState = ScopeState::Ready; SwitchFromStartToIdle(); return Processing; // Returning Finished is not a good idea in case of a fast error recovery // - it tells the printer, that the command which experienced a protocol error and recovered successfully actually terminated. // In such a case we must return "Processing" in order to keep the MMU state machine running and prevent the printer from executing next G-codes. break; - case ScopeState::RecoveringProtocolError: - // timer elapsed, clear the input buffer - while (uart->read() >= 0) - ; - SendVersion(0); - break; default: return VersionMismatch; } return Finished; } -StepStatus ProtocolLogic::DelayedRestartStep() { - switch (scopeState) { - case ScopeState::RecoveringProtocolError: - if (Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on - while (uart->read() != -1) - ; // clear the input buffer - // switch to StartSeq - Start(); - } - return Processing; - break; - default: - break; +StepStatus ProtocolLogic::DelayedRestartWait() { + if (Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on + while (uart->read() != -1) + ; // clear the input buffer + // switch to StartSeq + Start(); + } + return Processing; +} + +StepStatus ProtocolLogic::CommandWait() { + if (Elapsed(heartBeatPeriod)) { + SendQuery(); + } else { + // even when waiting for a query period, we need to report a change in filament sensor's state + // - it is vital for a precise synchronization of moves of the printer and the MMU + CheckAndReportAsyncEvents(); + } + return Processing; +} + +StepStatus ProtocolLogic::ProcessCommandQueryResponse() { + switch (rsp.paramCode) { + case ResponseMsgParamCodes::Processing: + progressCode = static_cast(rsp.paramValue); + errorCode = ErrorCode::OK; + SendAndUpdateFilamentSensor(); // keep on reporting the state of fsensor regularly + return Processing; + case ResponseMsgParamCodes::Error: + // in case of an error the progress code remains as it has been before + errorCode = static_cast(rsp.paramValue); + // keep on reporting the state of fsensor regularly even in command error state + // - the MMU checks FINDA and fsensor even while recovering from errors + SendAndUpdateFilamentSensor(); + return CommandError; + case ResponseMsgParamCodes::Button: + // The user pushed a button on the MMU. Save it, do what we need to do + // to prepare, then pass it back to the MMU so it can work its magic. + buttonCode = static_cast(rsp.paramValue); + SendAndUpdateFilamentSensor(); + return ButtonPushed; + case ResponseMsgParamCodes::Finished: + progressCode = ProgressCode::OK; + scopeState = ScopeState::Ready; + return Finished; + default: + return ProtocolError; } - return Finished; } StepStatus ProtocolLogic::CommandStep() { switch (scopeState) { - case ScopeState::Wait: - if (Elapsed(heartBeatPeriod)) { - SendQuery(); - } else { - // even when waiting for a query period, we need to report a change in filament sensor's state - // - it is vital for a precise synchronization of moves of the printer and the MMU - CheckAndReportAsyncEvents(); - } - break; case ScopeState::CommandSent: { - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - switch (rsp.paramCode) { // the response should be either accepted or rejected case ResponseMsgParamCodes::Accepted: progressCode = ProgressCode::OK; @@ -275,59 +297,21 @@ StepStatus ProtocolLogic::CommandStep() { default: return ProtocolError; } - } break; + } break; case ScopeState::QuerySent: - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - [[fallthrough]]; - case ScopeState::ContinueFromIdle: - switch (rsp.paramCode) { - case ResponseMsgParamCodes::Processing: - progressCode = static_cast(rsp.paramValue); - errorCode = ErrorCode::OK; - SendAndUpdateFilamentSensor(); // keep on reporting the state of fsensor regularly - break; - case ResponseMsgParamCodes::Error: - // in case of an error the progress code remains as it has been before - errorCode = static_cast(rsp.paramValue); - // keep on reporting the state of fsensor regularly even in command error state - // - the MMU checks FINDA and fsensor even while recovering from errors - SendAndUpdateFilamentSensor(); - return CommandError; - case ResponseMsgParamCodes::Button: - // The user pushed a button on the MMU. Save it, do what we need to do - // to prepare, then pass it back to the MMU so it can work its magic. - buttonCode = static_cast(rsp.paramValue); - SendAndUpdateFilamentSensor(); - return ButtonPushed; - case ResponseMsgParamCodes::Finished: - progressCode = ProgressCode::OK; - scopeState = ScopeState::Ready; - return Finished; - default: - return ProtocolError; - } - break; + return ProcessCommandQueryResponse(); case ScopeState::FilamentSensorStateSent: - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; SendFINDAQuery(); scopeState = ScopeState::FINDAReqSent; return Processing; case ScopeState::FINDAReqSent: - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - SendReadRegister(3, ScopeState::StatisticsSent); + SendReadRegister(4, ScopeState::StatisticsSent); scopeState = ScopeState::StatisticsSent; return Processing; case ScopeState::StatisticsSent: - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; scopeState = ScopeState::Wait; return Processing; case ScopeState::ButtonSent: - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { // Button was accepted, decrement the retry. mmu2.DecrementRetryAttempts(); @@ -340,83 +324,82 @@ StepStatus ProtocolLogic::CommandStep() { return Processing; } -StepStatus ProtocolLogic::IdleStep() { - if(scopeState == ScopeState::Ready){ // check timeout +StepStatus ProtocolLogic::IdleWait() { + if (scopeState == ScopeState::Ready) { // check timeout if (Elapsed(heartBeatPeriod)) { SendQuery(); return Processing; } - } else { - if (auto expmsg = ExpectingMessage(linkLayerTimeout); expmsg != MessageReady) - return expmsg; - - switch (scopeState) { - case ScopeState::QuerySent: // check UART - // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. - // That causes no issues here, we just need to switch to Command processing and continue there from now on. - // The usual response in this case should be some command and "F" - finished - that confirms we are in an Idle state even on the MMU side. - switch( rsp.request.code ){ - case RequestMsgCodes::Cut: - case RequestMsgCodes::Eject: - case RequestMsgCodes::Load: - case RequestMsgCodes::Mode: - case RequestMsgCodes::Tool: - case RequestMsgCodes::Unload: - if( rsp.paramCode != ResponseMsgParamCodes::Finished ){ - SwitchFromIdleToCommand(); - return Processing; - } - break; - case RequestMsgCodes::Reset: - // this one is kind of special - // we do not transfer to any "running" command (i.e. we stay in Idle), - // but in case there is an error reported we must make sure it gets propagated - switch( rsp.paramCode ){ - case ResponseMsgParamCodes::Button: - // The user pushed a button on the MMU. Save it, do what we need to do - // to prepare, then pass it back to the MMU so it can work its magic. - buttonCode = static_cast(rsp.paramValue); - SendFINDAQuery(); - return ButtonPushed; - case ResponseMsgParamCodes::Processing: - // @@TODO we may actually use this branch to report progress of manual operation on the MMU - // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector - // For now let's behave just like "finished" - case ResponseMsgParamCodes::Finished: - errorCode = ErrorCode::OK; - break; - default: - errorCode = static_cast(rsp.paramValue); - SendFINDAQuery(); // continue Idle state without restarting the communication - return CommandError; - } + } + return Finished; +} + +StepStatus ProtocolLogic::IdleStep() { + switch (scopeState) { + case ScopeState::QuerySent: // check UART + // If we are accidentally in Idle and we receive something like "T0 P1" - that means the communication dropped out while a command was in progress. + // That causes no issues here, we just need to switch to Command processing and continue there from now on. + // The usual response in this case should be some command and "F" - finished - that confirms we are in an Idle state even on the MMU side. + switch (rsp.request.code) { + case RequestMsgCodes::Cut: + case RequestMsgCodes::Eject: + case RequestMsgCodes::Load: + case RequestMsgCodes::Mode: + case RequestMsgCodes::Tool: + case RequestMsgCodes::Unload: + if (rsp.paramCode != ResponseMsgParamCodes::Finished) { + return SwitchFromIdleToCommand(); + } + break; + case RequestMsgCodes::Reset: + // this one is kind of special + // we do not transfer to any "running" command (i.e. we stay in Idle), + // but in case there is an error reported we must make sure it gets propagated + switch (rsp.paramCode) { + case ResponseMsgParamCodes::Button: + // The user pushed a button on the MMU. Save it, do what we need to do + // to prepare, then pass it back to the MMU so it can work its magic. + buttonCode = static_cast(rsp.paramValue); + SendFINDAQuery(); + return ButtonPushed; + case ResponseMsgParamCodes::Processing: + // @@TODO we may actually use this branch to report progress of manual operation on the MMU + // The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector + // For now let's behave just like "finished" + case ResponseMsgParamCodes::Finished: + errorCode = ErrorCode::OK; break; default: - return ProtocolError; + errorCode = static_cast(rsp.paramValue); + SendFINDAQuery(); // continue Idle state without restarting the communication + return CommandError; } - SendFINDAQuery(); - return Processing; - break; - case ScopeState::FINDAReqSent: - SendReadRegister(3, ScopeState::StatisticsSent); - scopeState = ScopeState::StatisticsSent; - return Processing; - case ScopeState::StatisticsSent: - failStatistics = rsp.paramValue; - scopeState = ScopeState::Ready; - return Processing; - case ScopeState::ButtonSent: - if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { - // Button was accepted, decrement the retry. - mmu2.DecrementRetryAttempts(); - } - SendFINDAQuery(); break; default: return ProtocolError; } + SendFINDAQuery(); + return Processing; + break; + case ScopeState::FINDAReqSent: + SendReadRegister(4, ScopeState::StatisticsSent); + scopeState = ScopeState::StatisticsSent; + return Processing; + case ScopeState::StatisticsSent: + failStatistics = rsp.paramValue; + scopeState = ScopeState::Ready; + return Finished; + case ScopeState::ButtonSent: + if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { + // Button was accepted, decrement the retry. + mmu2.DecrementRetryAttempts(); + } + SendFINDAQuery(); + break; + default: + return ProtocolError; } - + // The "return Finished" in this state machine requires a bit of explanation: // The Idle state either did nothing (still waiting for the heartbeat timeout) // or just successfully received the answer to Q0, whatever that was. @@ -443,9 +426,7 @@ ProtocolLogic::ProtocolLogic(MMU2Serial *uart) , lastFSensor((uint8_t)WhereIsFilament()) , findaPressed(false) , failStatistics(0) - , mmuFwVersionMajor(0) - , mmuFwVersionMinor(0) - , mmuFwVersionBuild(0) + , mmuFwVersion { 0, 0, 0 } {} void ProtocolLogic::Start() { @@ -480,7 +461,7 @@ void ProtocolLogic::EjectFilament(uint8_t slot) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Eject, slot)); } -void ProtocolLogic::CutFilament(uint8_t slot){ +void ProtocolLogic::CutFilament(uint8_t slot) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Cut, slot)); } @@ -488,28 +469,28 @@ void ProtocolLogic::ResetMMU() { PlanGenericRequest(RequestMsg(RequestMsgCodes::Reset, 0)); } -void ProtocolLogic::Button(uint8_t index){ +void ProtocolLogic::Button(uint8_t index) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Button, index)); } -void ProtocolLogic::Home(uint8_t mode){ +void ProtocolLogic::Home(uint8_t mode) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Home, mode)); } void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { plannedRq = rq; - if( ! ExpectsResponse() ){ + if (!ExpectsResponse()) { ActivatePlannedRequest(); } // otherwise wait for an empty window to activate the request } -bool ProtocolLogic::ActivatePlannedRequest(){ - if( plannedRq.code == RequestMsgCodes::Button ){ +bool ProtocolLogic::ActivatePlannedRequest() { + if (plannedRq.code == RequestMsgCodes::Button) { // only issue the button to the MMU and do not restart the state machines SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; - } else if( plannedRq.code != RequestMsgCodes::unknown ){ + } else if (plannedRq.code != RequestMsgCodes::unknown) { currentScope = Scope::Command; SetRequestMsg(plannedRq); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); @@ -519,12 +500,12 @@ bool ProtocolLogic::ActivatePlannedRequest(){ return false; } -void ProtocolLogic::SwitchFromIdleToCommand(){ +StepStatus ProtocolLogic::SwitchFromIdleToCommand() { currentScope = Scope::Command; SetRequestMsg(rsp.request); // we are recovering from a communication drop out, the command is already running // and we have just received a response to a Q0 message about a command progress - CommandContinueFromIdle(); + return ProcessCommandQueryResponse(); } void ProtocolLogic::SwitchToIdle() { @@ -533,7 +514,7 @@ void ProtocolLogic::SwitchToIdle() { IdleRestart(); } -void ProtocolLogic::SwitchFromStartToIdle(){ +void ProtocolLogic::SwitchFromStartToIdle() { state = State::Running; currentScope = Scope::Idle; IdleRestart(); @@ -541,24 +522,6 @@ void ProtocolLogic::SwitchFromStartToIdle(){ scopeState = ScopeState::QuerySent; } -StepStatus ProtocolLogic::ScopeStep(){ - switch(currentScope){ - case Scope::StartSeq: - return StartSeqStep(); - case Scope::DelayedRestart: - return DelayedRestartStep(); - case Scope::Idle: - return IdleStep(); - case Scope::Command: - return CommandStep(); - case Scope::Stopped: - return StoppedStep(); - default: - break; - } - return Finished; -} - bool ProtocolLogic::Elapsed(uint32_t timeout) const { return _millis() >= (lastUARTActivityMs + timeout); } @@ -567,12 +530,12 @@ void ProtocolLogic::RecordUARTActivity() { lastUARTActivityMs = _millis(); } -void ProtocolLogic::RecordReceivedByte(uint8_t c){ +void ProtocolLogic::RecordReceivedByte(uint8_t c) { lastReceivedBytes[lrb] = c; - lrb = (lrb+1) % lastReceivedBytes.size(); + lrb = (lrb + 1) % lastReceivedBytes.size(); } -constexpr char NibbleToChar(uint8_t c){ +constexpr char NibbleToChar(uint8_t c) { switch (c) { case 0: case 1: @@ -597,42 +560,46 @@ constexpr char NibbleToChar(uint8_t c){ } } -void ProtocolLogic::FormatLastReceivedBytes(char *dst){ - for(uint8_t i = 0; i < lastReceivedBytes.size(); ++i){ - uint8_t b = lastReceivedBytes[ (lrb-i-1) % lastReceivedBytes.size() ]; - dst[i*3] = NibbleToChar(b >> 4); - dst[i*3+1] = NibbleToChar(b & 0xf); - dst[i*3+2] = ' '; +void ProtocolLogic::FormatLastReceivedBytes(char *dst) { + for (uint8_t i = 0; i < lastReceivedBytes.size(); ++i) { + uint8_t b = lastReceivedBytes[(lrb - i - 1) % lastReceivedBytes.size()]; + dst[i * 3] = NibbleToChar(b >> 4); + dst[i * 3 + 1] = NibbleToChar(b & 0xf); + dst[i * 3 + 2] = ' '; } - dst[ (lastReceivedBytes.size() - 1) * 3 + 2] = 0; // terminate properly + dst[(lastReceivedBytes.size() - 1) * 3 + 2] = 0; // terminate properly } -void ProtocolLogic::FormatLastResponseMsgAndClearLRB(char *dst){ +void ProtocolLogic::FormatLastResponseMsgAndClearLRB(char *dst) { *dst++ = '<'; - for(uint8_t i = 0; i < lrb; ++i){ - uint8_t b = lastReceivedBytes[ i ]; - if( b < 32 )b = '.'; - if( b > 127 )b = '.'; + for (uint8_t i = 0; i < lrb; ++i) { + uint8_t b = lastReceivedBytes[i]; + if (b < 32) + b = '.'; + if (b > 127) + b = '.'; *dst++ = b; } *dst = 0; // terminate properly - lrb = 0; // reset the input buffer index in case of a clean message + lrb = 0; // reset the input buffer index in case of a clean message } -void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ +void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size) { constexpr uint_fast8_t rqs = modules::protocol::Protocol::MaxRequestSize() + 2; char tmp[rqs] = ">"; static char lastMsg[rqs] = ""; - for(uint8_t i = 0; i < size; ++i){ + for (uint8_t i = 0; i < size; ++i) { uint8_t b = txbuff[i]; - if( b < 32 )b = '.'; - if( b > 127 )b = '.'; - tmp[i+1] = b; + if (b < 32) + b = '.'; + if (b > 127) + b = '.'; + tmp[i + 1] = b; } - tmp[size+1] = '\n'; - tmp[size+2] = 0; - if( !strncmp_P(tmp, PSTR(">S0*99.\n"), rqs) && !strncmp(lastMsg, tmp, rqs) ){ - // @@TODO we skip the repeated request msgs for now + tmp[size + 1] = '\n'; + tmp[size + 2] = 0; + if (!strncmp_P(tmp, PSTR(">S0*99.\n"), rqs) && !strncmp(lastMsg, tmp, rqs)) { + // @@TODO we skip the repeated request msgs for now // to avoid spoiling the whole log just with ">S0" messages // especially when the MMU is not connected. // We'll lose the ability to see if the printer is actually @@ -644,16 +611,16 @@ void ProtocolLogic::LogRequestMsg(const uint8_t *txbuff, uint8_t size){ memcpy(lastMsg, tmp, rqs); } -void ProtocolLogic::LogError(const char *reason_P){ +void ProtocolLogic::LogError(const char *reason_P) { char lrb[lastReceivedBytes.size() * 3]; FormatLastReceivedBytes(lrb); - + MMU2_ERROR_MSGRPGM(reason_P); SERIAL_ECHOPGM(", last bytes: "); SERIAL_ECHOLN(lrb); } -void ProtocolLogic::LogResponse(){ +void ProtocolLogic::LogResponse() { char lrb[lastReceivedBytes.size()]; FormatLastResponseMsgAndClearLRB(lrb); MMU2_ECHO_MSG(lrb); @@ -661,7 +628,7 @@ void ProtocolLogic::LogResponse(){ } StepStatus ProtocolLogic::SuppressShortDropOuts(const char *msg_P, StepStatus ss) { - if( dataTO.Record(ss) ){ + if (dataTO.Record(ss)) { LogError(msg_P); return dataTO.InitialCause(); } else { @@ -685,7 +652,7 @@ StepStatus ProtocolLogic::HandleProtocolError() { } StepStatus ProtocolLogic::Step() { - if( ! ExpectsResponse() ){ // if not waiting for a response, activate a planned request immediately + if (!ExpectsResponse()) { // if not waiting for a response, activate a planned request immediately ActivatePlannedRequest(); } auto currentStatus = ScopeStep(); @@ -697,12 +664,12 @@ StepStatus ProtocolLogic::Step() { // We are ok, switching to Idle if there is no potential next request planned. // But the trouble is we must report a finished command if the previous command has just been finished // i.e. only try to find some planned command if we just finished the Idle cycle - bool previousCommandFinished = currentScope == Scope::Command; // @@TODO this is a nasty hack :( - if( ! ActivatePlannedRequest() ){ // if nothing is planned, switch to Idle + bool previousCommandFinished = currentScope == Scope::Command; // @@TODO this is a nasty hack :( + if (!ActivatePlannedRequest()) { // if nothing is planned, switch to Idle SwitchToIdle(); } else { // if the previous cycle was Idle and now we have planned a new command -> avoid returning Finished - if( ! previousCommandFinished && currentScope == Scope::Command){ + if (!previousCommandFinished && currentScope == Scope::Command) { currentStatus = Processing; } } @@ -736,13 +703,13 @@ StepStatus ProtocolLogic::Step() { } uint8_t ProtocolLogic::CommandInProgress() const { - if( currentScope != Scope::Command ) + if (currentScope != Scope::Command) return 0; return (uint8_t)ReqMsg().code; } -bool DropOutFilter::Record(StepStatus ss){ - if( occurrences == maxOccurrences ){ +bool DropOutFilter::Record(StepStatus ss) { + if (occurrences == maxOccurrences) { cause = ss; } --occurrences; diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 0ae0ec861..9c07837f4 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -34,20 +34,19 @@ enum StepStatus : uint_fast8_t { MessageReady, ///< a message has been successfully decoded from the received bytes Finished, CommunicationTimeout, ///< the MMU failed to respond to a request within a specified time frame - ProtocolError, ///< bytes read from the MMU didn't form a valid response - CommandRejected, ///< the MMU rejected the command due to some other command in progress, may be the user is operating the MMU locally (button commands) - CommandError, ///< the command in progress stopped due to unrecoverable error, user interaction required - VersionMismatch, ///< the MMU reports its firmware version incompatible with our implementation + ProtocolError, ///< bytes read from the MMU didn't form a valid response + CommandRejected, ///< the MMU rejected the command due to some other command in progress, may be the user is operating the MMU locally (button commands) + CommandError, ///< the command in progress stopped due to unrecoverable error, user interaction required + VersionMismatch, ///< the MMU reports its firmware version incompatible with our implementation CommunicationRecovered, - ButtonPushed, ///< The MMU reported the user pushed one of its three buttons. + ButtonPushed, ///< The MMU reported the user pushed one of its three buttons. }; - -static constexpr uint32_t linkLayerTimeout = 2000; ///< default link layer communication timeout +static constexpr uint32_t linkLayerTimeout = 2000; ///< default link layer communication timeout static constexpr uint32_t dataLayerTimeout = linkLayerTimeout * 3; ///< data layer communication timeout -static constexpr uint32_t heartBeatPeriod = linkLayerTimeout / 2; ///< period of heart beat messages (Q0) +static constexpr uint32_t heartBeatPeriod = linkLayerTimeout / 2; ///< period of heart beat messages (Q0) -static_assert( heartBeatPeriod < linkLayerTimeout && linkLayerTimeout < dataLayerTimeout, "Incorrect ordering of timeouts"); +static_assert(heartBeatPeriod < linkLayerTimeout && linkLayerTimeout < dataLayerTimeout, "Incorrect ordering of timeouts"); ///< Filter of short consecutive drop outs which are recovered instantly class DropOutFilter { @@ -55,17 +54,17 @@ class DropOutFilter { uint8_t occurrences; public: static constexpr uint8_t maxOccurrences = 10; // ideally set this to >8 seconds -> 12x heartBeatPeriod - static_assert (maxOccurrences > 1, "we should really silently ignore at least 1 comm drop out if recovered immediately afterwards"); + static_assert(maxOccurrences > 1, "we should really silently ignore at least 1 comm drop out if recovered immediately afterwards"); DropOutFilter() = default; - + /// @returns true if the error should be reported to higher levels (max. number of consecutive occurrences reached) bool Record(StepStatus ss); - + /// @returns the initial cause which started this drop out event - inline StepStatus InitialCause()const { return cause; } - + inline StepStatus InitialCause() const { return cause; } + /// Rearms the object for further processing - basically call this once the MMU responds with something meaningful (e.g. S0 A2) - inline void Reset(){ occurrences = maxOccurrences; } + inline void Reset() { occurrences = maxOccurrences; } }; /// Logic layer of the MMU vs. printer communication protocol @@ -98,13 +97,13 @@ public: /// @returns the current/latest process code as reported by the MMU ProgressCode Progress() const { return progressCode; } - + /// @returns the current/latest button code as reported by the MMU Buttons Button() const { return buttonCode; } - uint8_t CommandInProgress()const; + uint8_t CommandInProgress() const; - inline bool Running()const { + inline bool Running() const { return state == State::Running; } @@ -117,20 +116,20 @@ public: } inline uint8_t MmuFwVersionMajor() const { - return mmuFwVersionMajor; + return mmuFwVersion[0]; } inline uint8_t MmuFwVersionMinor() const { - return mmuFwVersionMinor; + return mmuFwVersion[1]; } - inline uint8_t MmuFwVersionBuild() const { - return mmuFwVersionBuild; + inline uint8_t MmuFwVersionRevision() const { + return mmuFwVersion[2]; } #ifndef UNITTEST private: #endif - StepStatus ExpectingMessage(uint32_t timeout); + StepStatus ExpectingMessage(); void SendMsg(RequestMsg rq); void SwitchToIdle(); StepStatus SuppressShortDropOuts(const char *msg_P, StepStatus ss); @@ -144,9 +143,9 @@ private: void LogRequestMsg(const uint8_t *txbuff, uint8_t size); void LogError(const char *reason_P); void LogResponse(); - void SwitchFromIdleToCommand(); + StepStatus SwitchFromIdleToCommand(); void SwitchFromStartToIdle(); - + enum class State : uint_fast8_t { Stopped, ///< stopped for whatever reason InitSequence, ///< initial sequence running @@ -170,17 +169,14 @@ private: Command }; Scope currentScope; - + // basic scope members /// @returns true if the state machine is waiting for a response from the MMU - bool ExpectsResponse()const { return scopeState != ScopeState::Ready && scopeState != ScopeState::Wait; } - + bool ExpectsResponse() const { return ((uint8_t)scopeState & (uint8_t)ScopeState::NotExpectsResponse) == 0; } + /// Common internal states of the derived sub-automata /// General rule of thumb: *Sent states are waiting for a response from the MMU - enum class ScopeState : uint_fast8_t { - Ready, - Wait, - + enum class ScopeState : uint_fast8_t { S0Sent, // beware - due to optimization reasons these SxSent must be kept one after another S1Sent, S2Sent, @@ -191,23 +187,26 @@ private: FINDAReqSent, StatisticsSent, ButtonSent, - - ContinueFromIdle, - RecoveringProtocolError + + // States which do not expect a message - MSb set + NotExpectsResponse = 0x80, + Wait = NotExpectsResponse + 1, + Ready = NotExpectsResponse + 2, + RecoveringProtocolError = NotExpectsResponse + 3, }; - + ScopeState scopeState; ///< internal state of the sub-automaton - + /// @returns the status of processing of the FINDA query response /// @param finishedRV returned value in case the message was successfully received and processed /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed // StepStatus ProcessFINDAReqSent(StepStatus finishedRV, State nextState); - + /// @returns the status of processing of the statistics query response /// @param finishedRV returned value in case the message was successfully received and processed /// @param nextState is a state where the state machine should transfer to after the message was successfully received and processed // StepStatus ProcessStatisticsReqSent(StepStatus finishedRV, State nextState); - + /// Called repeatedly while waiting for a query (Q0) period. /// All event checks to report immediately from the printer to the MMU shall be done in this method. /// So far, the only such a case is the filament sensor, but there can be more like this in the future. @@ -218,42 +217,45 @@ private: void SendButton(uint8_t btn); void SendVersion(uint8_t stage); void SendReadRegister(uint8_t index, ScopeState nextState); - + + StepStatus ProcessVersionResponse(uint8_t stage); + /// Top level split - calls the appropriate step based on current scope StepStatus ScopeStep(); - + static constexpr uint8_t maxRetries = 6; uint8_t retries; - + void StartSeqRestart(); void DelayedRestartRestart(); void IdleRestart(); void CommandRestart(); - + StepStatus StartSeqStep(); - StepStatus DelayedRestartStep(); + StepStatus DelayedRestartWait(); StepStatus IdleStep(); + StepStatus IdleWait(); StepStatus CommandStep(); - StepStatus StoppedStep(){ return Processing; } - + StepStatus CommandWait(); + StepStatus StoppedStep() { return Processing; } + + StepStatus ProcessCommandQueryResponse(); + inline void SetRequestMsg(RequestMsg msg) { rq = msg; } - void CommandContinueFromIdle(){ - scopeState = ScopeState::ContinueFromIdle; - } - inline const RequestMsg &ReqMsg()const { return rq; } + inline const RequestMsg &ReqMsg() const { return rq; } RequestMsg rq = RequestMsg(RequestMsgCodes::unknown, 0); - + /// Records the next planned state, "unknown" msg code if no command is planned. /// This is not intended to be a queue of commands to process, protocol_logic must not queue commands. /// It exists solely to prevent breaking the Request-Response protocol handshake - /// - during tests it turned out, that the commands from Marlin are coming in such an asynchronnous way, that /// we could accidentally send T2 immediately after Q0 without waiting for reception of response to Q0. - /// + /// /// Beware, if Marlin manages to call PlanGenericCommand multiple times before a response comes, /// these variables will get overwritten by the last call. - /// However, that should not happen under normal circumstances as Marlin should wait for the Command to finish, + /// However, that should not happen under normal circumstances as Marlin should wait for the Command to finish, /// which includes all responses (and error recovery if any). RequestMsg plannedRq; @@ -263,7 +265,7 @@ private: bool ActivatePlannedRequest(); uint32_t lastUARTActivityMs; ///< timestamp - last ms when something occurred on the UART - DropOutFilter dataTO; ///< Filter of short consecutive drop outs which are recovered instantly + DropOutFilter dataTO; ///< Filter of short consecutive drop outs which are recovered instantly ResponseMsg rsp; ///< decoded response message from the MMU protocol @@ -285,8 +287,8 @@ private: bool findaPressed; uint16_t failStatistics; - uint8_t mmuFwVersionMajor, mmuFwVersionMinor; - uint8_t mmuFwVersionBuild; + uint8_t mmuFwVersion[3]; + uint16_t mmuFwVersionBuild; friend class ProtocolLogicPartBase; friend class Stopped; From 78cbea08e6cea20f370271308aed84b3a021faf3 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 30 Aug 2022 07:17:44 +0200 Subject: [PATCH 233/319] Fix pgm_read* usage --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 41deea5f2..e3fdbdef4 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -148,7 +148,7 @@ StepStatus ProtocolLogic::ProcessVersionResponse(uint8_t stage) { SendVersion(stage); } else { mmuFwVersion[stage] = rsp.paramValue; - if (mmuFwVersion[stage] != pgm_read_byte(supportedMmuFWVersion[stage])) { + if (mmuFwVersion[stage] != pgm_read_byte(supportedMmuFWVersion + stage)) { if (--retries == 0) { return VersionMismatch; } else { From e205d0ee2f9ef9b228ff18e2fe70be2e01c2eab3 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 1 Sep 2022 07:33:27 +0200 Subject: [PATCH 234/319] Autoretry Idle scope: transf. into Finished, should stay in Processing --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index e3fdbdef4..e8c8aa93f 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -395,7 +395,7 @@ StepStatus ProtocolLogic::IdleStep() { mmu2.DecrementRetryAttempts(); } SendFINDAQuery(); - break; + return Processing; default: return ProtocolError; } From d5377c1781b7bb374fa936a38b6f46f5f1867da8 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 1 Sep 2022 07:39:47 +0200 Subject: [PATCH 235/319] Remove extra "scopeState = ScopeState::FINDAReqSent" saves ~20B in total --- Firmware/mmu2_protocol_logic.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index e8c8aa93f..9c4e1be4f 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -302,7 +302,6 @@ StepStatus ProtocolLogic::CommandStep() { return ProcessCommandQueryResponse(); case ScopeState::FilamentSensorStateSent: SendFINDAQuery(); - scopeState = ScopeState::FINDAReqSent; return Processing; case ScopeState::FINDAReqSent: SendReadRegister(4, ScopeState::StatisticsSent); @@ -380,7 +379,6 @@ StepStatus ProtocolLogic::IdleStep() { } SendFINDAQuery(); return Processing; - break; case ScopeState::FINDAReqSent: SendReadRegister(4, ScopeState::StatisticsSent); scopeState = ScopeState::StatisticsSent; @@ -519,7 +517,6 @@ void ProtocolLogic::SwitchFromStartToIdle() { currentScope = Scope::Idle; IdleRestart(); SendQuery(); // force sending Q0 immediately - scopeState = ScopeState::QuerySent; } bool ProtocolLogic::Elapsed(uint32_t timeout) const { From 18423685b6bd72ee15507c8adf8660e990962168 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 1 Sep 2022 07:48:57 +0200 Subject: [PATCH 236/319] Cleanup ExpectsResponse usage --- Firmware/mmu2_protocol_logic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 9c4e1be4f..46c94e344 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -163,7 +163,7 @@ StepStatus ProtocolLogic::ProcessVersionResponse(uint8_t stage) { } StepStatus ProtocolLogic::ScopeStep() { - if ((uint_fast8_t)scopeState & (uint8_t)ScopeState::NotExpectsResponse) { + if ( ! ExpectsResponse() ) { // we are waiting for something switch (currentScope) { case Scope::DelayedRestart: From 37b50477cd93d52cf113f87a8242ad7ddec7260d Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 1 Sep 2022 16:04:57 +0200 Subject: [PATCH 237/319] Fixup after rebase onto MK3 --- Firmware/Filament_sensor.cpp | 1 + Firmware/Marlin_main.cpp | 11 ++++++----- Firmware/Prusa_farm.cpp | 4 ++-- Firmware/adc.h | 2 ++ Firmware/messages.h | 2 -- Firmware/ultralcd.cpp | 2 +- Firmware/util.cpp | 2 +- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index d540f8911..ef9a2fc9d 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -7,6 +7,7 @@ #include "cardreader.h" #include "eeprom.h" #include "menu.h" +#include "planner.h" #include "temperature.h" #include "ultralcd.h" diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 048344ffe..7f947bcf3 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -361,7 +361,8 @@ uint8_t saved_printing_type = PRINTING_TYPE_SD; static float saved_pos[4] = { X_COORD_INVALID, 0, 0, 0 }; static uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float) static int saved_feedmultiply2 = 0; -static float saved_extruder_temperature = 0.0; //!< Active extruder temperature +float saved_extruder_temperature = 0.0; //!< Active extruder temperature +float saved_bed_temperature = 0.0; static bool saved_extruder_relative_mode = false; int saved_fan_speed = 0; //!< Print fan speed //! @} @@ -2096,7 +2097,7 @@ float raise_z(float delta) float travel_z = current_position[Z_AXIS]; // Z needs raising - current_position[Z_AXIS] = target; + current_position[Z_AXIS] += travel_z; clamp_to_software_endstops(current_position); #if defined(Z_MIN_PIN) && (Z_MIN_PIN > -1) && !defined(DEBUG_DISABLE_ZMINLIMIT) @@ -3675,7 +3676,7 @@ void gcode_M701(float fastLoadLength, uint8_t mmuSlotIndex){ plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence st_synchronize(); - raise_z_above(MIN_Z_FOR_LOAD, false); + raise_z_above(MIN_Z_FOR_LOAD/*, false*/); current_position[E_AXIS] += feed_mm_before_raising; plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence @@ -8770,7 +8771,7 @@ Sigma_Exit: case 999: Stopped = false; lcd_reset_alert_level(); - gcode_LastN = Stopped_gcode_LastN; +//@@TODO gcode_LastN = Stopped_gcode_LastN; FlushSerialRequestResend(); break; /*! @@ -10576,7 +10577,7 @@ void long_pause() //long pause print setAllTargetHotends(0); // Lift z - raise_z_above(current_position[Z_AXIS] + Z_PAUSE_LIFT, true); + raise_z_above(current_position[Z_AXIS] + Z_PAUSE_LIFT/*, true*/); // Move XY to side if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { diff --git a/Firmware/Prusa_farm.cpp b/Firmware/Prusa_farm.cpp index f575e26f5..b6fca0f52 100644 --- a/Firmware/Prusa_farm.cpp +++ b/Firmware/Prusa_farm.cpp @@ -7,7 +7,7 @@ #include "conv2str.h" #include "util.h" #include "ultralcd.h" -#include "fsensor.h" //to be converted to Filament_sensor.h... +#include "Filament_sensor.h" #ifdef PRUSA_FARM uint8_t farm_mode = 0; @@ -405,7 +405,7 @@ void farm_mode_init() { #ifdef FILAMENT_SENSOR //to be converted to Filament_sensor.h... //disabled filament autoload (PFW360) - fsensor_autoload_set(false); + fsensor.setAutoLoadEnabled(false); #endif //FILAMENT_SENSOR // ~ FanCheck -> on eeprom_update_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED, true); diff --git a/Firmware/adc.h b/Firmware/adc.h index bece541e8..ac110dc04 100644 --- a/Firmware/adc.h +++ b/Firmware/adc.h @@ -15,6 +15,8 @@ http://resnet.uoregon.edu/~gurney_j/jmpc/bitwise.html # error "ADC_CHAN_MSK oes not match ADC_CHAN_CNT" #endif +#define VOLT_DIV_REF 5 //[V] + extern volatile uint8_t adc_channel; extern volatile uint16_t adc_values[ADC_CHAN_CNT]; diff --git a/Firmware/messages.h b/Firmware/messages.h index c12d51b42..214e3a43a 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -172,11 +172,9 @@ extern const char MSG_DIM[]; extern const char MSG_AUTO[]; extern const char MSG_FS_V_03_OR_OLDER[]; extern const char MSG_FS_V_04_OR_NEWER[]; -#ifdef IR_SENSOR_ANALOG extern const char MSG_IR_04_OR_NEWER[]; extern const char MSG_IR_03_OR_OLDER[]; extern const char MSG_IR_UNKNOWN[]; -#endif extern const char MSG_PAUSED_THERMAL_ERROR[]; #ifdef TEMP_MODEL extern const char MSG_THERMAL_ANOMALY[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 188f48610..0ac1378ba 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6001,7 +6001,7 @@ void print_stop() save_statistics(total_filament_used, t); // lift Z - raise_z_above(current_position[Z_AXIS] + 10, true); + raise_z_above(current_position[Z_AXIS] + 10/*, true*/); // if axis are homed, move to parking position. if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 2576967eb..5cbc538dc 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -436,7 +436,7 @@ pStrBegin[*nLength] = '\0'; return pStrBegin; } -void printer_smodel_check(char *pStrPos) { +void printer_smodel_check(const char *pStrPos) { char* pResult; size_t nLength,nPrinterNameLength; From 0537908d8c186d62f9446e07308543b11df56939 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 1 Sep 2022 16:17:13 +0200 Subject: [PATCH 238/319] Fixup 2 --- Firmware/util.cpp | 2 +- Firmware/util.h | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 5cbc538dc..2576967eb 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -436,7 +436,7 @@ pStrBegin[*nLength] = '\0'; return pStrBegin; } -void printer_smodel_check(const char *pStrPos) { +void printer_smodel_check(char *pStrPos) { char* pResult; size_t nLength,nPrinterNameLength; diff --git a/Firmware/util.h b/Firmware/util.h index 7533429e2..9b33cc2e4 100644 --- a/Firmware/util.h +++ b/Firmware/util.h @@ -1,5 +1,5 @@ -#ifndef UTIL_H -#define UTIL_H +#pragma once +#include extern const char* FW_VERSION_STR_P(); @@ -104,7 +104,7 @@ extern ClCheckGcode oCheckGcode; void fCheckModeInit(); void nozzle_diameter_check(uint16_t nDiameter); void printer_model_check(uint16_t nPrinterModel); -void printer_smodel_check(const char* pStrPos); +void printer_smodel_check(char* pStrPos); void fw_version_check(const char *pVersion); void gcode_level_check(uint16_t nGcodeLevel); @@ -112,5 +112,3 @@ void fSetMmuMode(bool bMMu); #define IP4_STR_SIZE 16 extern void ip4_to_str(char* dest, uint8_t* IP); - -#endif /* UTIL_H */ From 66994d010d6bbe634819f8c4792c6a9d6b3e21ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 08:42:58 +0000 Subject: [PATCH 239/319] Fix a few cases where rebase overwrote stuff --- Firmware/Marlin_main.cpp | 20 +++++--------------- Firmware/ultralcd.cpp | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 7f947bcf3..f6b23bfb2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2096,9 +2096,8 @@ float raise_z(float delta) { float travel_z = current_position[Z_AXIS]; - // Z needs raising - current_position[Z_AXIS] += travel_z; - clamp_to_software_endstops(current_position); + // Prepare to move Z axis + current_position[Z_AXIS] += delta; #if defined(Z_MIN_PIN) && (Z_MIN_PIN > -1) && !defined(DEBUG_DISABLE_ZMINLIMIT) bool z_min_endstop = (READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); @@ -3665,20 +3664,11 @@ void gcode_M701(float fastLoadLength, uint8_t mmuSlotIndex){ if (MMU2::mmu2.Enabled() && mmuSlotIndex < MMU_FILAMENT_COUNT) { MMU2::mmu2.load_filament_to_nozzle(mmuSlotIndex); } else { - enable_z(); custom_message_type = CustomMsg::FilamentLoading; - - const int feed_mm_before_raising = 30; - static_assert(feed_mm_before_raising <= FILAMENTCHANGE_FIRSTFEED); - lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT)); - current_position[E_AXIS] += FILAMENTCHANGE_FIRSTFEED - feed_mm_before_raising; - plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence - st_synchronize(); - raise_z_above(MIN_Z_FOR_LOAD/*, false*/); - current_position[E_AXIS] += feed_mm_before_raising; - plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence + current_position[E_AXIS] += fastLoadLength; + plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST); //fast sequence load_filament_final_feed(); // slow sequence st_synchronize(); @@ -10577,7 +10567,7 @@ void long_pause() //long pause print setAllTargetHotends(0); // Lift z - raise_z_above(current_position[Z_AXIS] + Z_PAUSE_LIFT/*, true*/); + raise_z_above(current_position[Z_AXIS] + Z_PAUSE_LIFT); // Move XY to side if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0ac1378ba..2bf3fe8c3 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6001,7 +6001,7 @@ void print_stop() save_statistics(total_filament_used, t); // lift Z - raise_z_above(current_position[Z_AXIS] + 10/*, true*/); + raise_z_above(current_position[Z_AXIS] + 10); // if axis are homed, move to parking position. if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { From 55d2eaf8c08671657af2b08406a5ee29ad79c450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 15:19:20 +0000 Subject: [PATCH 240/319] M706: Only cut filament if the setting is enabled --- Firmware/Marlin_main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f6b23bfb2..5e3a9a550 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3705,7 +3705,11 @@ static void gcodes_M704_M705_M706(uint16_t gcode) MMU2::mmu2.eject_filament(mmuSlotIndex, false); break; case 706: - MMU2::mmu2.cut_filament(mmuSlotIndex); +#ifdef MMU_HAS_CUTTER + if (eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED) != 0){ + MMU2::mmu2.cut_filament(mmuSlotIndex); + } +#endif // MMU_HAS_CUTTER break; default: break; From 4758ac3f1b534d2dcbcfabfae63db2b0ca27dafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 4 Sep 2022 14:14:07 +0000 Subject: [PATCH 241/319] PFW-1399 Don't show cut filament menu if setting is not enabled --- Firmware/ultralcd.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2bf3fe8c3..655503909 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5646,7 +5646,9 @@ static void lcd_main_menu() MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament); MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu); #ifdef MMU_HAS_CUTTER - MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu); + if (eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED) != 0) { + MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu); + } #endif //MMU_HAS_CUTTER } else { #ifdef FILAMENT_SENSOR From 03b8a6e464c9ad3db865bcb32faa14efc03c4283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 09:02:52 +0000 Subject: [PATCH 242/319] Use raise_z in more places Change in memory: Flash: -474 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 10 +++------- Firmware/mesh_bed_calibration.cpp | 8 ++------ Firmware/mmu2.cpp | 6 +----- Firmware/ultralcd.cpp | 14 ++++---------- 4 files changed, 10 insertions(+), 28 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5e3a9a550..c31f57028 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3061,9 +3061,7 @@ static void gcode_G80() #endif // TMC2130 // ~ Z-homing (can not be used "G28", because X & Y-homing would have been done before (Z-homing)) bState=enable_z_endstop(false); - current_position[Z_AXIS] -= 1; - plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40); - st_synchronize(); + raise_z(-1); enable_z_endstop(true); #ifdef TMC2130 tmc2130_home_enter(Z_AXIS_MASK); @@ -3314,9 +3312,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) } bool endstops_enabled = enable_endstops(false); - current_position[Z_AXIS] -= 1; //move 1mm down with disabled endstop - plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40); - st_synchronize(); + raise_z(-1); // Move the print head close to the bed. current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; @@ -10571,7 +10567,7 @@ void long_pause() //long pause print setAllTargetHotends(0); // Lift z - raise_z_above(current_position[Z_AXIS] + Z_PAUSE_LIFT); + raise_z(Z_PAUSE_LIFT); // Move XY to side if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 2bfe713f9..39dd4836a 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -995,8 +995,7 @@ bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int //printf_P(PSTR("Zs: %f, Z: %f, delta Z: %f"), z_bckp, current_position[Z_AXIS], (z_bckp - current_position[Z_AXIS])); if (fabs(current_position[Z_AXIS] - z_bckp) < 0.025) { //printf_P(PSTR("PINDA triggered immediately, move Z higher and repeat measurement\n")); - current_position[Z_AXIS] += 0.5; - go_to_current(homing_feedrate[Z_AXIS]/60); + raise_z(0.5); current_position[Z_AXIS] = minimum_z; go_to_current(homing_feedrate[Z_AXIS]/(4*60)); // we have to let the planner know where we are right now as it is not where we said to go. @@ -2792,10 +2791,7 @@ canceled: bool sample_z() { bool sampled = true; //make space - current_position[Z_AXIS] += 150; - go_to_current(homing_feedrate[Z_AXIS] / 60); - //plan_buffer_line_curposXYZE(feedrate, active_extruder);); - + raise_z(150); lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); // Sample Z heights for the mesh bed leveling. diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 58c2f4f85..bcc8e6b0b 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -537,11 +537,7 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) { } // lift Z - current_position[Z_AXIS] += MMU_ERR_Z_PAUSE_LIFT; - if (current_position[Z_AXIS] > Z_MAX_POS) - current_position[Z_AXIS] = Z_MAX_POS; - plan_buffer_line_curposXYZE(NOZZLE_PARK_Z_FEEDRATE); - st_synchronize(); + raise_z(MMU_ERR_Z_PAUSE_LIFT); // move XY aside current_position[X_AXIS] = MMU_ERR_X_PAUSE_POS; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 655503909..96b480bc4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6003,7 +6003,7 @@ void print_stop() save_statistics(total_filament_used, t); // lift Z - raise_z_above(current_position[Z_AXIS] + 10); + raise_z(10); // if axis are homed, move to parking position. if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) { @@ -6497,9 +6497,7 @@ bool lcd_selftest() //current_position[X_AXIS] += 0; current_position[Y_AXIS] += 4; #endif //TMC2130 - current_position[Z_AXIS] = current_position[Z_AXIS] + 10; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60); - st_synchronize(); + raise_z(10); set_destination_to_current(); _progress = lcd_selftest_screen(TestScreen::AxisZ, _progress, 3, true, 1500); #ifdef TMC2130 @@ -6509,17 +6507,13 @@ bool lcd_selftest() #endif //TMC2130 //raise Z to not damage the bed during and hotend testing - current_position[Z_AXIS] += 20; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60); - st_synchronize(); + raise_z(20); } #ifdef TMC2130 if (_result) { - current_position[Z_AXIS] = current_position[Z_AXIS] + 10; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60); - st_synchronize(); + raise_z(10); _progress = lcd_selftest_screen(TestScreen::Home, 0, 2, true, 0); bool bres = tmc2130_home_calibrate(X_AXIS); _progress = lcd_selftest_screen(TestScreen::Home, 1, 2, true, 0); From 05bf5de5182408395cb385d8938924fedb5e6c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 10:58:54 +0000 Subject: [PATCH 243/319] Fix calibrate_z_auto crashing Z-axis Steps to reproduce: 1. Run M45 Z after booting the printer up Change in memory: Flash: -4 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c31f57028..9bfa7b7cd 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2178,7 +2178,6 @@ bool calibrate_z_auto() // current_position[axis] = 0; // plan_set_position_curposXYZE(); tmc2130_home_exit(); - enable_endstops(false); current_position[Z_AXIS] = 0; plan_set_position_curposXYZE(); set_destination_to_current(); From 3e86bbb93f23367ce52925735685fe8f134ff760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 12:02:14 +0000 Subject: [PATCH 244/319] M600: Don't unload if filament is unknown Change in memory: Flash: +8 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 9bfa7b7cd..6bf7c54e2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3496,13 +3496,13 @@ static void mmu_M600_wait_and_beep() { * are disabled in the meantime. */ static void mmu_M600_unload_filament() { - uint8_t tmp_extruder = MMU2::mmu2.get_current_tool(); + if (MMU2::mmu2.get_current_tool() == (uint8_t)MMU2::FILAMENT_UNKNOWN) return; lcd_update_enable(false); lcd_clear(); lcd_puts_at_P(0, 1, _T(MSG_UNLOADING_FILAMENT)); lcd_print(' '); - lcd_print(tmp_extruder + 1); + lcd_print(MMU2::mmu2.get_current_tool() + 1); // unload just current filament for multimaterial printers (used also in M702) MMU2::mmu2.unload(); From 2216ba9fbff8a57322ea3f5df5f885e81a2f9f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 12:13:26 +0000 Subject: [PATCH 245/319] M600: Ask for which slot to use when loading This fixes an issue where the assumed slot to use is unknown and the printer will hang on loading filament 100. Another good thing is this is an old user feature request which we have in our 3.12 milestone. Change in memory: Flash: +14 bytes SRAM: -1 bytes --- Firmware/Marlin_main.cpp | 9 ++++----- Firmware/mmu2.cpp | 4 ---- Firmware/mmu2.h | 4 ---- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 6bf7c54e2..7a0c72548 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3512,8 +3512,8 @@ static void mmu_M600_unload_filament() { /// @brief load filament for mmu v2 /// @par nozzle_temp nozzle temperature to load filament static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { - uint8_t tmp_extruder = MMU2::mmu2.get_previous_tool(); - + // TODO: Only ask for the slot if automatic/ SpoolJoin is off + uint8_t slot = choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER)); // TODO SpoolJoin /*if (automatic) { tmp_extruder = ad_getAlternative(tmp_extruder); @@ -3522,12 +3522,11 @@ static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { lcd_clear(); lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); lcd_print(' '); - lcd_print(tmp_extruder + 1); + lcd_print(slot + 1); - // printf_P(PSTR("T code: %d \n"), tmp_extruder); setTargetHotend(nozzle_temp, active_extruder); - MMU2::mmu2.load_filament_to_nozzle(tmp_extruder); + MMU2::mmu2.load_filament_to_nozzle(slot); load_filament_final_feed(); // @@TODO verify st_synchronize(); diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index bcc8e6b0b..fd154c195 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -96,7 +96,6 @@ MMU2::MMU2() : is_mmu_error_monitor_active(false) , logic(&mmu2Serial) , extruder(MMU2_NO_TOOL) - , previous_extruder(MMU2_NO_TOOL) , tool_change_extruder(MMU2_NO_TOOL) , resume_position() , resume_hotend_temp(0) @@ -286,7 +285,6 @@ bool MMU2::tool_change(uint8_t index) { plan_set_e_position(current_position[E_AXIS]); extruder = index; //filament change is finished - previous_extruder = extruder; // @@TODO really report onto the serial? May be for the Octoprint? Not important now // SERIAL_ECHO_START(); @@ -319,7 +317,6 @@ bool MMU2::tool_change(char code, uint8_t slot) { logic.ToolChange(slot); manage_response(false, false); extruder = slot; - previous_extruder = extruder; set_extrude_min_temp(EXTRUDE_MINTEMP); } break; @@ -466,7 +463,6 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); extruder = index; - previous_extruder = extruder; Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); } diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 7766234b6..88be8c7bc 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -146,9 +146,6 @@ public: /// @returns the active filament slot index (0-4) or 0xff in case of no active tool uint8_t get_current_tool() const; - /// @returns the previous active filament slot index (0-4) or 0xff in case of no active tool at boot-up - inline uint8_t get_previous_tool() const { return previous_extruder; }; - /// @returns The filament slot index (0 to 4) that will be loaded next, 0xff in case of no active tool change uint8_t get_tool_change_tool() const; @@ -257,7 +254,6 @@ private: ProtocolLogic logic; ///< implementation of the protocol logic layer uint8_t extruder; ///< currently active slot in the MMU ... somewhat... not sure where to get it from yet - uint8_t previous_extruder; ///< last active slot in the MMU, useful for M600 uint8_t tool_change_extruder; ///< only used for UI purposes xyz_pos_t resume_position; From f2971317924c06993a28be9f9bd7fab5855123a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 12:16:35 +0000 Subject: [PATCH 246/319] M600: lcd_change_fil_state does not need to be global Refactor lcd_alright() to save flash Change in memory: Flash: -98 bytes SRAM: -1 bytes --- Firmware/Marlin.h | 1 - Firmware/Marlin_main.cpp | 17 +++---- Firmware/ultralcd.cpp | 105 +++++++++++++++++---------------------- Firmware/ultralcd.h | 2 +- 4 files changed, 53 insertions(+), 72 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 43ace4ef9..f5148fe6c 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -281,7 +281,6 @@ extern float max_pos[3]; extern bool axis_known_position[3]; extern int fanSpeed; extern uint8_t newFanSpeed; -extern int8_t lcd_change_fil_state; extern float default_retraction; void get_coordinates(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 7a0c72548..5340e163f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -189,8 +189,6 @@ int extruder_multiply[EXTRUDERS] = {100 bool homing_flag = false; -int8_t lcd_change_fil_state = 0; - unsigned long pause_time = 0; unsigned long start_pause_print = _millis(); unsigned long t_fan_rising_edge = _millis(); @@ -3566,8 +3564,6 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (!MMU2::mmu2.Enabled()) M600_wait_for_user(HotendTempBckp); - lcd_change_fil_state = 0; - // Unload filament if (MMU2::mmu2.Enabled()) mmu_M600_unload_filament(); @@ -3579,9 +3575,9 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float if (!MMU2::mmu2.Enabled()) { KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_change_fil_state = + uint8_t choice = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LCD_LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 - if (lcd_change_fil_state == LCD_MIDDLE_BUTTON_CHOICE) { + if (choice == LCD_MIDDLE_BUTTON_CHOICE) { lcd_clear(); lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT)); current_position[X_AXIS] -= 100; @@ -11505,14 +11501,13 @@ void load_filament_final_feed() //! @par nozzle_temp nozzle temperature to load filament void M600_check_state(float nozzle_temp) { - lcd_change_fil_state = 0; - while (lcd_change_fil_state != 1) + uint8_t lcd_change_filament_state = 0; + while (lcd_change_filament_state != 1) { - lcd_change_fil_state = 0; KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_alright(); + lcd_change_filament_state = lcd_alright(); KEEPALIVE_STATE(IN_HANDLER); - switch(lcd_change_fil_state) + switch(lcd_change_filament_state) { // Filament failed to load so load it again case 2: diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 96b480bc4..e4b8b8669 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2255,74 +2255,61 @@ void lcd_loading_filament() { -void lcd_alright() { - int enc_dif = 0; - int cursor_pos = 1; +uint8_t lcd_alright() { + int8_t enc_dif = 0; + uint8_t cursor_pos = 1; + + lcd_clear(); + lcd_puts_at_P(0, 0, _i("Changed correctly?"));////MSG_CORRECTLY c=20 + lcd_puts_at_P(1, 1, _T(MSG_YES)); + lcd_puts_at_P(1, 2, _i("Filament not loaded"));////MSG_NOT_LOADED c=19 + lcd_puts_at_P(1, 3, _i("Color not correct"));////MSG_NOT_COLOR c=19 + lcd_putc_at(0, 1, '>'); + enc_dif = lcd_encoder_diff; + lcd_consume_click(); + while (1) + { + manage_heater(); + manage_inactivity(true); + if (abs(enc_dif - lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) + { - lcd_clear(); + if (enc_dif > lcd_encoder_diff ) { + // Rotating knob counter clockwise + cursor_pos--; + } else if (enc_dif < lcd_encoder_diff) { + // Rotating knob clockwise + cursor_pos++; + } + if (cursor_pos > 3) { + cursor_pos = 3; + Sound_MakeSound(e_SOUND_TYPE_BlindAlert); + } else if (cursor_pos < 1) { + cursor_pos = 1; + Sound_MakeSound(e_SOUND_TYPE_BlindAlert); + } - lcd_puts_at_P(0, 0, _i("Changed correctly?"));////MSG_CORRECTLY c=20 - lcd_puts_at_P(1, 1, _T(MSG_YES)); - lcd_puts_at_P(1, 2, _i("Filament not loaded"));////MSG_NOT_LOADED c=19 - lcd_puts_at_P(1, 3, _i("Color not correct"));////MSG_NOT_COLOR c=19 - lcd_putc_at(0, 1, '>'); + // Update '>' render only + lcd_puts_at_P(0, 1, PSTR(" \n \n ")); + lcd_putc_at(0, cursor_pos, '>'); - - enc_dif = lcd_encoder_diff; - lcd_consume_click(); - while (lcd_change_fil_state == 0) { - - manage_heater(); - manage_inactivity(true); - - if ( abs((enc_dif - lcd_encoder_diff)) > 4 ) { - - if ( (abs(enc_dif - lcd_encoder_diff)) > 1 ) { - if (enc_dif > lcd_encoder_diff ) { - cursor_pos --; + // Consume rotation event and make feedback sound + enc_dif = lcd_encoder_diff; + Sound_MakeSound(e_SOUND_TYPE_EncoderMove); + _delay(100); } - if (enc_dif < lcd_encoder_diff ) { - cursor_pos ++; + if (lcd_clicked()) + { + Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); + lcd_clear(); + lcd_return_to_status(); + return cursor_pos; } - - if (cursor_pos > 3) { - cursor_pos = 3; - Sound_MakeSound(e_SOUND_TYPE_BlindAlert); - } - - if (cursor_pos < 1) { - cursor_pos = 1; - Sound_MakeSound(e_SOUND_TYPE_BlindAlert); - } - lcd_puts_at_P(0, 1, PSTR(" \n \n ")); - lcd_putc_at(0, cursor_pos, '>'); - enc_dif = lcd_encoder_diff; - Sound_MakeSound(e_SOUND_TYPE_EncoderMove); - _delay(100); - } - - } - - - if (lcd_clicked()) { - Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); - lcd_change_fil_state = cursor_pos; - _delay(500); - - } - - - - }; - - - lcd_clear(); - lcd_return_to_status(); - + }; } void show_preheat_nozzle_warning() diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index ff0650ce5..fd48e7be1 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -36,7 +36,7 @@ void lcd_reset_alert_level(); void lcd_adjust_z(); void lcd_pick_babystep(); -void lcd_alright(); +uint8_t lcd_alright(); void show_preheat_nozzle_warning(); void lcd_wait_interact(); void lcd_loading_filament(); From 635ae2bf204f0eae424edd4306b1f274fe80343b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 12:28:51 +0000 Subject: [PATCH 247/319] M600: Small optimisation in if statements Change in memory: Flash: -4 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5340e163f..4a4148cb7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3573,7 +3573,8 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float { FSensorBlockRunout fsBlockRunout; - if (!MMU2::mmu2.Enabled()) { + if (!MMU2::mmu2.Enabled()) + { KEEPALIVE_STATE(PAUSED_FOR_USER); uint8_t choice = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, LCD_LEFT_BUTTON_CHOICE); ////MSG_UNLOAD_SUCCESSFUL c=20 r=2 @@ -3585,9 +3586,10 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float st_synchronize(); lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually.")); ////MSG_CHECK_IDLER c=20 r=5 } + M600_load_filament(); } - - if (MMU2::mmu2.Enabled()) { + else // MMU is enabled + { if (!automatic) { if (saved_printing){ // if M600 was invoked by filament senzor (FINDA) eject filament so user can easily remove it @@ -3602,9 +3604,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float } } mmu_M600_load_filament(automatic, HotendTempBckp); - } else - M600_load_filament(); - + } if (!automatic) M600_check_state(HotendTempBckp); From bf9ba3c0030868c4b4d5c7954b823d48074a13bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 13:28:12 +0000 Subject: [PATCH 248/319] Optimisation: setTargetedHotend serial message Change in memory: Flash: -130 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4a4148cb7..673c20d9f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9837,23 +9837,9 @@ bool setTargetedHotend(int code, uint8_t &extruder) extruder = code_value_uint8(); if(extruder >= EXTRUDERS) { SERIAL_ECHO_START; - switch(code){ - case 104: - SERIAL_ECHORPGM(_n("M104 Invalid extruder "));////MSG_M104_INVALID_EXTRUDER - break; - case 105: - SERIAL_ECHORPGM(_n("M105 Invalid extruder "));////MSG_M105_INVALID_EXTRUDER - break; - case 109: - SERIAL_ECHORPGM(_n("M109 Invalid extruder "));////MSG_M109_INVALID_EXTRUDER - break; - case 218: - SERIAL_ECHORPGM(_n("M218 Invalid extruder "));////MSG_M218_INVALID_EXTRUDER - break; - case 221: - SERIAL_ECHORPGM(_n("M221 Invalid extruder "));////MSG_M221_INVALID_EXTRUDER - break; - } + serialprintPGM(PSTR("M")); + SERIAL_ECHO(code); + SERIAL_ECHOPGM(" Invalid extruder "); SERIAL_PROTOCOLLN((int)extruder); return true; } From 0c1052b0dacf28ce0183087f8c6d858119d38ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 14:03:40 +0000 Subject: [PATCH 249/319] Optimisation: mmu_M600_load_filament Don't render full screen for Loading Filament X this is already done in load_filament_to_nozzle so no need to do it twice Change in memory: Flash: -54 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 673c20d9f..b2beac855 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3516,11 +3516,6 @@ static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { /*if (automatic) { tmp_extruder = ad_getAlternative(tmp_extruder); }*/ - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT)); - lcd_print(' '); - lcd_print(slot + 1); setTargetHotend(nozzle_temp, active_extruder); From f49b88c1a198f4232a69d7a0aa5d55c9810a3864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 14:05:47 +0000 Subject: [PATCH 250/319] Optimisation: lcd_commands "M702 C" should be "M702" Change in memory: Flash: -2 bytes SRAM: 0 bytes --- Firmware/ultralcd.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e4b8b8669..912bad3c0 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -964,7 +964,7 @@ void lcd_commands() enquecommand_P(PSTR("M140 S0")); // turn off heatbed enquecommand_P(PSTR("G1 Z10 F1300.000")); //lift Z enquecommand_P(PSTR("G1 X10 Y180 F4000")); //Go to parking position - if (MMU2::mmu2.Enabled()) enquecommand_P(PSTR("M702 C")); //unload from nozzle + if (MMU2::mmu2.Enabled()) enquecommand_P(PSTR("M702")); //unload from nozzle enquecommand_P(PSTR("M84"));// disable motors forceMenuExpire = true; //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen lcd_commands_step = 1; @@ -3956,6 +3956,7 @@ static void lcd_wizard_load() { lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); loading_flag = true; gcode_M701(FILAMENTCHANGE_FIRSTFEED, 0); + //enquecommand_P(PSTR("M701")); } bool lcd_autoDepleteEnabled() From f984072eab46737d7df51a25b8edbf9334b3d381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 3 Sep 2022 16:23:53 +0000 Subject: [PATCH 251/319] Remove unused #define --- Firmware/Marlin_main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b2beac855..4769389ec 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -11659,8 +11659,6 @@ void marlin_wait_for_click() KEEPALIVE_STATE(busy_state_backup); } -#define FIL_LOAD_LENGTH 60 - #ifdef PSU_Delta bool bEnableForce_z; From db1b0ea9ac6b7fb84f4556b17af89a81fe991795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 4 Sep 2022 12:59:59 +0000 Subject: [PATCH 252/319] Optimisation: Set lastpos using memcpy directly Verified the change by running the M600 gcode. All axis move as expected. Change in memory: Flash: -64 bytes SRAM: 0 bytes --- Firmware/Marlin_main.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4769389ec..053a24100 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3536,10 +3536,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float float HotendTempBckp = degTargetHotend(active_extruder); int fanSpeedBckp = fanSpeed; - lastpos[X_AXIS] = current_position[X_AXIS]; - lastpos[Y_AXIS] = current_position[Y_AXIS]; - lastpos[Z_AXIS] = current_position[Z_AXIS]; - lastpos[E_AXIS] = current_position[E_AXIS]; + memcpy(lastpos, current_position, sizeof(lastpos)); // Retract E current_position[E_AXIS] += e_shift; From 27ff01cf91f8281c6ca6f4fa1860527a97a924aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 4 Sep 2022 14:17:38 +0000 Subject: [PATCH 253/319] Shorter code Change in memory: Flash: 0 bytes SRAM: 0 bytes --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 912bad3c0..1b7513bcb 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5640,7 +5640,7 @@ static void lcd_main_menu() #endif //MMU_HAS_CUTTER } else { #ifdef FILAMENT_SENSOR - if (fsensor.getAutoLoadEnabled() && (MMU2::mmu2.Enabled() == false)) { + if (fsensor.getAutoLoadEnabled()) { MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18 } else From 04a1a67b0578a3e5651ffe5e41cdc5c2fb80d164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 4 Sep 2022 12:49:34 +0000 Subject: [PATCH 254/319] PFW-1386 Address TODO We want to move the Z-axis after the XY move is done. raise_z cannot be used here because it relies on current_position[] for all axis. It is actually 10 bytes cheaper to use the previous method because syncing current_position with lastpos is surprisingly expensive --- Firmware/Marlin_main.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 053a24100..f2dbc2b1c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3544,7 +3544,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float st_synchronize(); // Raise the Z axis - float delta = raise_z(z_shift); + raise_z(z_shift); // Move XY to side current_position[X_AXIS] = x_position; @@ -3611,15 +3611,14 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED); } - // TODO: Move the Z-axis after XY, not before. Currently this does not work - // and raise_z seems to have no affect after XY move for unknown reasons. - // This needs to be looked into. - // Recover Z axis - raise_z(-delta); - // Move XY back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); st_synchronize(); + + // Move Z back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder); + st_synchronize(); + // Set E position to original plan_set_e_position(lastpos[E_AXIS]); From 4d3a5433ad40a319dfaa2cec38785dcd0808327d Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 7 Sep 2022 15:58:09 +0200 Subject: [PATCH 255/319] Implement read/write registers for M707/M708 --- Firmware/Marlin_main.cpp | 58 +++++++++++++------------------- Firmware/mmu2.cpp | 18 ++++++---- Firmware/mmu2.h | 10 +++--- Firmware/mmu2_protocol.cpp | 6 ++-- Firmware/mmu2_protocol.h | 14 ++++---- Firmware/mmu2_protocol_logic.cpp | 48 +++++++++++++++++++++++--- Firmware/mmu2_protocol_logic.h | 6 ++++ 7 files changed, 99 insertions(+), 61 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f2dbc2b1c..907c081b5 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8648,64 +8648,52 @@ Sigma_Exit: ### M707 - Read from MMU register #### Usage - M707 [ A | C ] + M707 [ A ] - M707 A0x14 C2 - Read two bytes from register 0x14 + M707 A0x14 - Read a 16bit integer from register 0x14 and prints the result onto the serial line. + + Does nothing if the A parameter is not present or if MMU is not enabled. #### Parameters - - `A` - Address of register in hexidecimal. Default value is 0. - - `C` - Number of bytes to read. Default value is 0. + - `A` - Address of register in hexidecimal. */ - case 707: - { - uint8_t addr = 0; - uint8_t nrbytes = 0; - if ( MMU2::mmu2.Enabled() ) - { + case 707: { + if ( MMU2::mmu2.Enabled() ) { if( code_seen('A') ) { - addr = uint8_t(strtol(strchr_pointer+1, NULL, 0)); + MMU2::mmu2.ReadRegister(uint8_t(strtol(strchr_pointer+1, NULL, 16))); } - if( code_seen('C') ) { - nrbytes = code_value_uint8(); - } - MMU2::mmu2.ReadRegister(addr, nrbytes); } - } - break; + } break; /*! ### M708 - Write to MMU register #### Usage - M708 [ A | X | C ] + M708 [ A | X ] - M708 A0x14 X30 C1 - Write to register 0x14 the value 30 which is 1 byte. + M708 A0x14 X30 - Write to register 0x14 the value 30. + + Does nothing if A parameter is missing #### Parameters - - `A` - Address of register in hexidecimal. Default value is 0. - - `X` - Data to write. Default value is 0. - - `C` - Number of bytes to write. Default value is 0. + - `A` - Address of register in hexidecimal. + - `X` - Data to write (16-bit integer). Default value 0. */ - case 708: - { - uint8_t addr = 0; - uint8_t data = 0; - uint8_t nrbytes = 0; - if ( MMU2::mmu2.Enabled() ) - { + case 708: { + if ( MMU2::mmu2.Enabled() ){ + uint8_t addr = 0; if( code_seen('A') ) { - addr = uint8_t(strtol(strchr_pointer+1, NULL, 0)); + addr = uint8_t(strtol(strchr_pointer+1, NULL, 16)); } + uint8_t data = 0; if( code_seen('X') ) { data = code_value_uint8(); } - if( code_seen('C') ) { - nrbytes = code_value_uint8(); + if(addr){ + MMU2::mmu2.WriteRegister(addr, data); } - MMU2::mmu2.WriteRegister(addr, data, nrbytes); } - } - break; + } break; /*! ### M709 - MMU turn on/off/reset diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index fd154c195..0a84c972d 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -178,14 +178,20 @@ void MMU2::PowerOn(){ power_on(); } -void MMU2::ReadRegister(uint8_t address, uint8_t nrbytes){ - // TODO, implement for gcode M707 - // Currently this function is NOP +bool MMU2::ReadRegister(uint8_t address){ + if( ! WaitForMMUReady()) + return false; + logic.ReadRegister(address); // we may signal the accepted/rejected status of the response as return value of this function + manage_response(false, false); + return true; } -void MMU2::WriteRegister(uint8_t address, uint8_t data, uint8_t nrbytes){ - // TODO, implement for gcode M708 - // Currently this function is NOP +bool MMU2::WriteRegister(uint8_t address, uint16_t data){ + if( ! WaitForMMUReady()) + return false; + logic.WriteRegister(address, data); // we may signal the accepted/rejected status of the response as return value of this function + manage_response(false, false); + return true; } void MMU2::mmu_loop() { diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 88be8c7bc..4ebf78668 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -87,16 +87,14 @@ public: /// Read from a MMU register (See gcode M707) /// @param address Address of register in hexidecimal - /// @param nrbytes Number of bytes to read - /// @returns no return - void ReadRegister(uint8_t address, uint8_t nrbytes); + /// @returns true upon success + bool ReadRegister(uint8_t address); /// Write from a MMU register (See gcode M708) /// @param address Address of register in hexidecimal /// @param data Data to write to register - /// @param nrbytes Number of bytes to write - /// @returns no return - void WriteRegister(uint8_t address, uint8_t data, uint8_t nrbytes); + /// @returns true upon success + bool WriteRegister(uint8_t address, uint16_t data); /// The main loop of MMU processing. diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp index 91c645dd4..1ccd63c56 100644 --- a/Firmware/mmu2_protocol.cpp +++ b/Firmware/mmu2_protocol.cpp @@ -271,10 +271,10 @@ uint8_t Protocol::EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCod uint8_t Protocol::EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff) { return EncodeResponseRead(msg, true, findaValue, txbuff); -} -uint8_t Protocol::EncodeResponseVersion(const RequestMsg &msg, uint16_t value, uint8_t *txbuff) { - return EncodeResponseRead(msg, true, value, txbuff); + + + } uint8_t Protocol::EncodeResponseQueryOperation(const RequestMsg &msg, ResponseCommandStatus rcs, uint8_t *txbuff) { diff --git a/Firmware/mmu2_protocol.h b/Firmware/mmu2_protocol.h index 870999df9..65f7e8ab0 100644 --- a/Firmware/mmu2_protocol.h +++ b/Firmware/mmu2_protocol.h @@ -57,7 +57,7 @@ struct RequestMsg { uint8_t crc = 0; crc = modules::crc::CRC8::CCITT_updateCX(0, (uint8_t)code); crc = modules::crc::CRC8::CCITT_updateCX(crc, value); - crc = modules::crc::CRC8::CCITT_updateCX(crc, value2); + crc = modules::crc::CRC8::CCITT_updateW(crc, value2); return crc; } @@ -179,12 +179,12 @@ public: /// @returns number of bytes written into txbuff static uint8_t EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff); - /// Encode response to Version query - /// @param msg source request message for this response - /// @param value version number (0-255) - /// @param txbuff where to format the message - /// @returns number of bytes written into txbuff - static uint8_t EncodeResponseVersion(const RequestMsg &msg, uint16_t value, uint8_t *txbuff); + + + + + + /// Encode response to Query operation status /// @param msg source request message for this response diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 46c94e344..0fc4b9989 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -6,7 +6,7 @@ namespace MMU2 { -static const uint8_t supportedMmuFWVersion[3] PROGMEM = { 2, 1, 1 }; +static const uint8_t supportedMmuFWVersion[3] PROGMEM = { 2, 1, 3 }; void ProtocolLogic::CheckAndReportAsyncEvents() { // even when waiting for a query period, we need to report a change in filament sensor's state @@ -47,6 +47,10 @@ void ProtocolLogic::SendReadRegister(uint8_t index, ScopeState nextState) { scopeState = nextState; } +void ProtocolLogic::SendWriteRegister(uint8_t index, uint16_t value, ScopeState nextState){ + SendWriteMsg(RequestMsg(RequestMsgCodes::Write, index, value)); + scopeState = nextState; +} // searches for "ok\n" in the incoming serial data (that's the usual response of the old MMU FW) struct OldMMUFWDetector { @@ -124,6 +128,14 @@ void ProtocolLogic::SendMsg(RequestMsg rq) { RecordUARTActivity(); } +void ProtocolLogic::SendWriteMsg(RequestMsg rq){ + uint8_t txbuff[Protocol::MaxRequestSize()]; + uint8_t len = Protocol::EncodeWriteRequest(rq.value, rq.value2, txbuff); + uart->write(txbuff, len); + LogRequestMsg(txbuff, len); + RecordUARTActivity(); +} + void ProtocolLogic::StartSeqRestart() { retries = maxRetries; SendVersion(0); @@ -394,6 +406,16 @@ StepStatus ProtocolLogic::IdleStep() { } SendFINDAQuery(); return Processing; + case ScopeState::ReadRegisterSent: + if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { + // @@TODO just dump the value onto the serial + } + return Finished; + case ScopeState::WriteRegisterSent: + if (rsp.paramCode == ResponseMsgParamCodes::Accepted) { + // @@TODO do something? Retry if not accepted? + } + return Finished; default: return ProtocolError; } @@ -475,6 +497,14 @@ void ProtocolLogic::Home(uint8_t mode) { PlanGenericRequest(RequestMsg(RequestMsgCodes::Home, mode)); } +void ProtocolLogic::ReadRegister(uint8_t address){ + PlanGenericRequest(RequestMsg(RequestMsgCodes::Read, address)); +} + +void ProtocolLogic::WriteRegister(uint8_t address, uint16_t data){ + PlanGenericRequest(RequestMsg(RequestMsgCodes::Write, address, data)); +} + void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { plannedRq = rq; if (!ExpectsResponse()) { @@ -483,19 +513,29 @@ void ProtocolLogic::PlanGenericRequest(RequestMsg rq) { } bool ProtocolLogic::ActivatePlannedRequest() { - if (plannedRq.code == RequestMsgCodes::Button) { + switch(plannedRq.code){ + case RequestMsgCodes::Button: // only issue the button to the MMU and do not restart the state machines SendButton(plannedRq.value); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); return true; - } else if (plannedRq.code != RequestMsgCodes::unknown) { + case RequestMsgCodes::Read: + SendReadRegister(plannedRq.value, ScopeState::ReadRegisterSent ); + plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); + return true; + case RequestMsgCodes::Write: + SendWriteRegister(plannedRq.value, plannedRq.value2, ScopeState::WriteRegisterSent ); + plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); + return true; + case RequestMsgCodes::unknown: + return false; + default:// commands currentScope = Scope::Command; SetRequestMsg(plannedRq); plannedRq = RequestMsg(RequestMsgCodes::unknown, 0); CommandRestart(); return true; } - return false; } StepStatus ProtocolLogic::SwitchFromIdleToCommand() { diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 9c07837f4..ea1372406 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -88,6 +88,8 @@ public: void ResetMMU(); void Button(uint8_t index); void Home(uint8_t mode); + void ReadRegister(uint8_t address); + void WriteRegister(uint8_t address, uint16_t data); /// Step the state machine StepStatus Step(); @@ -131,6 +133,7 @@ private: #endif StepStatus ExpectingMessage(); void SendMsg(RequestMsg rq); + void SendWriteMsg(RequestMsg rq); void SwitchToIdle(); StepStatus SuppressShortDropOuts(const char *msg_P, StepStatus ss); StepStatus HandleCommunicationTimeout(); @@ -187,6 +190,8 @@ private: FINDAReqSent, StatisticsSent, ButtonSent, + ReadRegisterSent, + WriteRegisterSent, // States which do not expect a message - MSb set NotExpectsResponse = 0x80, @@ -217,6 +222,7 @@ private: void SendButton(uint8_t btn); void SendVersion(uint8_t stage); void SendReadRegister(uint8_t index, ScopeState nextState); + void SendWriteRegister(uint8_t index, uint16_t value, ScopeState nextState); StepStatus ProcessVersionResponse(uint8_t stage); From 2e7258d7a85ae06f01cc8d50dfd5055d1a093966 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 8 Sep 2022 11:44:29 +0200 Subject: [PATCH 256/319] Include fix protocol from MMU PR#199 --- Firmware/mmu2_protocol.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp index 1ccd63c56..16fe69f4a 100644 --- a/Firmware/mmu2_protocol.cpp +++ b/Firmware/mmu2_protocol.cpp @@ -259,7 +259,15 @@ DecodeStatus Protocol::DecodeResponse(uint8_t c) { } uint8_t Protocol::EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCodes ar, uint8_t *txbuff) { - const ResponseMsg rsp(msg, ar, 0); // this needs some cleanup @@TODO - check assembly how bad is it + // BEWARE: + // ResponseMsg rsp(RequestMsg(msg.code, msg.value), ar, 0); + // ... is NOT the same as: + // ResponseMsg rsp(msg, ar, 0); + // ... because of the usually unused parameter value2 (which only comes non-zero in write requests). + // It took me a few hours to find out why the CRC from the MMU never matched all the other sides (unit tests and the MK3S) + // It is because this was the only place where the original request kept its value2 non-zero. + // In the response, we must make sure value2 is actually zero unless being sent along with it (which is not right now) + const ResponseMsg rsp(RequestMsg(msg.code, msg.value), ar, 0); // this needs some cleanup @@TODO - check assembly how bad is it uint8_t i = BeginEncodeRequest(rsp.request, txbuff); txbuff[i] = (uint8_t)ar; ++i; @@ -271,10 +279,6 @@ uint8_t Protocol::EncodeResponseCmdAR(const RequestMsg &msg, ResponseMsgParamCod uint8_t Protocol::EncodeResponseReadFINDA(const RequestMsg &msg, uint8_t findaValue, uint8_t *txbuff) { return EncodeResponseRead(msg, true, findaValue, txbuff); - - - - } uint8_t Protocol::EncodeResponseQueryOperation(const RequestMsg &msg, ResponseCommandStatus rcs, uint8_t *txbuff) { From b3ec36228d47d4ec0df6c71fc98c3c53f520de00 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 8 Sep 2022 14:07:46 +0200 Subject: [PATCH 257/319] Update doxygen documentation for M704-M709 --- Firmware/Marlin_main.cpp | 44 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 907c081b5..1768acbbe 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8599,7 +8599,7 @@ Sigma_Exit: break; /*! - ### M704 - Load to MMU + ### M704 - Load to MMU M704: Load to MMU #### Usage M704 [ P ] @@ -8614,7 +8614,7 @@ Sigma_Exit: break; /*! - ### M705 - Eject filament + ### M705 - Eject filament M705: Eject filament #### Usage M705 [ P ] @@ -8630,7 +8630,7 @@ Sigma_Exit: /*! - ### M706 - Cut filament + ### M706 - Cut filament M706: Cut filament #### Usage M706 [ P ] @@ -8645,17 +8645,20 @@ Sigma_Exit: break; /*! - ### M707 - Read from MMU register + ### M707 - Read from MMU register M707: Read from MMU register #### Usage M707 [ A ] - M707 A0x14 - Read a 16bit integer from register 0x14 and prints the result onto the serial line. - - Does nothing if the A parameter is not present or if MMU is not enabled. - #### Parameters - `A` - Address of register in hexidecimal. + + #### Example + + M707 A0x1b - Read a 8bit integer from register 0x1b and prints the result onto the serial line. + + Does nothing if the A parameter is not present or if MMU is not enabled. + */ case 707: { if ( MMU2::mmu2.Enabled() ) { @@ -8666,18 +8669,19 @@ Sigma_Exit: } break; /*! - ### M708 - Write to MMU register + ### M708 - Write to MMU register M707: Write to MMU register #### Usage M708 [ A | X ] - M708 A0x14 X30 - Write to register 0x14 the value 30. - - Does nothing if A parameter is missing - #### Parameters - `A` - Address of register in hexidecimal. - `X` - Data to write (16-bit integer). Default value 0. + + #### Example + M708 A0x1b X05 - Write to register 0x1b the value 05. + + Does nothing if A parameter is missing or if MMU is not enabled. */ case 708: { if ( MMU2::mmu2.Enabled() ){ @@ -8696,17 +8700,21 @@ Sigma_Exit: } break; /*! - ### M709 - MMU turn on/off/reset + ### M709 - MMU reset M709: MMU reset The MK3S cannot not power off the MMU, for that reason the functionality is not supported. #### Usage M709 [ X ] - M709 X0 - issue an X0 command via communication into the MMU (soft reset) - M709 X1 - toggle the MMU's reset pin (hardware reset) - #### Parameters - - `X` - Reset MMU + - `X` - Reset MMU (0:soft reset | 1:hardware reset) + + #### Example + + M709 X0 - issue an X0 command via communication into the MMU (soft reset) + + M709 X1 - toggle the MMU's reset pin (hardware reset) + */ case 709: { From 8e9a49082b77972b64a84650d734ef8c2d865e38 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 8 Sep 2022 12:30:03 +0200 Subject: [PATCH 258/319] Set Cutter OFF if 0xff --- Firmware/eeprom.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/eeprom.cpp b/Firmware/eeprom.cpp index 03e02475f..f0dc61893 100644 --- a/Firmware/eeprom.cpp +++ b/Firmware/eeprom.cpp @@ -105,6 +105,8 @@ if (eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION) == 0xff) eeprom_u eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0); eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); } +//Set Cutter OFF if 0xff + if (eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_MMU_CUTTER_ENABLED, 0); } //! @brief Get default sheet name for index From fae420f1e26cce2770eb4d27b9b18d8ee26d49dd Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 8 Sep 2022 12:31:41 +0200 Subject: [PATCH 259/319] Fix MMU_ALWAYS_CUT enabled in variants --- Firmware/Tcodes.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index 3231648f0..7caed7a75 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -74,8 +74,7 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { } else { #if defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t *)EEPROM_MMU_CUTTER_ENABLED)) { - mmu_command(MmuCmd::K0 + selectedSlot); - manage_response(true, true, MMU_UNLOAD_MOVE); + MMU2::mmu2.cut_filament(selectedSlot.slot); } #endif // defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) if (selectedSlot.loadToNozzle){ // for single material usage with mmu From e39d1458a1e8c8ebc5511e6d6929c939c903a6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 15:30:46 +0000 Subject: [PATCH 260/319] Fix lost changes during rebase --- Firmware/util.cpp | 5 ++--- Firmware/util.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 2576967eb..992204f84 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -420,7 +420,7 @@ void gcode_level_check(uint16_t nGcodeLevel) { #define GCODE_DELIMITER '"' #define ELLIPSIS "..." -char *code_string(char *pStr, size_t *nLength) { +char *code_string(const char *pStr, size_t *nLength) { char* pStrBegin; char* pStrEnd; @@ -432,11 +432,10 @@ pStrEnd=strchr(pStrBegin,GCODE_DELIMITER); if(!pStrEnd) return(NULL); *nLength=pStrEnd-pStrBegin; -pStrBegin[*nLength] = '\0'; return pStrBegin; } -void printer_smodel_check(char *pStrPos) { +void printer_smodel_check(const char *pStrPos) { char* pResult; size_t nLength,nPrinterNameLength; diff --git a/Firmware/util.h b/Firmware/util.h index 9b33cc2e4..f2ad46c4b 100644 --- a/Firmware/util.h +++ b/Firmware/util.h @@ -104,7 +104,7 @@ extern ClCheckGcode oCheckGcode; void fCheckModeInit(); void nozzle_diameter_check(uint16_t nDiameter); void printer_model_check(uint16_t nPrinterModel); -void printer_smodel_check(char* pStrPos); +void printer_smodel_check(const char* pStrPos); void fw_version_check(const char *pVersion); void gcode_level_check(uint16_t nGcodeLevel); From 2276217cbb47501a0558d988446c8d1a863a3384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 10:23:55 +0000 Subject: [PATCH 261/319] Optimisation: Remove forceMenuExpire variable During first layer calibration we have the live Z baby step menu on the LCD and the user can tune their Z offset live. Once the first layer calibration is done, we want to exit the menu immediately. For this purpose it is much more efficient to call lcd_return_to_status(). There is no visual difference on the LCD for the user. Change in memory footprint: Flash: -34 bytes SRAM: -1 byte --- Firmware/ultralcd.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 1b7513bcb..0090d6245 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -76,7 +76,6 @@ bool isPrintPaused = false; static ShortTimer display_time; //just timer for showing pid finished message on lcd; static uint16_t pid_temp = DEFAULT_PID_TEMP; -static bool forceMenuExpire = false; static bool lcd_autoDeplete; @@ -966,7 +965,7 @@ void lcd_commands() enquecommand_P(PSTR("G1 X10 Y180 F4000")); //Go to parking position if (MMU2::mmu2.Enabled()) enquecommand_P(PSTR("M702")); //unload from nozzle enquecommand_P(PSTR("M84"));// disable motors - forceMenuExpire = true; //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen + lcd_return_to_status(); //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen lcd_commands_step = 1; break; case 1: @@ -7722,13 +7721,6 @@ static inline bool other_menu_expired() && menu_menu != lcd_babystep_z && lcd_timeoutToStatus.expired(LCD_TIMEOUT_TO_STATUS)); } -static inline bool forced_menu_expire() -{ - bool retval = (menu_menu != lcd_status_screen - && forceMenuExpire); - forceMenuExpire = false; - return retval; -} void menu_lcd_lcdupdate_func(void) { @@ -7796,7 +7788,7 @@ void menu_lcd_lcdupdate_func(void) (*menu_menu)(); - if (z_menu_expired() || other_menu_expired() || forced_menu_expire()) + if (z_menu_expired() || other_menu_expired()) { // Exiting a menu. Let's call the menu function the last time with menu_leaving flag set to true // to give it a chance to save its state. From afc67332c765a54ef6526cf379c55505c2542578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 4 Sep 2022 11:52:47 +0000 Subject: [PATCH 262/319] PFW-1362 Initial commit --- Firmware/AutoDeplete.cpp | 93 +++++++++++++++++----------------------- Firmware/AutoDeplete.h | 67 +++++++++++++++++++++++------ Firmware/Marlin_main.cpp | 14 +++--- Firmware/Tcodes.cpp | 13 +++--- Firmware/mmu2.cpp | 15 +++++++ Firmware/ultralcd.cpp | 27 +----------- Firmware/ultralcd.h | 1 - 7 files changed, 124 insertions(+), 106 deletions(-) diff --git a/Firmware/AutoDeplete.cpp b/Firmware/AutoDeplete.cpp index 9c4340f09..0a0274db5 100644 --- a/Firmware/AutoDeplete.cpp +++ b/Firmware/AutoDeplete.cpp @@ -1,79 +1,66 @@ -//! @file -//! @author: Marek Bel -//! @date Jan 3, 2019 - #include "AutoDeplete.h" -#include "assert.h" +#include "eeprom.h" +#include "Filament_sensor.h" -//! @brief bit field marking depleted filaments -//! -//! binary 1 marks filament as depleted -//! Zero initialized value means, that no filament is depleted. -static uint8_t depleted; -static const uint8_t filamentCount = 5; +namespace SpoolJoin { -//! @return binary 1 for all filaments -//! @par fCount number of filaments -static constexpr uint8_t allDepleted(uint8_t fCount) +SpoolJoin spooljoin; + +SpoolJoin::SpoolJoin() + : status(EEPROM::Unknown) + , currentMMUSlot(0) { - return fCount == 1 ? 1 : ((1 << (fCount - 1)) | allDepleted(fCount - 1)); } -//! @brief Is filament available for printing? -//! @par filament Filament number to be checked -//! @retval true Filament is available for printing. -//! @retval false Filament is not available for printing. -static bool loaded(uint8_t filament) +void SpoolJoin::updateSpoolJoinStatus(EEPROM newStatus) { - if (depleted & (1 << filament)) return false; - return true; + status = newStatus; + eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)status); } -//! @brief Mark filament as not available for printing. -//! @par filament filament to be marked -void ad_markDepleted(uint8_t filament) +void SpoolJoin::initSpoolJoinStatus() { - assert(filament < filamentCount); - if (filament < filamentCount) + EEPROM currentStatus = (EEPROM)eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE); + if( currentStatus == EEPROM::Empty) { - depleted |= 1 << filament; + // By default SpoolJoin is disabled + updateSpoolJoinStatus(EEPROM::Disabled); + } else { + updateSpoolJoinStatus(currentStatus); } } -//! @brief Mark filament as available for printing. -//! @par filament filament to be marked -void ad_markLoaded(uint8_t filament) +void SpoolJoin::toggleSpoolJoin() { - assert(filament < filamentCount); - if (filament < filamentCount) + if (eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Disabled) { - depleted &= ~(1 << filament); + eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)EEPROM::Enabled); + } else { + eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)EEPROM::Disabled); } } -//! @brief Get alternative filament, which is not depleted -//! @par filament filament -//! @return Filament, if it is depleted, returns next available, -//! if all filaments are depleted, returns filament function parameter. -uint8_t ad_getAlternative(uint8_t filament) +uint8_t SpoolJoin::isSpoolJoinEnabled() { - assert(filament < filamentCount); - for (uint8_t i = 0; i +#include "eeprom.h" -void ad_markDepleted(uint8_t filament); -void ad_markLoaded(uint8_t filament); -uint8_t ad_getAlternative(uint8_t filament); -bool ad_allDepleted(); +// See documentation here: https://help.prusa3d.com/article/spooljoin-mmu2s_134252 -#endif /* AUTODEPLETE_H */ +namespace SpoolJoin { + +class SpoolJoin { +public: + SpoolJoin(); + + enum class EEPROM : uint8_t { + Unknown, ///< SpoolJoin is unknown while printer is booting up + Enabled, ///< SpoolJoin is enabled in EEPROM + Disabled, ///< SpoolJoin is disabled in EEPROM + NA, ///< SpoolJoin is 'Not Applicable' when Fsensor is faulty + Empty = 0xFF ///< EEPROM has not been set before and all bits are 1 (0xFF) - either a new printer or user erased the memory + }; + + /// @brief Called when EEPROM is ready to be read + void initSpoolJoinStatus(); + + /// @brief Enable SpoolJoin + inline void enableSpoolJoin() { updateSpoolJoinStatus(EEPROM::Enabled); }; + + /// @brief Disable SpoolJoin + inline void disableSpoolJoin() { updateSpoolJoinStatus(EEPROM::Disabled); }; + + /// @brief Toggle SpoolJoin + static void toggleSpoolJoin(); + + /// @brief Check if SpoolJoin is enabled + uint8_t isSpoolJoinEnabled(); + + /// @brief Fetch the next slot number should count from 0 to 4. + /// When filament slot 4 is depleted, the next slot should be 0. + /// @returns the next slot, ranges from 0 to 4 + uint8_t nextSlot(); + +private: + /// @brief Update EEPROM + /// @param newStatus Status to write into EEPROM + void updateSpoolJoinStatus(EEPROM newStatus); + + /// @brief SpoolJoin status + enum EEPROM status; + + /// @brief Currently used slot, ranges from 0 to 4 + uint8_t currentMMUSlot; +}; + +extern SpoolJoin spooljoin; + +} // namespace SpoolJoin diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1768acbbe..a1f7671f2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1115,6 +1115,7 @@ void setup() if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) { MMU2::mmu2.Start(); } + SpoolJoin::spooljoin.initSpoolJoinStatus(); //SERIAL_ECHOPAIR("Active sheet before:", static_cast(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))); @@ -3510,12 +3511,13 @@ static void mmu_M600_unload_filament() { /// @brief load filament for mmu v2 /// @par nozzle_temp nozzle temperature to load filament static void mmu_M600_load_filament(bool automatic, float nozzle_temp) { - // TODO: Only ask for the slot if automatic/ SpoolJoin is off - uint8_t slot = choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER)); - // TODO SpoolJoin - /*if (automatic) { - tmp_extruder = ad_getAlternative(tmp_extruder); - }*/ + uint8_t slot; + if (automatic) { + slot = SpoolJoin::spooljoin.nextSlot(); + } else { + // Only ask for the slot if automatic/SpoolJoin is off + slot = choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER)); + } setTargetHotend(nozzle_temp, active_extruder); diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index 7caed7a75..85a967063 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -57,14 +57,13 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { } } else { SChooseFromMenu selectedSlot; -// if (strchr_pointer[index] == '?') -// selectedSlot = TCodeChooseFromMenu(); -// else { + if (strchr_pointer[index] == '?') { + selectedSlot = TCodeChooseFromMenu(); + } else if (MMU2::mmu2.Enabled() && SpoolJoin::spooljoin.isSpoolJoinEnabled()) { + selectedSlot.slot = SpoolJoin::spooljoin.nextSlot(); + } else { selectedSlot.slot = codeValue; -// if (MMU2::mmu2.Enabled() && lcd_autoDepleteEnabled()) { -// selectedSlot.slot = ad_getAlternative(selectedSlot.slot); -// } -// } + } st_synchronize(); if (MMU2::mmu2.Enabled()) { diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 0a84c972d..51925bc9b 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -15,6 +15,7 @@ #include "temperature.h" #include "ultralcd.h" #include "cardreader.h" // for IS_SD_PRINTING +#include "AutoDeplete.h" // As of FW 3.12 we only support building the FW with only one extruder, all the multi-extruder infrastructure will be removed. // Saves at least 800B of code size @@ -211,6 +212,20 @@ void MMU2::mmu_loop() { ReportErrorHook((uint16_t)lastErrorCode, mmu2.MMUCurrentErrorCode() == ErrorCode::OK ? ErrorSourcePrinter : ErrorSourceMMU); } + // Check for FINDA filament runout + if (!FindaDetectsFilament() && CHECK_FSENSOR) { + stop_and_save_print_to_ram(0, 0); + restore_print_from_ram_and_continue(0); + if (SpoolJoin::spooljoin.isSpoolJoinEnabled() && get_current_tool() != (uint8_t)FILAMENT_UNKNOWN) // Can't auto if F=? + { + enquecommand_front_P(PSTR("M600 AUTO")); //save print and run M600 command + } + else + { + enquecommand_front_P(PSTR("M600")); //save print and run M600 command + } + } + avoidRecursion = false; } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0090d6245..64f01c14f 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -37,6 +37,7 @@ #include "sound.h" #include "mmu2.h" +#include "AutoDeplete.h" #include "static_assert.h" #include "first_lay_cal.h" @@ -76,9 +77,6 @@ bool isPrintPaused = false; static ShortTimer display_time; //just timer for showing pid finished message on lcd; static uint16_t pid_temp = DEFAULT_PID_TEMP; -static bool lcd_autoDeplete; - - static float manual_feedrate[] = MANUAL_FEEDRATE; /* LCD message status */ @@ -3958,15 +3956,6 @@ static void lcd_wizard_load() { //enquecommand_P(PSTR("M701")); } -bool lcd_autoDepleteEnabled() -{ - return (lcd_autoDeplete -#ifdef FILAMENT_SENSOR // @todo leptun: should be removed during mmu2 refactoring - needs checking - && fsensor.isReady() -#endif - ); -} - static void wizard_lay1cal_message(bool cold) { lcd_show_fullscreen_message_and_wait_P( @@ -4302,12 +4291,6 @@ static void lcd_fsensor_settings_menu() { #endif //FILAMENT_SENSOR -static void auto_deplete_switch() -{ - lcd_autoDeplete = !lcd_autoDeplete; - eeprom_update_byte((unsigned char *)EEPROM_AUTO_DEPLETE, lcd_autoDeplete); -} - static void settingsAutoDeplete() { if (MMU2::mmu2.Enabled()) @@ -4319,7 +4302,7 @@ static void settingsAutoDeplete() else #endif //FILAMENT_SENSOR { - MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), lcd_autoDeplete ? _T(MSG_ON) : _T(MSG_OFF), auto_deplete_switch); + MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); } } } @@ -7538,12 +7521,6 @@ void menu_action_sddirectory(const char* filename) void ultralcd_init() { - { - uint8_t autoDepleteRaw = eeprom_read_byte(reinterpret_cast(EEPROM_AUTO_DEPLETE)); - if (0xff == autoDepleteRaw) lcd_autoDeplete = false; - else lcd_autoDeplete = autoDepleteRaw; - - } backlight_init(); lcd_init(); lcd_refresh(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index fd48e7be1..d43b900c7 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -215,7 +215,6 @@ void lcd_language(); #endif void lcd_wizard(); -bool lcd_autoDepleteEnabled(); //! @brief Wizard state enum class WizState : uint8_t From 715af8fcc267192c80f7db1533dd9f9191d0896c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 7 Sep 2022 18:33:20 +0000 Subject: [PATCH 263/319] Rename files to SpoolJoin --- Firmware/Marlin_main.cpp | 2 +- Firmware/{AutoDeplete.cpp => SpoolJoin.cpp} | 2 +- Firmware/{AutoDeplete.h => SpoolJoin.h} | 0 Firmware/Tcodes.cpp | 2 +- Firmware/mmu2.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename Firmware/{AutoDeplete.cpp => SpoolJoin.cpp} (98%) rename Firmware/{AutoDeplete.h => SpoolJoin.h} (100%) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a1f7671f2..b1e7028c6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -88,7 +88,7 @@ #include "Tcodes.h" #include "Dcodes.h" -#include "AutoDeplete.h" +#include "SpoolJoin.h" #ifndef LA_NOCOMPAT #include "la10compat.h" diff --git a/Firmware/AutoDeplete.cpp b/Firmware/SpoolJoin.cpp similarity index 98% rename from Firmware/AutoDeplete.cpp rename to Firmware/SpoolJoin.cpp index 0a0274db5..846cce6ca 100644 --- a/Firmware/AutoDeplete.cpp +++ b/Firmware/SpoolJoin.cpp @@ -1,4 +1,4 @@ -#include "AutoDeplete.h" +#include "SpoolJoin.h" #include "eeprom.h" #include "Filament_sensor.h" diff --git a/Firmware/AutoDeplete.h b/Firmware/SpoolJoin.h similarity index 100% rename from Firmware/AutoDeplete.h rename to Firmware/SpoolJoin.h diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index 85a967063..fbeb680ac 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -1,5 +1,5 @@ #include "Tcodes.h" -#include "AutoDeplete.h" +#include "SpoolJoin.h" #include "Marlin.h" #include "language.h" #include "messages.h" diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 51925bc9b..85a076744 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -15,7 +15,7 @@ #include "temperature.h" #include "ultralcd.h" #include "cardreader.h" // for IS_SD_PRINTING -#include "AutoDeplete.h" +#include "SpoolJoin.h" // As of FW 3.12 we only support building the FW with only one extruder, all the multi-extruder infrastructure will be removed. // Saves at least 800B of code size diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 64f01c14f..20a509fed 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -37,7 +37,7 @@ #include "sound.h" #include "mmu2.h" -#include "AutoDeplete.h" +#include "SpoolJoin.h" #include "static_assert.h" #include "first_lay_cal.h" From 428f4a87ed1ff6e6b92b36fa93333195572ba17d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 7 Sep 2022 18:33:51 +0000 Subject: [PATCH 264/319] Remove unused CMake tests --- CMakeLists.txt | 1 - Tests/AutoDeplete_test.cpp | 146 ------------------------------------- 2 files changed, 147 deletions(-) delete mode 100644 Tests/AutoDeplete_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ca1d95be..db867e9bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,6 @@ set(TEST_SOURCES Tests/AutoDeplete_test.cpp Tests/PrusaStatistics_test.cpp Firmware/Timer.cpp - Firmware/AutoDeplete.cpp ) add_executable(tests ${TEST_SOURCES}) target_include_directories(tests PRIVATE Tests) diff --git a/Tests/AutoDeplete_test.cpp b/Tests/AutoDeplete_test.cpp deleted file mode 100644 index fb2964bc0..000000000 --- a/Tests/AutoDeplete_test.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/** - * @file - * @author Marek Bel - */ - -#include "catch.hpp" - -#include "../Firmware/AutoDeplete.h" - -TEST_CASE( "AutoDeplete test.", "[AutoDeplete]" ) -{ - CHECK(ad_allDepleted() == false); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 1); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - - ad_markDepleted(1); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markDepleted(3); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 4); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markDepleted(4); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 0); - CHECK(ad_getAlternative(4) == 0); - CHECK(ad_allDepleted() == false); - - ad_markDepleted(4); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 0); - CHECK(ad_getAlternative(4) == 0); - CHECK(ad_allDepleted() == false); - - ad_markDepleted(0); - - CHECK(ad_getAlternative(0) == 2); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 2); - CHECK(ad_getAlternative(4) == 2); - CHECK(ad_allDepleted() == false); - - ad_markDepleted(2); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 1); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == true); - - ad_markDepleted(2); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 1); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == true); - - ad_markLoaded(4); - - CHECK(ad_getAlternative(0) == 4); - CHECK(ad_getAlternative(1) == 4); - CHECK(ad_getAlternative(2) == 4); - CHECK(ad_getAlternative(3) == 4); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(0); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 4); - CHECK(ad_getAlternative(2) == 4); - CHECK(ad_getAlternative(3) == 4); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(3); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 3); - CHECK(ad_getAlternative(2) == 3); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(3); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 3); - CHECK(ad_getAlternative(2) == 3); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(2); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 2); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(1); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 1); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - - ad_markLoaded(1); - - CHECK(ad_getAlternative(0) == 0); - CHECK(ad_getAlternative(1) == 1); - CHECK(ad_getAlternative(2) == 2); - CHECK(ad_getAlternative(3) == 3); - CHECK(ad_getAlternative(4) == 4); - CHECK(ad_allDepleted() == false); - -} From 7c95f87867ec97f154ba42285943870ab1bf8a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 10:45:09 +0000 Subject: [PATCH 265/319] PFW-1362 Fsensor status is not required for SpoolJoin --- Firmware/SpoolJoin.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index 846cce6ca..f0b282afc 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -1,6 +1,5 @@ #include "SpoolJoin.h" #include "eeprom.h" -#include "Filament_sensor.h" namespace SpoolJoin { @@ -42,12 +41,7 @@ void SpoolJoin::toggleSpoolJoin() uint8_t SpoolJoin::isSpoolJoinEnabled() { - if(eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Enabled -#ifdef FILAMENT_SENSOR - && fsensor.isReady() -#endif - ) - { + if(eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Enabled) { return 1; } else { return 0; From d51026d8f7ad117b3be182026747363d99ddb05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 10:49:19 +0000 Subject: [PATCH 266/319] PFW-1362 Rename settings for consistency --- Firmware/ultralcd.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 20a509fed..5bfad5cc2 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4291,7 +4291,7 @@ static void lcd_fsensor_settings_menu() { #endif //FILAMENT_SENSOR -static void settingsAutoDeplete() +static void settingsSpoolJoin() { if (MMU2::mmu2.Enabled()) { @@ -4307,10 +4307,10 @@ static void settingsAutoDeplete() } } -#define SETTINGS_AUTO_DEPLETE \ +#define SETTINGS_SPOOLJOIN \ do\ {\ - settingsAutoDeplete();\ + settingsSpoolJoin();\ }\ while(0)\ @@ -4810,7 +4810,7 @@ static void lcd_settings_menu() MENU_ITEM_SUBMENU_P(_T(MSG_FSENSOR), lcd_fsensor_settings_menu); #endif //FILAMENT_SENSOR - SETTINGS_AUTO_DEPLETE; + SETTINGS_SPOOLJOIN; SETTINGS_CUTTER; @@ -5789,7 +5789,7 @@ static void lcd_tune_menu() MENU_ITEM_SUBMENU_P(_T(MSG_FSENSOR), lcd_fsensor_settings_menu); #endif //FILAMENT_SENSOR - SETTINGS_AUTO_DEPLETE; + SETTINGS_SPOOLJOIN; SETTINGS_CUTTER; From 166ecbc7d8ef1c1647d2bea665e793c1f5ed28d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 10:53:21 +0000 Subject: [PATCH 267/319] PFW-1362 Fsensor is not required for Spooljoin Since the Fsensor is not required to use SpoolJoin, it makes little sense to me that we need the fsensor to "enable" SpoolJoin --- Firmware/ultralcd.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5bfad5cc2..b400fecb8 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4295,15 +4295,7 @@ static void settingsSpoolJoin() { if (MMU2::mmu2.Enabled()) { -#ifdef FILAMENT_SENSOR - if (fsensor.isError()) { - MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_NA), fsensor_reinit); - } - else -#endif //FILAMENT_SENSOR - { - MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); - } + MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); } } From fb27a7d72b1e907e96ba2a0da959b0ccc959e67d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 10:54:34 +0000 Subject: [PATCH 268/319] PFW-1362 Remove "NA" EEPROM status --- Firmware/SpoolJoin.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/SpoolJoin.h b/Firmware/SpoolJoin.h index bfa0753dd..4117b9b9e 100644 --- a/Firmware/SpoolJoin.h +++ b/Firmware/SpoolJoin.h @@ -15,7 +15,6 @@ public: Unknown, ///< SpoolJoin is unknown while printer is booting up Enabled, ///< SpoolJoin is enabled in EEPROM Disabled, ///< SpoolJoin is disabled in EEPROM - NA, ///< SpoolJoin is 'Not Applicable' when Fsensor is faulty Empty = 0xFF ///< EEPROM has not been set before and all bits are 1 (0xFF) - either a new printer or user erased the memory }; From c5bb34f2264f2a33163532578c590a673bc94963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 12:11:33 +0000 Subject: [PATCH 269/319] PFW-1362 Show if SpoolJoin is enabled or disabled at bootup --- Firmware/SpoolJoin.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index f0b282afc..2a169943c 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -1,4 +1,5 @@ #include "SpoolJoin.h" +#include "Marlin.h" #include "eeprom.h" namespace SpoolJoin { @@ -27,6 +28,15 @@ void SpoolJoin::initSpoolJoinStatus() } else { updateSpoolJoinStatus(currentStatus); } + + // Useful information to see during bootup + SERIAL_ECHOPGM("SpoolJoin is "); + if (isSpoolJoinEnabled()) + { + SERIAL_ECHOLNPGM("enabled"); + } else { + SERIAL_ECHOLNPGM("disabled"); + } } void SpoolJoin::toggleSpoolJoin() From 86106369069fedb0eb25cd594ed16a0a09ab16dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 15:01:08 +0000 Subject: [PATCH 270/319] PFW-1362 Add a log when FINDA filament runout is triggered --- Firmware/mmu2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 85a076744..90df33b72 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -214,6 +214,7 @@ void MMU2::mmu_loop() { // Check for FINDA filament runout if (!FindaDetectsFilament() && CHECK_FSENSOR) { + SERIAL_ECHOLNPGM("FINDA filament runout!"); stop_and_save_print_to_ram(0, 0); restore_print_from_ram_and_continue(0); if (SpoolJoin::spooljoin.isSpoolJoinEnabled() && get_current_tool() != (uint8_t)FILAMENT_UNKNOWN) // Can't auto if F=? From 7dcfc1484e3a57b4391f1332a6cbe3b07b5e90f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 15:25:12 +0000 Subject: [PATCH 271/319] PFW-1362 temporary debug messages --- Firmware/SpoolJoin.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index 2a169943c..a241a05c1 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -61,9 +61,14 @@ uint8_t SpoolJoin::isSpoolJoinEnabled() uint8_t SpoolJoin::nextSlot() { + SERIAL_ECHOPGM("SpoolJoin: Changing slot from "); + SERIAL_ECHO((int)currentMMUSlot); if (currentMMUSlot == 4) currentMMUSlot = 0; else currentMMUSlot++; + SERIAL_ECHOPGM(" to "); + SERIAL_ECHOLN((int)currentMMUSlot); + return currentMMUSlot; } From b292a5bf4e2a856ad3010e2da2f0fd8f01b39660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 15:26:31 +0000 Subject: [PATCH 272/319] PFW-1362 temporarily don't use SpoolJoin in Tcodes I think in the current implementation, this will cause more harm than good. But we can improve SpoolJoin later --- Firmware/Tcodes.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index fbeb680ac..c96b75bec 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -59,8 +59,9 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { SChooseFromMenu selectedSlot; if (strchr_pointer[index] == '?') { selectedSlot = TCodeChooseFromMenu(); - } else if (MMU2::mmu2.Enabled() && SpoolJoin::spooljoin.isSpoolJoinEnabled()) { - selectedSlot.slot = SpoolJoin::spooljoin.nextSlot(); + /*} else if (MMU2::mmu2.Enabled() && SpoolJoin::spooljoin.isSpoolJoinEnabled()) { + // TODO: What if the next slot has no filament? + selectedSlot.slot = SpoolJoin::spooljoin.nextSlot();*/ } else { selectedSlot.slot = codeValue; } From 1010f23959ce968bd9d477e1827714917742d509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 16:13:58 +0000 Subject: [PATCH 273/319] Fix an issue where findaPressed is never set This caused instant FINDA runout when the print starts. Now fixed :) --- Firmware/mmu2_protocol_logic.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 0fc4b9989..8eda8ac9b 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -316,6 +316,7 @@ StepStatus ProtocolLogic::CommandStep() { SendFINDAQuery(); return Processing; case ScopeState::FINDAReqSent: + findaPressed = rsp.paramValue; SendReadRegister(4, ScopeState::StatisticsSent); scopeState = ScopeState::StatisticsSent; return Processing; @@ -392,6 +393,7 @@ StepStatus ProtocolLogic::IdleStep() { SendFINDAQuery(); return Processing; case ScopeState::FINDAReqSent: + findaPressed = rsp.paramValue; SendReadRegister(4, ScopeState::StatisticsSent); scopeState = ScopeState::StatisticsSent; return Processing; From 63b4abb66da51f4e42f1eb91a64bc9f8341e0155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 18:13:58 +0000 Subject: [PATCH 274/319] PFW-1362 SpoolJoin needs to known what the previous slot was --- Firmware/SpoolJoin.cpp | 7 ++++++- Firmware/SpoolJoin.h | 4 ++++ Firmware/mmu2.cpp | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index a241a05c1..81069ce68 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -58,12 +58,17 @@ uint8_t SpoolJoin::isSpoolJoinEnabled() } } +void SpoolJoin::setSlot(uint8_t slot) +{ + currentMMUSlot = slot; +} uint8_t SpoolJoin::nextSlot() { SERIAL_ECHOPGM("SpoolJoin: Changing slot from "); SERIAL_ECHO((int)currentMMUSlot); - if (currentMMUSlot == 4) currentMMUSlot = 0; + + if (currentMMUSlot >= 4) currentMMUSlot = 0; else currentMMUSlot++; SERIAL_ECHOPGM(" to "); diff --git a/Firmware/SpoolJoin.h b/Firmware/SpoolJoin.h index 4117b9b9e..f3835dee5 100644 --- a/Firmware/SpoolJoin.h +++ b/Firmware/SpoolJoin.h @@ -33,6 +33,10 @@ public: /// @brief Check if SpoolJoin is enabled uint8_t isSpoolJoinEnabled(); + /// @brief Update the saved MMU slot number so SpoolJoin can determine the next slot to use + /// @param slot number of the slot to set + void setSlot(uint8_t slot); + /// @brief Fetch the next slot number should count from 0 to 4. /// When filament slot 4 is depleted, the next slot should be 0. /// @returns the next slot, ranges from 0 to 4 diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 90df33b72..d8bace241 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -307,6 +307,7 @@ bool MMU2::tool_change(uint8_t index) { plan_set_e_position(current_position[E_AXIS]); extruder = index; //filament change is finished + SpoolJoin::spooljoin.setSlot(index); // @@TODO really report onto the serial? May be for the Octoprint? Not important now // SERIAL_ECHO_START(); @@ -339,6 +340,7 @@ bool MMU2::tool_change(char code, uint8_t slot) { logic.ToolChange(slot); manage_response(false, false); extruder = slot; + SpoolJoin::spooljoin.setSlot(slot); set_extrude_min_temp(EXTRUDE_MINTEMP); } break; @@ -485,6 +487,7 @@ bool MMU2::load_filament_to_nozzle(uint8_t index) { execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof (load_to_nozzle_sequence[0])); extruder = index; + SpoolJoin::spooljoin.setSlot(index); Sound_MakeSound(e_SOUND_TYPE_StandardConfirm); } From 998ed87f2568a8dcf7091e132786e859c9437a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 19:20:22 +0000 Subject: [PATCH 275/319] PFW-1362 Use PROGMEM messages The main purpose of these two messages is just to see if SpoolJoin is enabled or not. "On" and "Off" are descriptive enough. Saves 16 bytes of flash --- Firmware/SpoolJoin.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index 81069ce68..f5f076f0b 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -1,6 +1,8 @@ #include "SpoolJoin.h" #include "Marlin.h" #include "eeprom.h" +#include "messages.h" +#include "language.h" namespace SpoolJoin { @@ -33,9 +35,9 @@ void SpoolJoin::initSpoolJoinStatus() SERIAL_ECHOPGM("SpoolJoin is "); if (isSpoolJoinEnabled()) { - SERIAL_ECHOLNPGM("enabled"); + SERIAL_ECHOLNRPGM(_O(MSG_ON)); } else { - SERIAL_ECHOLNPGM("disabled"); + SERIAL_ECHOLNRPGM(_O(MSG_OFF)); } } From 65a0036dbeeee3c48cb203fcdd5f5f2e312ab792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 19:22:40 +0000 Subject: [PATCH 276/319] PFW-1362 Optimise debug message Saves 20 bytes of flash :) --- Firmware/SpoolJoin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index f5f076f0b..77f77d6a3 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -67,13 +67,13 @@ void SpoolJoin::setSlot(uint8_t slot) uint8_t SpoolJoin::nextSlot() { - SERIAL_ECHOPGM("SpoolJoin: Changing slot from "); + SERIAL_ECHOPGM("SpoolJoin: "); SERIAL_ECHO((int)currentMMUSlot); if (currentMMUSlot >= 4) currentMMUSlot = 0; else currentMMUSlot++; - SERIAL_ECHOPGM(" to "); + SERIAL_ECHOPGM(" -> "); SERIAL_ECHOLN((int)currentMMUSlot); return currentMMUSlot; From 94119744adf2284bb6b7775cf387a24e4e45d234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Sep 2022 19:23:59 +0000 Subject: [PATCH 277/319] PFW-1362 Change isSpoolJoinEnabled to return bool --- Firmware/SpoolJoin.cpp | 6 +++--- Firmware/SpoolJoin.h | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index 77f77d6a3..9e06ddb77 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -51,12 +51,12 @@ void SpoolJoin::toggleSpoolJoin() } } -uint8_t SpoolJoin::isSpoolJoinEnabled() +bool SpoolJoin::isSpoolJoinEnabled() { if(eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Enabled) { - return 1; + return true; } else { - return 0; + return false; } } diff --git a/Firmware/SpoolJoin.h b/Firmware/SpoolJoin.h index f3835dee5..736139286 100644 --- a/Firmware/SpoolJoin.h +++ b/Firmware/SpoolJoin.h @@ -31,7 +31,8 @@ public: static void toggleSpoolJoin(); /// @brief Check if SpoolJoin is enabled - uint8_t isSpoolJoinEnabled(); + /// @returns true if enabled, false if disabled + bool isSpoolJoinEnabled(); /// @brief Update the saved MMU slot number so SpoolJoin can determine the next slot to use /// @param slot number of the slot to set From e9f5a95d4ba35a596b56387f0cf05ca653e45c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 11 Sep 2022 08:39:09 +0000 Subject: [PATCH 278/319] PFW-1362 Make sure FINDA runout is impossible with MMU disabled Since mmu_loop() is called in the main loop() function when the MMU is disabled, we need to utilise the MMU protocol layer to prevent FINDA runout from happening if MMU is disabled. We also need to keep in mind we probably can't trigger a FINDA runout in the middle of a Q0 query. So my solution now is to wait for the "Finished" state and check if the FINDA is off during printing. When "Finished" state appears, the FINDA value should be up to date. --- Firmware/mmu2.cpp | 10 ++++++++-- Firmware/mmu2.h | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index d8bace241..9e23cc7d3 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -212,6 +212,11 @@ void MMU2::mmu_loop() { ReportErrorHook((uint16_t)lastErrorCode, mmu2.MMUCurrentErrorCode() == ErrorCode::OK ? ErrorSourcePrinter : ErrorSourceMMU); } + avoidRecursion = false; +} + +void MMU2::CheckFINDARunout() +{ // Check for FINDA filament runout if (!FindaDetectsFilament() && CHECK_FSENSOR) { SERIAL_ECHOLNPGM("FINDA filament runout!"); @@ -226,8 +231,6 @@ void MMU2::mmu_loop() { enquecommand_front_P(PSTR("M600")); //save print and run M600 command } } - - avoidRecursion = false; } struct ReportingRAII { @@ -731,6 +734,9 @@ StepStatus MMU2::LogicStep() { StepStatus ss = logic.Step(); switch (ss) { case Finished: + // At this point it is safe to trigger a runout and not interrupt the MMU protocol + CheckFINDARunout(); + break; case Processing: OnMMUProgressMsg(logic.Progress()); break; diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 4ebf78668..f459fa0cf 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -244,6 +244,11 @@ private: /// Check for any button/user input coming from the printer's UI void CheckUserInput(); + /// @brief Check whether to trigger a FINDA runout. If triggered this function will call M600 AUTO + /// if SpoolJoin is enabled, otherwise M600 is called without AUTO which will prompt the user + /// for the next filament slot to use + void CheckFINDARunout(); + /// Entry check of all external commands. /// It can wait until the MMU becomes ready. /// Optionally, it can also emit/display an error screen and the user can decide what to do next. From 16713aa25acbb4c3084dc2dea07cf6b4b56fda6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 11 Sep 2022 08:45:40 +0000 Subject: [PATCH 279/319] Optimisation: scopeState is already set by SendReadRegister Saves 2 bytes of flash --- Firmware/mmu2_protocol_logic.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 8eda8ac9b..ce1cecebc 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -318,7 +318,6 @@ StepStatus ProtocolLogic::CommandStep() { case ScopeState::FINDAReqSent: findaPressed = rsp.paramValue; SendReadRegister(4, ScopeState::StatisticsSent); - scopeState = ScopeState::StatisticsSent; return Processing; case ScopeState::StatisticsSent: scopeState = ScopeState::Wait; @@ -395,7 +394,6 @@ StepStatus ProtocolLogic::IdleStep() { case ScopeState::FINDAReqSent: findaPressed = rsp.paramValue; SendReadRegister(4, ScopeState::StatisticsSent); - scopeState = ScopeState::StatisticsSent; return Processing; case ScopeState::StatisticsSent: failStatistics = rsp.paramValue; From 2d98cae8bd7e91268f3f4903d2bf2e3565d4725f Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 16 Sep 2022 11:08:03 +0200 Subject: [PATCH 280/319] Fixup MK3_MMU2 branch after rebase onto MK3 --- Firmware/Marlin_main.cpp | 2 +- Firmware/messages.cpp | 2 +- Firmware/messages.h | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b1e7028c6..d7dfcb280 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -558,7 +558,7 @@ bool __attribute__((noinline)) printer_active() { || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) - || mmu_print_saved + || MMU2::mmu2.MMU_PRINT_SAVED() || homing_flag || mesh_bed_leveling_flag; } diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 0bdfa685e..f6f37635d 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -161,7 +161,7 @@ const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////MSG_DIM c=6 const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////MSG_AUTO c=6 const char MSG_FS_V_03_OR_OLDER[] PROGMEM_I1 = ISTR("FS v0.3 or older"); ////MSG_FS_V_03_OR_OLDER c=18 const char MSG_FS_V_04_OR_NEWER[] PROGMEM_I1 = ISTR("FS v0.4 or newer"); ////MSG_FS_V_04_OR_NEWER c=18 -#ifdef IR_SENSOR_ANALOG +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) // Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////MSG_IR_04_OR_NEWER c=18 const char MSG_IR_03_OR_OLDER[] PROGMEM_I1 = ISTR(" 0.3 or older");////MSG_IR_03_OR_OLDER c=18 diff --git a/Firmware/messages.h b/Firmware/messages.h index 214e3a43a..a4f0c9345 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -172,9 +172,11 @@ extern const char MSG_DIM[]; extern const char MSG_AUTO[]; extern const char MSG_FS_V_03_OR_OLDER[]; extern const char MSG_FS_V_04_OR_NEWER[]; +#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) extern const char MSG_IR_04_OR_NEWER[]; extern const char MSG_IR_03_OR_OLDER[]; extern const char MSG_IR_UNKNOWN[]; +#endif extern const char MSG_PAUSED_THERMAL_ERROR[]; #ifdef TEMP_MODEL extern const char MSG_THERMAL_ANOMALY[]; From f18493f36128bfb5fce5657fbdd3c6a944cc3326 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Fri, 16 Sep 2022 12:12:08 +0200 Subject: [PATCH 281/319] Save some space due to shorter MMU error texts applies https://github.com/prusa3d/Prusa-Error-Codes/pull/62 --- Firmware/mmu2/errors_list.h | 175 ++++++++++++++++++------------------ 1 file changed, 89 insertions(+), 86 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index d077238a9..fed11e7e4 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -116,33 +116,33 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { // @@TODO some of the strings are duplicates, can be merged into one static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); -static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA DIDNT GO OFF"); +static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA: FILAM. STUCK"); static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); -static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR DIDNT GO OFF"); +static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR: FIL. STUCK"); static const char titlePULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); static const char titleFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); static const char titleSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); static const char titleIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); static const char titleIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); -static const char titlePULLEY_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -static const char titleSELECTOR_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -static const char titleIDLER_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -static const char titlePULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titlePULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titlePULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titlePULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -static const char titleSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -static const char titleIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -static const char titlePULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char titleSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char titleIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +//static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +//static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +//static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +//static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +//static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +//static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +//static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +//static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +//static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +//static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +//static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +//static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); static const char titleMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); static const char titleCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); @@ -163,24 +163,24 @@ static const char * const errorTitles [] PROGMEM = { titleSELECTOR_CANNOT_MOVE, titleIDLER_CANNOT_HOME, titleIDLER_CANNOT_MOVE, - titlePULLEY_TMC_WARNING_TMC_TOO_HOT, - titleSELECTOR_TMC_WARNING_TMC_TOO_HOT, - titleIDLER_TMC_WARNING_TMC_TOO_HOT, - titlePULLEY_TMC_OVERHEAT_ERROR, - titleSELECTOR_TMC_OVERHEAT_ERROR, - titleIDLER_TMC_OVERHEAT_ERROR, - titlePULLEY_TMC_DRIVER_ERROR, - titleSELECTOR_TMC_DRIVER_ERROR, - titleIDLER_TMC_DRIVER_ERROR, - titlePULLEY_TMC_DRIVER_RESET, - titleSELECTOR_TMC_DRIVER_RESET, - titleIDLER_TMC_DRIVER_RESET, - titlePULLEY_TMC_UNDERVOLTAGE_ERROR, - titleSELECTOR_TMC_UNDERVOLTAGE_ERROR, - titleIDLER_TMC_UNDERVOLTAGE_ERROR, - titlePULLEY_TMC_DRIVER_SHORTED, - titleSELECTOR_TMC_DRIVER_SHORTED, - titleIDLER_TMC_DRIVER_SHORTED, + titleTMC_WARNING_TMC_TOO_HOT, + titleTMC_WARNING_TMC_TOO_HOT, + titleTMC_WARNING_TMC_TOO_HOT, + titleTMC_OVERHEAT_ERROR, + titleTMC_OVERHEAT_ERROR, + titleTMC_OVERHEAT_ERROR, + titleTMC_DRIVER_ERROR, + titleTMC_DRIVER_ERROR, + titleTMC_DRIVER_ERROR, + titleTMC_DRIVER_RESET, + titleTMC_DRIVER_RESET, + titleTMC_DRIVER_RESET, + titleTMC_UNDERVOLTAGE_ERROR, + titleTMC_UNDERVOLTAGE_ERROR, + titleTMC_UNDERVOLTAGE_ERROR, + titleTMC_DRIVER_SHORTED, + titleTMC_DRIVER_SHORTED, + titleTMC_DRIVER_SHORTED, titleMMU_NOT_RESPONDING, titleCOMMUNICATION_ERROR, titleFILAMENT_ALREADY_LOADED, @@ -192,41 +192,44 @@ static const char * const errorTitles [] PROGMEM = { }; // @@TODO looking at the texts, they can be composed of several parts and/or parametrized (could save a lot of space ;) ) -static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading filament. Ensure filament can move and FINDA works."); +// Moreover, some of them have been disabled in favour of saving some more code size. +static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); static const char descFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); -static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading filament. Ensure filament reached the fsensor and the sensor works."); +static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Ensure the filament reached the fsensor and the sensor works."); static const char descFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); -static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("The Pulley motor stalled - Ensure the pulley can move and check the wiring."); +static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); static const char descFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); -static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly - check for anything blocking its movement."); -static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move - check for anything blocking its movement. Check the wiring is correct."); -static const char descIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot home properly - check for anything blocking its movement."); -static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot move properly - check for anything blocking its movement. Check the wiring is correct."); -static const char descPULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -static const char descSELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -static const char descIDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -static const char descPULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and reset MMU."); -static const char descSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and reset MMU."); -static const char descIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and reset MMU."); -static const char descPULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try resetting the MMU. If the issue persists contact support."); -static const char descSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try resetting the MMU. If the issue persists contact support."); -static const char descIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try resetting the MMU. If the issue persists contact support."); -static const char descPULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descPULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -static const char descPULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); -static const char descSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); -static const char descIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); -static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists contact support."); -static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists contact support."); +static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); +static const char descCANNOT_MOVE[] PROGMEM_I1 = ISTR(""); // these errors have been disabled +//static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); +static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); +//static const char descIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); +static const char descTMC[] PROGMEM_I1 = ISTR("More details online."); +//static const char descPULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char descSELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char descIDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char descPULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and reset MMU."); +//static const char descSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and reset MMU."); +//static const char descIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and reset MMU."); +//static const char descPULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char descSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char descIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char descPULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descPULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char descPULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); +//static const char descSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); +//static const char descIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); +static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); +static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); static const char descFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); static const char descINVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); static const char descQUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); static const char descFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); -static const char descFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists contact support."); +static const char descFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); static const char descUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); static const char * const errorDescs[] PROGMEM = { @@ -237,27 +240,27 @@ static const char * const errorDescs[] PROGMEM = { descPULLEY_STALLED, descFSENSOR_TOO_EARLY, descSELECTOR_CANNOT_HOME, - descSELECTOR_CANNOT_MOVE, + descCANNOT_MOVE, descIDLER_CANNOT_HOME, - descIDLER_CANNOT_MOVE, - descPULLEY_WARNING_TMC_TOO_HOT, - descSELECTOR_WARNING_TMC_TOO_HOT, - descIDLER_WARNING_TMC_TOO_HOT, - descPULLEY_TMC_OVERHEAT_ERROR, - descSELECTOR_TMC_OVERHEAT_ERROR, - descIDLER_TMC_OVERHEAT_ERROR, - descPULLEY_TMC_DRIVER_ERROR, - descSELECTOR_TMC_DRIVER_ERROR, - descIDLER_TMC_DRIVER_ERROR, - descPULLEY_TMC_DRIVER_RESET, - descSELECTOR_TMC_DRIVER_RESET, - descIDLER_TMC_DRIVER_RESET, - descPULLEY_TMC_UNDERVOLTAGE_ERROR, - descSELECTOR_TMC_UNDERVOLTAGE_ERROR, - descIDLER_TMC_UNDERVOLTAGE_ERROR, - descPULLEY_TMC_DRIVER_SHORTED, - descSELECTOR_TMC_DRIVER_SHORTED, - descIDLER_TMC_DRIVER_SHORTED, + descCANNOT_MOVE, + descTMC, // descPULLEY_WARNING_TMC_TOO_HOT, + descTMC, // descSELECTOR_WARNING_TMC_TOO_HOT, + descTMC, // descIDLER_WARNING_TMC_TOO_HOT, + descTMC, // descPULLEY_TMC_OVERHEAT_ERROR, + descTMC, // descSELECTOR_TMC_OVERHEAT_ERROR, + descTMC, // descIDLER_TMC_OVERHEAT_ERROR, + descTMC, // descPULLEY_TMC_DRIVER_ERROR, + descTMC, // descSELECTOR_TMC_DRIVER_ERROR, + descTMC, // descIDLER_TMC_DRIVER_ERROR, + descTMC, // descPULLEY_TMC_DRIVER_RESET, + descTMC, // descSELECTOR_TMC_DRIVER_RESET, + descTMC, // descIDLER_TMC_DRIVER_RESET, + descTMC, // descPULLEY_TMC_UNDERVOLTAGE_ERROR, + descTMC, // descSELECTOR_TMC_UNDERVOLTAGE_ERROR, + descTMC, // descIDLER_TMC_UNDERVOLTAGE_ERROR, + descTMC, // descPULLEY_TMC_DRIVER_SHORTED, + descTMC, // descSELECTOR_TMC_DRIVER_SHORTED, + descTMC, // descIDLER_TMC_DRIVER_SHORTED, descMMU_NOT_RESPONDING, descCOMMUNICATION_ERROR, descFILAMENT_ALREADY_LOADED, From ca9b34c4a2732d0472c7229e7c026eccf859e8b4 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 16:18:25 +0200 Subject: [PATCH 282/319] Add double down arrow to be processed correctly --- lang/lib/charset.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/lib/charset.py b/lang/lib/charset.py index 0db4f7a9a..96c61a9c1 100644 --- a/lang/lib/charset.py +++ b/lang/lib/charset.py @@ -1,5 +1,6 @@ # Mapping from LCD source encoding to unicode characters CUSTOM_CHARS = { + '\x06': '⏬', '\x04': '🔃', '\xe4': 'µ', '\xdf': '°', From 62b03066d3ef7f978c8452e57083dba872ebff02 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 16:21:33 +0200 Subject: [PATCH 283/319] Updated update-pot.sh to search also `Firmware/mmu2` resources --- lang/update-pot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/update-pot.sh b/lang/update-pot.sh index 799bface8..45ae27c62 100755 --- a/lang/update-pot.sh +++ b/lang/update-pot.sh @@ -1,4 +1,4 @@ #!/bin/sh # Extract language data in the po subdir to keep the relative paths intact cp -f po/Firmware.pot po/Firmware.pot.bak -cd po && ../lang-extract.py --no-missing -s -o Firmware.pot ../../Firmware/[a-zA-Z]*.[ch]* +cd po && ../lang-extract.py --no-missing -s -o Firmware.pot ../../Firmware/[a-zA-Z]*.[ch]* ../../Firmware/mmu2/[a-zA-Z]*.[ch]* From 37cde856e92ea49bfa8d0007a8f5c92261c9d4bd Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 16:25:47 +0200 Subject: [PATCH 284/319] Rename Auto_deplete to Spool_join Fix some missing MSG_ c= r= --- Firmware/SpoolJoin.cpp | 12 ++++++------ Firmware/eeprom.h | 6 +++--- Firmware/messages.cpp | 6 +++--- Firmware/messages.h | 2 +- Firmware/ultralcd.cpp | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Firmware/SpoolJoin.cpp b/Firmware/SpoolJoin.cpp index 9e06ddb77..91f975adb 100644 --- a/Firmware/SpoolJoin.cpp +++ b/Firmware/SpoolJoin.cpp @@ -17,12 +17,12 @@ SpoolJoin::SpoolJoin() void SpoolJoin::updateSpoolJoinStatus(EEPROM newStatus) { status = newStatus; - eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)status); + eeprom_write_byte((uint8_t*)EEPROM_SPOOL_JOIN, (uint8_t)status); } void SpoolJoin::initSpoolJoinStatus() { - EEPROM currentStatus = (EEPROM)eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE); + EEPROM currentStatus = (EEPROM)eeprom_read_byte((uint8_t*)EEPROM_SPOOL_JOIN); if( currentStatus == EEPROM::Empty) { // By default SpoolJoin is disabled @@ -43,17 +43,17 @@ void SpoolJoin::initSpoolJoinStatus() void SpoolJoin::toggleSpoolJoin() { - if (eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Disabled) + if (eeprom_read_byte((uint8_t*)EEPROM_SPOOL_JOIN) == (uint8_t)EEPROM::Disabled) { - eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)EEPROM::Enabled); + eeprom_write_byte((uint8_t*)EEPROM_SPOOL_JOIN, (uint8_t)EEPROM::Enabled); } else { - eeprom_write_byte((uint8_t*)EEPROM_AUTO_DEPLETE, (uint8_t)EEPROM::Disabled); + eeprom_write_byte((uint8_t*)EEPROM_SPOOL_JOIN, (uint8_t)EEPROM::Disabled); } } bool SpoolJoin::isSpoolJoinEnabled() { - if(eeprom_read_byte((uint8_t*)EEPROM_AUTO_DEPLETE) == (uint8_t)EEPROM::Enabled) { + if(eeprom_read_byte((uint8_t*)EEPROM_SPOOL_JOIN) == (uint8_t)EEPROM::Enabled) { return true; } else { return false; diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index edb7b0680..d442cde3f 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -216,7 +216,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP | ^ | ^ | ^ | 01h 1 | ^ | Sound mode: __once__ | ^ | ^ | ^ | ^ | ^ | 02h 1 | ^ | Sound mode: __silent__ | ^ | ^ | ^ | ^ | ^ | 03h 1 | ^ | Sound mode: __assist__ | ^ | ^ -| 0x0ED6 3798 | bool | EEPROM_AUTO_DEPLETE | 01h 1 | ffh 255 | MMU2/s autodeplete: __on__ | ??? | D3 Ax0ed6 C1 +| 0x0ED6 3798 | bool | EEPROM_SPOOL_JOIN | 01h 1 | ffh 255 | MMU2/s autodeplete: __on__ | ??? | D3 Ax0ed6 C1 | ^ | ^ | ^ | 00h 0 | ^ | MMU2/s autodeplete: __off__ | ^ | ^ | 0x0ED5 3797 | bool | EEPROM_FSENS_RUNOUT_ENABLED | 01h 1 | ffh 255 __P__ | Filament runout: __enabled__ | LCD menu | D3 Ax0ed5 C1 | ^ | ^ | ^ | 00h 0 | ^ | Filament runout: __disabled__ | LCD menu | ^ @@ -494,9 +494,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP // Sound Mode #define EEPROM_SOUND_MODE (EEPROM_UVLO_TARGET_HOTEND-1) // uint8 -#define EEPROM_AUTO_DEPLETE (EEPROM_SOUND_MODE-1) //bool +#define EEPROM_SPOOL_JOIN (EEPROM_SOUND_MODE-1) //bool -#define EEPROM_FSENS_RUNOUT_ENABLED (EEPROM_AUTO_DEPLETE - 1) //bool +#define EEPROM_FSENS_RUNOUT_ENABLED (EEPROM_SPOOL_JOIN - 1) //bool #define EEPROM_MMU_FAIL_TOT (EEPROM_FSENS_RUNOUT_ENABLED - 2) //uint16_t #define EEPROM_MMU_FAIL (EEPROM_MMU_FAIL_TOT - 1) //uint8_t diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index f6f37635d..c17d1d2b0 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -112,8 +112,8 @@ const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////MSG_STOP_PRINT const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED."); ////MSG_STOPPED c=20 const char MSG_PINDA_CALIBRATION[] PROGMEM_I1 = ISTR("PINDA cal."); ////MSG_PINDA_CALIBRATION c=13 const char MSG_PINDA_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."); ////MSG_PINDA_CALIBRATION_DONE c=20 r=8 -const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////Number 1 to 5 is added behind text e.g. "Unload filament" c=16 -const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 +const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////MSG_UNLOAD_FILAMENT c=16 +const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////MSG_UNLOADING_FILAMENT c=20 const char MSG_INFO_SCREEN[] PROGMEM_I1 = ISTR("Info screen"); ////MSG_INFO_SCREEN c=18 const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////MSG_WIZARD_DONE c=20 r=3 @@ -173,7 +173,7 @@ extern const char MSG_THERMAL_ANOMALY[] PROGMEM_I1 = ISTR("THERMAL ANOMALY");/// #endif //not internationalized messages -const char MSG_AUTO_DEPLETE[] PROGMEM_N1 = "SpoolJoin"; ////MSG_AUTO_DEPLETE c=13 +const char MSG_SPOOL_JOIN[] PROGMEM_N1 = "SpoolJoin"; ////MSG_SPOOL_JOIN c=13 const char MSG_FIRMWARE[] PROGMEM_N1 = "Firmware"; ////MSG_FIRMWARE c=8 const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY[] PROGMEM_N1 = "FlashAir"; ////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY c=8 const char MSG_PINDA[] PROGMEM_N1 = "PINDA"; ////MSG_PINDA c=5 diff --git a/Firmware/messages.h b/Firmware/messages.h index a4f0c9345..e97c86ac9 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -134,7 +134,7 @@ extern const char MSG_WELCOME[]; extern const char MSG_OFF[]; extern const char MSG_ON[]; extern const char MSG_NA[]; -extern const char MSG_AUTO_DEPLETE[]; +extern const char MSG_SPOOL_JOIN[]; extern const char MSG_CUTTER[]; extern const char MSG_NONE[]; extern const char MSG_WARN[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b400fecb8..5531a5554 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4295,7 +4295,7 @@ static void settingsSpoolJoin() { if (MMU2::mmu2.Enabled()) { - MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); + MENU_ITEM_TOGGLE_P(MSG_SPOOL_JOIN, SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); } } From edad625cf7e1d269d34b8375d9c2d6471b808117 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 16:31:27 +0200 Subject: [PATCH 285/319] RIP Bondtech long live the Extruder --- Firmware/Tcodes.cpp | 4 ++-- Firmware/messages.cpp | 2 +- Firmware/messages.h | 2 +- Firmware/mmu2.cpp | 4 ++-- Firmware/mmu2.h | 2 +- Firmware/mmu2/error_codes.h | 2 +- Firmware/mmu2/progress_codes.h | 2 +- Firmware/mmu2_progress_converter.cpp | 4 ++-- Firmware/ultralcd.cpp | 30 ++++++++++++++-------------- Firmware/ultralcd.h | 2 +- 10 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Firmware/Tcodes.cpp b/Firmware/Tcodes.cpp index c96b75bec..30ea49c7b 100644 --- a/Firmware/Tcodes.cpp +++ b/Firmware/Tcodes.cpp @@ -46,12 +46,12 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) { if (IsInvalidTCode(strchr_pointer, index)){ TCodeInvalid(); } else if (strchr_pointer[index] == 'x'){ - // load to bondtech gears; if mmu is not present do nothing + // load to extruder gears; if mmu is not present do nothing if (MMU2::mmu2.Enabled()) { MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER))); } } else if (strchr_pointer[index] == 'c'){ - // load from bondtech gears to nozzle (nozzle should be preheated) + // load from extruder gears to nozzle (nozzle should be preheated) if (MMU2::mmu2.Enabled()) { MMU2::mmu2.tool_change(strchr_pointer[index], MMU2::mmu2.get_current_tool()); } diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index c17d1d2b0..9400c66ad 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -54,7 +54,7 @@ const char MSG_SELECT_FILAMENT[] PROGMEM_I1 = ISTR("Select filament:"); ////MSG_ const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////MSG_LAST_PRINT c=18 const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////MSG_LAST_PRINT_FAILURES c=20 const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////MSG_LOAD_FILAMENT c=17 -const char MSG_LOAD_TO_BONDTECH[] PROGMEM_I1 = ISTR("Load to Bondtech"); ////MSG_LOAD_TO_BONDTECH c=18 +const char MSG_LOAD_TO_EXTRUDER[] PROGMEM_I1 = ISTR("Load to Extruder"); ////MSG_LOAD_TO_EXTRUDER c=18 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////MSG_LOADING_FILAMENT c=20 const char MSG_TESTING_FILAMENT[] PROGMEM_I1 = ISTR("Testing filament"); ////MSG_TESTING_FILAMENT c=20 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); ////MSG_EJECT_FILAMENT c=17 diff --git a/Firmware/messages.h b/Firmware/messages.h index e97c86ac9..9c5703cb2 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -60,7 +60,7 @@ extern const char MSG_SELECT_FILAMENT[]; extern const char MSG_LAST_PRINT[]; extern const char MSG_LAST_PRINT_FAILURES[]; extern const char MSG_LOAD_FILAMENT[]; -extern const char MSG_LOAD_TO_BONDTECH[]; +extern const char MSG_LOAD_TO_EXTRUDER[]; extern const char MSG_LOADING_FILAMENT[]; extern const char MSG_TESTING_FILAMENT[]; extern const char MSG_M117_V2_CALIBRATION[]; diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 9e23cc7d3..98582a27d 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -422,7 +422,7 @@ void FullScreenMsg(const char *pgmS, uint8_t slot){ lcd_print(slot + 1); } -bool MMU2::load_to_bondtech(uint8_t index){ +bool MMU2::load_to_extruder(uint8_t index){ FullScreenMsg(_T(MSG_TESTING_FILAMENT), index); tool_change(index); st_synchronize(); @@ -888,7 +888,7 @@ void MMU2::OnMMUProgressMsgSame(ProgressCode pc){ if (loadFilamentStarted) { switch (WhereIsFilament()) { case FilamentState::AT_FSENSOR: - // fsensor triggered, finish FeedingToBondtech state + // fsensor triggered, finish FeedingToExtruder state loadFilamentStarted = false; // After the MMU knows the FSENSOR is triggered it will: // 1. Push the filament by additional 30mm (see fsensorToNozzle) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index f459fa0cf..005653726 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -139,7 +139,7 @@ public: /// It behaves very similarly like a ToolChange, but it doesn't load the filament /// all the way down to the nozzle. The sole purpose of this operation /// is to check, that the filament will be ready for printing. - bool load_to_bondtech(uint8_t index); + bool load_to_extruder(uint8_t index); /// @returns the active filament slot index (0-4) or 0xff in case of no active tool uint8_t get_current_tool() const; diff --git a/Firmware/mmu2/error_codes.h b/Firmware/mmu2/error_codes.h index 385690a9b..0dcb30573 100644 --- a/Firmware/mmu2/error_codes.h +++ b/Firmware/mmu2/error_codes.h @@ -41,7 +41,7 @@ enum class ErrorCode : uint_fast16_t { FINDA_VS_EEPROM_DISREPANCY = 0x8008, ///< E32776 FINDA is pressed but we have no such record in EEPROM - this can only happen at the start of the MMU and can be resolved by issuing an Unload command - FSENSOR_TOO_EARLY = 0x8009, ///< E32777 FSensor triggered while doing FastFeedToBondtech - that means either: + FSENSOR_TOO_EARLY = 0x8009, ///< E32777 FSensor triggered while doing FastFeedToExtruder - that means either: ///< - the PTFE is too short ///< - a piece of filament was left inside - pushed in front of the loaded filament causing the fsensor trigger too early ///< - fsensor is faulty producing bogus triggers diff --git a/Firmware/mmu2/progress_codes.h b/Firmware/mmu2/progress_codes.h index 7dd2e191a..3927e97f4 100644 --- a/Firmware/mmu2/progress_codes.h +++ b/Firmware/mmu2/progress_codes.h @@ -13,7 +13,7 @@ enum class ProgressCode : uint_fast8_t { UnloadingToFinda, // P3 UnloadingToPulley, //P4 FeedingToFinda, // P5 - FeedingToBondtech, // P6 + FeedingToExtruder, // P6 FeedingToNozzle, // P7 AvoidingGrind, // P8 FinishingMoves, // P9 diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index 548c95b1d..0da9b0e13 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -11,7 +11,7 @@ static const char progressDisengeIdler[] PROGMEM_I1 = ISTR("Disengaging idle static const char progressUnloadFinda[] PROGMEM_I1 = ISTR("Unloading to FINDA"); static const char progressUnloadPulley[] PROGMEM_I1 = ISTR("Unloading to pulley"); static const char progressFeedFinda[] PROGMEM_I1 = ISTR("Feeding to FINDA"); -static const char progressFeedBondtech[] PROGMEM_I1 = ISTR("Feeding to extruder"); +static const char progressFeedExtruder[] PROGMEM_I1 = ISTR("Feeding to extruder"); static const char progressFeedNozzle[] PROGMEM_I1 = ISTR("Feeding to nozzle"); static const char progressAvoidGrind[] PROGMEM_I1 = ISTR("Avoiding grind"); static const char progressFinishMoves[] PROGMEM_I1 = ISTR("Finishing moves"); @@ -40,7 +40,7 @@ static const char * const progressTexts[] PROGMEM = { progressUnloadFinda, progressUnloadPulley, progressFeedFinda, - progressFeedBondtech, + progressFeedExtruder, progressFeedNozzle, progressAvoidGrind, progressFinishMoves, diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5531a5554..85d5b4700 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -122,7 +122,7 @@ static void lcd_v2_calibration(); static void mmu_fil_eject_menu(); static void mmu_load_to_nozzle_menu(); -static void mmu_load_to_bondtech_menu(); +static void mmu_load_to_extruder_menu(); static void preheat_or_continue(); #ifdef MMU_HAS_CUTTER @@ -1846,7 +1846,7 @@ switch(eFilamentAction) case FilamentAction::Load: case FilamentAction::AutoLoad: case FilamentAction::MmuLoad: - case FilamentAction::MmuLoadBondtech: + case FilamentAction::MmuLoadExtruder: lcd_puts_P(_i("to load filament")); ////MSG_TO_LOAD_FIL c=20 break; case FilamentAction::UnLoad: @@ -1886,7 +1886,7 @@ switch(eFilamentAction) enquecommand_P(PSTR("M702")); // unload filament break; case FilamentAction::MmuLoad: - case FilamentAction::MmuLoadBondtech: + case FilamentAction::MmuLoadExtruder: case FilamentAction::MmuUnLoad: case FilamentAction::MmuEject: case FilamentAction::MmuCut: @@ -1958,11 +1958,11 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) menu_back(nLevel); menu_submenu(mmu_load_to_nozzle_menu); break; - case FilamentAction::MmuLoadBondtech: + case FilamentAction::MmuLoadExtruder: nLevel = bFilamentPreheatState ? 1 : 2; bFilamentAction = true; menu_back(nLevel); - menu_submenu(mmu_load_to_bondtech_menu); + menu_submenu(mmu_load_to_extruder_menu); break; case FilamentAction::MmuUnLoad: nLevel = bFilamentPreheatState ? 1 : 2; @@ -2018,7 +2018,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) case FilamentAction::Load: case FilamentAction::AutoLoad: case FilamentAction::MmuLoad: - case FilamentAction::MmuLoadBondtech: + case FilamentAction::MmuLoadExtruder: lcd_puts_P(_i("Preheating to load")); ////MSG_PREHEATING_TO_LOAD c=20 if (once) raise_z_above(MIN_Z_FOR_LOAD); break; @@ -5195,26 +5195,26 @@ static void mmu_cut_filament_menu() { } #endif //MMU_HAS_CUTTER -static inline void load_to_bondtech_all_wrapper(){ +static inline void load_to_extruder_all_wrapper(){ for(uint8_t i = 0; i < 5; ++i){ - MMU2::mmu2.load_to_bondtech(i); + MMU2::mmu2.load_to_extruder(i); } } -static inline void load_to_bondtech_wrapper(uint8_t i){ - MMU2::mmu2.load_to_bondtech(i); +static inline void load_to_extruder_wrapper(uint8_t i){ + MMU2::mmu2.load_to_extruder(i); } -static void mmu_load_to_bondtech_menu() { +static void mmu_load_to_extruder_menu() { if (bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Load all"), load_to_bondtech_all_wrapper); ////MSG_LOAD_ALL c=18 + MENU_ITEM_FUNCTION_P(_i("Load all"), load_to_extruder_all_wrapper); ////MSG_LOAD_ALL c=18 for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) - MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_to_bondtech_wrapper, i); ////MSG_LOAD_FILAMENT c=16 + MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_to_extruder_wrapper, i); ////MSG_LOAD_FILAMENT c=16 MENU_END(); } else { - eFilamentAction = FilamentAction::MmuLoadBondtech; + eFilamentAction = FilamentAction::MmuLoadExtruder; preheat_or_continue(); } } @@ -5603,7 +5603,7 @@ static void lcd_main_menu() if ( ! ( IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) { if (MMU2::mmu2.Enabled()) { MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), mmu_load_filament_menu); - MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_TO_BONDTECH), mmu_load_to_bondtech_menu); + MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_TO_EXTRUDER), mmu_load_to_extruder_menu); MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);////MSG_LOAD_TO_NOZZLE c=18 MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament); MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index d43b900c7..931ea8604 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -180,7 +180,7 @@ enum class FilamentAction : uint_least8_t MmuUnLoad, MmuEject, MmuCut, - MmuLoadBondtech, + MmuLoadExtruder, Preheat, Lay1Cal, }; From 2ba863d8a57185b21a94ec7c9f23be7cd3dba35a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 17:23:38 +0200 Subject: [PATCH 286/319] Reuse MSG_IR_0x_OR_.. fix lowercase remove todos --- Firmware/Filament_sensor.cpp | 4 ++-- Firmware/messages.cpp | 4 +--- Firmware/messages.h | 2 -- Firmware/ultralcd.cpp | 8 -------- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index ef9a2fc9d..5b235f121 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -359,10 +359,10 @@ void IR_sensor_analog::IR_ANALOG_Check(SensorRevision isVersion, SensorRevision printf_IRSensorAnalogBoardChange(); switch (switchTo) { case SensorRevision::_Old: - lcd_setstatuspgm(_T(MSG_FS_V_03_OR_OLDER)); ////MSG_FS_V_03_OR_OLDER c=18 + lcd_setstatuspgm(_T(MSG_IR_03_OR_OLDER)); break; case SensorRevision::_Rev04: - lcd_setstatuspgm(_T(MSG_FS_V_04_OR_NEWER)); ////MSG_FS_V_04_OR_NEWER c=18 + lcd_setstatuspgm(_T(MSG_IR_04_OR_NEWER)); break; default: break; diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 9400c66ad..59dfb5d7d 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -54,7 +54,7 @@ const char MSG_SELECT_FILAMENT[] PROGMEM_I1 = ISTR("Select filament:"); ////MSG_ const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////MSG_LAST_PRINT c=18 const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////MSG_LAST_PRINT_FAILURES c=20 const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////MSG_LOAD_FILAMENT c=17 -const char MSG_LOAD_TO_EXTRUDER[] PROGMEM_I1 = ISTR("Load to Extruder"); ////MSG_LOAD_TO_EXTRUDER c=18 +const char MSG_LOAD_TO_EXTRUDER[] PROGMEM_I1 = ISTR("Load to extruder"); ////MSG_LOAD_TO_EXTRUDER c=18 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////MSG_LOADING_FILAMENT c=20 const char MSG_TESTING_FILAMENT[] PROGMEM_I1 = ISTR("Testing filament"); ////MSG_TESTING_FILAMENT c=20 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); ////MSG_EJECT_FILAMENT c=17 @@ -159,8 +159,6 @@ const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////MSG_TIMEOUT c=12 const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////MSG_BRIGHT c=6 const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////MSG_DIM c=6 const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////MSG_AUTO c=6 -const char MSG_FS_V_03_OR_OLDER[] PROGMEM_I1 = ISTR("FS v0.3 or older"); ////MSG_FS_V_03_OR_OLDER c=18 -const char MSG_FS_V_04_OR_NEWER[] PROGMEM_I1 = ISTR("FS v0.4 or newer"); ////MSG_FS_V_04_OR_NEWER c=18 #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) // Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////MSG_IR_04_OR_NEWER c=18 diff --git a/Firmware/messages.h b/Firmware/messages.h index 9c5703cb2..72e113d8f 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -170,8 +170,6 @@ extern const char MSG_TIMEOUT[]; extern const char MSG_BRIGHT[]; extern const char MSG_DIM[]; extern const char MSG_AUTO[]; -extern const char MSG_FS_V_03_OR_OLDER[]; -extern const char MSG_FS_V_04_OR_NEWER[]; #if (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) extern const char MSG_IR_04_OR_NEWER[]; extern const char MSG_IR_03_OR_OLDER[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 85d5b4700..c2e69da97 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1136,7 +1136,6 @@ static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize //! | | //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") { @@ -1179,7 +1178,6 @@ static void lcd_menu_fails_stats_mmu() //! | | //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_mmu_print() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1238,7 +1236,6 @@ static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" " %-16.16S%- //! | Crash X:000 Y:000| MSG_CRASH c=7 //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_total() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1347,7 +1344,6 @@ static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-1 //! | Fil. runouts 000| MSG_FIL_RUNOUTS c=15 //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1426,7 +1422,6 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ //! ---------------------- //! D - Degree sysmbol LCD_STR_DEGREE //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_temperatures() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1457,7 +1452,6 @@ static void lcd_menu_temperatures() //! | IR : 00.0V | c=12 optional //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_voltages() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1483,7 +1477,6 @@ static void lcd_menu_voltages() //! | | //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_belt_status() { lcd_home(); @@ -2375,7 +2368,6 @@ static void lcd_LoadFilament() //! | 00d 00h 00m | //! ---------------------- //! @endcode -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. Translations missing for "d"days, "h"ours, "m"inutes", "s"seconds". void lcd_menu_statistics() { lcd_timeoutToStatus.stop(); //infinite timeout From 3f6b05cc350b62ab961f278616bb79f6e106753c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 18:04:21 +0200 Subject: [PATCH 287/319] Remove PAT9125 stats as these aren't different to IR stats --- Firmware/ultralcd.cpp | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c2e69da97..4db0e266c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1260,18 +1260,6 @@ static void lcd_menu_fails_stats_total() //! | Crash X 000 Y 000| MSG_CRASH c=7 //! ---------------------- //! @endcode -//! @brief Show Last Print Failures Statistics with PAT9125 -//! -//! @code{.unparsed} -//! |01234567890123456789| -//! |Last print failures | MSG_LAST_PRINT_FAILURES c=20 -//! | Power failures 000| MSG_POWER_FAILURES c=15 -//! | Runouts H 000 S 000| MSG_RUNOUTS c=7 -//! | Crash X:000 Y:000| MSG_CRASH c=7 -//! ---------------------- -//! @endcode - -//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. //! @todo leptun refactor this piece of code please static void lcd_menu_fails_stats_print() { @@ -1281,25 +1269,11 @@ static void lcd_menu_fails_stats_print() uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X); uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y); lcd_home(); -#if FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125 - // On the MK3 include detailed PAT9125 statistics about soft failures - lcd_printf_P(PSTR("%S\n" - " %-16.16S%-3d\n" - " %-7.7S: %-3d\n" - " %-7.7S X %-3d Y %-3d"), - _T(MSG_LAST_PRINT_FAILURES), - _T(MSG_POWER_FAILURES), power, - _i("Runouts"), filam, //MSG_RUNOUTS c=7 - _T(MSG_CRASH), crashX, crashY); -#elif (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG) lcd_printf_P(failStatsFmt, _T(MSG_LAST_PRINT_FAILURES), _T(MSG_POWER_FAILURES), power, _T(MSG_FIL_RUNOUTS), filam, _T(MSG_CRASH), crashX, crashY); -#else -#error This menu should have a filament sensor defined -#endif menu_back_if_clicked_fb(); } From 50b6044703c6fa2cdac7c783bf64637db776595b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 18:17:50 +0200 Subject: [PATCH 288/319] Use origin message on serial --- Firmware/mmu2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 98582a27d..abbb20b5f 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -815,7 +815,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { if( ec != lastErrorCode ){ // deduplicate: only report changes in error codes into the log lastErrorCode = ec; - LogErrorEvent_P( _T(PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec))) ); + LogErrorEvent_P( _O(PrusaErrorTitle(PrusaErrorCodeIndex((uint16_t)ec))) ); } static_assert(mmu2Magic[0] == 'M' @@ -830,7 +830,7 @@ void MMU2::ReportError(ErrorCode ec, uint8_t res) { void MMU2::ReportProgress(ProgressCode pc) { ReportProgressHook((CommandInProgress)logic.CommandInProgress(), (uint16_t)pc); - LogEchoEvent_P( _T(ProgressCodeToText((uint16_t)pc)) ); + LogEchoEvent_P( _O(ProgressCodeToText((uint16_t)pc)) ); } void MMU2::OnMMUProgressMsg(ProgressCode pc){ From 89a03c1f0d6bec43db4dfb7645ed08d482afdcf1 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:02:04 +0200 Subject: [PATCH 289/319] MMU2/lang: Update translatable strings to match our extraction macros --- Firmware/mmu2/errors_list.h | 320 +++++++++++++++--------------- Firmware/mmu2_error_converter.cpp | 2 +- 2 files changed, 161 insertions(+), 161 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index fed11e7e4..d0cba8c24 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -115,185 +115,185 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { }; // @@TODO some of the strings are duplicates, can be merged into one -static const char titleFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); -static const char titleFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA: FILAM. STUCK"); -static const char titleFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); -static const char titleFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR: FIL. STUCK"); -static const char titlePULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); -static const char titleFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); -static const char titleSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); -static const char titleSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); -static const char titleIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); -static const char titleIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); -static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -//static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -//static const char titleTMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -//static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -//static const char titleTMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -//static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -//static const char titleTMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -//static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -//static const char titleTMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -//static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -//static const char titleTMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -//static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -//static const char titleTMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char titleMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); -static const char titleCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); -static const char titleFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); -static const char titleINVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); -static const char titleQUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); -static const char titleFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); -static const char titleFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); -static const char titleUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); +static const char MSG_TITLE_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); ////MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +static const char MSG_TITLE_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA: FILAM. STUCK"); ////MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +static const char MSG_TITLE_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); ////MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +static const char MSG_TITLE_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR: FIL. STUCK"); ////MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +static const char MSG_TITLE_PULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); ////MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +static const char MSG_TITLE_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); ////MSG_TITLE_FSENSOR_TOO_EARLY c=20 +static const char MSG_TITLE_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); ////MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +static const char MSG_TITLE_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); ////MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +static const char MSG_TITLE_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); ////MSG_TITLE_IDLER_CANNOT_MOVE c=20 +static const char MSG_TITLE_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); ////MSG_TITLE_IDLER_CANNOT_HOME c=20 +static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); ////MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +//static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); ////MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +//static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); +static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); ////MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +//static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +//static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); +static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); ////MSG_TITLE_TMC_DRIVER_ERROR c=20 +//static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +//static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); +static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); ////MSG_TITLE_TMC_DRIVER_RESET c=20 +//static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +//static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); +static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); ////MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +//static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +//static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); +static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); ////MSG_TITLE_TMC_DRIVER_SHORTED c=20 +//static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +//static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); +static const char MSG_TITLE_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); ////MSG_TITLE_MMU_NOT_RESPONDING c=20 +static const char MSG_TITLE_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); ////MSG_TITLE_COMMUNICATION_ERROR c=20 +static const char MSG_TITLE_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); ////MSG_TITLE_FILAMENT_ALREADY_LOADED c=20 +static const char MSG_TITLE_INVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); ////MSG_TITLE_INVALID_TOOL c=20 +static const char MSG_TITLE_QUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); ////MSG_TITLE_QUEUE_FULL c=20 +static const char MSG_TITLE_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); ////MSG_TITLE_FW_UPDATE_NEEDED c=20 +static const char MSG_TITLE_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); ////MSG_TITLE_FW_RUNTIME_ERROR c=20 +static const char MSG_TITLE_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); ////MSG_TITLE_UNLOAD_MANUALLY c=20 static const char * const errorTitles [] PROGMEM = { - titleFINDA_DIDNT_TRIGGER, - titleFINDA_DIDNT_GO_OFF, - titleFSENSOR_DIDNT_TRIGGER, - titleFSENSOR_DIDNT_GO_OFF, - titlePULLEY_CANNOT_MOVE, - titleFSENSOR_TOO_EARLY, - titleSELECTOR_CANNOT_HOME, - titleSELECTOR_CANNOT_MOVE, - titleIDLER_CANNOT_HOME, - titleIDLER_CANNOT_MOVE, - titleTMC_WARNING_TMC_TOO_HOT, - titleTMC_WARNING_TMC_TOO_HOT, - titleTMC_WARNING_TMC_TOO_HOT, - titleTMC_OVERHEAT_ERROR, - titleTMC_OVERHEAT_ERROR, - titleTMC_OVERHEAT_ERROR, - titleTMC_DRIVER_ERROR, - titleTMC_DRIVER_ERROR, - titleTMC_DRIVER_ERROR, - titleTMC_DRIVER_RESET, - titleTMC_DRIVER_RESET, - titleTMC_DRIVER_RESET, - titleTMC_UNDERVOLTAGE_ERROR, - titleTMC_UNDERVOLTAGE_ERROR, - titleTMC_UNDERVOLTAGE_ERROR, - titleTMC_DRIVER_SHORTED, - titleTMC_DRIVER_SHORTED, - titleTMC_DRIVER_SHORTED, - titleMMU_NOT_RESPONDING, - titleCOMMUNICATION_ERROR, - titleFILAMENT_ALREADY_LOADED, - titleINVALID_TOOL, - titleQUEUE_FULL, - titleFW_UPDATE_NEEDED, - titleFW_RUNTIME_ERROR, - titleUNLOAD_MANUALLY + _R(MSG_TITLE_FINDA_DIDNT_TRIGGER), + _R(MSG_TITLE_FINDA_DIDNT_GO_OFF), + _R(MSG_TITLE_FSENSOR_DIDNT_TRIGGER), + _R(MSG_TITLE_FSENSOR_DIDNT_GO_OFF), + _R(MSG_TITLE_PULLEY_CANNOT_MOVE), + _R(MSG_TITLE_FSENSOR_TOO_EARLY), + _R(MSG_TITLE_SELECTOR_CANNOT_HOME), + _R(MSG_TITLE_SELECTOR_CANNOT_MOVE), + _R(MSG_TITLE_IDLER_CANNOT_HOME), + _R(MSG_TITLE_IDLER_CANNOT_MOVE), + _R(MSG_TITLE_TMC_WARNING_TMC_TOO_HOT), + _R(MSG_TITLE_TMC_WARNING_TMC_TOO_HOT), + _R(MSG_TITLE_TMC_WARNING_TMC_TOO_HOT), + _R(MSG_TITLE_TMC_OVERHEAT_ERROR), + _R(MSG_TITLE_TMC_OVERHEAT_ERROR), + _R(MSG_TITLE_TMC_OVERHEAT_ERROR), + _R(MSG_TITLE_TMC_DRIVER_ERROR), + _R(MSG_TITLE_TMC_DRIVER_ERROR), + _R(MSG_TITLE_TMC_DRIVER_ERROR), + _R(MSG_TITLE_TMC_DRIVER_RESET), + _R(MSG_TITLE_TMC_DRIVER_RESET), + _R(MSG_TITLE_TMC_DRIVER_RESET), + _R(MSG_TITLE_TMC_UNDERVOLTAGE_ERROR), + _R(MSG_TITLE_TMC_UNDERVOLTAGE_ERROR), + _R(MSG_TITLE_TMC_UNDERVOLTAGE_ERROR), + _R(MSG_TITLE_TMC_DRIVER_SHORTED), + _R(MSG_TITLE_TMC_DRIVER_SHORTED), + _R(MSG_TITLE_TMC_DRIVER_SHORTED), + _R(MSG_TITLE_MMU_NOT_RESPONDING), + _R(MSG_TITLE_COMMUNICATION_ERROR), + _R(MSG_TITLE_FILAMENT_ALREADY_LOADED), + _R(MSG_TITLE_INVALID_TOOL), + _R(MSG_TITLE_QUEUE_FULL), + _R(MSG_TITLE_FW_UPDATE_NEEDED), + _R(MSG_TITLE_FW_RUNTIME_ERROR), + _R(MSG_TITLE_UNLOAD_MANUALLY) }; // @@TODO looking at the texts, they can be composed of several parts and/or parametrized (could save a lot of space ;) ) // Moreover, some of them have been disabled in favour of saving some more code size. -static const char descFINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); -static const char descFINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); -static const char descFSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Ensure the filament reached the fsensor and the sensor works."); -static const char descFSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); -static const char descPULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); -static const char descFSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); -static const char descSELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); -static const char descCANNOT_MOVE[] PROGMEM_I1 = ISTR(""); // these errors have been disabled -//static const char descSELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); -static const char descIDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); -//static const char descIDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); -static const char descTMC[] PROGMEM_I1 = ISTR("More details online."); -//static const char descPULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -//static const char descSELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -//static const char descIDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); -//static const char descPULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and reset MMU."); -//static const char descSELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and reset MMU."); -//static const char descIDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and reset MMU."); -//static const char descPULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try resetting the MMU. If the issue persists contact support."); -//static const char descSELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try resetting the MMU. If the issue persists contact support."); -//static const char descIDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try resetting the MMU. If the issue persists contact support."); -//static const char descPULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descSELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descIDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descPULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descSELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descIDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); -//static const char descPULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); -//static const char descSELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); -//static const char descIDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); -static const char descMMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); -static const char descCOMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); -static const char descFILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); -static const char descINVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); -static const char descQUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); -static const char descFW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); -static const char descFW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); -static const char descUNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); +static const char MSG_DESC_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_TRIGGER c=20 +static const char MSG_DESC_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_GO_OFF c=20 +static const char MSG_DESC_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Ensure the filament reached the fsensor and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 +static const char MSG_DESC_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 +static const char MSG_DESC_PULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); ////MSG_DESC_PULLEY_STALLED c=20 +static const char MSG_DESC_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); ////MSG_DESC_FSENSOR_TOO_EARLY c=20 +static const char MSG_DESC_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_SELECTOR_CANNOT_HOME c=20 +static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR(""); // these errors have been disabled +//static const char MSG_DESC_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); +static const char MSG_DESC_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_IDLER_CANNOT_HOME c=20 +//static const char MSG_DESC_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); +static const char MSG_DESC_TMC[] PROGMEM_I1 = ISTR("More details online."); ////MSG_DESC_TMC c=20 +//static const char MSG_DESC_PULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char MSG_DESC_SELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char MSG_DESC_IDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); +//static const char MSG_DESC_PULLEY_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is overheated. Cool down the MMU board and reset MMU."); +//static const char MSG_DESC_SELECTOR_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is overheated. Cool down the MMU board and reset MMU."); +//static const char MSG_DESC_IDLER_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is overheated. Cool down the MMU board and reset MMU."); +//static const char MSG_DESC_PULLEY_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char MSG_DESC_SELECTOR_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char MSG_DESC_IDLER_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is not responding. Try resetting the MMU. If the issue persists contact support."); +//static const char MSG_DESC_PULLEY_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_SELECTOR_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_IDLER_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor was restarted. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_PULLEY_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Pulley TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_SELECTOR_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Selector TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_IDLER_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("Not enough current for the Idler TMC driver. There is probably an issue with the electronics. Check the wiring and connectors."); +//static const char MSG_DESC_PULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); +//static const char MSG_DESC_SELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); +//static const char MSG_DESC_IDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); +static const char MSG_DESC_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_MMU_NOT_RESPONDING c=20 +static const char MSG_DESC_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_COMMUNICATION_ERROR c=20 +static const char MSG_DESC_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); ////MSG_DESC_FILAMENT_ALREADY_LOADED c=20 +static const char MSG_DESC_INVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); ////MSG_DESC_INVALID_TOOL c=20 +static const char MSG_DESC_QUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); ////MSG_DESC_QUEUE_FULL c=20 +static const char MSG_DESC_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); ////MSG_DESC_FW_UPDATE_NEEDED c=20 +static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); ////MSG_DESC_FW_RUNTIME_ERROR c=20 +static const char MSG_DESC_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); ////MSG_DESC_UNLOAD_MANUALLY c=20 static const char * const errorDescs[] PROGMEM = { - descFINDA_DIDNT_TRIGGER, - descFINDA_DIDNT_GO_OFF, - descFSENSOR_DIDNT_TRIGGER, - descFSENSOR_DIDNT_GO_OFF, - descPULLEY_STALLED, - descFSENSOR_TOO_EARLY, - descSELECTOR_CANNOT_HOME, - descCANNOT_MOVE, - descIDLER_CANNOT_HOME, - descCANNOT_MOVE, - descTMC, // descPULLEY_WARNING_TMC_TOO_HOT, - descTMC, // descSELECTOR_WARNING_TMC_TOO_HOT, - descTMC, // descIDLER_WARNING_TMC_TOO_HOT, - descTMC, // descPULLEY_TMC_OVERHEAT_ERROR, - descTMC, // descSELECTOR_TMC_OVERHEAT_ERROR, - descTMC, // descIDLER_TMC_OVERHEAT_ERROR, - descTMC, // descPULLEY_TMC_DRIVER_ERROR, - descTMC, // descSELECTOR_TMC_DRIVER_ERROR, - descTMC, // descIDLER_TMC_DRIVER_ERROR, - descTMC, // descPULLEY_TMC_DRIVER_RESET, - descTMC, // descSELECTOR_TMC_DRIVER_RESET, - descTMC, // descIDLER_TMC_DRIVER_RESET, - descTMC, // descPULLEY_TMC_UNDERVOLTAGE_ERROR, - descTMC, // descSELECTOR_TMC_UNDERVOLTAGE_ERROR, - descTMC, // descIDLER_TMC_UNDERVOLTAGE_ERROR, - descTMC, // descPULLEY_TMC_DRIVER_SHORTED, - descTMC, // descSELECTOR_TMC_DRIVER_SHORTED, - descTMC, // descIDLER_TMC_DRIVER_SHORTED, - descMMU_NOT_RESPONDING, - descCOMMUNICATION_ERROR, - descFILAMENT_ALREADY_LOADED, - descINVALID_TOOL, - descQUEUE_FULL, - descFW_UPDATE_NEEDED, - descFW_RUNTIME_ERROR, - descUNLOAD_MANUALLY + MSG_DESC_FINDA_DIDNT_TRIGGER, + MSG_DESC_FINDA_DIDNT_GO_OFF, + MSG_DESC_FSENSOR_DIDNT_TRIGGER, + MSG_DESC_FSENSOR_DIDNT_GO_OFF, + MSG_DESC_PULLEY_STALLED, + MSG_DESC_FSENSOR_TOO_EARLY, + MSG_DESC_SELECTOR_CANNOT_HOME, + MSG_DESC_CANNOT_MOVE, + MSG_DESC_IDLER_CANNOT_HOME, + MSG_DESC_CANNOT_MOVE, + MSG_DESC_TMC, // descPULLEY_WARNING_TMC_TOO_HOT, + MSG_DESC_TMC, // descSELECTOR_WARNING_TMC_TOO_HOT, + MSG_DESC_TMC, // descIDLER_WARNING_TMC_TOO_HOT, + MSG_DESC_TMC, // descPULLEY_TMC_OVERHEAT_ERROR, + MSG_DESC_TMC, // descSELECTOR_TMC_OVERHEAT_ERROR, + MSG_DESC_TMC, // descIDLER_TMC_OVERHEAT_ERROR, + MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_ERROR, + MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_ERROR, + MSG_DESC_TMC, // descIDLER_TMC_DRIVER_ERROR, + MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_RESET, + MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_RESET, + MSG_DESC_TMC, // descIDLER_TMC_DRIVER_RESET, + MSG_DESC_TMC, // descPULLEY_TMC_UNDERVOLTAGE_ERROR, + MSG_DESC_TMC, // descSELECTOR_TMC_UNDERVOLTAGE_ERROR, + MSG_DESC_TMC, // descIDLER_TMC_UNDERVOLTAGE_ERROR, + MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_SHORTED, + MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_SHORTED, + MSG_DESC_TMC, // descIDLER_TMC_DRIVER_SHORTED, + MSG_DESC_MMU_NOT_RESPONDING, + MSG_DESC_COMMUNICATION_ERROR, + MSG_DESC_FILAMENT_ALREADY_LOADED, + MSG_DESC_INVALID_TOOL, + MSG_DESC_QUEUE_FULL, + MSG_DESC_FW_UPDATE_NEEDED, + MSG_DESC_FW_RUNTIME_ERROR, + MSG_DESC_UNLOAD_MANUALLY }; // we have max 3 buttons/operations to select from // one of them is "More" to show the explanation text normally hidden in the next screens. // 01234567890123456789 -// >bttxt >bttxt >MoreW +// >bttxt >bttxt>MoreW // Therefore at least some of the buttons, which can occur on the screen together, need to be 5-chars long max @@TODO. // Beware - we only have space for 2 buttons on the LCD while the MMU has 3 buttons // -> the left button on the MMU is not used/rendered on the LCD (it is also almost unused on the MMU side) -static const char btnRetry[] PROGMEM_I1 = ISTR("Retry"); -static const char btnContinue[] PROGMEM_I1 = ISTR("Done"); -static const char btnRestartMMU[] PROGMEM_I1 = ISTR("RstMMU"); -static const char btnUnload[] PROGMEM_I1 = ISTR("Unload"); -static const char btnStop[] PROGMEM_I1 = ISTR("Stop"); -static const char btnDisableMMU[] PROGMEM_I1 = ISTR("Disable"); -static const char btnMore[] PROGMEM_I1 = ISTR("More\x06"); +static const char MSG_BTN_RETRY[] PROGMEM_I1 = ISTR("Retry"); ////MSG_BTN_RETRY c=5 +static const char MSG_BTN_CONTINUE[] PROGMEM_I1 = ISTR("Done"); ////MSG_BTN_CONTINUE c=5 +static const char MSG_BTN_RESTART_MMU[] PROGMEM_I1 = ISTR("RstMMU"); ////MSG_BTN_RESTART_MMU c=9 +static const char MSG_BTN_UNLOAD[] PROGMEM_I1 = ISTR("Unload"); ////MSG_BTN_UNLOAD c=6 +static const char MSG_BTN_STOP[] PROGMEM_I1 = ISTR("Stop"); ////MSG_BTN_STOP c=5 +static const char MSG_BTN_DISABLE_MMU[] PROGMEM_I1 = ISTR("Disable"); ////MSG_BTN_DISABLE_MMU c=9 +static const char MSG_BTN_MORE[] PROGMEM_I1 = ISTR("More\x06"); ////MSG_BTN_MORE c=5 // Used to parse the buttons from Btns(). static const char * const btnOperation[] PROGMEM = { - btnRetry, - btnContinue, - btnRestartMMU, - btnUnload, - btnStop, - btnDisableMMU + _R(MSG_BTN_RETRY), + _R(MSG_BTN_CONTINUE), + _R(MSG_BTN_RESTART_MMU), + _R(MSG_BTN_UNLOAD), + _R(MSG_BTN_STOP), + _R(MSG_BTN_DISABLE_MMU), }; // We have 8 different operations/buttons at this time, so we need at least 4 bits to encode each. diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 839d43479..00b824d2a 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -150,7 +150,7 @@ const char * const PrusaErrorButtonTitle(uint8_t bi){ } const char * const PrusaErrorButtonMore(){ - return btnMore; + return _R(MSG_BTN_MORE); } struct ResetOnExit { From 9d959f5d123d489ec59fc17a7b18b3a742e712a6 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:08:06 +0200 Subject: [PATCH 290/319] Prepare progress messages for translation Remove duplicate messages --- Firmware/mmu2_progress_converter.cpp | 111 +++++++++++++-------------- 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index 0da9b0e13..b7d3fcf34 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -4,65 +4,62 @@ #include namespace MMU2 { - // 12345678901234567890 -static const char progressOk[] PROGMEM_I1 = ISTR("OK"); -static const char progressEngageIdler[] PROGMEM_I1 = ISTR("Engaging idler"); -static const char progressDisengeIdler[] PROGMEM_I1 = ISTR("Disengaging idler"); -static const char progressUnloadFinda[] PROGMEM_I1 = ISTR("Unloading to FINDA"); -static const char progressUnloadPulley[] PROGMEM_I1 = ISTR("Unloading to pulley"); -static const char progressFeedFinda[] PROGMEM_I1 = ISTR("Feeding to FINDA"); -static const char progressFeedExtruder[] PROGMEM_I1 = ISTR("Feeding to extruder"); -static const char progressFeedNozzle[] PROGMEM_I1 = ISTR("Feeding to nozzle"); -static const char progressAvoidGrind[] PROGMEM_I1 = ISTR("Avoiding grind"); -static const char progressFinishMoves[] PROGMEM_I1 = ISTR("Finishing moves"); -static const char progressWaitForUser[] PROGMEM_I1 = ISTR("ERR Wait for User"); -static const char progressErrInternal[] PROGMEM_I1 = ISTR("ERR Internal"); -static const char progressErrHelpFil[] PROGMEM_I1 = ISTR("ERR Help filament"); -static const char progressErrTmc[] PROGMEM_I1 = ISTR("ERR TMC failed"); -static const char progressUnloadFilament[] PROGMEM_I1 = ISTR("Unloading filament"); -static const char progressLoadFilament[] PROGMEM_I1 = ISTR("Loading filament"); -static const char progressSelectSlot[] PROGMEM_I1 = ISTR("Selecting fil. slot"); -static const char progressPrepareBlade[] PROGMEM_I1 = ISTR("Preparing blade"); -static const char progressPushFilament[] PROGMEM_I1 = ISTR("Pushing filament"); -static const char progressPerformCut[] PROGMEM_I1 = ISTR("Performing cut"); -static const char progressReturnSelector[] PROGMEM_I1 = ISTR("Returning selector"); -static const char progressParkSelector[] PROGMEM_I1 = ISTR("Parking selector"); -static const char progressEjectFilament[] PROGMEM_I1 = ISTR("Ejecting filament"); -static const char progressRetractFinda[] PROGMEM_I1 = ISTR("Retract from FINDA"); -static const char progressHoming[] PROGMEM_I1 = ISTR("Homing"); -static const char progressMovingSelector[] PROGMEM_I1 = ISTR("Moving selector"); -static const char progressFeedingToFSensor[] PROGMEM_I1 = ISTR("Feeding to FSensor"); + //01234567890123456789 +static const char MSG_PROGRESS_OK[] PROGMEM_I1 = ISTR("OK"); ////MSG_PROGRESS_OK c=4 +static const char MSG_PROGRESS_ENGAGE_IDLER[] PROGMEM_I1 = ISTR("Engaging idler"); ////MSG_PROGRESS_ENGAGE_IDLER c=20 +static const char MSG_PROGRESS_DISENGAGE_IDLER[] PROGMEM_I1 = ISTR("Disengaging idler"); ////MSG_PROGRESS_DISENGAGE_IDLER c=20 +static const char MSG_PROGRESS_UNLOAD_FINDA[] PROGMEM_I1 = ISTR("Unloading to FINDA"); ////MSG_PROGRESS_UNLOAD_FINDA c=20 +static const char MSG_PROGRESS_UNLOAD_PULLEY[] PROGMEM_I1 = ISTR("Unloading to pulley"); ////MSG_PROGRESS_UNLOAD_PULLEY c=20 +static const char MSG_PROGRESS_FEED_FINDA[] PROGMEM_I1 = ISTR("Feeding to FINDA"); ////MSG_PROGRESS_FEED_FINDA c=20 +static const char MSG_PROGRESS_FEED_EXTRUDER[] PROGMEM_I1 = ISTR("Feeding to extruder"); ////MSG_PROGRESS_FEED_EXTRUDER c=20 +static const char MSG_PROGRESS_FEED_NOZZLE[] PROGMEM_I1 = ISTR("Feeding to nozzle"); ////MSG_PROGRESS_FEED_NOZZLE c=20 +static const char MSG_PROGRESS_AVOID_GRIND[] PROGMEM_I1 = ISTR("Avoiding grind"); ////MSG_PROGRESS_AVOID_GRIND c=20 +static const char MSG_PROGRESS_WAIT_USER[] PROGMEM_I1 = ISTR("ERR Wait for User"); ////MSG_PROGRESS_WAIT_USER c=20 +static const char MSG_PROGRESS_ERR_INTERNAL[] PROGMEM_I1 = ISTR("ERR Internal"); ////MSG_PROGRESS_ERR_INTERNAL c=20 +static const char MSG_PROGRESS_ERR_HELP_FIL[] PROGMEM_I1 = ISTR("ERR Help filament"); ////MSG_PROGRESS_ERR_HELP_FIL c=20 +static const char MSG_PROGRESS_ERR_TMC[] PROGMEM_I1 = ISTR("ERR TMC failed"); ////MSG_PROGRESS_ERR_TMC c=20 +static const char MSG_PROGRESS_SELECT_SLOT[] PROGMEM_I1 = ISTR("Selecting fil. slot"); ////MSG_PROGRESS_SELECT_SLOT c=20 +static const char MSG_PROGRESS_PREPARE_BLADE[] PROGMEM_I1 = ISTR("Preparing blade"); ////MSG_PROGRESS_PREPARE_BLADE c=20 +static const char MSG_PROGRESS_PUSH_FILAMENT[] PROGMEM_I1 = ISTR("Pushing filament"); ////MSG_PROGRESS_PUSH_FILAMENT c=20 +static const char MSG_PROGRESS_PERFORM_CUT[] PROGMEM_I1 = ISTR("Performing cut"); ////MSG_PROGRESS_PERFORM_CUT c=20 +static const char MSG_PROGRESS_RETURN_SELECTOR[] PROGMEM_I1 = ISTR("Returning selector"); ////MSG_PROGRESS_RETURN_SELECTOR c=20 +static const char MSG_PROGRESS_PARK_SELECTOR[] PROGMEM_I1 = ISTR("Parking selector"); ////MSG_PROGRESS_PARK_SELECTOR c=20 +static const char MSG_PROGRESS_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Ejecting filament"); ////MSG_PROGRESS_EJECT_FILAMENT c=20 //@@todo duplicate +static const char MSG_PROGRESS_RETRACT_FINDA[] PROGMEM_I1 = ISTR("Retract from FINDA"); ////MSG_PROGRESS_RETRACT_FINDA c=20 +static const char MSG_PROGRESS_HOMING[] PROGMEM_I1 = ISTR("Homing"); ////MSG_PROGRESS_HOMING c=20 +static const char MSG_PROGRESS_MOVING_SELECTOR[] PROGMEM_I1 = ISTR("Moving selector"); ////MSG_PROGRESS_MOVING_SELECTOR c=20 +static const char MSG_PROGRESS_FEED_FSENSOR[] PROGMEM_I1 = ISTR("Feeding to FSensor"); ////MSG_PROGRESS_FEED_FSENSOR c=20 static const char * const progressTexts[] PROGMEM = { - progressOk, - progressEngageIdler, - progressDisengeIdler, - progressUnloadFinda, - progressUnloadPulley, - progressFeedFinda, - progressFeedExtruder, - progressFeedNozzle, - progressAvoidGrind, - progressFinishMoves, - progressDisengeIdler, // err disengaging idler is the same text - progressEngageIdler, // engage dtto. - progressWaitForUser, - progressErrInternal, - progressErrHelpFil, - progressErrTmc, - progressUnloadFilament, - progressLoadFilament, - progressSelectSlot, - progressPrepareBlade, - progressPushFilament, - progressPerformCut, - progressReturnSelector, - progressParkSelector, - progressEjectFilament, - progressRetractFinda, - progressHoming, - progressMovingSelector, - progressFeedingToFSensor + _R(MSG_PROGRESS_OK), + _R(MSG_PROGRESS_ENGAGE_IDLER), + _R(MSG_PROGRESS_DISENGAGE_IDLER), + _R(MSG_PROGRESS_UNLOAD_FINDA), + _R(MSG_PROGRESS_UNLOAD_PULLEY), + _R(MSG_PROGRESS_FEED_FINDA), + _R(MSG_PROGRESS_FEED_EXTRUDER), + _R(MSG_PROGRESS_FEED_NOZZLE), + _R(MSG_PROGRESS_AVOID_GRIND), + _R(MSG_FINISHING_MOVEMENTS), //reuse from messages.cpp + _R(MSG_PROGRESS_DISENGAGE_IDLER), // err disengaging idler is the same text + _R(MSG_PROGRESS_ENGAGE_IDLER), // engage dtto. + _R(MSG_PROGRESS_WAIT_USER), + _R(MSG_PROGRESS_ERR_INTERNAL), + _R(MSG_PROGRESS_ERR_HELP_FIL), + _R(MSG_PROGRESS_ERR_TMC), + _R(MSG_UNLOADING_FILAMENT), //reuse from messages.cpp + _R(MSG_LOADING_FILAMENT), //reuse from messages.cpp + _R(MSG_PROGRESS_SELECT_SLOT), + _R(MSG_PROGRESS_PREPARE_BLADE), + _R(MSG_PROGRESS_PUSH_FILAMENT), + _R(MSG_PROGRESS_PERFORM_CUT), + _R(MSG_PROGRESS_RETURN_SELECTOR), + _R(MSG_PROGRESS_PARK_SELECTOR), + _R(MSG_PROGRESS_EJECT_FILAMENT), + _R(MSG_PROGRESS_RETRACT_FINDA), + _R(MSG_PROGRESS_HOMING), + _R(MSG_PROGRESS_MOVING_SELECTOR), + _R(MSG_PROGRESS_FEED_FSENSOR) }; const char * const ProgressCodeToText(uint16_t pc){ From 0f8d84082a4e7e67fc0a98044e63b2bb4bd88e26 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:11:11 +0200 Subject: [PATCH 291/319] Update button menu documentation as there are 1/2/3 options --- Firmware/mmu2_reporting.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 1a63a9291..22088fa2c 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -52,7 +52,7 @@ static void ReportErrorHookStaticRender(uint8_t ei) { //! |MMU FW update needed| <- title/header of the error: max 20 characters //! |prusa3d.com/ERR04504| <- URL 20 characters //! |FI:1 FS:1 5>3 t201°| <- status line, t is thermometer symbol - //! |>Retry >Done >MoreW| <- buttons + //! |>Retry >Done >MoreW | <- buttons bool two_choices = false; // Read and determine what operations should be shown on the menu @@ -144,6 +144,24 @@ static uint8_t ReportErrorHookMonitor(uint8_t ei) { } // Update '>' render only + //! @brief Button menu + //! + //! @code{.unparsed} + //! |01234567890123456789| + //! | | + //! | | + //! | | + //! |>(left) | + //! ---------------------- + //! Three choices + //! |>(left)>(mid)>(righ)| + //! ---------------------- + //! Two choises + //! ---------------------- + //! |>(left) >(mid) | + //! ---------------------- + //! @endcode + // lcd_set_cursor(0, 3); lcd_print(current_selection == LCD_LEFT_BUTTON_CHOICE ? '>': ' '); if (two_choices == false) From f4f09e4062916a00f304519d37256887bd2ad8c5 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:18:23 +0200 Subject: [PATCH 292/319] update mmu2 messages c= r= values --- Firmware/mmu2.cpp | 3 ++- Firmware/mmu2/errors_list.h | 38 ++++++++++++++++++------------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index abbb20b5f..31ac439cc 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -595,7 +595,8 @@ void MMU2::ResumeHotendTemp() { SERIAL_ECHOLN(resume_hotend_temp); mmu_print_saved &= ~(SavedState::Cooldown); setTargetHotend(resume_hotend_temp, active_extruder); - lcd_display_message_fullscreen_P(_i("MMU Retry: Restoring temperature...")); // better report the event and let the GUI do its work somewhere else + lcd_display_message_fullscreen_P(_i("MMU Retry: Restoring temperature...")); ////MSG_MMU_RESTORE_TEMP c=20 r=4 + //@todo better report the event and let the GUI do its work somewhere else ReportErrorHookSensorLineRender(); waitForHotendTargetTemp(1000, []{ ReportErrorHookDynamicRender(); diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index d0cba8c24..cee40a302 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -145,7 +145,7 @@ static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER S //static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); static const char MSG_TITLE_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); ////MSG_TITLE_MMU_NOT_RESPONDING c=20 static const char MSG_TITLE_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); ////MSG_TITLE_COMMUNICATION_ERROR c=20 -static const char MSG_TITLE_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); ////MSG_TITLE_FILAMENT_ALREADY_LOADED c=20 +static const char MSG_TITLE_FIL_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); ////MSG_TITLE_FIL_ALREADY_LOADED c=20 static const char MSG_TITLE_INVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); ////MSG_TITLE_INVALID_TOOL c=20 static const char MSG_TITLE_QUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); ////MSG_TITLE_QUEUE_FULL c=20 static const char MSG_TITLE_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); ////MSG_TITLE_FW_UPDATE_NEEDED c=20 @@ -183,7 +183,7 @@ static const char * const errorTitles [] PROGMEM = { _R(MSG_TITLE_TMC_DRIVER_SHORTED), _R(MSG_TITLE_MMU_NOT_RESPONDING), _R(MSG_TITLE_COMMUNICATION_ERROR), - _R(MSG_TITLE_FILAMENT_ALREADY_LOADED), + _R(MSG_TITLE_FIL_ALREADY_LOADED), _R(MSG_TITLE_INVALID_TOOL), _R(MSG_TITLE_QUEUE_FULL), _R(MSG_TITLE_FW_UPDATE_NEEDED), @@ -193,18 +193,18 @@ static const char * const errorTitles [] PROGMEM = { // @@TODO looking at the texts, they can be composed of several parts and/or parametrized (could save a lot of space ;) ) // Moreover, some of them have been disabled in favour of saving some more code size. -static const char MSG_DESC_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_TRIGGER c=20 -static const char MSG_DESC_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_GO_OFF c=20 -static const char MSG_DESC_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Ensure the filament reached the fsensor and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 -static const char MSG_DESC_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 -static const char MSG_DESC_PULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); ////MSG_DESC_PULLEY_STALLED c=20 -static const char MSG_DESC_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); ////MSG_DESC_FSENSOR_TOO_EARLY c=20 -static const char MSG_DESC_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_SELECTOR_CANNOT_HOME c=20 +static const char MSG_DESC_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +static const char MSG_DESC_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); ////MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +static const char MSG_DESC_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("Filament sensor didn't trigger while loading the filament. Ensure the filament reached the fsensor and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +static const char MSG_DESC_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works."); ////MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +static const char MSG_DESC_PULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); ////MSG_DESC_PULLEY_STALLED c=20 r=8 +static const char MSG_DESC_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); ////MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +static const char MSG_DESC_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR(""); // these errors have been disabled //static const char MSG_DESC_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); -static const char MSG_DESC_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_IDLER_CANNOT_HOME c=20 +static const char MSG_DESC_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 //static const char MSG_DESC_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); -static const char MSG_DESC_TMC[] PROGMEM_I1 = ISTR("More details online."); ////MSG_DESC_TMC c=20 +static const char MSG_DESC_TMC[] PROGMEM_I1 = ISTR("More details online."); ////MSG_DESC_TMC c=20 r=8 //static const char MSG_DESC_PULLEY_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Pulley motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); //static const char MSG_DESC_SELECTOR_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Selector motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); //static const char MSG_DESC_IDLER_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("TMC driver for the Idler motor is almost overheating. Make sure there is sufficient airflow near the MMU board."); @@ -223,14 +223,14 @@ static const char MSG_DESC_TMC[] PROGMEM_I1 = ISTR("More details online."); //// //static const char MSG_DESC_PULLEY_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Pulley TMC driver. Check the wiring and connectors. If the issue persists contact support."); //static const char MSG_DESC_SELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); //static const char MSG_DESC_IDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); -static const char MSG_DESC_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_MMU_NOT_RESPONDING c=20 -static const char MSG_DESC_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_COMMUNICATION_ERROR c=20 -static const char MSG_DESC_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); ////MSG_DESC_FILAMENT_ALREADY_LOADED c=20 -static const char MSG_DESC_INVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); ////MSG_DESC_INVALID_TOOL c=20 -static const char MSG_DESC_QUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); ////MSG_DESC_QUEUE_FULL c=20 -static const char MSG_DESC_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); ////MSG_DESC_FW_UPDATE_NEEDED c=20 -static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); ////MSG_DESC_FW_RUNTIME_ERROR c=20 -static const char MSG_DESC_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); ////MSG_DESC_UNLOAD_MANUALLY c=20 +static const char MSG_DESC_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +static const char MSG_DESC_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_COMMUNICATION_ERROR c=20 r=8 +static const char MSG_DESC_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); ////MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +static const char MSG_DESC_INVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); ////MSG_DESC_INVALID_TOOL c=20 r=8 +static const char MSG_DESC_QUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); ////MSG_DESC_QUEUE_FULL c=20 r=8 +static const char MSG_DESC_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); ////MSG_DESC_FW_UPDATE_NEEDED c=20 r=8 +static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); ////MSG_DESC_FW_RUNTIME_ERROR c=20 r=8 +static const char MSG_DESC_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); ////MSG_DESC_UNLOAD_MANUALLY c=20 r=8 static const char * const errorDescs[] PROGMEM = { MSG_DESC_FINDA_DIDNT_TRIGGER, From 88b58cdcd557eca152015f11ed604ed36cdb44e5 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:24:11 +0200 Subject: [PATCH 293/319] Update messages missing c= r= Change MMU2 KEEPALIVE_STATE to IN_PROCESS --- Firmware/mmu2.cpp | 2 +- Firmware/ultralcd.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 31ac439cc..79489b997 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -667,7 +667,7 @@ void MMU2::CheckUserInput(){ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { mmu_print_saved = SavedState::None; - KEEPALIVE_STATE(PAUSED_FOR_USER); + KEEPALIVE_STATE(IN_PROCESS); LongTimer nozzleTimeout; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4db0e266c..981420de5 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5544,14 +5544,14 @@ static void lcd_main_menu() MENU_ITEM_SUBMENU_P(_T(MSG_CARD_MENU), lcd_sdcard_menu); } #if SDCARDDETECT < 1 - MENU_ITEM_GCODE_P(_i("Change SD card"), PSTR("M21")); // SD-card changed by user////MSG_CNG_SDCARD c=18 + MENU_ITEM_GCODE_P(_i("Change SD card"), PSTR("M21")); // SD-card changed by user ////MSG_CNG_SDCARD c=18 #endif //SDCARDDETECT } } else { bMain=true; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function - MENU_ITEM_SUBMENU_P(_i("No SD card"), lcd_sdcard_menu);////MSG_NO_CARD c=18 + MENU_ITEM_SUBMENU_P(_i("No SD card"), lcd_sdcard_menu); ////MSG_NO_CARD c=18 #if SDCARDDETECT < 1 - MENU_ITEM_GCODE_P(_i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface////MSG_INIT_SDCARD c=18 + MENU_ITEM_GCODE_P(_i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface ////MSG_INIT_SDCARD c=18 #endif //SDCARDDETECT } #endif //SDSUPPORT From 8480c1cb7a7c4fa443b8e0deae9c1c6745a89ce7 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 19:33:22 +0200 Subject: [PATCH 294/319] Added //#define FARM_CONNECT_MESSAGE --- Firmware/Prusa_farm.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/Prusa_farm.h b/Firmware/Prusa_farm.h index cab5534af..21f7e6986 100644 --- a/Firmware/Prusa_farm.h +++ b/Firmware/Prusa_farm.h @@ -10,6 +10,8 @@ #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s +//#define FARM_CONNECT_MESSAGE + #ifdef PRUSA_FARM extern uint8_t farm_mode; #else From 78fdf33f677edd30b7d24f4178780b0c2d3b946c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 16 Sep 2022 20:42:50 +0200 Subject: [PATCH 295/319] Update Firmware.pot and Firmware_de.po Started German translation Part 1 Updated c= r= for German translations being longer than 8 rows --- Firmware/mmu2/errors_list.h | 8 +- lang/po/Firmware.pot | 1510 ++++++++++++++++++++------------- lang/po/Firmware_de.po | 1603 ++++++++++++++++++++++------------- 3 files changed, 1954 insertions(+), 1167 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index cee40a302..d297c8bc7 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -224,12 +224,12 @@ static const char MSG_DESC_TMC[] PROGMEM_I1 = ISTR("More details online."); //// //static const char MSG_DESC_SELECTOR_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Selector TMC driver. Check the wiring and connectors. If the issue persists contact support."); //static const char MSG_DESC_IDLER_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("Short circuit on the Idler TMC driver. Check the wiring and connectors. If the issue persists contact support."); static const char MSG_DESC_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU unit not responding. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -static const char MSG_DESC_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_COMMUNICATION_ERROR c=20 r=8 +static const char MSG_DESC_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("MMU unit not responding correctly. Check the wiring and connectors. If the issue persists, contact support."); ////MSG_DESC_COMMUNICATION_ERROR c=20 r=9 static const char MSG_DESC_FILAMENT_ALREADY_LOADED[] PROGMEM_I1 = ISTR("Cannot perform the action, filament is already loaded. Unload it first."); ////MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 static const char MSG_DESC_INVALID_TOOL[] PROGMEM_I1 = ISTR("Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4)."); ////MSG_DESC_INVALID_TOOL c=20 r=8 static const char MSG_DESC_QUEUE_FULL[] PROGMEM_I1 = ISTR("MMU Firmware internal error, please reset the MMU."); ////MSG_DESC_QUEUE_FULL c=20 r=8 -static const char MSG_DESC_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); ////MSG_DESC_FW_UPDATE_NEEDED c=20 r=8 -static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); ////MSG_DESC_FW_RUNTIME_ERROR c=20 r=8 +static const char MSG_DESC_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("The MMU unit reports its FW version incompatible with the printer's firmware. Make sure the MMU firmware is up to date."); ////MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtime error. Try resetting the MMU unit or updating the firmware. If the issue persists, contact support."); ////MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 static const char MSG_DESC_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); ////MSG_DESC_UNLOAD_MANUALLY c=20 r=8 static const char * const errorDescs[] PROGMEM = { @@ -280,7 +280,7 @@ static const char * const errorDescs[] PROGMEM = { // -> the left button on the MMU is not used/rendered on the LCD (it is also almost unused on the MMU side) static const char MSG_BTN_RETRY[] PROGMEM_I1 = ISTR("Retry"); ////MSG_BTN_RETRY c=5 static const char MSG_BTN_CONTINUE[] PROGMEM_I1 = ISTR("Done"); ////MSG_BTN_CONTINUE c=5 -static const char MSG_BTN_RESTART_MMU[] PROGMEM_I1 = ISTR("RstMMU"); ////MSG_BTN_RESTART_MMU c=9 +static const char MSG_BTN_RESTART_MMU[] PROGMEM_I1 = ISTR("Reset MMU"); ////MSG_BTN_RESTART_MMU c=9 static const char MSG_BTN_UNLOAD[] PROGMEM_I1 = ISTR("Unload"); ////MSG_BTN_UNLOAD c=6 static const char MSG_BTN_STOP[] PROGMEM_I1 = ISTR("Stop"); ////MSG_BTN_STOP c=5 static const char MSG_BTN_DISABLE_MMU[] PROGMEM_I1 = ISTR("Disable"); ////MSG_BTN_DISABLE_MMU c=9 diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index 088e83a90..41067b429 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -7,352 +7,366 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr "" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr "" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr "" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." msgstr "" #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "" +"Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -360,39 +374,46 @@ msgid "" msgstr "" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet." @@ -401,294 +422,418 @@ msgid "" msgstr "" #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGGER" msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 +#: ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "" - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." msgstr "" #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again." " Print cancelled." msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." msgstr "" #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -696,326 +841,369 @@ msgid "" msgstr "" #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" msgstr "" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "" +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." msgstr "" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware." +" If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 +#: ../../Firmware/ultralcd.cpp:5098 ../../Firmware/ultralcd.cpp:5178 msgid "Load all" msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "" - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "" #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1025,178 +1213,203 @@ msgid "New firmware version available:" msgstr "" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "" #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "" #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." msgstr "" #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1208,78 +1421,73 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "" #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." msgstr "" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "" @@ -1288,289 +1496,342 @@ msgstr "" msgid "Please unload the filament first, then repeat this action." msgstr "" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "" #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "" -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First" " steps, section Calibration flow." msgstr "" #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" msgstr "" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "" +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "" @@ -1580,31 +1841,31 @@ msgid "Sensor verified, remove the filament now." msgstr "" #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1613,18 +1874,18 @@ msgid "" msgstr "" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "" @@ -1636,112 +1897,171 @@ msgid "" msgstr "" #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "" #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1749,73 +2069,109 @@ msgid "" msgstr "" #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." msgstr "" #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector" +" is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1824,210 +2180,210 @@ msgid "" msgstr "" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this" " version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "" diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 18b69ba99..3a171667a 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -16,152 +16,154 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 oder älter" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 oder neuer" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s Level erwartet" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Abbruch" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Z Anpassen:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Alles richtig" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Alles abgeschlossen. Viel Spaß beim Drucken!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alphabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "Immer" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Raumtemp." #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Sind linke+rechte Z- Schlitten ganz oben?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Assist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "Auto" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Startposition" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Auto Leist" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "AutoLaden Filament" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfügbar..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Automatisches Laden Filament ist aktiv, Knopf drücken und Filament " "einlegen..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "Vermeide schleifen" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Achse" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Achsenlänge" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Zurück" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Bett" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Bett aufwärmen" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Bett OK" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Bett Level Korr." #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -169,50 +171,55 @@ msgstr "" "Z-Kal. fehlgeschlg. Sensor nicht ausgelöst. Schmutzige Düse? Warte auf Reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Bett/Heizung" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Gurtstatus" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Riementest" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Stromausfall! Druck wiederherstellen?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Hell" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Helligkeit" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibrierung XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrierung Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -221,13 +228,13 @@ msgstr "" "Anschliessend den Knopf drücken." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibriere Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -236,140 +243,145 @@ msgstr "" "Anschliessend den Knopf drücken." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibriere Start" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibrierung" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibrierung OK" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "SD Karte entfernt" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "Wechsel SD Karte" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Filament-Wechsel" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Wechsel erfolgr.!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Wechsel ok?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Prüfe X Achse" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Prüfe Y Achse" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Prüfe Z Achse" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Prüfe Bett" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Prüfe Endschalter" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Überprüfe Datei" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Prüfe Düse" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Prüfe Sensoren" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Kontrolle" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Falsche Farbe" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Von der Community" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Weit." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Abkühlen" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Gewählte Sprache kopieren?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Crash" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Crash Erk." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Crash erkannt." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -380,39 +392,46 @@ msgstr "" "genutzt werden" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Fil. schneiden" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Messer" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Schneide filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Dimm" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Motoren aus" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -424,7 +443,7 @@ msgstr "" "Abschnitt Erste Schicht Kalibrierung." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -432,222 +451,345 @@ msgstr "" "Möchten Sie den letzten Schritt wiederholen, um den Abstand zwischen Düse " "und Druckbett neu einzustellen?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-Korrektur:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "FEHLER:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung prüfen." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Filamentauswurf" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "werfe Filament aus" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Endanschlag" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Ende nicht getroffen" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Endschalter" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Extruder" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Extruderlüfter:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Extruder Info" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autoladen" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS Aktion" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS v0.3 oder älter" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGGER" +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS v0.4 oder neuer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Fehlerstatistik" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "MMU-Fehler" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falschtriggerung" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Lüfter-Tempo" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Lüftertest" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Lüfter Check" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. Mängel" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. Sensor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "Filament" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament extrudiert mit richtiger Farbe?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. nicht geladen" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Filamentsensor" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Filament benutzt" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Datei unvollständig Trotzdem fortfahren?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Bewegung beenden" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Erste-Schicht Kal." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Zunächst führe ich den Selbsttest durch, um die häufigsten Probleme beim " "Zusammenbau zu überprüfen." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Beseitigen Sie das Problem und drücken Sie dann den Knopf am MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Durchfluss" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Drucklüfter?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Vorne [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Druck/Extr. Lüfter" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-Code ist für einen anderen Level geslict. Fortfahren?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -656,14 +798,14 @@ msgstr "" "erneut. Druck abgebrochen." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-Code ist für einen anderen Drucker geslict. Fortfahren?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -672,12 +814,12 @@ msgstr "" "erneut. Druck abgebrochen." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-Code ist für eine neuere Firmware geslict. Fortfahren?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -686,42 +828,42 @@ msgstr "" "Druck abgebrochen." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "Gcode" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW Einstellungen" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Heizung/Thermistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Aufwärmen" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Heizung durch Sicherheitstimer deaktiviert." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Aufwärmen OK." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -732,7 +874,7 @@ msgstr "" "Danach sind Sie bereit für den Druck." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -741,26 +883,47 @@ msgstr "" "durch den Einricht- ungsablauf führe?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Hohe leist" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "Startposition" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" "Ich werde jetzt die XYZ-Kalibrierung durchführen. Es wird ca. 12 Minuten " "dauern." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Ich werde jetzt die Z Kalibrierung durchführen." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "SPANNRO. STARTP.FEH." + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "SPANNROL. SITZT FEST" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "UNGÜLTIGER FIL.PLATZ" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -769,27 +932,27 @@ msgstr "" "Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "Verbesserung des Bettkalibrierungspunkts" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Infoanzeige" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "Init. SD Karte" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Filament einlegen" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." @@ -797,269 +960,299 @@ msgstr "" "Stecken Sie das Filament (nicht laden) in den Extruder und drücken Sie dann " "den Knopf." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" +"Interner Laufzeitfehler. Versuchen Sie, die MMU-Einheit zurückzusetzen oder " +"die Firmware zu aktualisieren. Wenn das Problem weiterhin besteht, wenden " +"Sie sich an den Support" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Ist das Filament geladen?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Liegt das Stahlblech auf dem Heizbett?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Wiederholung" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Letzter Druck" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Letzte Druckfehler" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Links" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Extruderlüfter?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Links [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Hell.wert" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Dimmwert" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Lineare Korrektur" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Z einstellen" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 +#: ../../Firmware/ultralcd.cpp:5098 ../../Firmware/ultralcd.cpp:5178 msgid "Load all" msgstr "Alle laden" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Filament laden" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "Lade zum Extruder" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "In Düse laden" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Lade Farbe" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Filament lädt" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Lose Riemenscheibe" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Laut" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3-Firmware am MK3S-Drucker erkannt" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "MMU FW UPDATE NÖTIG" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S-Firmware auf MK3-Drucker erkannt" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "MMU Firmware interner Fehler, bitte setzen Sie die MMU zurück." #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU Mod." -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Position wiederherstellen..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "MMU REAGIERT NICHT" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Temperatur wiederherstellen..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Weiterdrucken..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "MMU-Neuversuch: Wiederherstelle die Temperatur..." #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU Fehler" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU Ladefehler" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU Ladefehler" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU erfordert Benutzereingriff." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" +"MMU-Einheit antwortet nicht korrekt. Überprüfen Sie die Verkabelung und die " +"Anschlüsse. Wenn das Problem weiterhin besteht, wenden Sie sich an den " +"Support." -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU Netzfehler" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" +"MMU-Einheit antwortet nicht. Überprüfen Sie die Verkabelung und die Anschlüsse. " +"Wenn das Problem weiterhin besteht, wenden Sie sich an den Support." #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 verbunden" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnet Komp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Hauptmenü" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Schräglauf" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Messen der Referenzhöhe des Kalibrierpunktes" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Gitter" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "MeshBett Ausgleich" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Modus" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Moduswechsel erfolgt..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modell" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "Weiter Details online." + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "Mehr⏬" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "Motor" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Bewege X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Bewege Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Bewege Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Achse bewegen" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "Bewege Selektor" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "N/V" @@ -1069,155 +1262,163 @@ msgid "New firmware version available:" msgstr "Neue Firmware- Version verfügbar:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nein" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Keine SD Karte" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Keine Bewegung." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Ohne" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "Normal" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nicht angeschlossen" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Dreht sich nicht" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" "Jetzt werde ich den Abstand zwischen Düsenspitze und Druckbett kalibrieren." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Jetzt werde ich die Düse für PLA vorheizen." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Testdruck jetzt von Stahlblech entfernen." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Düse" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Düsen Dia." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "OK" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Aus" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "An" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Einmal" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "PAUSE THERM. FEHLER" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID Kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID Kalib. fertig" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID Kalibrierung" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA erwärmen" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA Kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA-Kalibrierung fehlgeschlagen" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1225,19 +1426,36 @@ msgstr "" "PINDA Kalibrierung ist fertig + aktiv. Es kann ausgeschaltet werden im Menu " "Einstellungen -> PINDA kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "RIEHMENS. SITZT FEST" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "Parke Selektor" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pause" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Druck pausieren" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "Führe Schnitt aus" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1247,7 +1465,7 @@ msgstr "" "ausschalten." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1261,23 +1479,23 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Bitte IR Sensor Verbindungen über- prüfen und Filament entladen ist." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Bitte prüfen:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Bitte reinigen Sie das Heizbett und drücken Sie dann den Knopf." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" "Bitte entfernen Sie überstehendes Filament von der Düse. Klicken wenn sauber." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1285,7 +1503,7 @@ msgstr "" "Knopf, um es zu laden." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1294,50 +1512,45 @@ msgstr "" "Sie dann den Knopf, um es zu laden." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Bitte laden Sie zuerst das Filament." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Bitte Spannrolle öffnen und Filament von Hand entfernen" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Bitte legen Sie das Stahlblech auf das Heizbett." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Bitte drücken Sie den Knopf um das Filament zu entladen." #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Bitte ziehen Sie das Filament sofort heraus" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Bitte Filament entfernen und dann den Knopf drücken" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Bitte zuerst Transportsicherungen entfernen." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Bitte zuerst XYZ Kalibrierung ausführen." @@ -1346,113 +1559,109 @@ msgstr "Bitte zuerst XYZ Kalibrierung ausführen." msgid "Please unload the filament first, then repeat this action." msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Bitte aktualisieren." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Bitte warten" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Netzfehler" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Vorheizen" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Düse vorheizen!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Vorheizen der Düse. Bitte warten." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Heizen zum Schnitt" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Heizen zum Auswurf" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Heizen zum Laden" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Heizen zum Entladen" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "Bereite Messer vor" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Knopf drücken zum" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Bitte drücken Sie den Knopf um die Düse vorzuheizen und fortzufahren." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Drücken Sie den Knopf um die Düsentemperatur wiederherzustellen" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Druck abgebrochen" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Drucklüfter:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Drucken von SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Druck pausiert" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Druckzeit" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Drucker IP Adr.:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1461,12 +1670,12 @@ msgstr "" "Erste Schritte, Abschnitt Kalibrie- rungsablauf." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Fortfahren?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1474,67 +1683,116 @@ msgstr "" "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Bitte überprüfen Sie " "den Wert in den Einstellungen. Druck abgebrochen." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" +"Der Riemenscheiben- motor ist blockiert. Sicherstellen, dass sich die " +"Riemenscheibe bewegen kann und die Verkabelung überprüfen." + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "Schiebe Filament" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "QUEUE VOLL" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "RPi port" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Hinten [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Druck wiederherst" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Entfernen Sie das alte Filament und drücken Sie den Knopf, um das neue zu " "laden." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Umbenennen" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" +"Der angeforderte Filamentplatz ist auf dieser Hardware nicht verfügbar. " +"Prüfen Sie den G-Code auf Plätze außerhalb des Bereichs (T0-T4)." + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Reset" #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset XYZ Kalibr." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Druck fortsetzen" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Druck fortgesetzt" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "Einziehen von FINDA" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "Wdh." + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "Selektor zurückfahr." + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Rechts" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Rechts [μm]" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "Reset MMU" + #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1542,36 +1800,41 @@ msgstr "" "Der Assistent wird die aktuellen Kalibrierungsdaten löschen und von vorne " "beginnen. Fortfahren?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Mängel" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD Karte" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "SELEK. STARTPOSFEHL." + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "SELEKTOR SITZT FEST" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "GESTOPPT." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Suche Bett Kalibrierpunkt" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Auswahl" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1580,65 +1843,72 @@ msgstr "" "im On-Screen-Menu aus." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Wähle extruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Wähle filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Wähle Sprache" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Bitte Vorheiztemperatur auswählen, die Ihrem Material entspricht." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Wählen Sie die Temperatur, die zu Ihrem Material passt." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "Wähle Filament Platz" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Selbsttest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Selbsttest start" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Selbsttest" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Selbsttest Fehler!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selbsttest Error" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "Selbsttest wird gestartet, um Startposition zu kalibrieren." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Sensor Info" @@ -1648,31 +1918,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensor überprüft, entladen Sie jetzt das Filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Temp. einstellen:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Einstellungen" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Sehr schräg" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Stahlblech" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1685,18 +1955,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Endschalter Status" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Leise" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Leicht schräg" @@ -1709,113 +1979,179 @@ msgstr "" "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sort." #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sortiere Dateien" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Ton" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Geschwindigkeit" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Dreht sich" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Stabile Umgebungs- temperatur 21-26C und feste Stand- fläche erforderlich" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistiken" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Leise" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Stahlbleche" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "Stop" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Druck abbrechen" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Strikt" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Support" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Ausgetauscht" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "THERMISCHE ANOMALIE" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "TM kal. fehlgeschlg." +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "TMC TREIBER FEHLER" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "TMC TREIBER RESET" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "TMC KURZSCHLUSS" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "TMC ÜBERHITZ.FEHL." + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "TMC UNTERSPANN.FEHL." + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "Temp. Model Autokal." #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatur" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturen" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "Teste filament" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" +"Die Spannrolle kann die Startposition nicht richtig erreichen. Prüfen Sie, " +"ob irgendetwas seine Bewegung blockiert. + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" +"Die MMU-Einheit meldet, dass ihre FW-Version nicht mit der Firmware" +" des Druckers kompatibel ist. Stellen Sie sicher, dass die " +"MMU-Firmware auf dem neuesten Stand ist." + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" +"Der Selektor kann die Startposition nicht richtig erreichen. Prüfen Sie, " +"ob irgendetwas seine Bewegung blockiert. + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1826,7 +2162,7 @@ msgstr "" "im Handbuch (Kapitel Kalibrierung)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1835,68 +2171,106 @@ msgstr "" "Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Zeit" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Timeout" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Gesamt" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Gesamte Fehler" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Gesamtes Filament" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Gesamte Druckzeit" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Feineinstellung" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "ENTLADE MANUELL" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" +"Unerwarteter FINDA-Wert. Stellen Sie sicher, dass sich kein Filament unter " +"FINDA befindet und der Selektor frei ist. Prüfen Sie die FINDA-Verbindung." + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "Entla." + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Fil. entladen" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Filament auswerfen" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "Entlade zur FINDA" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "Entlade zur Riemens." + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" "Überprüfung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es " "erneut." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Spannungen" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "WARNUNG TMC ZU HEISS" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1909,99 +2283,99 @@ msgstr "" "Stealth Modus" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Warte auf Benutzer.." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Warten, bis PINDA- Sonde abgekühlt ist" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Warten bis Heizung und Bett abgekühlt sind" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Warnen" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Warnung: Druckertyp und Platinentyp wurden beide geändert." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Warnung: Platinentyp wurde geändert." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Warnung: Druckertyp wurde geändert." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Konnten Sie das Filament entnehmen?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Verdrahtungsfehler" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Assistent" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-Korrektur:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "XFLASH init" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ Kal. Details" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "XYZ Kalibrierung in Ordnung. Schräglauf wird automatisch korrigiert." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schräg. Gut gemacht!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "XYZ-Kalibrierung beeinträchtigt. Vordere Kalibrierpunkte nicht erreichbar." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" @@ -2009,125 +2383,182 @@ msgstr "" "erreichbar." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht " "erreichbar." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glückwunsch!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y Entfernung vom Min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-Korrektur:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ja" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" "Sie können den Assistenten immer im Menu neu starten: Kalibrierung -> " "Assistent" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-Korrektur:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-Test Nr." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] Punktversatz" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "und Knopf drücken" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "um Filament laden" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "um Filament entladen" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "unbekannt" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "Status unbekannt" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Aktualisiere" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor " +#~ "verfügbar..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Crash erkannt. Druck fortführen?" +#~ msgid "Cutting filament" +#~ msgstr "Schneide filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung prüfen." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS v0.3 oder älter" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS v0.4 oder neuer" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Beseitigen Sie das Problem und drücken Sie dann den Knopf am MMU." + #~ msgid "M117 First layer cal." #~ msgstr "M117 Erste-Schicht Kal." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3-Firmware am MK3S-Drucker erkannt" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S-Firmware auf MK3-Drucker erkannt" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Position wiederherstellen..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Temperatur wiederherstellen..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Weiterdrucken..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU Ladefehler" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU erfordert Benutzereingriff." + +#~ msgid "MMU power fails" +#~ msgstr "MMU Netzfehler" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Bitte Filament entfernen und dann den Knopf drücken" + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Drücken Sie den Knopf um die Düsentemperatur wiederherzustellen" + +#~ msgid "Runouts" +#~ msgstr "Mängel" From 4bbae5191211e8679e6551fdd1b1bdfb2be73c92 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 08:48:27 +0200 Subject: [PATCH 296/319] Add --shorter check --- lang/lang-check.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index dc6d80e4c..cc5310fa4 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -119,7 +119,7 @@ def ign_char_first(c): def ign_char_last(c): return c.isalnum() or c in {'.', "'"} -def check_translation(entry, msgids, is_pot, no_warning, no_suggest, warn_empty, warn_same, information): +def check_translation(entry, msgids, is_pot, no_warning, no_suggest, warn_empty, warn_same, information, shorter): """Check strings to display definition.""" # do not check obsolete/deleted entriees @@ -221,7 +221,7 @@ def check_translation(entry, msgids, is_pot, no_warning, no_suggest, warn_empty, print_wrapped(wrapped_source, rows, cols) print() - # Check for translation lenght + # Check for translation length too long if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols): errors += 1 print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)' @@ -230,6 +230,14 @@ def check_translation(entry, msgids, is_pot, no_warning, no_suggest, warn_empty, wrapped_source, wrapped_translation, rows, cols) + # Check for translation length shorter + if shorter and (rows_count_translation < rows-1): + print(yellow('[S]: Text is shorter than definition on line %d: cols=%d rows=%d (rows diff=%d)' + % (line, cols, rows, rows_count_translation-rows))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) + # Different count of % sequences if source.count('%') != translation.count('%') and len(translation) > 0: errors += 1 @@ -313,6 +321,9 @@ def main(): parser.add_argument( "--warn-same", action="store_true", help="Warn about one-word translations which are identical to the source") + parser.add_argument( + "--shorter", action="store_true", + help="Show message if it is shorter than expected.") # load the translations args = parser.parse_args() @@ -333,7 +344,7 @@ def main(): status = True for translation in polib.pofile(args.po): status &= check_translation(translation, msgids, args.pot, args.no_warning, args.no_suggest, - args.warn_empty, args.warn_same, args.information) + args.warn_empty, args.warn_same, args.information, args.shorter) return 0 if status else 1 if __name__ == "__main__": From 539cdbfeeaaf2036507179678de557e4fb6d083e Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 08:48:56 +0200 Subject: [PATCH 297/319] Lower MSG_ rows --- Firmware/Marlin_main.cpp | 2 +- Firmware/cmdqueue.cpp | 2 +- Firmware/messages.cpp | 2 +- Firmware/temp_model.h | 2 +- lang/po/Firmware.pot | 2 +- lang/po/Firmware_cs.po | 2 +- lang/po/Firmware_da.po | 2 +- lang/po/Firmware_de.po | 2 +- lang/po/Firmware_es.po | 2 +- lang/po/Firmware_fr.po | 2 +- lang/po/Firmware_hr.po | 2 +- lang/po/Firmware_hu.po | 2 +- lang/po/Firmware_it.po | 2 +- lang/po/Firmware_lb.po | 2 +- lang/po/Firmware_lt.po | 2 +- lang/po/Firmware_nl.po | 2 +- lang/po/Firmware_no.po | 2 +- lang/po/Firmware_pl.po | 2 +- lang/po/Firmware_ro.po | 2 +- lang/po/Firmware_sk.po | 2 +- lang/po/Firmware_sl.po | 2 +- lang/po/Firmware_sv.po | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d7dfcb280..7fba2c336 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1791,7 +1791,7 @@ void loop() // The first character in the block is the block type. char *ptr = cmdbuffer + bufindr; if (*ptr == CMDBUFFER_CURRENT_TYPE_SDCARD) { - // To support power panic, move the lenght of the command on the SD card to a planner buffer. + // To support power panic, move the length of the command on the SD card to a planner buffer. union { struct { char lo; diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index 687f9cabc..d21327001 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -573,7 +573,7 @@ void get_command() // This is either an empty line, or a line with just a comment. // Continue to the following line, and continue accumulating the number of bytes // read from the sdcard into sd_count, - // so that the lenght of the already read empty lines and comments will be added + // so that the length of the already read empty lines and comments will be added // to the following non-empty line. return; // prevent cycling indefinitely - let manage_heaters do their job } diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 59dfb5d7d..17f18eac4 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -120,7 +120,7 @@ const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////MSG_WIZARD_HEATING c=20 r=3 const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////MSG_WIZARD_QUIT c=20 r=8 const char MSG_WIZARD_WELCOME[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"); ////MSG_WIZARD_WELCOME c=20 r=7 -const char MSG_WIZARD_WELCOME_SHIPPING[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print."); ////MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +const char MSG_WIZARD_WELCOME_SHIPPING[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print."); ////MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////MSG_YES c=4 const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////MSG_V2_CALIBRATION c=18 const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////MSG_OFF c=3 diff --git a/Firmware/temp_model.h b/Firmware/temp_model.h index d2afcf973..d0e38da1b 100644 --- a/Firmware/temp_model.h +++ b/Firmware/temp_model.h @@ -5,7 +5,7 @@ #include "planner.h" -constexpr uint8_t TEMP_MODEL_CAL_S = 60; // Maximum recording lenght during calibration (s) +constexpr uint8_t TEMP_MODEL_CAL_S = 60; // Maximum recording length during calibration (s) constexpr uint8_t TEMP_MODEL_CAL_R_STEP = 4; // Fan interpolation steps during calibration constexpr float TEMP_MODEL_fS = 0.065; // simulation filter (1st-order IIR factor) constexpr float TEMP_MODEL_fE = 0.05; // error filter (1st-order IIR factor) diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index 41067b429..0364d66b0 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -832,7 +832,7 @@ msgstr "" msgid "Heating done." msgstr "" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_cs.po b/lang/po/Firmware_cs.po index 89121bb26..0be9e6104 100644 --- a/lang/po/Firmware_cs.po +++ b/lang/po/Firmware_cs.po @@ -719,7 +719,7 @@ msgstr "Zahrivani preruseno bezpecnostnim casovacem." msgid "Heating done." msgstr "Zahrivani OK." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_da.po b/lang/po/Firmware_da.po index 27e48f756..6a0888715 100644 --- a/lang/po/Firmware_da.po +++ b/lang/po/Firmware_da.po @@ -696,7 +696,7 @@ msgstr "" msgid "Heating done." msgstr "" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 3a171667a..9e02a3284 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -862,7 +862,7 @@ msgstr "Heizung durch Sicherheitstimer deaktiviert." msgid "Heating done." msgstr "Aufwärmen OK." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_es.po b/lang/po/Firmware_es.po index 1218825b0..75493c536 100644 --- a/lang/po/Firmware_es.po +++ b/lang/po/Firmware_es.po @@ -719,7 +719,7 @@ msgstr "Calentadores desactivados por el temporizador de seguridad." msgid "Heating done." msgstr "Calentando acabado." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_fr.po b/lang/po/Firmware_fr.po index 76deb83ad..e909fbc17 100644 --- a/lang/po/Firmware_fr.po +++ b/lang/po/Firmware_fr.po @@ -723,7 +723,7 @@ msgstr "Chauffage desactivee par le compteur de securite." msgid "Heating done." msgstr "Chauffe terminee." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_hr.po b/lang/po/Firmware_hr.po index 5635517fa..ac8cccf87 100644 --- a/lang/po/Firmware_hr.po +++ b/lang/po/Firmware_hr.po @@ -717,7 +717,7 @@ msgstr "Grijanje je onemoguceno sigurnosnim mjeracem vremena." msgid "Heating done." msgstr "Grijanje obavljeno." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_hu.po b/lang/po/Firmware_hu.po index 643ef8e51..74c304aa8 100644 --- a/lang/po/Firmware_hu.po +++ b/lang/po/Firmware_hu.po @@ -718,7 +718,7 @@ msgstr "A bizonsagi idozito leallitotta a futest" msgid "Heating done." msgstr "Futes kesz." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_it.po b/lang/po/Firmware_it.po index f766cefe8..af2f5cd34 100644 --- a/lang/po/Firmware_it.po +++ b/lang/po/Firmware_it.po @@ -719,7 +719,7 @@ msgstr "Riscaldamento fermato dal timer di sicurezza." msgid "Heating done." msgstr "Riscald. completo" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_lb.po b/lang/po/Firmware_lb.po index 800b627cf..6d25e2b56 100644 --- a/lang/po/Firmware_lb.po +++ b/lang/po/Firmware_lb.po @@ -696,7 +696,7 @@ msgstr "" msgid "Heating done." msgstr "" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_lt.po b/lang/po/Firmware_lt.po index afce09b57..009357cab 100644 --- a/lang/po/Firmware_lt.po +++ b/lang/po/Firmware_lt.po @@ -696,7 +696,7 @@ msgstr "" msgid "Heating done." msgstr "" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 6f2b3511f..1cc0b1ba9 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -721,7 +721,7 @@ msgstr "Verwarming uitgeschakeld door veiligheidstimer." msgid "Heating done." msgstr "Opwarmen klaar." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_no.po b/lang/po/Firmware_no.po index 142e47750..6d701550e 100644 --- a/lang/po/Firmware_no.po +++ b/lang/po/Firmware_no.po @@ -715,7 +715,7 @@ msgstr "Varme skrudd av pga. sikkerhet." msgid "Heating done." msgstr "Oppvarming ferdig." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_pl.po b/lang/po/Firmware_pl.po index dbcc27cbb..536783e28 100644 --- a/lang/po/Firmware_pl.po +++ b/lang/po/Firmware_pl.po @@ -717,7 +717,7 @@ msgstr "Grzanie wylaczone przez wyl. czasowy" msgid "Heating done." msgstr "Grzanie zakonczone" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_ro.po b/lang/po/Firmware_ro.po index 6ff603ccd..a07f11bdf 100644 --- a/lang/po/Firmware_ro.po +++ b/lang/po/Firmware_ro.po @@ -720,7 +720,7 @@ msgstr "Incalzirea dezactivata de timer-ul de siguranta" msgid "Heating done." msgstr "Incalzirea gata." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_sk.po b/lang/po/Firmware_sk.po index bcb644d4c..2d0aa0c0d 100644 --- a/lang/po/Firmware_sk.po +++ b/lang/po/Firmware_sk.po @@ -717,7 +717,7 @@ msgstr "Zohrievanie prerusene bezpecnostnym casovacom." msgid "Heating done." msgstr "Zahrievanie OK." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_sl.po b/lang/po/Firmware_sl.po index ee19cef0b..79b794aff 100644 --- a/lang/po/Firmware_sl.po +++ b/lang/po/Firmware_sl.po @@ -696,7 +696,7 @@ msgstr "" msgid "Heating done." msgstr "" -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " diff --git a/lang/po/Firmware_sv.po b/lang/po/Firmware_sv.po index da3bf6dca..28234e4c5 100644 --- a/lang/po/Firmware_sv.po +++ b/lang/po/Firmware_sv.po @@ -718,7 +718,7 @@ msgstr "Uppvärmning avaktiverad av säkerhetstimer." msgid "Heating done." msgstr "Uppvärmning klar." -#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 +#. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 #: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " From 6e8a1d88f203ca79ed9f2965b39dc12efbf76db6 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 10:32:24 +0200 Subject: [PATCH 298/319] Add current size of translation if it fails disable translation suggestions by default during build, as we have lot of identical translated messages as the origin. --- lang/fw-build.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lang/fw-build.sh b/lang/fw-build.sh index fc375da08..cd79b20a9 100755 --- a/lang/fw-build.sh +++ b/lang/fw-build.sh @@ -53,7 +53,7 @@ for lang in $LANGUAGES; do binfile="$TMPDIR/lang_$lang.bin" color 4 "compiling language \"$lang\" from $pofile" >&2 - ./lang-check.py --map "$MAP" "$pofile" + ./lang-check.py --map "$MAP" "$pofile" --no-suggest if [ "$?" != 0 ]; then color 1 "$pofile: NG! - translation contains warnings or errors" >&2 fi @@ -61,8 +61,9 @@ for lang in $LANGUAGES; do ./lang-build.py "$MAP" "$pofile" "$binfile" # ensure each catalog fits the reserved size - if [[ $(stat -c '%s' "$binfile") -gt $maxsize ]]; then - color 1 "$pofile: NG! - language data exceeds $maxsize bytes" >&2 + currentsize=$(stat -c '%s' "$binfile") + if [[ $currentsize -gt $maxsize ]]; then + color 1 "$pofile: NG! - language data exceeds $maxsize bytes, it uses $currentsize" >&2 finish 1 fi done From ec22e5faebb795d056537b72fadbf004342a5438 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 10:34:24 +0200 Subject: [PATCH 299/319] Shorten message to 20 chars add 01234567890123456789 ruler --- Firmware/mmu2/errors_list.h | 48 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index d297c8bc7..4edf5f2d6 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -114,43 +114,43 @@ static const constexpr uint16_t errorCodes[] PROGMEM = { ERR_SYSTEM_UNLOAD_MANUALLY }; -// @@TODO some of the strings are duplicates, can be merged into one -static const char MSG_TITLE_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); ////MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 -static const char MSG_TITLE_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA: FILAM. STUCK"); ////MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 -static const char MSG_TITLE_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGGER"); ////MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 -static const char MSG_TITLE_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR: FIL. STUCK"); ////MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 -static const char MSG_TITLE_PULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); ////MSG_TITLE_PULLEY_CANNOT_MOVE c=20 -static const char MSG_TITLE_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); ////MSG_TITLE_FSENSOR_TOO_EARLY c=20 -static const char MSG_TITLE_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); ////MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 -static const char MSG_TITLE_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); ////MSG_TITLE_SELECTOR_CANNOT_HOME c=20 -static const char MSG_TITLE_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); ////MSG_TITLE_IDLER_CANNOT_MOVE c=20 -static const char MSG_TITLE_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); ////MSG_TITLE_IDLER_CANNOT_HOME c=20 +// @@TODO some of the strings are duplicates, can be merged into one 01234567890123456789 +static const char MSG_TITLE_FINDA_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FINDA DIDNT TRIGGER"); ////MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +static const char MSG_TITLE_FINDA_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FINDA: FILAM. STUCK"); ////MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +static const char MSG_TITLE_FSENSOR_DIDNT_TRIGGER[] PROGMEM_I1 = ISTR("FSENSOR DIDNT TRIGG."); ////MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +static const char MSG_TITLE_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("FSENSOR: FIL. STUCK"); ////MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +static const char MSG_TITLE_PULLEY_CANNOT_MOVE[] PROGMEM_I1 = ISTR("PULLEY CANNOT MOVE"); ////MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +static const char MSG_TITLE_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("FSENSOR TOO EARLY"); ////MSG_TITLE_FSENSOR_TOO_EARLY c=20 +static const char MSG_TITLE_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("SELECTOR CANNOT MOVE"); ////MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +static const char MSG_TITLE_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("SELECTOR CANNOT HOME"); ////MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +static const char MSG_TITLE_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("IDLER CANNOT MOVE"); ////MSG_TITLE_IDLER_CANNOT_MOVE c=20 +static const char MSG_TITLE_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("IDLER CANNOT HOME"); ////MSG_TITLE_IDLER_CANNOT_HOME c=20 static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); ////MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 //static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); ////MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 //static const char MSG_TITLE_TMC_WARNING_TMC_TOO_HOT[] PROGMEM_I1 = ISTR("WARNING TMC TOO HOT"); -static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); ////MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); ////MSG_TITLE_TMC_OVERHEAT_ERROR c=20 //static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); //static const char MSG_TITLE_TMC_OVERHEAT_ERROR[] PROGMEM_I1 = ISTR("TMC OVERHEAT ERROR"); -static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); ////MSG_TITLE_TMC_DRIVER_ERROR c=20 +static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); ////MSG_TITLE_TMC_DRIVER_ERROR c=20 //static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); //static const char MSG_TITLE_TMC_DRIVER_ERROR[] PROGMEM_I1 = ISTR("TMC DRIVER ERROR"); -static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); ////MSG_TITLE_TMC_DRIVER_RESET c=20 +static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); ////MSG_TITLE_TMC_DRIVER_RESET c=20 //static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); //static const char MSG_TITLE_TMC_DRIVER_RESET[] PROGMEM_I1 = ISTR("TMC DRIVER RESET"); -static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); ////MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); ////MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 //static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); //static const char MSG_TITLE_TMC_UNDERVOLTAGE_ERROR[] PROGMEM_I1 = ISTR("TMC UNDERVOLTAGE ERR"); -static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); ////MSG_TITLE_TMC_DRIVER_SHORTED c=20 +static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); ////MSG_TITLE_TMC_DRIVER_SHORTED c=20 //static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); //static const char MSG_TITLE_TMC_DRIVER_SHORTED[] PROGMEM_I1 = ISTR("TMC DRIVER SHORTED"); -static const char MSG_TITLE_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); ////MSG_TITLE_MMU_NOT_RESPONDING c=20 -static const char MSG_TITLE_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); ////MSG_TITLE_COMMUNICATION_ERROR c=20 -static const char MSG_TITLE_FIL_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); ////MSG_TITLE_FIL_ALREADY_LOADED c=20 -static const char MSG_TITLE_INVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); ////MSG_TITLE_INVALID_TOOL c=20 -static const char MSG_TITLE_QUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); ////MSG_TITLE_QUEUE_FULL c=20 -static const char MSG_TITLE_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); ////MSG_TITLE_FW_UPDATE_NEEDED c=20 -static const char MSG_TITLE_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); ////MSG_TITLE_FW_RUNTIME_ERROR c=20 -static const char MSG_TITLE_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); ////MSG_TITLE_UNLOAD_MANUALLY c=20 +static const char MSG_TITLE_MMU_NOT_RESPONDING[] PROGMEM_I1 = ISTR("MMU NOT RESPONDING"); ////MSG_TITLE_MMU_NOT_RESPONDING c=20 +static const char MSG_TITLE_COMMUNICATION_ERROR[] PROGMEM_I1 = ISTR("COMMUNICATION ERROR"); ////MSG_TITLE_COMMUNICATION_ERROR c=20 +static const char MSG_TITLE_FIL_ALREADY_LOADED[] PROGMEM_I1 = ISTR("FILAMENT ALREADY LOA"); ////MSG_TITLE_FIL_ALREADY_LOADED c=20 +static const char MSG_TITLE_INVALID_TOOL[] PROGMEM_I1 = ISTR("INVALID TOOL"); ////MSG_TITLE_INVALID_TOOL c=20 +static const char MSG_TITLE_QUEUE_FULL[] PROGMEM_I1 = ISTR("QUEUE FULL"); ////MSG_TITLE_QUEUE_FULL c=20 +static const char MSG_TITLE_FW_UPDATE_NEEDED[] PROGMEM_I1 = ISTR("MMU FW UPDATE NEEDED"); ////MSG_TITLE_FW_UPDATE_NEEDED c=20 +static const char MSG_TITLE_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("FW RUNTIME ERROR"); ////MSG_TITLE_FW_RUNTIME_ERROR c=20 +static const char MSG_TITLE_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("UNLOAD MANUALLY"); ////MSG_TITLE_UNLOAD_MANUALLY c=20 static const char * const errorTitles [] PROGMEM = { _R(MSG_TITLE_FINDA_DIDNT_TRIGGER), From 404c62230181f15808a62e7a82e191765324ec99 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 10:35:30 +0200 Subject: [PATCH 300/319] Finish German translation increase 2nd langusge size to 0x3500 13567bytes to fit mmu2 translations :crossed_fingers: --- Firmware/config.h | 2 +- lang/po/Firmware.pot | 2 +- lang/po/Firmware_de.po | 56 +++++++++++++++++++++++++----------------- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/Firmware/config.h b/Firmware/config.h index 956d178a4..7fe42a0c6 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -64,7 +64,7 @@ //#define LANG_MODE 0 // primary language only #define LANG_MODE 1 // sec. language support -#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12288 bytes). +#define LANG_SIZE_RESERVED 0x3500 // reserved space for secondary language (13568 bytes). // 0x3D00 Maximum 15616 bytes as it depends on xflash_layout.h // 16 Languages max. per group including stock diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index 0364d66b0..ae032daee 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -575,7 +575,7 @@ msgstr "" #. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 -msgid "FSENSOR DIDNT TRIGGER" +msgid "FSENSOR DIDNT TRIGG." msgstr "" #. MSG_TITLE_FSENSOR_TOO_EARLY c=20 diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 9e02a3284..29722c45b 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -206,7 +206,7 @@ msgstr "Helligkeit" #. MSG_TITLE_COMMUNICATION_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 msgid "COMMUNICATION ERROR" -msgstr "" +msgstr "KOMMUNIKATIONSFEHLER" #. MSG_CALIBRATE_BED c=18 #: ../../Firmware/ultralcd.cpp:4877 @@ -261,6 +261,8 @@ msgstr "Kalibrierung OK" #: ../../Firmware/mmu2/errors_list.h:228 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" +"Die Aktion kann nicht ausgeführt werden, das Filament ist bereits geladen. " +"Entladen Sie es zuerst." #. MSG_SD_REMOVED c=20 #: ../../Firmware/ultralcd.cpp:7700 @@ -416,7 +418,7 @@ msgstr "Dimm" #. MSG_BTN_DISABLE_MMU c=9 #: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 msgid "Disable" -msgstr "" +msgstr "Deaktiv." #. MSG_DISABLE_STEPPERS c=18 #: ../../Firmware/ultralcd.cpp:4764 @@ -428,7 +430,7 @@ msgstr "Motoren aus" #: ../../Firmware/mmu2_progress_converter.cpp:36 #: ../../Firmware/mmu2_progress_converter.cpp:44 msgid "Disengaging idler" -msgstr "" +msgstr "Spannrol. auskuppeln" #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 #: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 @@ -454,7 +456,7 @@ msgstr "" #. MSG_BTN_CONTINUE c=5 #: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 msgid "Done" -msgstr "" +msgstr "Klar" #. MSG_EXTRUDER_CORRECTION c=13 #: ../../Firmware/ultralcd.cpp:4176 @@ -465,25 +467,25 @@ msgstr "E-Korrektur:" #: ../../Firmware/mmu2_progress_converter.cpp:19 #: ../../Firmware/mmu2_progress_converter.cpp:48 msgid "ERR Help filament" -msgstr "" +msgstr "FEHL. Fil.Hilfe" #. MSG_PROGRESS_ERR_INTERNAL c=20 #: ../../Firmware/mmu2_progress_converter.cpp:18 #: ../../Firmware/mmu2_progress_converter.cpp:47 msgid "ERR Internal" -msgstr "" +msgstr "FEHLER Intern" #. MSG_PROGRESS_ERR_TMC c=20 #: ../../Firmware/mmu2_progress_converter.cpp:20 #: ../../Firmware/mmu2_progress_converter.cpp:49 msgid "ERR TMC failed" -msgstr "" +msgstr "FEHLER TMC" #. MSG_PROGRESS_WAIT_USER c=20 #: ../../Firmware/mmu2_progress_converter.cpp:17 #: ../../Firmware/mmu2_progress_converter.cpp:46 msgid "ERR Wait for User" -msgstr "" +msgstr "FEHL. Warte Benutzer" #. MSG_ERROR c=10 #: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 @@ -523,7 +525,7 @@ msgstr "Endschalter" #: ../../Firmware/mmu2_progress_converter.cpp:35 #: ../../Firmware/mmu2_progress_converter.cpp:45 msgid "Engaging idler" -msgstr "" +msgstr "Spannrol. einkuppeln" #. MSG_EXTRUDER c=17 #: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 @@ -559,17 +561,17 @@ msgstr "" #: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 #: ../../Firmware/ultralcd.cpp:4236 msgid "F. runout" -msgstr "" +msgstr "FS. Auslauf" #. MSG_TITLE_FIL_ALREADY_LOADED c=20 #: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 msgid "FILAMENT ALREADY LOA" -msgstr "" +msgstr "FIL. BEREITS GELADEN" #. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 msgid "FINDA DIDNT TRIGGER" -msgstr "" +msgstr "FINDA N. AUSGELÖST" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:197 @@ -577,6 +579,8 @@ msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" +"Die FINDA schaltete sich beim Entladen nicht aus. Versuchen Sie, Fil. manuell zu" +" entladen. Überprüfen Sie, dass sich Fil. bewegen kann und die FINDA funktioniert." #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:196 @@ -584,11 +588,13 @@ msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." msgstr "" +"FINDA hat beim Laden des Filaments nicht ausgelöst. Stellen Sie sicher, dass " +"sich das Filament bewegen kann und FINDA funktioniert." #. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 #: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 msgid "FINDA: FILAM. STUCK" -msgstr "" +msgstr "FINDA NICHT FIL.FREI" #. MSG_FS_ACTION c=10 #: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 @@ -598,23 +604,23 @@ msgstr "FS Aktion" #. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 -msgid "FSENSOR DIDNT TRIGGER" -msgstr "" +msgid "FSENSOR DIDNT TRIGG." +msgstr "FSENSOR N. AUSGELÖST" #. MSG_TITLE_FSENSOR_TOO_EARLY c=20 #: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 msgid "FSENSOR TOO EARLY" -msgstr "" +msgstr "FSENSOR ZU FRÜH" #. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 #: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 msgid "FSENSOR: FIL. STUCK" -msgstr "" +msgstr "FSENSOR N. FIL.FREI" #. MSG_TITLE_FW_RUNTIME_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 msgid "FW RUNTIME ERROR" -msgstr "" +msgstr "FW-LAUFZEITFEHLER" #. MSG_FAIL_STATS c=18 #: ../../Firmware/ultralcd.cpp:5602 @@ -654,25 +660,25 @@ msgstr "Lüfter Check" #: ../../Firmware/mmu2_progress_converter.cpp:13 #: ../../Firmware/mmu2_progress_converter.cpp:39 msgid "Feeding to FINDA" -msgstr "" +msgstr "Zufuhr zur FINDA" #. MSG_PROGRESS_FEED_FSENSOR c=20 #: ../../Firmware/mmu2_progress_converter.cpp:31 #: ../../Firmware/mmu2_progress_converter.cpp:62 msgid "Feeding to FSensor" -msgstr "" +msgstr "Zufuhr zum FSensor" #. MSG_PROGRESS_FEED_EXTRUDER c=20 #: ../../Firmware/mmu2_progress_converter.cpp:14 #: ../../Firmware/mmu2_progress_converter.cpp:40 msgid "Feeding to extruder" -msgstr "" +msgstr "Zufuhr zum Extruder" #. MSG_PROGRESS_FEED_NOZZLE c=20 #: ../../Firmware/mmu2_progress_converter.cpp:15 #: ../../Firmware/mmu2_progress_converter.cpp:41 msgid "Feeding to nozzle" -msgstr "" +msgstr "Zufuhr zur Düse" #. MSG_FIL_RUNOUTS c=15 #: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 @@ -718,6 +724,8 @@ msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" +"Der FSensor hat sich beim Entladen des Fil. nicht abgeschaltet. Stellen" +" Sie sicher, dass sich das Fil. bewegen kann und der Sensor funktioniert." #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:198 @@ -725,6 +733,8 @@ msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" +"Der FSensor hat beim Laden des Filaments nicht ausgelöst. Stellen Sie sicher, " +"dass das Filament den Sensor erreicht hat und der Sensor funktioniert." #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:201 @@ -732,6 +742,8 @@ msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." msgstr "" +"Der FSensor wurde beim Laden in den Extruder zu früh ausgelöst. Prüfen Sie, " +"dass nichts im PTFE-Schlauch fest- sitzt und der Sensor richtig liest." #. MSG_FILAMENT_USED c=19 #: ../../Firmware/ultralcd.cpp:2363 From e7b7d97f11760c9f6427e27ccf97f33b97e5b434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:46:34 +0000 Subject: [PATCH 301/319] Fix: Fsensor errors only have one reset button --- Firmware/mmu2_error_converter.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 839d43479..c847b028c 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -179,9 +179,6 @@ Buttons ButtonAvailable(uint16_t ec) { switch ( PrusaErrorCode(ei) ) { case ERR_MECHANICAL_FINDA_DIDNT_TRIGGER: case ERR_MECHANICAL_FINDA_DIDNT_GO_OFF: - case ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER: - case ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF: - case ERR_MECHANICAL_FSENSOR_TOO_EARLY: switch (buttonSelectedOperation) { case ButtonOperations::Retry: // "Repeat action" return Middle; @@ -191,6 +188,9 @@ Buttons ButtonAvailable(uint16_t ec) { break; } break; + case ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER: + case ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF: + case ERR_MECHANICAL_FSENSOR_TOO_EARLY: case ERR_MECHANICAL_SELECTOR_CANNOT_HOME: case ERR_MECHANICAL_SELECTOR_CANNOT_MOVE: case ERR_MECHANICAL_IDLER_CANNOT_HOME: From 3b60b894daf8354681d109f28da61d0e751e4c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:47:06 +0000 Subject: [PATCH 302/319] Fix: Unload Manually did not send any button to the MMU --- Firmware/mmu2_error_converter.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index c847b028c..82d79dc88 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -196,6 +196,7 @@ Buttons ButtonAvailable(uint16_t ec) { case ERR_MECHANICAL_IDLER_CANNOT_HOME: case ERR_MECHANICAL_IDLER_CANNOT_MOVE: case ERR_MECHANICAL_PULLEY_CANNOT_MOVE: + case ERR_SYSTEM_UNLOAD_MANUALLY: switch (buttonSelectedOperation) { // may be allow move selector right and left in the future case ButtonOperations::Retry: // "Repeat action" From 037d51b049820b3b5a71d5204a5cea8af5844ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:48:01 +0000 Subject: [PATCH 303/319] Fix: Filament Already Loaded only has two buttons --- Firmware/mmu2_error_converter.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 82d79dc88..e337d36ba 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -265,8 +265,6 @@ Buttons ButtonAvailable(uint16_t ec) { return Left; case ButtonOperations::Continue: // "Proceed/Continue" return Right; - case ButtonOperations::RestartMMU: // "Restart MMU" - return RestartMMU; default: break; } From 9b4a621275bb08759aee5f7d1f26d4d485dbc2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:46:34 +0000 Subject: [PATCH 304/319] Fix: Fsensor errors only have one reset button --- Firmware/mmu2_error_converter.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 00b824d2a..5a532f2c5 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -179,9 +179,6 @@ Buttons ButtonAvailable(uint16_t ec) { switch ( PrusaErrorCode(ei) ) { case ERR_MECHANICAL_FINDA_DIDNT_TRIGGER: case ERR_MECHANICAL_FINDA_DIDNT_GO_OFF: - case ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER: - case ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF: - case ERR_MECHANICAL_FSENSOR_TOO_EARLY: switch (buttonSelectedOperation) { case ButtonOperations::Retry: // "Repeat action" return Middle; @@ -191,6 +188,9 @@ Buttons ButtonAvailable(uint16_t ec) { break; } break; + case ERR_MECHANICAL_FSENSOR_DIDNT_TRIGGER: + case ERR_MECHANICAL_FSENSOR_DIDNT_GO_OFF: + case ERR_MECHANICAL_FSENSOR_TOO_EARLY: case ERR_MECHANICAL_SELECTOR_CANNOT_HOME: case ERR_MECHANICAL_SELECTOR_CANNOT_MOVE: case ERR_MECHANICAL_IDLER_CANNOT_HOME: From 15a8c8fe375c48250343edd2530cd20bcf6dfea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:47:06 +0000 Subject: [PATCH 305/319] Fix: Unload Manually did not send any button to the MMU --- Firmware/mmu2_error_converter.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index 5a532f2c5..e487dd400 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -196,6 +196,7 @@ Buttons ButtonAvailable(uint16_t ec) { case ERR_MECHANICAL_IDLER_CANNOT_HOME: case ERR_MECHANICAL_IDLER_CANNOT_MOVE: case ERR_MECHANICAL_PULLEY_CANNOT_MOVE: + case ERR_SYSTEM_UNLOAD_MANUALLY: switch (buttonSelectedOperation) { // may be allow move selector right and left in the future case ButtonOperations::Retry: // "Repeat action" From 25a7dc839728223bd6bac887f6c82d81b756ff4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 09:48:01 +0000 Subject: [PATCH 306/319] Fix: Filament Already Loaded only has two buttons --- Firmware/mmu2_error_converter.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index e487dd400..fd000226f 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -265,8 +265,6 @@ Buttons ButtonAvailable(uint16_t ec) { return Left; case ButtonOperations::Continue: // "Proceed/Continue" return Right; - case ButtonOperations::RestartMMU: // "Restart MMU" - return RestartMMU; default: break; } From 47d7ea5dfd3b52b9a00d8dc04af527fb53aa9df2 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 12:22:12 +0200 Subject: [PATCH 307/319] Add MSG_LOAD_ALL and replace it a two loactions -10bytes flash --- Firmware/messages.cpp | 1 + Firmware/messages.h | 1 + Firmware/ultralcd.cpp | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/messages.cpp b/Firmware/messages.cpp index 17f18eac4..6c68a9ea4 100644 --- a/Firmware/messages.cpp +++ b/Firmware/messages.cpp @@ -169,6 +169,7 @@ extern const char MSG_PAUSED_THERMAL_ERROR[] PROGMEM_I1 = ISTR("PAUSED THERMAL E #ifdef TEMP_MODEL extern const char MSG_THERMAL_ANOMALY[] PROGMEM_I1 = ISTR("THERMAL ANOMALY");////MSG_THERMAL_ANOMALY c=20 #endif +extern const char MSG_LOAD_ALL[] PROGMEM_I1 = ISTR("Load All"); ////MSG_LOAD_ALL c=18 //not internationalized messages const char MSG_SPOOL_JOIN[] PROGMEM_N1 = "SpoolJoin"; ////MSG_SPOOL_JOIN c=13 diff --git a/Firmware/messages.h b/Firmware/messages.h index 72e113d8f..4c1c72c58 100644 --- a/Firmware/messages.h +++ b/Firmware/messages.h @@ -179,6 +179,7 @@ extern const char MSG_PAUSED_THERMAL_ERROR[]; #ifdef TEMP_MODEL extern const char MSG_THERMAL_ANOMALY[]; #endif +extern const char MSG_LOAD_ALL[]; //not internationalized messages extern const char MSG_BROWNOUT_RESET[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 981420de5..12342bf98 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5095,7 +5095,7 @@ static inline void load_filament_wrapper(uint8_t i){ static void mmu_load_filament_menu() { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Load all"), load_all_wrapper); ////MSG_LOAD_ALL c=18 + MENU_ITEM_FUNCTION_P(_T(MSG_LOAD_ALL), load_all_wrapper); for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_filament_wrapper, i); ////MSG_LOAD_FILAMENT c=16 MENU_END(); @@ -5175,7 +5175,7 @@ static void mmu_load_to_extruder_menu() { if (bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Load all"), load_to_extruder_all_wrapper); ////MSG_LOAD_ALL c=18 + MENU_ITEM_FUNCTION_P(_T(MSG_LOAD_ALL), load_to_extruder_all_wrapper); for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++) MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', load_to_extruder_wrapper, i); ////MSG_LOAD_FILAMENT c=16 MENU_END(); From d9df8eed793c58204930450ea664a196ddc012ff Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 12:24:38 +0200 Subject: [PATCH 308/319] update pot and po files --- lang/po/Firmware.pot | 15 +- lang/po/Firmware_cs.po | 1588 ++++++++++++++++++++++++--------------- lang/po/Firmware_da.po | 1511 ++++++++++++++++++++++--------------- lang/po/Firmware_es.po | 1593 +++++++++++++++++++++++++--------------- lang/po/Firmware_fr.po | 1593 +++++++++++++++++++++++++--------------- lang/po/Firmware_hr.po | 1591 ++++++++++++++++++++++++--------------- lang/po/Firmware_hu.po | 1587 ++++++++++++++++++++++++--------------- lang/po/Firmware_it.po | 1589 ++++++++++++++++++++++++--------------- lang/po/Firmware_lb.po | 1511 ++++++++++++++++++++++--------------- lang/po/Firmware_lt.po | 1511 ++++++++++++++++++++++--------------- lang/po/Firmware_nl.po | 1592 ++++++++++++++++++++++++--------------- lang/po/Firmware_no.po | 1589 ++++++++++++++++++++++++--------------- lang/po/Firmware_pl.po | 1589 ++++++++++++++++++++++++--------------- lang/po/Firmware_ro.po | 1586 ++++++++++++++++++++++++--------------- lang/po/Firmware_sk.po | 1586 ++++++++++++++++++++++++--------------- lang/po/Firmware_sl.po | 1511 ++++++++++++++++++++++--------------- lang/po/Firmware_sv.po | 1587 ++++++++++++++++++++++++--------------- 17 files changed, 15751 insertions(+), 9378 deletions(-) diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index ae032daee..9a67edb84 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -993,8 +993,9 @@ msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5098 ../../Firmware/ultralcd.cpp:5178 -msgid "Load all" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" msgstr "" #. MSG_LOAD_FILAMENT c=17 @@ -1670,6 +1671,11 @@ msgstr "" msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 #: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." @@ -1713,11 +1719,6 @@ msgstr "" msgid "Right side[μm]" msgstr "" -#. MSG_BTN_RESTART_MMU c=9 -#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 -msgid "Reset MMU" -msgstr "" - #. MSG_WIZARD_RERUN c=20 r=7 #: ../../Firmware/ultralcd.cpp:3857 msgid "" diff --git a/lang/po/Firmware_cs.po b/lang/po/Firmware_cs.po index 0be9e6104..6008dba82 100644 --- a/lang/po/Firmware_cs.po +++ b/lang/po/Firmware_cs.po @@ -16,153 +16,154 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 nebo starsi" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 nebo novejsi" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s ocekavana verze" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Zrusit" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Doladeni Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Vse OK" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Vse je hotovo. Tisku zdar!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Abeceda" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Okoli" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Dojely oba Z voziky k~hornimu dorazu?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Asist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Automat." #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "AutoZavedeni fil." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament " -"senzoru..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte " "filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Osa" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Delka osy" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Zpet" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Podlozka" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Zahrivani bedu" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Bed OK." #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Korekce podlozky" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -170,50 +171,55 @@ msgstr "" "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Podlozka/Topeni" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Stav remenu" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test remenu" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Detekovan vypadek proudu.Obnovit tisk?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Jasny" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Podsviceni" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibrace XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrovat Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -222,13 +228,13 @@ msgstr "" "tlacitkem." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibruji Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -237,140 +243,145 @@ msgstr "" "tlacitkem." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibruji vychozi p." #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibrace" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibrace OK" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Karta vyjmuta" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Vymenit filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Zmena uspesna!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Vymena ok?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Kontrola osy X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Kontrola osy Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Kontrola osy Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Kontrola podlozky" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Kontrola endstopu" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Kontroluji soubor" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Kontrola hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Kontrola senzoru" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Kontrola" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Barva neni cista" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Komunitni prekl." #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Pokr." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Zchladit" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kopirovat vybrany jazyk?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Naraz" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Det. narazu" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Detekovan naraz." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -381,39 +392,46 @@ msgstr "" "Normal modu" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Ustrihnout" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Strihani" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Strihani filamentu" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Temny" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Vypnout motory" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -424,229 +442,352 @@ msgstr "" "podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Korekce E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "CHYBA:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Vysunout fil." -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Vysouvam filament" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Koncovy spinac" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Kon. spinac nesepnut" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Konc. spinace" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Levy vent.:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autozav." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS reakce" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 nebo starsi" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 a novejsi" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Selhani" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Selhani MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falesne spusteni" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Rychlost vent." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventilatoru" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Kontr. vent." +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Vypadky filam." #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. senzor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament vytlacen a spravne barvy?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Filament nezaveden" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Senzor filamentu" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Spotrebovano filam." #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Soubor nekompletni. Pokracovat?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Dokoncovani pohybu" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Kal. prvni vrstvy" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri " "sestaveni tiskarny." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Prutok" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Predni tiskovy vent?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Vpredu [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Predni/levy vent." #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-code je pripraven pro jinou verzi. Pokracovat?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -655,14 +796,14 @@ msgstr "" "zrusen." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -671,12 +812,12 @@ msgstr "" "Tisk zrusen." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -685,42 +826,42 @@ msgstr "" "zrusen." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW nastaveni" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Topeni/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Zahrivani" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Zahrivani preruseno bezpecnostnim casovacem." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Zahrivani OK." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -730,7 +871,7 @@ msgstr "" "nastaveni, ve kterem zkalibrujeme osu Z. Pak budete moct zacit tisknout." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -739,24 +880,45 @@ msgstr "" "kalibracnim procesem?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Vys. vykon" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Nyni provedu z kalibraci." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -765,295 +927,318 @@ msgstr "" "- Tiskove platy" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Informace" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Vlozte filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Je filament zaveden?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Je tiskovy plat na podlozce?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Opakovani" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Posledni tisk" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Selhani posl. tisku" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Vlevo" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Levy vent na trysce?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Vlevo [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Normalni" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Ztlumeny" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Korekce lin." #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Doladeni osy Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Zavest vse" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Zavest filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Zavest do trysky" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Cisteni barvy" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Zavadeni filamentu" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Uvolnena remenicka" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Hlasity" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3 firmware detekovan na MK3S tiskarne" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S firmware detekovan na tiskarne MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU mod" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Pokracuji v tisku..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Pokracuji v nahrivani..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Pokracuji..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Selhani MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Zavedeni MMU selhalo" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU selhani zav" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU potrebuje zasah uzivatele." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU vyp. proudu" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 pripojeno" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Komp. magnetu" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Hlavni nabidka" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Merene zkos." #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Merim referencni vysku kalibracniho bodu" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Probiha zmena modu..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Posunout X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Posunout Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Posunout Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Posunout osu" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1063,153 +1248,161 @@ msgid "New firmware version available:" msgstr "Vysla nova verze firmware:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Ne" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Zadna SD karta" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Bez pohybu." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Zadne" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nezapojeno" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Netoci se" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Nyni predehreji trysku pro PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Tryska" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Tryska" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Vyp" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Zap" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Jednou" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kal. ukoncena" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibrace" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Nahrivani PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA kalibrace selhala" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1217,19 +1410,36 @@ msgstr "" "PINDA kalibrace dokoncena a je nyni aktivni. Zabere je mozno deaktivovat v " "menu Nastaveni->Tepl. kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauza" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pozastavit tisk" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1238,7 +1448,7 @@ msgstr "" "prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1252,30 +1462,30 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Prosim zkontrolujte zapojeni IR senzoru a vyjmuty filament" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Zkontrolujte:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Prosim ocistete podlozku a stisknete tlacitko." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1284,50 +1494,45 @@ msgstr "" "zavedeni" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Prosim nejdriv zavedte filament" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Prosim otevrete idler a manualne odstrante filament." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Umistete prosim tiskovy plat na podlozku" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Pro vysunuti filamentu stisknete prosim tlacitko" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Prosim vyjmete urychlene filament" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Prosim vyjmete filament a pote stisknete tlacitko." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Nejprve prosim sundejte transportni soucastky." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Odstrante prosim tiskovy plat z podlozky." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Nejprve spustte kalibraci XYZ." @@ -1336,113 +1541,109 @@ msgstr "Nejprve spustte kalibraci XYZ." msgid "Please unload the filament first, then repeat this action." msgstr "Prosim vyjmete filament a zopakujte tuto akci" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Prosim aktualizujte." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Prosim cekejte" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Vypadky proudu" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Predehrev" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Predehrejte trysku!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Predehrev trysky. Prosim cekejte." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Predehrev ke strihu" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Predehrev k vysunuti" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Predehrev k zavedeni" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Predehrev k vyjmuti" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Stisknete tlacitko" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Tisk prerusen" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Tiskovy vent.:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Tisk z SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Tisk pozastaven" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Cas tisku" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "IP adr. tiskarny:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1451,12 +1652,12 @@ msgstr "" "kapitola Zaciname, odstavec Postup kalibrace." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1464,65 +1665,110 @@ msgstr "" "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. " "Tisk zrusen." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Vzadu [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Obnovovani tisku" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Prejmenovat" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset XYZ kalibr." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Pokracovat" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Obnoveni tisku" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Vpravo" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Vpravo [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1530,101 +1776,113 @@ msgstr "" "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti " "kalibracni proces od zacatku. Pokracovat?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD karta" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ZASTAVENO." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Hledam kalibracni bod podlozky" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Vybrat" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Vyberte extruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Zvolte filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Vyber jazyka" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Zvolte teplotu, ktera odpovida vasemu materialu." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Chyba Selftestu!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selftest selhal" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Senzor info" @@ -1634,31 +1892,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Senzor overen, vyjmete filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Nastavte teplotu:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Nastaveni" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Tezke zkos." #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Plat" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1671,18 +1929,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Stav konc. spin." #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Tichy" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Lehke zkos." @@ -1696,112 +1954,171 @@ msgstr "" "setrideni je 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Vyskytl se problem, srovnavam osu Z ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Trideni" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Trideni souboru" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Zvuk" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Rychlost" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Toci se" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistika" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Tichy" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Tiskove platy" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Zastavit tisk" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Prisne" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Podpora" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Prohozene" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Teplota" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Teploty" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1811,7 +2128,7 @@ msgstr "" "vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1820,66 +2137,102 @@ msgstr "" "Zaciname, sekce Postup kalibrace." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Cas" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Celkem" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Celkem selhani" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filament celkem" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Celkovy cas tisku" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Ladit" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Vyjmout filament" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Vysouvam filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Overeni selhalo, vyjmete filament a zkuste znovu." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Napeti" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1892,218 +2245,275 @@ msgstr "" "Stealth modu" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Ceka se na uzivatele" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Cekani na zchladnuti PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Cekani na zchladnuti trysky a podlozky." #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Varovat" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Varovani: doslo ke zmene typu motherboardu." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Varovani: doslo ke zmene typu tiskarny." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Bylo vysunuti filamentu uspesne?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Chyba zapojeni" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Pruvodce" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Korekce X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Detaily XYZ kal." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Kalibrace XYZ selhala. Nahlednete do manualu." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y vzdalenost od min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Korekce Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ano" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Korekce Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Pocet mereni Z" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] odsazeni bodu" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "a stisknete tlacitko" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "k zavedeni filamentu" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "k vyjmuti filamentu" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "neznamy" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "neznamy stav" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Obnovit" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament " +#~ "senzoru..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Detekovan naraz. Obnovit tisk?" +#~ msgid "Cutting filament" +#~ msgstr "Strihani filamentu" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 nebo starsi" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 a novejsi" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU." + +#~ msgid "Load all" +#~ msgstr "Zavest vse" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Kal. prvni vrstvy" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3 firmware detekovan na MK3S tiskarne" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S firmware detekovan na tiskarne MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Pokracuji v tisku..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Pokracuji v nahrivani..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Pokracuji..." + +#~ msgid "MMU load failed" +#~ msgstr "Zavedeni MMU selhalo" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU potrebuje zasah uzivatele." + +#~ msgid "MMU power fails" +#~ msgstr "MMU vyp. proudu" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Prosim vyjmete filament a pote stisknete tlacitko." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko." diff --git a/lang/po/Firmware_da.po b/lang/po/Firmware_da.po index 6a0888715..28b173235 100644 --- a/lang/po/Firmware_da.po +++ b/lang/po/Firmware_da.po @@ -16,352 +16,365 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr "" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr "" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr "" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." msgstr "" #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -369,39 +382,46 @@ msgid "" msgstr "" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -410,294 +430,417 @@ msgid "" msgstr "" #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "" - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." msgstr "" #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." msgstr "" #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -705,7 +848,7 @@ msgid "" msgstr "" #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -714,319 +857,363 @@ msgstr "" "dig gennem installationsprocessen?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "" +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." msgstr "" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "" - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "" #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1036,178 +1223,203 @@ msgid "New firmware version available:" msgstr "" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "" #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "" #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." msgstr "" #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1219,78 +1431,73 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "" #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." msgstr "" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "" @@ -1299,289 +1506,342 @@ msgstr "" msgid "Please unload the filament first, then repeat this action." msgstr "" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "" #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "" -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." msgstr "" #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" msgstr "" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "" +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "" @@ -1591,31 +1851,31 @@ msgid "Sensor verified, remove the filament now." msgstr "" #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1624,18 +1884,18 @@ msgid "" msgstr "" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "" @@ -1647,112 +1907,171 @@ msgid "" msgstr "" #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "" #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1760,73 +2079,109 @@ msgid "" msgstr "" #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." msgstr "" #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1835,210 +2190,210 @@ msgid "" msgstr "" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "" diff --git a/lang/po/Firmware_es.po b/lang/po/Firmware_es.po index 75493c536..ed7b23e14 100644 --- a/lang/po/Firmware_es.po +++ b/lang/po/Firmware_es.po @@ -16,151 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 o mayor" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 o mas nueva" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s nivel esperado" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Cancelar" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Ajustar-Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Todo bien" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Terminado! Feliz impresion!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Ambiente" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Carros Z izq./der. estan arriba maximo?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Asist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Llevar al origen" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Encendido" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Carga auto. filam." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"La carga automatica solo funciona si el sensor de filamento esta activado..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "La carga automatica esta activada, pulse el dial e inserte el filamento..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Eje" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Longitud del eje" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "atras" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Base" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Calentando Base" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Base preparada" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Corr. de la cama" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -168,50 +170,55 @@ msgstr "" "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Base/Calentador" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Estado de correa" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test cinturon" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Se fue la luz. Re- anudar la impresion?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Brill." #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Brillo" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Calibrar XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Calibrar Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -220,13 +227,13 @@ msgstr "" "superiores. Despues haz clic." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Calibrando Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -235,140 +242,145 @@ msgstr "" "superiores. Despues haz clic." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Calibrar pos.inicial" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Calibracion" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Calibracion OK" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Tarjeta retirada" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Cambiar filamento" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Cambio correcto!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Cambio correcto?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Control sensor X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Control sensor Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Control sensor Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Control base cal." #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Control endstops" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Verif. archivo" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Control fusor" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Comprobando sensores" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Comprobaciones" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Color no homogeneo" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Desde la comunidad" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Enfriar" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Copiar idioma seleccionado?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Choque" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Det. choque" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Choque detectado." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -379,39 +391,46 @@ msgstr "" "Modo normal" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Cortar filament" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Cuchillo" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Corte de filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Fecha:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Oscuro" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Apagar motores" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -423,230 +442,352 @@ msgstr "" "primera capa." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Corregir-E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" -"ERROR:Sensor de fi- lamento no responde Por favor, comprue- ba la conexion." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Expulsar fil." -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Expulsando filamento" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Endstop no alcanzado" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Extruir" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Vent.extrusor:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Info. del extrusor" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "Autocarg.fil." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS accion" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 o mayor" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 o mas nueva" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Estadistica Fallos" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Total Fallos MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falsa activacion" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Velocidad Vent" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventiladores" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Comprob.vent" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. acabado" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Sensor Fil." #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "Filamento" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Es nitido el color nuevo?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. no introducido" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Sensor de fil." +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Filamento usado" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Archivo incompleto. Continuar de todos modos?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Term. movimientos" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Cal. primera cap." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Primero, hare el Selftest para comprobar los problemas de montaje mas " "comunes." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Corrige el problema y pulsa el boton en la unidad MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Flujo" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Vent. frontal?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Frontal [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Vents. front/izqui" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "Codigo G laminado para un nivel diferente. Continuar?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -655,14 +796,14 @@ msgstr "" "nuevo. Impresion cancelada." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "Codigo G laminado para un tipo de impresora diferente. Continuar?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -671,12 +812,12 @@ msgstr "" "de nuevo. Impresion cancelada." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "Codigo G laminado para nuevo firmware. Continuar?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -685,42 +826,42 @@ msgstr "" "Impresion cancelada." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "Configuracion HW" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Calentador/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Calentando..." #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Calentadores desactivados por el temporizador de seguridad." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Calentando acabado." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -731,7 +872,7 @@ msgstr "" "listo para imprimir." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -740,24 +881,45 @@ msgstr "" "configuracion?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Rend.pleno" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Voy a hacer Calibracion Z ahora." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -766,296 +928,319 @@ msgstr "" "Ajustes HW - Planchas acero." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Monitorizar" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Introducir filamento" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Esta el filamento cargado?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Esta coloc.la lamina sobre la base?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iteracion" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Ultima impresion" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Ultimos imp. fallos" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Izquierda" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Vent. izquierdo?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Izquierda [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Valor brill." #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Valor oscuro" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Correc. Linealidad" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Micropaso Eje Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Intr. todos fil." +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Introducir filam." +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Cargar a boquilla" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Cambiando color" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Introduciendo filam." #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Polea suelta" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Alto" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "Firmware MK3 detectado en impresora MK3S" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "Firmware MK3S detectado en impresora MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "Modo MMU" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Restaurando posicion..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Restaurando temperatura..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Resumiendo..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Fallos MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Carga MMU fallida" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Carga MMU falla" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU necesita atencion del usuario." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Fallo red MMU" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 conectado" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Comp. imanes" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Menu principal" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "No a escuadra" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Midiendo altura del punto de calibracion" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Malla" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Nivela. Mesh Level" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Modo" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Cambio de modo progresando ..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modelo" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Mover X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Mover Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Mover Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Mover ejes" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "N/D" @@ -1065,51 +1250,51 @@ msgid "New firmware version available:" msgstr "Nuevo firmware disponible:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "No hay tarjeta SD" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Sin movimiento" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Ninguno" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "No hay conexion" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Ventilador no gira" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" @@ -1117,105 +1302,113 @@ msgstr "" "la base." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Ahora precalentare la boquilla para PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Ahora retira la prueba de la lamina de acero." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Boquilla" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "D-boquilla" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Ina" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del " "extrusor, etc" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Act" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Una vez" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "Cal. PID" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "Cal. PID terminada" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "Calibracion PID" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Calentando PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "Cal. PINDA" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Fallo de la calibracion de PINDA" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1223,19 +1416,36 @@ msgstr "" "La calibracion PINDA esta finalizada y activa. Se puede desactivar en el " "menu Configuracion->Cal. PINDA" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pausa" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pausar impresion" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1245,7 +1455,7 @@ msgstr "" "impresora inmediatamente." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1260,22 +1470,22 @@ msgstr "" "Por favor comprueba la conexion del IR sensor y filamento esta descargado." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Controla:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Limpia la superficie de la base, por favor, y luego presione el dial." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Limpia boquilla para calibracion. Click cuando acabes." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1283,7 +1493,7 @@ msgstr "" "cargarlo." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1292,52 +1502,47 @@ msgstr "" "dial para cargarlo." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Por favor, cargar primero el filamento." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" "Por favor abate el rodillo de empuje (idler) y retira el filamento " "manualmente." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Por favor coloca la chapa de acero en la base calefactable." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Por favor, pulsa el dial para descargar el filamento" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Por favor retire el filamento de inmediato" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Por favor quite el filamento y luego presione el dial." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Por favor retira los soportes de envio primero." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Por favor retire la chapa de acero de la base calefactable." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Por favor realiza la calibracion XYZ primero." @@ -1346,113 +1551,109 @@ msgstr "Por favor realiza la calibracion XYZ primero." msgid "Please unload the filament first, then repeat this action." msgstr "Primero descargue el filamento, luego repita esta accion." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Actualize por favor" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Por Favor Espere" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Fallas energia" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Precalentar" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Precalienta extrusor" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Precalentando nozzle. Espera por favor." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Precalent. laminar" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Precalent. expulsar" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Precalent. cargar" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Precalent. descargar" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Pulsa el dial" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Pulsa el dial para precalentar la boquilla y continue." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Presione el dial para continuar con la temperatura de la boquilla." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Impresion cancelada" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Vent.fusor:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Menu tarjeta SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Impresion en pausa" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Tiempo de imp." #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Dir. IP impresora:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1461,12 +1662,12 @@ msgstr "" "Primeros pasos Calibracion flujo." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Diametro nozzle impresora difiere de cod.G. Continuar?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1474,67 +1675,112 @@ msgstr "" "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en " "ajustes. Impresion cancelada." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "Puerto RPi" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Trasera [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Recuper. impresion" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo " "filamento." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Renombrar" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Reanudar impres." #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Continuan. impresion" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Derecha" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Derecha [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1542,36 +1788,41 @@ msgstr "" "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara " "de nuevo. Continuar?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Falla" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "Tarj. SD" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "PARADA" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Buscando punto de calibracion base" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Seleccionar" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1580,69 +1831,76 @@ msgstr "" "el menu en pantalla." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Elegir extrusor:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Selecciona filam.:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Cambiar el idioma" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu " "material." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Selecciona la temperatura adecuada a tu material." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Iniciar Selftest" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Error Selftest!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Fallo Selftest" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Se realizara el auto-test para calibrar con precision la vuelta a la " "posicion inicial sin sensores." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info sensor" @@ -1652,31 +1910,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensor verificado, retire el filamento ahora." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Establecer temp.:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Configuracion" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Severo sesgar" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Lamina" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1689,18 +1947,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Mostrar endstops" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Acallar" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Ligera sesgar" @@ -1714,113 +1972,172 @@ msgstr "" "ordenar." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Problema encontrado, nivelacion Z forzosa ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Ordenar" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Ordenando archivos" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Sonido" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Velocidad" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Ventilador girando" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Estadisticas" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Sigilo" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Lamina de acero" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Detener impresion" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Estrict" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Soporte" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Intercambiado" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatura" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturas" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1831,7 +2148,7 @@ msgstr "" "de calibracion)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1840,66 +2157,102 @@ msgstr "" "capitulo Primeros pasos, seccion Calibracion del flujo." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Fecha" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Expirar" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Fallos totales" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filamento total" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Tiempo total" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Ajustar" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Soltar filamento" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Soltando filamento" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "La verificacion fallo, retire el filamento e intente nuevamente." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Voltajes" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1912,220 +2265,282 @@ msgstr "" "Modo silencio" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Esperando ordenes..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Esperando a que se enfrie la sonda PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Esperando enfriamiento de la base y extrusor." #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Aviso" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Cuidado: el tipo de placa ha cambiado." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Cuidado: Ha cambiado el tipo de impresora." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Se descargo con exito el filamento?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Error de conexion" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Corregir-X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Detalles cal. XYZ" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen " "trabajo!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Calibracion XYZ fallada. Consulta el manual por favor." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Dist. en Y desde min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Corregir-Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Si" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Corregir-Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-sensor nr." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] punto offset" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "y presione el dial" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "para cargar el fil." #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "para descargar fil." #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "desconocido" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "estado desconocido" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Actualizar" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "La carga automatica solo funciona si el sensor de filamento esta " +#~ "activado..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Choque detectado. Continuar impresion?" +#~ msgid "Cutting filament" +#~ msgstr "Corte de filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "" +#~ "ERROR:Sensor de fi- lamento no responde Por favor, comprue- ba la " +#~ "conexion." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 o mayor" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 o mas nueva" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Corrige el problema y pulsa el boton en la unidad MMU." + +#~ msgid "Load all" +#~ msgstr "Intr. todos fil." + #~ msgid "M117 First layer cal." #~ msgstr "M117 Cal. primera cap." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "Firmware MK3 detectado en impresora MK3S" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "Firmware MK3S detectado en impresora MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Restaurando posicion..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Restaurando temperatura..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Resumiendo..." + +#~ msgid "MMU load failed" +#~ msgstr "Carga MMU fallida" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU necesita atencion del usuario." + +#~ msgid "MMU power fails" +#~ msgstr "Fallo red MMU" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Por favor quite el filamento y luego presione el dial." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Presione el dial para continuar con la temperatura de la boquilla." + +#~ msgid "Runouts" +#~ msgstr "Falla" diff --git a/lang/po/Firmware_fr.po b/lang/po/Firmware_fr.po index e909fbc17..c34160437 100644 --- a/lang/po/Firmware_fr.po +++ b/lang/po/Firmware_fr.po @@ -16,151 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 ou +ancien" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 ou +recent" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "niveau %s attendu" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Annuler" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Ajuster Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Tout est correct" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Tout est pret. Bonne impression!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Ambiant" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Z~carriages gauche + droite tout en haut?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Mise a 0 des axes" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Puiss.auto" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autocharge du fil." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Chargement auto du filament uniquement si le capteur de filament est active." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Axe" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Longueur de l'axe" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Retour" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Lit" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Chauffe du lit" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Plateau termine" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Reglage plateau" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -169,50 +171,55 @@ msgstr "" "attente d'un reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Lit/Chauffage" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Statut courroie" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test de courroie" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Coupure detectee. Reprendre impres.?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Brill." #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Luminosite" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Calibrer XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Calibrer Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -221,13 +228,13 @@ msgstr "" "l'axe Z jusqu'aux butees. Cliquez une fois fait." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Calibration Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -236,140 +243,145 @@ msgstr "" "Z jusqu'aux butees. Cliquez une fois fait." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Calib. mise a 0" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Calibration terminee" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Carte retiree" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Changer filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Changement reussi!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Change correctement?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Verification axe X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Verification axe Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Verification axe Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Verif. plateau chauf" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Verification butees" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Verific. fichier" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Verif. du hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Verif. des capteurs" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Verifications" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Couleur incorrecte" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Fait de community" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Refroidissement" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Copier la langue choisie?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Detect.crash" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Crash detecte." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -381,39 +393,46 @@ msgstr "" "mode Normal" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Coupe filament" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Coupeur" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Je coupe filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Sombre" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Desactiver moteurs" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -425,7 +444,7 @@ msgstr "" "Calibration de la premiere couche." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -433,222 +452,345 @@ msgstr "" "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le " "plateau chauffant?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Correct-E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "ERREUR:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Remonter le fil." -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Le fil. remonte" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Butee" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Butee non atteinte" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Butees" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Extrudeur" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Vent. extrudeur:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Infos extrudeur" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autocharg." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS v0.3 ou +ancien" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS v0.4 ou +recent" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Stat. d'echec" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Stat. d'echec MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Faux declenchement" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Vitesse vent." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test du ventilateur" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Verif vent." +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fins filament" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Capteur Fil." #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament extrude et avec bonne couleur?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Filament non charge" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Capteur de fil." +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Filament utilise" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Fichier incomplet. Continuer qd meme?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Mouvement final" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Cal. 1ere couche" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "D'abord, je vais lancer le Auto-test pour verifier les problemes " "d'assemblage les plus communs." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Flux" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Ventilo impr avant?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Avant [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Ventilos avt/gauche" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "Le G-code a ete prepare pour un niveau different. Continuer?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -657,15 +799,15 @@ msgstr "" "modele a nouveau. L'impression a ete annulee." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -674,13 +816,13 @@ msgstr "" "decouper le modele a nouveau. L'impression a ete annulee." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" "Le G-code a ete prepare pour une version plus recente du firmware. Continuer?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -689,42 +831,42 @@ msgstr "" "mettre a jour le firmware. L'impression annulee." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "Config HW" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Chauffage/Thermistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Chauffe" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Chauffage desactivee par le compteur de securite." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Chauffe terminee." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -735,7 +877,7 @@ msgstr "" "calibrer le Z-axis. Apres cela, tout sera pret pour imprimer." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -744,25 +886,46 @@ msgstr "" "guide a travers le processus d'installation?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Haut.puiss" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Je vais maintenant lancer la calibration Z." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -771,27 +934,27 @@ msgstr "" "Reglages - Config HW - Plaque en acier." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Ecran d'info" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Inserez le filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." @@ -799,269 +962,292 @@ msgstr "" "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis " "appuyez sur le bouton." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Fil. est-il charge?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Est la plaque sur le plat. chauffant?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Derniere impres." #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Echecs derniere imp." #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Gauche" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Ventilo gauche?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Gauche [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Niveau brill" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Niv. sombre" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Correction lin." #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Ajuster Z en dir." #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Charger un par un" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Charger filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Charger la buse" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Charg. de la couleur" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Chargement du fil." #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Poulie lache" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Fort" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "Firmware MK3 detecte sur imprimante MK3S" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "Firmware MK3S detecte sur imprimante MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "Mode MMU" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Reprise de la position ..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Rechauffage de la buse..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Reprise ..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Echecs MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Def. charg. MMU" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Def. charg. MMU" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "Le MMU necessite l'attention de l'utilisateur." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Def. alim. MMU" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 connecte" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Compens. aim." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Menu principal" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Var. mesuree" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Je mesure la hauteur de reference du point de calibrage" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Changement de mode en cours..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modele" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "Moteur" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Deplacer X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Deplacer Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Deplacer Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Deplacer l'axe" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "I/D" @@ -1071,51 +1257,51 @@ msgid "New firmware version available:" msgstr "Nouvelle version de firmware disponible:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Non" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Pas de carte SD" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Pas de mouvement." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Aucun" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Non connecte" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Ne tourne pas" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" @@ -1123,104 +1309,112 @@ msgstr "" "surface du plateau chauffant." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Maintenant je vais prechauffer la buse pour du PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Retirez maintenant l'impression de test de la plaque en acier." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Buse" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Diam. buse" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "1 fois" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "Calib. PID" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "Calib. PID terminee" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "Calibration PID" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Chauffe de la PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "Calib. PINDA" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Echec de la calibration en PINDA" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1228,19 +1422,36 @@ msgstr "" "La calibration en PINDA est terminee et activee. Il peut etre desactivee " "dans le menu Reglages-> Calib. PINDA" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pause de l'impr." +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1249,7 +1460,7 @@ msgstr "" "premiers points. Si la buse accroche le papier, eteignez vite l'imprimante." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1263,22 +1474,22 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "SVP, verifiez la connexion du capteur IR et decharge le filament." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Verifiez:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1286,7 +1497,7 @@ msgstr "" "pour le charger." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1295,50 +1506,45 @@ msgstr "" "le bouton pour le charger." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Veuillez d'abord charger un filament." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Ouvrez l'idler et retirez le filament manuellement." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Placez la plaque en acier sur le plateau chauffant." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Appuyez sur le bouton pour decharger le filament" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Retirez immediatement le filament" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Veuillez retirer le filament puis appuyez sur le bouton." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Retirez d'abord les protections de transport." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Retirez la plaque en acier du plateau chauffant." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Veuillez d'abord lancer la calibration XYZ." @@ -1347,114 +1553,109 @@ msgstr "Veuillez d'abord lancer la calibration XYZ." msgid "Please unload the filament first, then repeat this action." msgstr "SVP, dechargez le filament et reessayez." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" -"Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Mettez a jour le FW." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Merci de patienter" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Coup.de courant" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Prechauffage" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Prechauffez la buse!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Prechauffage de la buse. Merci de patienter." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Chauffe pour couper" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Chauf. pour remonter" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Chauffe pour charger" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Chauf.pour decharger" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "App. sur sur bouton" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Appuyez sur le bouton pour rechauffer la buse." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Impression annulee" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Vent. impr:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Impr. depuis la SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Impression en pause" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Temps d'impression" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Adr.IP imprimante:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1463,14 +1664,14 @@ msgstr "" "Premiers pas, section Processus de calibration." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-" "Code. Continuer?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1478,66 +1679,111 @@ msgstr "" "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-" "Code. Merci de verifier le parametre dans les reglages. Impression annulee." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "Port RPi" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Arriere [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Recup. impression" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Renommer" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Reinitialiser" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reinit. calib. XYZ" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Reprise impression" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Reprise de l'impr." +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Droite" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Droite [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1545,36 +1791,41 @@ msgstr "" "Lancement de l'Assistant supprimera les resultats actuels de calibration et " "commencera du debut. Continuer?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Fins" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "Carte SD" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ARRETE." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Recherche point calibration du plateau" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Selectionner" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1583,68 +1834,75 @@ msgstr "" "selectionnez-le depuis le menu a l'ecran." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Choisir extrudeur:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Choix du filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Choisir langue" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Selectionnez la temperature de prechauffage de la buse qui correspond a " "votre materiau." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Selectionnez la temperature qui correspond a votre materiau." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Auto-test OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Debut auto-test" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Auto-test" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Erreur auto-test!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Echec de l'auto-test" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info capteur" @@ -1654,31 +1912,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Capteur verifie, retirez le filament maintenant." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Regler temp.:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Reglages" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Deviat.sev." #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Plaque" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1691,18 +1949,18 @@ msgstr "" "%cReinitialiser" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Afficher butees" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Furtif" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Deviat.leg." @@ -1715,113 +1973,172 @@ msgstr "" "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Tri" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Tri des fichiers" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Son" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Vitesse" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Tourne" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Une temperature ambiante stable de 21-26C et un support stable sont requis." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistiques" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Furtif" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Plaques en acier" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Arreter impression" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Stricte" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Echange" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1832,7 +2149,7 @@ msgstr "" "(chapitre Calibration)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1841,66 +2158,102 @@ msgstr "" "chapitre Premiers pas, section Processus de calibration." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Heure" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Totale" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Total des echecs" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filament total" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Temps total impr." #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Regler" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Decharger fil." #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Dechargement fil." +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verification en echec, retirez le filament et reessayez." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Tensions" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1913,101 +2266,101 @@ msgstr "" "mode furtif" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Attente utilisateur." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Attente du refroidissement de la sonde PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Attente du refroidissement des buse et plateau chauffant" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Avert" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Attention: Types d'imprimante et de carte mere modifies" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Attention: Type de carte mere modifie." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Attention: Type d'imprimante modifie" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Dechargement du filament reussi?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Erreur de cablage" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Assistant" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Correct-X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Details calib. XYZ" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon " "boulot!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "Calibration XYZ compromise. Les points de calibration en avant ne sont pas " "atteignables." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" @@ -2015,126 +2368,188 @@ msgstr "" "atteignable." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Echec calibration XYZ. Les points de calibration en avant ne sont pas " "atteignables." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Echec calibration XYZ. Consultez le manuel." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Echec calibration XYZ. Le point de calibration avant droit n'est pas " "atteignable." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Distance Y du min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Correct-Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Oui" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Correct-Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Mesurer x-fois" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "Offset point [0;0]" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "et appuyez sur le bouton" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "pour charger le fil." #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "pour decharger fil." #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "inconnu" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "Etat inconnu" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Rafraichir" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Chargement auto du filament uniquement si le capteur de filament est " +#~ "active." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Crash detecte. Poursuivre l'impression?" +#~ msgid "Cutting filament" +#~ msgstr "Je coupe filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "" +#~ "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS v0.3 ou +ancien" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS v0.4 ou +recent" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU." + +#~ msgid "Load all" +#~ msgstr "Charger un par un" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Cal. 1ere couche" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "Firmware MK3 detecte sur imprimante MK3S" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "Firmware MK3S detecte sur imprimante MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Reprise de la position ..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Rechauffage de la buse..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Reprise ..." + +#~ msgid "MMU load failed" +#~ msgstr "Def. charg. MMU" + +#~ msgid "MMU needs user attention." +#~ msgstr "Le MMU necessite l'attention de l'utilisateur." + +#~ msgid "MMU power fails" +#~ msgstr "Def. alim. MMU" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Veuillez retirer le filament puis appuyez sur le bouton." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "" +#~ "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Appuyez sur le bouton pour rechauffer la buse." + +#~ msgid "Runouts" +#~ msgstr "Fins" diff --git a/lang/po/Firmware_hr.po b/lang/po/Firmware_hr.po index ac8cccf87..ff714df52 100644 --- a/lang/po/Firmware_hr.po +++ b/lang/po/Firmware_hr.po @@ -16,151 +16,152 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 ili stariji" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 ili noviji" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s level ocekivan" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Otkazati" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Podesavanje Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Sve je u redu" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Sve je gotovo. Sretno printanje!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Abeceda" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Ambijent" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Jesu lijevi i desni Z~nosaci podignuti?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Pomoc" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Pocetna tocka" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Auto napaj" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autopunj filamenta" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Automatsko punjenje filamenta moguce je samo kada je sensor filamenta " -"ukljucen.." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "Auto punjenje fil. je aktivno, pritisnite gumb i umetnite fil.." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Os" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Duljina osi" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Vrati" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Podloga" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Podloga se zagrijava" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Podloga zagrijana" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Podloga ispravna" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -169,50 +170,55 @@ msgstr "" "mlaznici? Ceka se resetiranje." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Grijac/Podloga" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Status remena" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Testiranje remena" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Doslo je do gasenja. Oporaviti print?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Svijet" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Svjetlina" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibrirajte XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrirajte Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -221,13 +227,13 @@ msgstr "" "Kliknite kada je zavrseno." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibriracija Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -236,140 +242,145 @@ msgstr "" "Kliknite kada je zavrseno." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibracija nultocke" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibriranje" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibracija gotova" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Kartica je uklonjena" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Promijeni filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Promijena uspjesna!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Ispravno izmjenjeno?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Provjera X osi" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Provjera Y osi" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Provjera Z osi" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Provjera podloge" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Provjera granicnika" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Provjera datoteke" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Provjera hotenda" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Provjera senzora" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Provjere" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Boja nije ispravna" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Napravilo zajedno" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Nast." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Ohladi" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kopirati odabrani jezik?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Udar" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Udar detekti." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Udar otkriven." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -377,39 +388,46 @@ msgid "" msgstr "Detekcija udarca moze biti ukljuceno samo u Normalnom nacinu rada" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Odrezite fil." #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Rezac" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Rezanje filamenta" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Tamno" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Onemoguci stepere" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -421,7 +439,7 @@ msgstr "" "prvog sloja." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -429,222 +447,345 @@ msgstr "" "Zelite li ponoviti zadnji korak za ponovno podesavanje udaljenosti izmedu " "mlaznice i grijace podloge?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-ispravan:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "POGRESKA:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "POGRESKA: Senzor filamenta ne reagira, provjerite vezu." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Izbaci filament" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Izbacivanje fil." #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Granicnik" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Granicnik nije aktiv" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Granicnici" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Ekstruder" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Ekstruder vent:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Info o ekstruderu" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. auto.punj" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS Akcija" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS v0.3 il stariji" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS v0.4 ili noviji" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Neuspjesna stat" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Neuspjes. MMU stat" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Lazno aktiviranje" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Brzina vent" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventilatora" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Provjera vent" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Bez filmaneta" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. senzor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Ekstrudiranje fil.s sa ispravnom bojom?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. nije napunjen" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Senzor filamenta" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Iskoristeni fil." #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Datoteka je nepotpuna. Svejedno nastaviti?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Zavrsni pokreti" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Prvi sloj kalib." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Prvo cu pokrenuti samotestiranje kako bih provjerio najcesce probleme sa " "montazom." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Rijesite problem, a zatim pritisnite gumb na MMU jedinici." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Protok" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Prednji print vent?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Prednj str[μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Prednji/lijevi vent" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-kod izrezan za drugu razinu. Nastavite?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -653,14 +794,14 @@ msgstr "" "otkazan." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-kod izrezan za drugu vrstu printera. Nastavite?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -669,12 +810,12 @@ msgstr "" "je otkazan." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-kod izrezan za noviji firmware. Nastavite?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -683,42 +824,42 @@ msgstr "" "otkazan." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW podesavanje" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Grijac/Termostat" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Grijanje" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Grijanje je onemoguceno sigurnosnim mjeracem vremena." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Grijanje obavljeno." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -729,7 +870,7 @@ msgstr "" "printanje." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -738,24 +879,45 @@ msgstr "" "postupak postavljanja?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Visoka sna" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Sada cu pokrenuti xyz kalibraciju. Trebat ce cca. 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Sada cu pokrenuti z kalibraciju." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -764,296 +926,319 @@ msgstr "" "postavke u Postavke - HW Podesavanje - Celicne ploce." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Info zaslon" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Umetnite filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" "Umetnite filament (nemojte ga puniti) u ekstruder i zatim pritisnite gumb." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Je li filament napunjen?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Je li celicna ploca na grijanoj podlozi?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Ponavljanje" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Zadnji print" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Zadnji neusp. print" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Lijevo" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Lijevi hotend vent?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Lijeva str[μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Razina svjet" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Razina zatam" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Lin. ispravak" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Live podesavanje Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Napuni sve" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Napunite filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Punjenje u mlazn" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Ucitavanje boje" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Punjenje filamenta" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Labava remenica" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Glasno" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3 firmware otkriven na MK3S printeru" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S firmware detektiran na MK3 printeru" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU Mod" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Nastavak pozicije..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Nastavak temperature..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Nastavak..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU ne uspijeva" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Neusp. MMU punjenje" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Neusp. MMU punj" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU treba paznju korisnika." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Neusp. MMU nap" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 spojen" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnet. komp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Nazad" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Mjereni nagib" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Mjerenje referentne visine kalibracijske tocke" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Mreza" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Izrav. mrez. podl" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Promjena moda u tijeku..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Pomaknite X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Pomaknite Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Pomaknite Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Pomaknite os" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1063,51 +1248,51 @@ msgid "New firmware version available:" msgstr "Dostupna nova verzija firmwera:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Ne" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Nema SD kartice" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Bez pomaka." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Nema" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nije povezano" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Ne okrece se" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" @@ -1115,103 +1300,111 @@ msgstr "" "podloge." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Sada cu zagrijati mlaznicu za PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Sada uklonite probni print sa celicne ploce." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Mlaznica" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Mlaznica." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "Pronadene stare postavke. Postavit ce se zadani PID, Esteps itd." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Jednom" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kal. zavrsena" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibracija" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA se Zagrijava" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Kalibracija PINDA nije uspjela" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1219,19 +1412,36 @@ msgstr "" "Kalibracija PINDA je zavrsena i aktivna. Moze se onemoguciti u izborniku " "Postavke->PINDA. kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauza" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pauzirajte print" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1240,7 +1450,7 @@ msgstr "" "mlaznica uhvati papir, odmah iskljucite printer." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1254,28 +1464,28 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Provjerite IR prikljucak senzora, izvadite filament ako postoji." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Molimo provjerite:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Ocistite grijacu podlogu, a zatim pritisnite gumb." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Molimo ocistite mlaznicu radi kalibracije. Kliknite kada ste gotovi." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "Umetnite filament u ekstruder, a zatim pritisnite gumb za punjenje." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1283,50 +1493,45 @@ msgstr "" "Umetnite filament u prvu cijev MMU-a, a zatim pritisnite gumb za punjenje." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Molimo prvo ubacite filament." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Molimo otvorite klizac i rucno uklonite filament." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Stavite celicnu plocu na grijacu podlogu." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Pritisnite gumb za praznjenje filamenta" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Molimo odmah izvucite filament" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Molimo uklonite filament i zatim pritisnite gumb." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Najprije uklonite prijevozne osloce." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Molimo uklonite celicnu plocu sa grijace podloge." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Prvo pokrenite XYZ kalibraciju." @@ -1335,113 +1540,109 @@ msgstr "Prvo pokrenite XYZ kalibraciju." msgid "Please unload the filament first, then repeat this action." msgstr "Prvo izvadite filament, a zatim ponovite ovu radnju." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Azurirajte firmwer u svom MMU2. Ceka se resetiranje." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Molimo nadogradite." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Molimo pricekajte" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Prekidi struje" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Predgrijavanje" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Predgr. mlaznicu!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Predgrijavanje mlaznice. Molim vas pricekajte." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Predgr. za rezanje" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Predgr. za izbaci." #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Predgr. za punjenje" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Predgr. za praznj." +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Pritisnite gumb" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Pritisnite gumb za predgrijavanje mlaznice i nastavite." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Pritisnite gumb za nastavak temperature mlaznice." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Print je prekinut" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Vent printa:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Printaj sa SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Print pauziran" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Vrijeme printanja" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1450,12 +1651,12 @@ msgstr "" "koraci, odjeljak Tijek kalibracije." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Promjer mlaznice printera razlikuje se od G-koda. Nastavite?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1463,67 +1664,112 @@ msgstr "" "Promjer mlaznice printera razlikuje se od G-koda. Molimo provjerite " "vrijednost u postavkama. Print je otkazan." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "RPi utor" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Zad. str.[μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Oporavak printa" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Uklonite stari filament i pritisnite gumb za pocetak stavljanja novog " "filamenta." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Preimenuj" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Resetiraj" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset XYZ kalibr." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Nastavite print" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Nastavak printa" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Tocno" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Desna str.[μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1531,36 +1777,41 @@ msgstr "" "Pokrenuti carobnjak ce izbrisati trenutne rezultate kalibracije i poceti " "ispocetka. Nastavite?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Nestalo" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD karti" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ZAUSTAVLJENO." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Trazenje tocke kalibracije podloge" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Odaberi" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1569,68 +1820,75 @@ msgstr "" "zaslonu." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Odaberite ekstruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Odaberi filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Izaberi jezik" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Odaberite temperaturu predgrijavanja mlaznice koja odgovara vasem materijalu." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Odaberite temperaturu koja odgovara vasem materijalu." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Samotestiranje OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Pocetak selftesta" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selftest nije uspio" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Provest ce se selftest radi kalibracije preciznog ponovnog postavljanja bez " "senzora." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info senzora" @@ -1640,31 +1898,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Senzor je provjeren, odmah uklonite filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Postavi temperaturu:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Postavke" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Veliki nagib" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Ploca" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1677,18 +1935,18 @@ msgstr "" "%cResetiraj" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Pokazi granicnike" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Tih" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Lagani nagib" @@ -1702,113 +1960,172 @@ msgstr "" "je 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Naisao je neki problem, nametnuto Z-niveliranje..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Vrsta" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sortiranje datoteka" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Zvuk" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Brzina" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Okrece se" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Potrebna je stabilna temperatura okoline 21-26C, potrebno je cvrsto postolje." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistika" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Tiho" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Celicna ploca" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Zaustavi print" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Strogo" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Podrska" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Zamjenjeno" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatura" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperature" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1818,7 +2135,7 @@ msgstr "" "optimalnu visinu. Provjerite slike u prirucniku (poglavlje Kalibracija)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1827,66 +2144,102 @@ msgstr "" "poglavlje Prvi koraci, odjeljak Tijek kalibracije." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Vrijeme" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Pauza" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Ukupno" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Totalne pogreske" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Totalno filamenta" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Vrijeme printanja" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Ugodi" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Ispraznite fil." #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Praznjenje filamenta" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Provjera nije uspjela, uklonite filament i pokusajte ponovno." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Voltaza" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1898,221 +2251,281 @@ msgstr "" "u tihom modu" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Ceka se korisnik..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Ceka se hladenje PINDA sonde" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Ceka se hladjenje mlaznice i podloge" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Upozore" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Upozorenje: promijenjeni su i tip printera i tip maticne ploce." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Upozorenje: tip maticne ploce je promijenjen." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Upozorenje: promijenjena je vrsta printera." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Je li praznjenje fil. bilo uspjesno?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Greska u ozicenju" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Carobnjak" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-ispravan:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ detalji kal" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "XYZ kalibracija u redu. Iskrivljenost ce se automatski ispraviti." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "XYZ kalibracija je u redu. Osi X/Y su malo nagnute. Bravo!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "XYZ kalibracija je ugrozena. Prednje kalibracijske tocke nisu dostupne." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" "XYZ kalibracija je ugrozena. Desna prednja tocka kalibracije nije dostupna." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "XYZ kalibracija nije uspjela. Tocka kalibracije podloga nije pronadena." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "XYZ kalibracija nije uspjela. Prednje kalibracijske tocke nisu dostupne." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ kalibracija nije uspjela. Molimo pogledajte prirucnik." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "XYZ kalibracija nije uspjela. Desna prednja tocka kalibracije nije dostupna." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "XYZ kalibracija u redu. Osi X/Y su okomite. Cestitamo!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y distanca od min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-ispravan:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Da" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Carobnjak uvijek mozete nastaviti iz Kalibracija -> Carobnjak." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-ispravan:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-sonda br." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] razmak tocke" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "i pritisnite gumb" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "da napuni filament" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "da isprazni filament" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "nepoznato" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "nepoznato stanje" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Osvjeziti" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Automatsko punjenje filamenta moguce je samo kada je sensor filamenta " +#~ "ukljucen.." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Otkriven je udar. Nastaviti print?" +#~ msgid "Cutting filament" +#~ msgstr "Rezanje filamenta" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "POGRESKA: Senzor filamenta ne reagira, provjerite vezu." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS v0.3 il stariji" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS v0.4 ili noviji" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Rijesite problem, a zatim pritisnite gumb na MMU jedinici." + +#~ msgid "Load all" +#~ msgstr "Napuni sve" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Prvi sloj kal." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3 firmware otkriven na MK3S printeru" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S firmware detektiran na MK3 printeru" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Nastavak pozicije..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Nastavak temperature..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Nastavak..." + +#~ msgid "MMU load failed" +#~ msgstr "Neusp. MMU punjenje" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU treba paznju korisnika." + +#~ msgid "MMU power fails" +#~ msgstr "Neusp. MMU nap" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Molimo uklonite filament i zatim pritisnite gumb." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Azurirajte firmwer u svom MMU2. Ceka se resetiranje." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Pritisnite gumb za nastavak temperature mlaznice." + +#~ msgid "Runouts" +#~ msgstr "Nestalo" diff --git a/lang/po/Firmware_hu.po b/lang/po/Firmware_hu.po index 74c304aa8..9b2e1f25b 100644 --- a/lang/po/Firmware_hu.po +++ b/lang/po/Firmware_hu.po @@ -16,149 +16,152 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 vagy regebbi" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 v. ujabb" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "Vart szint: %s" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Megsem" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Z allitasa:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Minden rendben" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Keszen vagyunk. Jo nyomtatast!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Abece" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Kornyezet" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "A Z tengely a felso vegponton van?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Seged" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "Autom." #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Auto ero" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Fil. auto.betolt." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "Filament autom. betolteste csak bekapcs. fil. szenzorral mukodik." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "Autom. betoltes be, nyomd meg a gombot es helyzed be a filamentet." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Tengely" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Tengely hossz" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Vissza" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Asztal" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Asztal futes" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Asztal kesz" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Szint. korrekcio" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -167,50 +170,55 @@ msgstr "" "az ujrainditast." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Asztal/Fej futes" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Szij allapot" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Szij teszt" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Aramkieses volt, nyomt. folytatasa?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Fenyes" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Fenyero" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "XYZ kalibracio" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Z kalibracio" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -219,13 +227,13 @@ msgstr "" "nem er, majd nyomd meg ha keszen vagy." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Z kalibralasa" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -234,140 +242,145 @@ msgstr "" "er, majd nyomd meg ha keszen vagy." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Home poz. kalibralas" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibracio" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibracio kesz" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Kartya eltavolitva" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Filament csere" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Csere sikerult!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Sikerult a csere?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "X tengely ellenorzes" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Y tengely ellenorzes" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Z tengely ellenorzes" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Asztal ellenorzese" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Vegallaskapcs. ellen" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Fajl ellenorzese" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Hotend ellenorzese" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Szenz. ellenorzese" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Ellenorzesek" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Szin nem jo" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Kozossegi" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Folyt" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Lehutes" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kivalasztott nyelv masolasa?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Utkozes" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Utkozes erz." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Utkozes erzekelve." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -378,39 +391,46 @@ msgstr "" "kapcsolhato be" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Filament vagasa" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Vago" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Filament vagasa" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Sotet" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Motorok kikapcsol." +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -422,7 +442,7 @@ msgstr "" "bekezdest." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -430,222 +450,345 @@ msgstr "" "Meg szeretned ismetelni az utolso lepest, hogy finomhangold a fuvoka es az " "asztal kozotti tavolsagot?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-korrekcio:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "HIBA:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "HIBA: A fil. szenzor nem valaszol, ellenorizd a csatlakozast." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Filament kiadasa" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Filament kiadasa" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Vegallaskapcsolo" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Vegallask. nem kapcs" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Vegallaskapcsolok" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Extruder vent.:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autobetolt" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FSz akcio" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS v0.3 v. regebbi" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS v0.4 vagy ujabb" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Hiba statisztika" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "MMU hiba stat." #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Hamis kivalto ok" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Vent. sebesseg" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Ventillator teszt" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Vent.proba" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. kifutasok" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. szenzor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament es a szine rendben?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. nincs betoltve" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Filament szenzor" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Felhasznalt filam." #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "A fajl vege hianyzik. Folytatod igy is?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Mozdulat befejezese" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Elso reteg kal." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Elsokent lefuttatom az onellenorzest, hogy megnezzem a leggyakoribb " "osszeszerelesi problemakat." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Hozd helyre a hibat, majd nyomd meg a gombot az MMU egysegen." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Elso targyhuto vent?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Elulso old[μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Elso/bal ventillator" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "A G-kod mas szintre lett elokesztve. Folytassam?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -654,14 +797,14 @@ msgstr "" "megallitva." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "A G-kod mas nyomtato tipusra lett elokesztve. Folytassam?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -670,12 +813,12 @@ msgstr "" "Nyomtatas megallitva." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "A G-kod ujabb firmverre lett elokesztve. Folytassam?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -684,42 +827,42 @@ msgstr "" "Nyomtatas megallitva." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW beallitas" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Futotest/Termisztor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Futes folyamatban" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "A bizonsagi idozito leallitotta a futest" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Futes kesz." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -730,7 +873,7 @@ msgstr "" "nyomtathatsz is." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -739,24 +882,45 @@ msgstr "" "a beallitasi folyamaton?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Magas ero" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Lefuttatom az XYZ kalibraciot. Ez kb. 12 percet vesz igenybe." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Lefuttatom a Z kalibraciot." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -765,27 +929,27 @@ msgstr "" "Acellapok menupont alatt." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Info kepernyo" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Helyezd be a filam." #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." @@ -793,269 +957,292 @@ msgstr "" "Helyezd be a filamentet az extruderbe (ne toltsd be), majd nyomtd meg a " "gombot." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Filament behelyezve?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Rajta van az acellap a targyasztalon?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iteracio" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Utolso nyomtatas" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Utolso nyomt. hibak" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Bal" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Bal hotend vent.?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Bal [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Fenyes szint" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Sotet szint" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Lin. korrekcio" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Z magassag beall." #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Osszes betolt." +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Filament betolt." +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Betolt. fuvokahoz" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Szin tisztitasa" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Filament betoltese" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Laza szijtarcsa" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Hangos" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3 firmver telepitve MK3S nyomtatora" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S firmver eszlelve MK3 nyomtaton" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU Mod" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Pozicio visszaallitasa..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Homerseklet visszaallitasa..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Folytatom..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU hibak" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU betolt.hiba" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU bet. hibak" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "Az MMU felhasznaloi figyelmet igenyel." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU tap hibak" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 csatlakozott" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnes komp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Fomenu" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Meroleg. hiba" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Kalibracios pont magassaganak merese" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Halo" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Asztal szintezes" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Modvaltas folyamatban..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modell" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "X mozgatasa" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Y mozgatasa" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Z mozgatasa" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Tengely mozgatasa" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1065,172 +1252,197 @@ msgid "New firmware version available:" msgstr "Uj firmver verzio erheto el:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nem" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Nincs SD kartya" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Nincs mozgas." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Nincs" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nincs csatlakoztatva" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Nem forog" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" "Most beallitjuk a fuvoka hegye es a targyasztal felulete kozotti tavolsagot." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Felfutom a fuvokat PLA-hoz." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Vedd le a tesztnyomatot az acellaprol." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Fuvoka" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Fuv. atm." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Ki" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "Regi beallitasokat talaltam. Az alap PID, Esteps, stb. lesz beallitva." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Be" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Egyszer" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kalibracio" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kal. kesz" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibracio" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA Futes" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA kalibracio sikertelen." #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "PINDA kalibracio sikeres es aktiv. A Beallitasok ->PINDA kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Szun." #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Nyomtatas szunet" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1239,7 +1451,7 @@ msgstr "" "fuvoka hozzaer a papirlaphoz, azonnal kapcsold ki a nyomtatot." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1253,24 +1465,24 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Nezd meg az IR szenzor csatlakoz., vedd ki a filam., ha bent van." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Kerlek ellenorizd:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Kerlek, tisztisd le a targyasztalt, majd nyomd meg a gombot." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" "Kerlek, tisztisd meg a fuvokat kalibracio elott. Nyomd meg a gombot, ha " "keszen vagy." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1278,7 +1490,7 @@ msgstr "" "betolteshez." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1287,51 +1499,46 @@ msgstr "" "a betolteshez." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Kerlek eloszor toltsd be a filamentet." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" "Kerlek, nyisd ki a nyomogorgo ajtajat, es tavolitsd el a filamentet kezzel." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Kerlek, helyzed az acellapot a targyasztalra." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Kerlek, nyomd meg a gombot a filament kiadasahoz" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Kerlek, huzd ki a filamentet most" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Kerlek, tavolitsd el a filamentet, majd nyomd meg a gombot." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Tavolitsd el a szallitasi segedanyagokat." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Kerlek, tavolisd el az acellapot az asztalrol." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Kerlek, elobb futtasd le az XYZ kalibraciot." @@ -1340,113 +1547,109 @@ msgstr "Kerlek, elobb futtasd le az XYZ kalibraciot." msgid "Please unload the filament first, then repeat this action." msgstr "Kerlek eloszor vedd ki a filamentet, majd probalkozz ujra." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Kerlek, frissitsd az MMU2 firmverjet. Varom az ujrainditast." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Kerlek frissits." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Kerlek varj" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Aramkimaradasok" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Elofutes" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Futsd fel a fuvokat!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Fuvoka futese folyamatban. Kerlek, varj." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Melegites vagashoz" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Melegites kiadashoz" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Felfutes betolteshez" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Felfutes kiadashoz" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Nyomd meg a gombot" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Nyomd meg a gombot a folytatashoz es a fuvoka felfutesehez." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Nyomd meg a gombot a fuvoka ismetelt felfutesehez." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Nyomt. megszakitva" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Targyhuto:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Nyomtatas SD-rol" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Nyomt. szuneteltetve" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Nyomtatasi ido" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Nyomtato IP cime:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1455,12 +1658,12 @@ msgstr "" "lepesek fejezetenek Kalibracio menete bekezdeset." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "A nyomtato fuvoka atmeroje elter a G-kodtol. Folytasasm?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1468,67 +1671,112 @@ msgstr "" "A nyomtato fuvoka atmeroje elter a G-kodtol. Ellenorizd az erteket a " "beallitasokban. Nyomtatas megallitva." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Hatso old.[μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Nyomt. visszaallit" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Vedd ki a regi filamentet, majd nyomd meg a gombot az uj filament " "betoltesehez." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Atnevezes" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Ujrainditas" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "XYZ kal. nullazas" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Nyomt. folytatasa" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Nyomtatas folytatasa" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Jobb" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Jobb old.[μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1536,104 +1784,116 @@ msgstr "" "A Varazslo futtatasa nullazza a jelenlegi kalibracios ertekeket es elolrol " "fog mindent kezdeni. Folytatod?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Kifutas" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SDkartya" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "MEGALLITVA." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Kalibracios pont keresese az asztalon" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Kivalasztas" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "Valassz egy filamentet az elso reteg kalibraciojahoz a menubol." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Extruder valasztas:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Valassz filamentet:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Valassz nyelvet" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Valaszd ki a fuvoka homersekletet, amelyik megfelel az altalad hasznalt " "anyaghoz ajanlott homersekletnek." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Valassz homersekletet, ami megfelel a filamenthez." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Ondiagnosztika OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Ondiagnosztika indul" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Ondiagnosztika" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Ondiagnosztika hiba!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Ondiag. sikertelen" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "A pontos szenzor nelkuli homing erdekeben lefuttatom az ondiagnosztikat." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Szenzor info" @@ -1643,31 +1903,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Szenzor OK, vedd ki a filamentet most." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Homerseklet beall.:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Beallitasok" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "NagyMerol.hiba" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Acellap" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1680,18 +1940,18 @@ msgstr "" "%cUjrainditas" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Vegallaskapcsolok" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Halk" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Kis merol.hiba" @@ -1705,112 +1965,171 @@ msgstr "" "konyvtaron belul." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Hiba tortent, Z szintezes indul..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Rendez" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Fajlok rendezese" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Hang" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Sebesseg" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Forog" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "Stabil 21-26C homerseklet es egy merev allvany (asztal) szukseges." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statisztika" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Halk" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Acellapok" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Nyomt. megallitasa" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Szigoru" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Tamogatas" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Felcserelve" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Homerseklet" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Homersekletek" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1821,7 +2140,7 @@ msgstr "" "Kalibracio fejezeteben." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1830,66 +2149,102 @@ msgstr "" "fejezetenek Kalibracio menete bekezdeset." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Ido" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Idotullepes" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Ossz." #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Ossz. hiba" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Osszes filament" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Ossz. nyomt. ido" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Finomhangolas" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Filament kiadasa" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Filament kiadasa" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Ellenorzes sikertelen, vedd ki a filamentet es probald ujra." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Feszultsegek" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1902,224 +2257,282 @@ msgstr "" "Halk modban" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Var. a felhasznalora" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "A PINDA szenzor kihuleset varom." #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "A fuvoka es az asztal kihuleset varom." #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Figylem." #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Figyelem: a nyomtato es az alaplap tipusa is megvaltozott." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Figyelem: az alaplap tipusa megvaltozott." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Figyelem: a nyomtato tipusa megvaltozott." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Sikerult kivenni a filamentet?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Kabelezesi hiba" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Varazslo" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-korrekcio:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ kal. reszlet" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" "XYZ kalibracio OK. Az esetleges X/Y merolegessegi hiba automatikusan " "korrigalva lesz." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" "XYZ kalibracio sikerult. Az X/Y tengelyeken enyhe merolegessegi hiba van." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "Az XYZ kalibracio sikertelen. Az elulso kalibracios pontok nem erhetoek el." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" "Az XYZ kalibracio sikertelen. A jobb kalibracios pontok nem erhetoek el." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "Az XYZ kalibracio sikertelen. Az asztal kalibracios pontja nem erheto el." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Az XYZ kalibracio sikertelen. Az elulso kalibracios pontok nem erhetoek el." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ kalibracio sikertelen. Kerlek, nezz bele a kezikonyvbe." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Az XYZ kalibracio sikertelen. A jobb kalibracios pontok nem erhetoek el." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "XYZ kalibracio OK. Az X/Y tengelyek merolegesek. Gratulalok!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y-minimum tavolsag" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-korrekcio:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Igen" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "A Varazsolt barmikor elered a Kalibracio -> Varazslo menubol." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-korrekcio:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z meres szama" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] pont offszet" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "es nyomd meg a gombot" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "filam. betoltesehez" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "filament kiadasahoz" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "ismeretlen" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "ismeretlen allapot" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Frissites" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "Filament autom. betolteste csak bekapcs. fil. szenzorral mukodik." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Utkozes erzekelve. Folytassam a nyomtatast?" +#~ msgid "Cutting filament" +#~ msgstr "Filament vagasa" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "HIBA: A fil. szenzor nem valaszol, ellenorizd a csatlakozast." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS v0.3 v. regebbi" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS v0.4 vagy ujabb" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Hozd helyre a hibat, majd nyomd meg a gombot az MMU egysegen." + +#~ msgid "Load all" +#~ msgstr "Osszes betolt." + #~ msgid "M117 First layer cal." #~ msgstr "M117. Elso reteg kalibr." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3 firmver telepitve MK3S nyomtatora" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S firmver eszlelve MK3 nyomtaton" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Pozicio visszaallitasa..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Homerseklet visszaallitasa..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Folytatom..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU betolt.hiba" + +#~ msgid "MMU needs user attention." +#~ msgstr "Az MMU felhasznaloi figyelmet igenyel." + +#~ msgid "MMU power fails" +#~ msgstr "MMU tap hibak" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Kerlek, tavolitsd el a filamentet, majd nyomd meg a gombot." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Kerlek, frissitsd az MMU2 firmverjet. Varom az ujrainditast." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Nyomd meg a gombot a fuvoka ismetelt felfutesehez." + +#~ msgid "Runouts" +#~ msgstr "Kifutas" diff --git a/lang/po/Firmware_it.po b/lang/po/Firmware_it.po index af2f5cd34..793a8da9c 100644 --- a/lang/po/Firmware_it.po +++ b/lang/po/Firmware_it.po @@ -16,150 +16,152 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 o inferiore" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 o superiore" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "atteso livello %s" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Annulla" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Compensaz. Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Nessun errore" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Tutto fatto. Buona stampa!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabeti" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Ambiente" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "I carrelli Z sin/des sono altezza max?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Assist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "Auto" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Trova origine" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Automatico" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autocaric. filam." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Caricamento automatico filamento disponibile solo con il sensore attivo..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filam." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Assi" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Lunghezza dell'asse" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Indietro" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Piano" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Riscald. piano" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Piano fatto." #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Correz. liv.piano" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -168,50 +170,55 @@ msgstr "" "reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Piano/Riscald." #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Stato cinghie" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test cinghie" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Blackout rilevato. Recuperare stampa?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Chiaro" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Luminosita'" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Calibra XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Calibra Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -220,13 +227,13 @@ msgstr "" "all'altezza massima. Click per terminare." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Calibrando Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -235,140 +242,145 @@ msgstr "" "all'altezza massima. Click per terminare." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Calibrazione Home" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Calibrazione" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Calibr. completa" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "SD rimossa" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Cambia filamento" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Cambio riuscito!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Cambio corretto?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Verifica asse X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Verifica asse Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Verifica asse Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Verifica piano" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Verifica finecorsa" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Verifica file" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Verifica ugello" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Controllo sensori" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Controlli" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Colore non puro" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Contribuiti" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Cont." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Raffredda" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Copiare la lingua selezionata?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Impatto" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Rileva.crash" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Rilevato impatto." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -379,39 +391,46 @@ msgstr "" "in Modalita normale" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Taglia filamento" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Tagliatr." -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Tagliando filam." - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Data:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Scuro" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Disabilita motori" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -423,7 +442,7 @@ msgstr "" "Calibrazione primo strato." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -431,222 +450,345 @@ msgstr "" "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e " "piatto?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Correzione-E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "ERRORE:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "ERRORE: il sensore filam. non risponde,Controllare conness." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Espelli fil." -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Espellendo filamento" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Finecorsa" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Finec. fuori portata" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Finecorsa" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Estrusore" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Vent. estrusore:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Info estrusore" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "Autocar.fil." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "Azione FS" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 o inferiore" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 o superiore" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Stat. fallimenti" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Stat.fall. MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falso innesco" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Velocita vent." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventola" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Control.vent" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. esauriti" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Sensore fil." #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "Filamento" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filamento estruso e con colore corretto?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. non caricato" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Sensore filam." +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Fil. utilizzato" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "File incompleto. Continuare comunque?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Finaliz. spostamenti" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Cal. primo strato" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu " "comuni." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Risolvere il problema e premere il bottone sull'unita MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Flusso" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Ventola frontale?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Fronte [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Ventola frontale/sin" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-code processato per un livello diverso. Continuare?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -655,14 +797,14 @@ msgstr "" "slice del modello. Stampa annullata." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code processato per una stampante diversa. Continuare?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -671,12 +813,12 @@ msgstr "" "slice del modello. Stampa annullata." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code processato per un firmware piu recente. Continuare?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -685,42 +827,42 @@ msgstr "" "firmware. Stampa annullata." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "Impostazioni HW" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Riscald./Termist." #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Riscaldamento..." #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Riscaldamento fermato dal timer di sicurezza." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Riscald. completo" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -731,7 +873,7 @@ msgstr "" "stampare." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -740,24 +882,45 @@ msgstr "" "processo di configurazione?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Forte" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Adesso avviero la Calibrazione Z." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -766,296 +929,319 @@ msgstr "" "Setup HW - Piastre in Acciaio." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Schermata info" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Inserire filamento" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Il filamento e' stato caricato?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Piastra d'acciaio su piano riscaldato?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iterazione" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Ultima stampa" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Errori ultima stampa" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Sinistra" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Vent SX hotend?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Sinistra [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Liv. Chiaro" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Liv. Scuro" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Correzione lineare" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Compensazione Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Caricare tutti" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Carica filamento" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Carica ugello" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Caricando colore" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Caricando filamento" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Puleggia lenta" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Forte" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "Firmware MK3 rilevato su stampante MK3S" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "Firmware MK3S rilevato su stampante MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "Mod. MMU" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. riprendendo la posizione..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Ripristino temperatura..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Riprendendo..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Fallimenti MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Caricam. MMU fallito" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Car MMU falliti" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "Il MMU richiede attenzione dall'utente." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Manc. corr. MMU" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 connessa" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Comp. Magneti" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Menu principale" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Dev. misurata" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Misura altezza di rif. del punto di calib." #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Griglia" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Liv. griglia piano" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod." #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Cambio modalita in corso..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modello" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "Motore" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Sposta X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Sposta Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Sposta Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Muovi asse" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "N/D" @@ -1065,155 +1251,163 @@ msgid "New firmware version available:" msgstr "Nuova vers. firmware disponibile:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "No" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Nessuna SD" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Nessun movimento." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Nessuno" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "Normale" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Non connesso" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Non gira" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Adesso calibro la distanza fra ugello e superfice del piatto." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Adesso preriscaldero l'ugello per PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Ugello" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Dia.Ugello" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Off" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Sono state trovate impostazioni vecchie. Verranno impostati i valori " "predefiniti di PID, Esteps etc." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "On" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Singolo" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "Calibrazione PID" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "Calib. PID completa" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "Calibrazione PID" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Riscaldamento PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "Calib. PINDA" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Calibrazione temperatura fallita" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1221,19 +1415,36 @@ msgstr "" "Calibrazione PINDA completata e attiva. Puo essere disattivata dal menu " "Impostazioni ->Calib. PINDA" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pausa" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Metti in pausa" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1242,7 +1453,7 @@ msgstr "" "punti. In caso l'ugello muova il foglio spegnere subito la stampante." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1256,29 +1467,29 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Controllare il collegamento al sensore e rimuovere il filamento." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Verifica:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Per favore pulisci il piatto, poi premi la manopola." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Pulire l'ugello per la calibrazione, poi fare click." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1287,50 +1498,45 @@ msgstr "" "manopola per caricarlo." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Per favore prima carica il filamento." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Aprire la guida filam. e rimuovere il filam. a mano" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Premete la manopola per scaricare il filamento" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Estrarre il filamento immediatamente" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Rimuovi il filamento e quindi premi la manopola." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Per favore rimuovete i materiali da spedizione" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Rimuovete la piastra di acciaio dal piano riscaldato" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Esegui la calibrazione XYZ prima." @@ -1339,113 +1545,109 @@ msgstr "Esegui la calibrazione XYZ prima." msgid "Please unload the filament first, then repeat this action." msgstr "Scaricare prima il filamento, poi ripetere l'operazione." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Prego aggiornare." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Attendere" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Interr. corr." #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Preriscalda" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Prerisc. ugello!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Preriscaldando l'ugello. Attendere prego." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Preriscalda. taglio" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Preriscalda. espuls." #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Preriscald. carico" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Preriscald. scarico" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Premere la manopola" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Premete la manopola per preriscaldare l'ugello e continuare." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Premete la manopola per recuperare la temperatura dell'ugello." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Stampa interrotta" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Vent.stam:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Stampa da SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Stampa in pausa" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Tempo di stampa" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Ind. IP stampante:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1454,12 +1656,12 @@ msgstr "" "Primi Passi, sezione Sequenza di Calibrazione." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Diametro ugello diverso da G-Code. Continuare?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1467,67 +1669,112 @@ msgstr "" "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. " "Stampa annullata." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "Porta RPi" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Retro [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Recupero stampa" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo " "filamento." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Rinomina" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Reset" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset calibr. XYZ." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Riprendi stampa" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Riprendi stampa" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Destra" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Destra [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1535,36 +1782,41 @@ msgstr "" "Se avvi il Wizard perderai la calibrazione preesistente e dovrai " "ricominciare dall'inizio. Continuare?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Esaurim" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "Mem. SD" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ARRESTATO." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Ricerca punti calibrazione piano" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Seleziona" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1573,67 +1825,74 @@ msgstr "" "menu sullo schermo." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Seleziona estrusore:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Seleziona il filam.:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Seleziona lingua" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al " "vostro materiale." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Seleziona la temperatura appropriata per il tuo materiale." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Autotest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Avvia autotest" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Autotest" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Errore Autotest!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Autotest fallito" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "Verra effettuato un self test per calibrare l'homing senza sensori" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info Sensore" @@ -1643,31 +1902,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensore verificato, rimuovere il filamento." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Imposta temperatura:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Impostazioni" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Deviaz. forte" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Piano" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1680,18 +1939,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Stato finecorsa" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Silenz." #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Deviaz. lieve" @@ -1705,113 +1964,172 @@ msgstr "" "e 100 perche siano ordinati." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Sono stati rilevati problemi, avviato livellamento Z ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Ordina" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Ordinando i file" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Suono" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Velocita" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Gira" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistiche" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Silenz." #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Piani d'acciaio" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Arresta stampa" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Esatto" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Supporto" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Scambiato" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatura" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperature" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1822,7 +2140,7 @@ msgstr "" "manuale (capitolo sulla calibrazione)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1831,66 +2149,102 @@ msgstr "" "Primi Passi, sezione Sequenza di Calibrazione." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Cron." #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Timeout" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Totale" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Totale fallimenti" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filamento totale" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Tempo stampa totale" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Regola" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Scarica filam." #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Scaricando filamento" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verifica fallita, rimuovere il filamento e riprovare." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Voltaggi" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1903,222 +2257,281 @@ msgstr "" "Modalita silenziosa" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Attendendo utente..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "In attesa del raffreddamento della sonda PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "In attesa del raffreddamento dell'ugello e del piano" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Avviso" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Attenzione: tipo di stampante e di scheda madre cambiati." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Avviso: tipo di scheda madre cambiato" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Avviso: tipo di stampante cambiato." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Filamento scaricato con successo?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Errore cablaggio" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Wizard" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Correzione-X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ Cal. dettagli" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato " "trovato." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Distanza Y dal min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Correzione-Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Si" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" "E possibile riprendere il Wizard in qualsiasi momento attraverso " "Calibrazione -> Wizard." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Correzione-Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Nr. Z-test" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] punto offset" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "e cliccare manopola" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "per caricare il fil." #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "per scaricare fil." #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "sconosciuto" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "stato sconosciuto" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Ricaricare" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Caricamento automatico filamento disponibile solo con il sensore attivo..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Scontro rilevato. Riprendere la stampa?" +#~ msgid "Cutting filament" +#~ msgstr "Tagliando filam." + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "ERRORE: il sensore filam. non risponde,Controllare conness." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 o inferiore" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 o superiore" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Risolvere il problema e premere il bottone sull'unita MMU." + +#~ msgid "Load all" +#~ msgstr "Caricare tutti" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Calibr. primo strato" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "Firmware MK3 rilevato su stampante MK3S" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "Firmware MK3S rilevato su stampante MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. riprendendo la posizione..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Ripristino temperatura..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Riprendendo..." + +#~ msgid "MMU load failed" +#~ msgstr "Caricam. MMU fallito" + +#~ msgid "MMU needs user attention." +#~ msgstr "Il MMU richiede attenzione dall'utente." + +#~ msgid "MMU power fails" +#~ msgstr "Manc. corr. MMU" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Rimuovi il filamento e quindi premi la manopola." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Premete la manopola per recuperare la temperatura dell'ugello." + +#~ msgid "Runouts" +#~ msgstr "Esaurim" diff --git a/lang/po/Firmware_lb.po b/lang/po/Firmware_lb.po index 6d25e2b56..8fa9eb20e 100644 --- a/lang/po/Firmware_lb.po +++ b/lang/po/Firmware_lb.po @@ -16,352 +16,365 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr "" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr "" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr "" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." msgstr "" #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -369,39 +382,46 @@ msgid "" msgstr "" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -410,294 +430,417 @@ msgid "" msgstr "" #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "" - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." msgstr "" #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." msgstr "" #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -705,7 +848,7 @@ msgid "" msgstr "" #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -714,319 +857,363 @@ msgstr "" "duerch de Setupprozess guideieren?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "" +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." msgstr "" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "" - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "" #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1036,178 +1223,203 @@ msgid "New firmware version available:" msgstr "" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "" #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "" #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." msgstr "" #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1219,78 +1431,73 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "" #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." msgstr "" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "" @@ -1299,289 +1506,342 @@ msgstr "" msgid "Please unload the filament first, then repeat this action." msgstr "" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "" #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "" -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." msgstr "" #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" msgstr "" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "" +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "" @@ -1591,31 +1851,31 @@ msgid "Sensor verified, remove the filament now." msgstr "" #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1624,18 +1884,18 @@ msgid "" msgstr "" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "" @@ -1647,112 +1907,171 @@ msgid "" msgstr "" #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "" #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1760,73 +2079,109 @@ msgid "" msgstr "" #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." msgstr "" #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1835,210 +2190,210 @@ msgid "" msgstr "" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "" diff --git a/lang/po/Firmware_lt.po b/lang/po/Firmware_lt.po index 009357cab..476eaac42 100644 --- a/lang/po/Firmware_lt.po +++ b/lang/po/Firmware_lt.po @@ -16,352 +16,365 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr "" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr "" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr "" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." msgstr "" #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -369,39 +382,46 @@ msgid "" msgstr "" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -410,294 +430,417 @@ msgid "" msgstr "" #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "" - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." msgstr "" #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." msgstr "" #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -705,7 +848,7 @@ msgid "" msgstr "" #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -714,319 +857,363 @@ msgstr "" "padetu jums atlikti sarankos procesa?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "" +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." msgstr "" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "" - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "" #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1036,178 +1223,203 @@ msgid "New firmware version available:" msgstr "" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "" #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "" #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." msgstr "" #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1219,78 +1431,73 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "" #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." msgstr "" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "" @@ -1299,289 +1506,342 @@ msgstr "" msgid "Please unload the filament first, then repeat this action." msgstr "" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "" #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "" -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." msgstr "" #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" msgstr "" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "" +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "" @@ -1591,31 +1851,31 @@ msgid "Sensor verified, remove the filament now." msgstr "" #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1624,18 +1884,18 @@ msgid "" msgstr "" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "" @@ -1647,112 +1907,171 @@ msgid "" msgstr "" #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "" #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1760,73 +2079,109 @@ msgid "" msgstr "" #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." msgstr "" #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1835,210 +2190,210 @@ msgid "" msgstr "" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "" diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 1cc0b1ba9..9a016d180 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -16,152 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 of ouder" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 of nieuwer" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s niveau verwacht" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Annuleren" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Z is ingesteld:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Allemaal goed" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Klaar. Happy printing!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "Altijd" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Kamertemp." #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Zijn beide Z wagen heelemaal boven?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Assist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "Auto" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Startpositie" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Auto power" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autoladen filament" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Auto. laden van fil. is enkel beschikbaar wanneer fil.sensor is " -"ingeschakeld..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Automatisch laden van flament is actief, druk de knop en laad filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "As" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Aslengte" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "terug" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Bed" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Bed opwarmen" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Bed klaar" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Bed niveau correct" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -170,50 +171,55 @@ msgstr "" "reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Bed/Verwarming" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Riem status" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Riemtest" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Stroomstoring. Print herstellen?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Helder" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Helderheid" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibratie XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibratie Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -222,13 +228,13 @@ msgstr "" "stoppers. Druk knop als klaar." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibrere Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -237,140 +243,145 @@ msgstr "" "stoppers. Druk knop als klaar." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibreren start" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibratie" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibratie klaar" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "SD verwijderd" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "Wissel SD kaart" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Wissel filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Wissel geslaagd!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Wissel ok?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Controleer X as" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Controleer Y as" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Controleer Z as" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Controleer bed" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Controleer endstops" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Bestand controle" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Controleer hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Controleer sensors" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Checks" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Kleur niet juist" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Van de community" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Door." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Afkoelen" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Geselecteerde taal kopieren?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Crash" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Crashdet." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Crash gedetecteerd." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -381,39 +392,46 @@ msgstr "" "gebruikt worden" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Fil. knippen" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Mes" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Knippe filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Dim" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Motoren uit" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -425,7 +443,7 @@ msgstr "" "calibration." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -433,222 +451,345 @@ msgstr "" "Wilt u de laatste stap herhalen om de afstand tussen de tuit en de bed " "opnieuw in te stellen?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-correctie:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "FOUT:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "FOUT: Filamentsensor reageert niet, controleer de verbinding." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Fil. uitwerpen" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Fil. word ontladen" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Eindstop" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Endstop niet geraakt" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Eindstops" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Extruder" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Extruder fan:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Extruder info" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autoladen" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS actie" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 of ouder" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 of nieuwer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Foutstatistieken" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "MMU-Fouten" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Valse triggering" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Fan snelh." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Fan test" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Fans check" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. fouten" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. sensor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "Filament" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament extrudeert met de juiste kleur?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. niet geladen" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Filamentsensor" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Gebruikte filament" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Bestand onvolledig. Toch doorgaan?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Voortgang afwerken" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Eerste laag kal." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Ten eerste zullen we de zelftest uitvoeren om de meest voorkomende " "montageproblemen te controleren." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Los het probleem op en druk vervolgens op de knop op de MMU-eenheid." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Stromen" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Voorzijde fan?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Voorkant [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Fans voor/links" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-Code is voor een ander niveau geslict. Doorgaan?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -657,14 +798,14 @@ msgstr "" "Druk geannuleerd." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-Code is voor een ander printertype geslict. Doorgaan?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -673,12 +814,12 @@ msgstr "" "alsjeblieft. Druk geannuleerd." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-Code is voor een nieuwere firmware geslict. Doorgaan?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -687,42 +828,42 @@ msgstr "" "alsjeblieft. Druk geannuleerd." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "Gcode" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW Configuratie" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Verwarmer/Therm." #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Opwarmen" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Verwarming uitgeschakeld door veiligheidstimer." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Opwarmen klaar." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -733,7 +874,7 @@ msgstr "" "printen." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -742,24 +883,45 @@ msgstr "" "installatieproces?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Hoog verm." +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Begin nu met xyz-kalibratie. Het duurt ongeveer 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Begin nu met z-kalibratie." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -768,296 +930,319 @@ msgstr "" "Instellingen - HW Setup - Staalplaten." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "Verbetering van het bedijkingspunt" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Info scherm" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "Init. SD kaart" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Voer filament in" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" "Steek a.u.b. filament (maar niet laden) in de extruder en druk op knop." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Is filament geladen?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Ligt de staalplaat op het bed?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iteratie" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Laatste print" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Laatste printfouten" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Links" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Linker hotend fan?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Linkerkant[μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Helder waard" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Dim waarde" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Lineaire correctie" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Live Z aanpassen" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Laad alle" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Filament laden" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Tot tuit laden" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Laden kleur" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Laden filament" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Losse riemschijf" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Hard" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3-firmware bij MK3S-printer gedetecteerd" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S-firmware op MK3-printer ontdekt" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU Mod" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Positie hervatten..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Temperatuur hervatten..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Hervatten..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU fout" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU laden mislukt" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU laadfout" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU heeft gebruikersaandacht nodig." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU stroomstor." +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 verbonden" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnet. comp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Hoofdmenu" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Scheefheid" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Referentie hoogte van het kalibratiepunt meten" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Mesh" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Mesh bed Leveling" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Stand" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Moduswijziging bezig..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Model" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "Motor" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Verplaats X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Verplaats Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Verplaats Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "As verplaatsen" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "N/V" @@ -1067,155 +1252,163 @@ msgid "New firmware version available:" msgstr "Nieuwe firmware versie beschikbaar:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nee" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Geen SD kaart" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Geen beweging." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Geen" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "Normaal" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Niet verbonden" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Draait niet" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Begin met kalibratie tussen de tuit en het bed." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Opwarmen van de tuit voor PLA voor." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Verwijder nu de testprint van staalplaat." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Tuit" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Tuit d." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Uit" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Oude instellingen gevonden. Standaard PID, E-steps etc. instellingen worden " "geladen." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Aan" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Eenmaal" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "PAUSE TERMISCHE FOUT" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kalibratie klaar" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibratie" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA opwarmen" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kalib." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA-kalibratie mislukt" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1223,19 +1416,36 @@ msgstr "" "PINDA-kalibratie is voltooid en actief. Het kan worden uitgeschakeld in het " "menu Instellingen-> PINDA kalib." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauze" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Print pauzeren" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1244,7 +1454,7 @@ msgstr "" "punten. Als de tuit het papier beweegt, de printer onmiddellijk uitschakelen." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1259,29 +1469,29 @@ msgstr "" "AUB IR sensor ver- binding kontrolleren , verwijder filament indien aanwezig." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Controleer aub:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Maak het bed schoon en druk op de knop." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Reinig de tuit voor de kalibratie. Druk op de knop wanneer gereed." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" "Steek a.u.b. filament in de extruder en druk op de knop om het te laden." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1290,50 +1500,45 @@ msgstr "" "te laden." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Laad a.u.b. eerst filament." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Open rondsel en verwijder filament handmatig." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Leg staalplaat op bed." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Druk op de knop om filament te verwijderen" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Trek onmiddellijk de filament eruit" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Trek onmiddellijk filament eruit en druk vervolgens op de knop." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Verwijder eerst de transport beschermers." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Verwijder staalplaat van het bed." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Voer eerst de XYZ-kalibratie uit." @@ -1342,113 +1547,109 @@ msgstr "Voer eerst de XYZ-kalibratie uit." msgid "Please unload the filament first, then repeat this action." msgstr "Verwijder eerst het filament en probeer het opnieuw." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Aub de firmware te vernieuwen in uw MMU2. Wacht op reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Voer een upgrade uit" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Even geduld aub" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Stroomstoringen" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Voorverwarmen" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Tuit voorverwarmen!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Opwarmen van de tuit. Wacht aub." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Opwarm. te snijden" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Opwarm.te uitwerpen" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Opwarmen invoeren" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Opwarmen uitwerpen" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Druk op knop" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Druk op de knop om de tuit voor te verwarmen en door te gaan." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Druk op de knop om de temperatuur van de tuit te hervatten." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Print afgebroken" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Print fan:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Print van SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Print pauzeren" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Print tijd" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Printer IP-adres:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1457,13 +1658,13 @@ msgstr "" "steps, sectie Calibration flow." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" "De diameter van de tuit van de printer verschilt van de G-code. Doorgaan?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1471,66 +1672,111 @@ msgstr "" "De diameter van de tuit van de printer verschilt van de G-code. Controleer " "de waarde in de instellingen. Afdrukken geannuleerd." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "RPi port" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Achterkant[μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Print herstellen" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Verwijder de oude filament en druk op de knop om nieuwe filament te laden." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Hernoem" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Reset" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset XYZ kalibr." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Print hervatten" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Hervatten print" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Rechts" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Recht.kant[μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1538,36 +1784,41 @@ msgstr "" "Starten van de Wizard verwijdert de huidige kalibreringsresultaten en begint " "vanaf het begin. Doorgaan?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Fouten" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD kaart" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "GESTOPT." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Zoeken bed kalibratiepunt" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Selecteer" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1576,69 +1827,76 @@ msgstr "" "het schermmenu." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Kies extruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Kies filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Kies taal" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Selecteer de voorverwarmingstemperatuur van de tuit die overeenkomt met uw " "materiaal." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Selecteer de temperatuur die overeenkomt met uw materiaal." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Zelftest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Zelftest start" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Zelftest" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Zelftest fout!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Zelftest mislukt" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Zelftest zal worden uitgevoerd om nauwkeurige sensorloze auto positie te " "kalibreren." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Sensor info" @@ -1648,31 +1906,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensor geverifieerd, verwijder nu het filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Temp. instellen:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Instellingen" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Erg scheef" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Staalplaat" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1685,18 +1943,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Toon endstops" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Stil" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Beetje scheef" @@ -1710,114 +1968,173 @@ msgstr "" "per map 100 is." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Er is een probleem opgetreden, Z-kalibratie afgedwongen ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sort." #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Bestanden sorteren" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Geluid" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Snelheid" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Draait" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "En stabiele 21-26C omgevingstemperatuur is nodig,een stevige stand is " "vereist." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistieken" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Stil" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Staalplaten" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Print stoppen" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Strikt" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Support" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Gewisseld" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "THERMISCHE ANOMALIE" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "TM autotune mislukt" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "Temp. model autotune" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatuur" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturen" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1828,7 +2145,7 @@ msgstr "" "(Calibration chapter)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1837,66 +2154,102 @@ msgstr "" "handleiding, hoofdstuk First steps, section Calibration flow." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Tijd" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Time-out" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Totaal" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Totaal fouten" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Totaal fil." #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Totaal printtijd" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Fijnafstemming" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Fil. uitwerpen" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Uitwerpen filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verificatie mislukt, verwijder het filament en probeer het opnieuw." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Spanning" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1909,219 +2262,280 @@ msgstr "" "Stealth stand" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Wacht op gebruiker.." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Wachten op afkoelen van PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Wachten op afkoelen van tuit en bed" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Waarsch." #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" "Waarschuwing: zowel het printertype als het moederbordtype is gewijzigd." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Waarschuwing: type moederbord gewijzigd." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Waarschuwing: printertype gewijzigd." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Is filament succes- vol verwijderd?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Aansluitingsfout" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Wizard" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-correctie:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "XFLASH init" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ kal. details" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" "XYZ-kalibratie in orde. Scheefheid zal automatisch worden gecorrigeerd." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "XYZ-kalibratie in orde. X / Y-assen zijn licht scheef. Goed gedaan!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "XYZ-kalibratie niet gelukt. Voorste kalibratiepunten niet bereikbaar." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "XYZ-kalibratie mislukt. Bed ijkpunt niet gevonden." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "XYZ-kalibratie mislukt. Voorste kalibratiepunten niet bereikbaar." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "XYZ-kalibratie mislukt. Kalibratiepunt linksvoor niet bereikbaar." #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ-kalibratie mislukt. Raadpleeg de handleiding aub." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "XYZ-kalibratie mislukt. Rechter voor kalibratiepunt niet bereikbaar." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "XYZ-kalibratie ok. X / Y-assen staan loodrecht. Gefeliciteerd!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y afstand van min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-correctie:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ja" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "U kunt de wizard altijd hervatten via Kalibratie -> Wizard." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-correctie:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-test nr." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] punt offset" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "en druk op knop" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "om filament te laden" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "om fil. uitwerpen" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "onbekend" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "Status onbekend" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Refresh" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Auto. laden van fil. is enkel beschikbaar wanneer fil.sensor is " +#~ "ingeschakeld..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Crash gedetecteerd. Print voorzetten?" +#~ msgid "Cutting filament" +#~ msgstr "Knippe filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "FOUT: Filamentsensor reageert niet, controleer de verbinding." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 of ouder" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 of nieuwer" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "" +#~ "Los het probleem op en druk vervolgens op de knop op de MMU-eenheid." + +#~ msgid "Load all" +#~ msgstr "Laad alle" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Eerste laag kal." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3-firmware bij MK3S-printer gedetecteerd" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S-firmware op MK3-printer ontdekt" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Positie hervatten..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Temperatuur hervatten..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Hervatten..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU laden mislukt" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU heeft gebruikersaandacht nodig." + +#~ msgid "MMU power fails" +#~ msgstr "MMU stroomstor." + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Trek onmiddellijk filament eruit en druk vervolgens op de knop." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Aub de firmware te vernieuwen in uw MMU2. Wacht op reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Druk op de knop om de temperatuur van de tuit te hervatten." + +#~ msgid "Runouts" +#~ msgstr "Fouten" diff --git a/lang/po/Firmware_no.po b/lang/po/Firmware_no.po index 6d701550e..9da4fdae1 100644 --- a/lang/po/Firmware_no.po +++ b/lang/po/Firmware_no.po @@ -16,151 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 eller eldre" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 eller nyere" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s nivå ventet" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Avbryt" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Justerer Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Alt korrekt" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Alt klart. God printing!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Omgivelse" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Er venstre og høyre Z-vogn helt oppe?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Hjelp" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Auto hjem" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Autostyrke" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "AutoLast filament" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Autolasting av fil. er kun tilgjengelig når fil.- sensoren er skrudd på..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Autolasting av fil. er aktivert. Trykk på knappen og sett inn filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Akse" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Akselengde" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Tilbake" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Seng" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Sengen varmes" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Seng ferdig" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Plankorrekt seng" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -169,50 +171,55 @@ msgstr "" "omstart." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Seng/Varmer" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Beltestatus" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Belte test" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Oppdaget Strømbrudd! Gjenoppta print?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Lys" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Lysstyrke" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibrer XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrer Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -221,13 +228,13 @@ msgstr "" "Deretter trykk." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibrer Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -236,140 +243,145 @@ msgstr "" "trykk." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibrerer hjem" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibrering" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibrering ferdig" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Kort fjernet" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Bytt filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Bytte vellykket!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Byttet riktig?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Sjekker X aksen" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Sjekker Y aksen" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Sjekker Z aksen" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Sjekker seng" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Sjekker endesensorer" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Sjekker fil" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Sjekker hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Sjekker sensorer" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "G-code sjekk" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Farge ikke riktig" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Community laget" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Fort." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Nedkjøling" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kopiere det valgte språket?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Krasj" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Krasjdetek." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Krasj oppdaget." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -380,39 +392,46 @@ msgstr "" "Normal modus" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Kutt filament" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Kutter" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Kutter filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Dato:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Svak" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Frigjør motorer" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -423,7 +442,7 @@ msgstr "" "manualen, under First Steps, for hvordan det første laget skal kalibreres." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -431,220 +450,343 @@ msgstr "" "Vil du repetere det siste trinnet for å omjustere avstanden mellom dysen og " "platen?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-korreksjon:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "ERROR: Filament- sensor svarer ikke. Vennligst sjekk koblingen." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Mat ut filament" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Mater ut filament" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Endesensor" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Traff ikke endesens." #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Endesensorer" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Ekstruder" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Ekstrudervifte:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Ekstruderinfo" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autolast" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS aksjon" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 eller eldre" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 eller nyere" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Feilstatistikk" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Feil stat. MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falskt utløsning" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Viftehastighet" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Viftetest" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Viftesjekk" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Tomt filament" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament kommer ut og har riktig farge?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. ikke lastet" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Filamentsensor" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Brukt filament" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Fil er ukomplett. Fortsette allikevel?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Avslutter bevegelser" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Førstelagskal." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "Først skal jeg kjøre en selvtest for å sjekke vanlige byggefeil." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Løs problemet og trykk på MM-enhetens knapp." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Flyt" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Fremre printvifte?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Fremsiden [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Fremre/venstre vifte" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-code sliced for en annen høyde. Fortsette?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -652,14 +794,14 @@ msgstr "" "G-code sliced for en annen høyde. Vennligst slice igjen. Print avbrutt." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code sliced for en annen printer. Fortsette?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -667,12 +809,12 @@ msgstr "" "G-code sliced for en annen printer. Vennligst slice igjen. Print avbrutt." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code sliced for en nyere systemvare. Fortsette?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -681,42 +823,42 @@ msgstr "" "avbrutt." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Varmer/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Varmer opp" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Varme skrudd av pga. sikkerhet." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Oppvarming ferdig." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -726,7 +868,7 @@ msgstr "" "oppsett, hvor Z aksen blir kalibrert. Du er da klar til å printe." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -735,24 +877,45 @@ msgstr "" "gjennom oppsettprosessen?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Høy styrke" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Nå skal jeg kjøre kalibreringen. Det tar ca. 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Nå kjører jeg Z-kalibreringen." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -761,295 +924,318 @@ msgstr "" "Stålplater." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Infoskjerm" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Sett inn filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "Sett inn filamentet i ekstruderen og deretter trykk inn valghjulet." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Er filament lastet?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Er stålplaten på varmesenga?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iterasjon" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Siste print" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Siste printfeil" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Venstre" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Venst. ekstr. vifte?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Vens. side[μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Nivå Lyst" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Nivå Dimmet" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Lin. korreksjon" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Juster Live-Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Last alle" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Last inn filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Last til dysen" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Laster farge" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Laster filament" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Løs talje" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Høyt" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3 system funnet på MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S systemvare funnet på MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU Mod." -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Gjenopptar posisjon..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Gjenopptar oppvarming..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Gjenopptar..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU feil" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU last feilet" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU lastefeil" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU trenger brukerinnvending." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU strøm feil" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 tilkoblet" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnet komp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Hovedmeny" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Målt skjevhet" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Måler referansehøyde for kalibreringspunkt" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Plan-nett" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Sengeplanering" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Modus" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Modus endres..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modell" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Beveg X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Beveg Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Beveg Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Beveg akse" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr " -" @@ -1059,154 +1245,162 @@ msgid "New firmware version available:" msgstr "Ny systemvare tilgjengelig:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nei" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "SD-kort mangler" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Ingen bevegelse." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Ingen" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Ikke tilkoblet" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Spinner ikke" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Jeg vil nå kalibrere avstanden mellom tuppen av dysen og varmeplaten." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Jeg vil nå forvarme dysen for PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Fjern nå testprintet fra stålplaten." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Dyse" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Dyse diam." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Av" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Gamle verdier funnet Standarinnstillinger for PID, motor etc. blir satt." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "På" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "En gang" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kal. ferdig" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibrering" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA varmes" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA kalibrering mislyktes" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1214,19 +1408,36 @@ msgstr "" "PINDA kalibrering er fullført og aktiv. Der kan bli skrudd av i menyen " "under Innstillinger -> PINDA kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pause printjobben" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1235,7 +1446,7 @@ msgstr "" "dysen tar papiret, skru umiddelbart av printeren." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1249,28 +1460,28 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Vennligst sjekk koblingen til IR sensorer. Last ut filament om lastet." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Venligst sjekk:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Rengjør stålplaten og trykk valghjulet." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Rengjør dysen og trykk valghjulet." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "Sett inn filament I ekstruderen og trykk valghjulet for å laste." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1279,50 +1490,45 @@ msgstr "" "å laste." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Vennligst sett inn filament først." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Åpne taljedøren og fjern filamentet for hånd." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Plasser stålplaten på varmesenga." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Trykk valghjulet for å ta ut filamentet" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Trekk ut filamented med en gang" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Fjern filamentet og trykk valghjulet." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Vennligst fjern sendingsbeskyttelsen først." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Vennligst ta stålplaten av varmesenga." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Vennligst fullfør XYZ kalibreringen først." @@ -1331,125 +1537,121 @@ msgstr "Vennligst fullfør XYZ kalibreringen først." msgid "Please unload the filament first, then repeat this action." msgstr "Vennligst last ut filamentet først, deretter repeter denne handlingen." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Oppdater din MMU2 systemvare. Venter på omstart..." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Vennligst oppdater." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Vennligst vent" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Strømfeil" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Forvarming" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Forvarm dysen!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Forvarmer dysen. Vennligst vent..." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Forvarmer for kutt" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Forvarmer for utmat." #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Forvarmer for last" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Forvarmer for fil." +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Trykk valghjulet" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Trykk valghjulet for å forvarme dysen og fortsette." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Trykk valghjulet for å fortsette oppvarming." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Print avbrutt" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Printvifte:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Print fra SD-kort" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Print satt på pause" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Printetid" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Printer IP adr.:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." msgstr "Printeren er ikke kalibrert. Vennligst se manualen, under First Steps." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Printerens dysediameter er forskjellig fra G-Code. Fortsette?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1457,65 +1659,110 @@ msgstr "" "Printerens dysediameter er forskjellig fra G-Code. Sjekk Innstillinger for " "hva som er satt. Print avbrutt." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Baksiden [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Gjenopptar print" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "Ta bort det gamle filamentet og trykk valghjulet for å laste et nytt." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Gi nytt navn" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Nullstill" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Nullstill XYZ kal." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Gjenoppta print" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Gjenopptar print" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Høyre" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Høyre side[μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1523,102 +1770,114 @@ msgstr "" "Ved å kjøre Veilederen slettes all nåværende kalibreringsdata og du må " "begynne på nytt. Fortsette?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "F. tomt" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD-kort" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "STOPPET." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Søker etter kalibreringspunkt" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Velg" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "Velg filamenttype for Førstelags- kalibrering." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Velg filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Velg språk" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Velg dysetemperatur som passer ditt materiale." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Velg temperaturen som passer ditt materiale." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Selvtest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Selvtest starter" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Selvtest" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Selvtest feil!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selvtest feilet" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Selvtest vil bli kjørt for å kalibrere nøyaktig sensorløs hjemposisjon." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Sensorinformasjon" @@ -1628,31 +1887,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensor verifiserte, fjern filamentet nå." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Satt temperatur:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Innstillinger" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Stor skjevhet" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Plate" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1665,18 +1924,18 @@ msgstr "" "%cNullstill" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Vis endesensorer" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Lydløs" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Lett skjevhet" @@ -1688,112 +1947,171 @@ msgid "" msgstr "Noen filer vil ikke bli sortert. Maks antall filer i en mappe er 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Problem møtt. Z aksjeplanering tvunget ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sorter" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sorter filer" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Lyd" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Hastighet" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Spinner" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "En stabil rom- temperatur på 21-26C og et solid underlag er nødvendig." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistikk" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Stille" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Stål plate" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Stopp printjobb" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Streng" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "System info" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Byttet" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatur" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturer" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1804,7 +2122,7 @@ msgstr "" "skal se ut." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1813,66 +2131,102 @@ msgstr "" "hovedmenyen og følg Veilederen." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Dato" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Tidsavbrudd" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Totalt" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Feil totalt" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filament totalt" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Printetid totalt" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Juster" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Last ut filament" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Laster ut filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verifisering feilet. Fjern filamentet og prøv igjen." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Strøm/Volt" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1885,218 +2239,277 @@ msgstr "" "Stillemodus" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Venter på bruker..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Venter på PINDA nedkjøling" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Venter på dyse- og platenedkjøling" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Advar" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Advarsel: Både printertype og hovedkortype er forandret." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Advarsel: Hovedkortype forandret." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Advarsel: Printertype forandret." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Ble filamentet lastet helt ut?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Koblingsfeil" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Veileder" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-korreksjon:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ cal. detaljer" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "XYZ kalibreringen er grei. Skjevhet blir justert automatisk." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "XYZ kalibreringen er god. Godt jobba!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "XYZ kalibreringen feilet. Front kalibreringspunkt ikke nådd." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "XYZ kalibreringen feilet. Høyre front kalibreringspunkt ikke nådd." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "XYZ kalibreringen feilet. Kalibreringspunkt ikke funnet." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "XYZ kalibreringen feilet. Front kalibreringspunkt ikke nådd." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ kal. mislyktes. Vennligst rådfør med håndboken." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "XYZ kalibreringen feilet. Høyre front kalibreringspunkt ikke nådd." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" "XYZ kalibrering OK.\n" "X og Y aksen er perpendikulær. Gratulerer!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y distanse fra min." #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-korreksjon:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ja" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Du kan alltid starte Veilederen fra Kalibrering -> Veileder." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-korreksjon:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-sensor nr." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] punktforskyv." #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "og trykk på knappen" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "for filamentlast" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "for filament ut" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "ukjent" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "ukjent tilstand" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Forfriske" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Autolasting av fil. er kun tilgjengelig når fil.- sensoren er skrudd på..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Krasj oppdaget. Fortsette print?" +#~ msgid "Cutting filament" +#~ msgstr "Kutter filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "ERROR: Filament- sensor svarer ikke. Vennligst sjekk koblingen." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 eller eldre" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 eller nyere" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Løs problemet og trykk på MM-enhetens knapp." + +#~ msgid "Load all" +#~ msgstr "Last alle" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Førstelagskal." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3 system funnet på MK3S printer" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S systemvare funnet på MK3 printer" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Gjenopptar posisjon..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Gjenopptar oppvarming..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Gjenopptar..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU last feilet" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU trenger brukerinnvending." + +#~ msgid "MMU power fails" +#~ msgstr "MMU strøm feil" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Fjern filamentet og trykk valghjulet." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Oppdater din MMU2 systemvare. Venter på omstart..." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Trykk valghjulet for å fortsette oppvarming." + +#~ msgid "Runouts" +#~ msgstr "F. tomt" diff --git a/lang/po/Firmware_pl.po b/lang/po/Firmware_pl.po index 536783e28..ecfb693e3 100644 --- a/lang/po/Firmware_pl.po +++ b/lang/po/Firmware_pl.po @@ -16,150 +16,152 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 lub starszy" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 lub nowszy" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "Oczekiwano wersji %s" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Anuluj" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Ustawianie Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Wszystko OK" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Gotowe. Udanego drukowania!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfab" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Otoczenie" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Obydwa konce osi sa na szczycie?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Asyst." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Auto zerowanie" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Automatycz" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autoladowanie fil." -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Os" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Dlugosc osi" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Wstecz" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Stol" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Grzanie stolu.." #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Stol OK" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Korekta stolu" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -168,50 +170,55 @@ msgstr "" "reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Stol/Grzanie" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Stan paskow" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test paskow" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Wykryto zanik napiecia.Kontynowac?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Jasny" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Jasnosc" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibracja XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibruj Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -220,13 +227,13 @@ msgstr "" "ogranicznikow. Nacisnij, by potwierdzic." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibruje Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -235,140 +242,145 @@ msgstr "" "ogranicznikow. Nacisnij, by potwierdzic." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Zerowanie osi" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibracja" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibracja OK" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Karta wyjeta" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Wymiana filamentu" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Wymiana ok!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Wymiana ok?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Kontrola osi X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Kontrola osi Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Kontrola osi Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Kontrola stolu" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Kontrola krancowek" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Sprawdzanie pliku" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Kontrola hotendu" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Kontrola czujnikow" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Testy" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Kolor zanieczysz." #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Od spolecznosci" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Kont." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Chlodzenie" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Skopiowac wybrany jezyk?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Zderzen" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Wykr.zderzen" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Zderzenie wykryte" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -380,39 +392,46 @@ msgstr "" "trybie Normalnym" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Ciecie filamentu" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Nozyk" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Obcinanie fil." - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Data:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Sciemn" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Wylacz silniki" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -423,7 +442,7 @@ msgstr "" "z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -431,222 +450,345 @@ msgstr "" "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a " "stolikiem?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Korekcja-E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "BLAD:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Wysun filament" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Wysuwanie filamentu" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Krancowka" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Krancowka nie aktyw." #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Krancowki" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "Ekstruder" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "WentHotend:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Ekstruder - info" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "Autolad. fil." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "Akcja FS" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 lub starszy" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 lub nowszy" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Statystyki bledow" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Bledy MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falszywy alarm" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Predkosc went." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test wentylatora" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Sprawd.went." +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Konc.filamentu" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Czuj. filam." #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament wychodzi z dyszy,kolor jest ok?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. nie zaladowany" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Czujnik filamentu" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Uzyty filament" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Plik niekompletny. Kontynowac?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Konczenie druku" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Kal. 1. warstwy" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas " "montazu." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Rozwiaz problem i wcisnij przycisk na MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Przeplyw" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Przedni went. druku?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Przod [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Przedni/lewy wentyl." #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-code pociety dla innej wersji. Kontynuowac?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -654,14 +796,14 @@ msgstr "" "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code pociety dla innej drukarki. Kontynuowac?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -670,12 +812,12 @@ msgstr "" "anulowany." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code pociety dla nowszego firmware. Kontynuowac?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -683,42 +825,42 @@ msgstr "" "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "Ustawienia HW" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Grzalka/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Grzanie..." #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Grzanie wylaczone przez wyl. czasowy" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Grzanie zakonczone" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -728,7 +870,7 @@ msgstr "" "krotka kalibracje osi Z, po ktorej mozesz rozpoczac drukowanie." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -737,24 +879,45 @@ msgstr "" "ustawieniem?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Wysoka wyd" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Przeprowadze kalibracje Z." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -763,27 +926,27 @@ msgstr "" "Ustawienia - Ustawienia HW - Plyty stalowe." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Ekran informacyjny" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Wprowadz filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." @@ -791,269 +954,292 @@ msgstr "" "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij " "pokretlo." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Filament jest zaladowany?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Czy plyta stal. jest na podgrzew. stole?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iteracja" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Ost. wydruk" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Ostatnie bledy druku" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Lewa" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Lewy went hotendu?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Lewo [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Poziom jasn." #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Poziom ciem." #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Korekcja liniowa" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Ustaw. Live Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Zalad. wszystkie" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Ladowanie fil." +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Zaladuj do dyszy" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Czyszcz. koloru" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Laduje filament" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Luzne kolo pasowe" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Glosny" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "Wykryto firmware MK3 w drukarce MK3S" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "Wykryto firmware MK3S w drukarce MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "Tryb MMU" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Wznawianie pozycji." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Wznawiam nagrzewanie..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Wznawianie..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Bledy MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Blad ladowania MMU" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Bledy lad. MMU" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU wymaga uwagi uzytkownika." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Zaniki zas. MMU" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU podlaczone" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Kor. magnesow" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Menu glowne" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Zmierz. skos" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Siatka" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Poziomowanie stolu" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Tryb" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Trwa zmiana trybu..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "Silnik" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Ruch osi X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Ruch osi Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Ruch osi Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Ruch osi" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "N/D" @@ -1063,155 +1249,163 @@ msgid "New firmware version available:" msgstr "Dostepna nowa wersja firmware:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nie" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Brak karty SD" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Brak ruchu." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Brak" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nie podlaczono" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Nie kreci sie" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Nagrzewam dysze dla PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Teraz zdejmij wydruk testowy ze stolu." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Dysza" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Sr. dyszy" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Wyl" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, " "itp." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Wl" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "1-raz" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "Kalibracja PID" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "Kal. PID zakonczona" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "Kalibracja PID" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Grzanie sondy PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "Kalib. PINDA" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Kalibracja temperaturowa nieudana" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1219,19 +1413,36 @@ msgstr "" "Kalibracja PINDA zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia " "-> Kalib. PINDA" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauza" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Wstrzym. wydruku" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1240,7 +1451,7 @@ msgstr "" "punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1254,28 +1465,28 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Sprawdz polaczenie czujnika IR, rozladuj filament, jesli zaladowany." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Sprawdz:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Oczysc powierzchnie druku i nacisnij pokretlo." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1284,51 +1495,46 @@ msgstr "" "zaladowac." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Najpierw zaladuj filament." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Nacisnij pokretlo aby rozladowac filament" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Wyciagnij filament teraz" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Wyciagnij filament i wcisnij pokretlo." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Najpierw usun zabezpieczenia transportowe" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Prosze najpierw uruchomic kalibracje XYZ" @@ -1337,113 +1543,109 @@ msgstr "Prosze najpierw uruchomic kalibracje XYZ" msgid "Please unload the filament first, then repeat this action." msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Prosze zaktualizowac" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Prosze czekac" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Zaniki zasil." #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Grzanie" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Nagrzej dysze!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Nagrzewanie dyszy. Prosze czekac." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Nagrzew. obciecia" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Nagrzew. wysuniecia" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Nagrzew.do ladowania" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Nagrzew. do rozlad." +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Wcisnij pokretlo" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Druk przerwany" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "WentWydruk:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Druk z karty SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Druk wstrzymany" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Czas druku" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "Adr. IP drukarki:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1452,77 +1654,122 @@ msgstr "" "Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "Port RPi" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Tyl [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Wznawianie wydruku" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Zmien nazwe" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset kalibr. XYZ" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Wznowic wydruk" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Wznawianie druku" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Prawa" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Prawo [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1530,36 +1777,41 @@ msgstr "" "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. " "Kontynuowac?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Konce f" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "Karta SD" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ZATRZYMANO." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Szukam punktu kalib. na stole" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Wybierz" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1568,67 +1820,74 @@ msgstr "" "ekranowym." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Wybierz ekstruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Wybierz filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Wybor jezyka" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Selftest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Selftest startuje" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Blad selftest!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selftest nieudany" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez " "krancowek" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info o sensorach" @@ -1638,31 +1897,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Czujnik sprawdzony, wyciagnij filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Ustaw temperature:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Ustawienia" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Znaczny skos" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Plyta" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1675,18 +1934,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Pokaz krancowki" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Cichy" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Lekki skos" @@ -1700,113 +1959,172 @@ msgstr "" "100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Wykryto problem, wymuszono poziomowanie osi Z." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sort." #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sortowanie plikow" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Dzwiek" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Predkosc" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Kreci sie" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statystyki" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Cichy" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Plyty stalowe" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Przerwanie druku" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Restr." #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Wsparcie" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Zamieniono" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatura" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperatury" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1817,7 +2135,7 @@ msgstr "" "Kalibracja)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1826,66 +2144,102 @@ msgstr "" "Kroki, sekcja Kalibracja." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Czas" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "Wyl. czas." #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Suma" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Suma bledow" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Zuzycie filamentu" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Laczny czas druku" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Strojenie" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Rozladowanie fil" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Rozladowuje filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Napiecia" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1898,221 +2252,280 @@ msgstr "" "trybie Stealth" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Czekam na uzytk. ..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Czekam az spadnie temp. sondy PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Oczekiwanie na wychlodzenie dyszy i stolu" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Ostrzez" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Ostrzezenie: plyta glowna ulegla zmianie." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Rozladowanie fil. ok?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Blad polaczenia" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Asystent" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Korekcja-X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Szczegoly kal. XYZ" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic " "montaz drukarki." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic " "montaz drukarki." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Dystans od 0 w osi Y" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Korekcja-Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Tak" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Korekcja-Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Ilosc Pomiarow" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] przesun.punktu" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "i nacisnij pokretlo" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "aby zaladow. fil." #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "aby rozlad. filament" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "nieznane" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "Stan nieznany" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Odswiezac" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Wykryto zderzenie. Wznowic druk?" +#~ msgid "Cutting filament" +#~ msgstr "Obcinanie fil." + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 lub starszy" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 lub nowszy" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Rozwiaz problem i wcisnij przycisk na MMU." + +#~ msgid "Load all" +#~ msgstr "Zalad. wszystkie" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Kal. 1. warstwy" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "Wykryto firmware MK3 w drukarce MK3S" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "Wykryto firmware MK3S w drukarce MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Wznawianie pozycji." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Wznawiam nagrzewanie..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Wznawianie..." + +#~ msgid "MMU load failed" +#~ msgstr "Blad ladowania MMU" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU wymaga uwagi uzytkownika." + +#~ msgid "MMU power fails" +#~ msgstr "Zaniki zas. MMU" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Wyciagnij filament i wcisnij pokretlo." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy." + +#~ msgid "Runouts" +#~ msgstr "Konce f" diff --git a/lang/po/Firmware_ro.po b/lang/po/Firmware_ro.po index a07f11bdf..7e81ce6a6 100644 --- a/lang/po/Firmware_ro.po +++ b/lang/po/Firmware_ro.po @@ -16,152 +16,154 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 / mai vechi" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 / mai nou" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "nivel %s asteptat" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Anuleaza" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Ajustare Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Totul OK" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Totul este OK. Distractie placuta!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Ambiental" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Este axa Z aliniata sus?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Asist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Put. auto" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Incarcarea automata de fil. e valabila doar cand senzorul este pornit..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Incarcarea automata de filament pornita; apasati butonul si incarcati " "filamentul" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Axa" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Lungime axa" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Inapoi" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Pat" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Patul se incalzeste" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Pat incalzit" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Nivelare pat" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -170,50 +172,55 @@ msgstr "" "reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Incalzitor/Pat" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Status curele" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test curele" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Pana de curent. Continuati printul?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Maxim" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Luminozitate ecran" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Calibrare XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Calibrare Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -222,13 +229,13 @@ msgstr "" "butonul cand este gata." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Calibrare Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -237,140 +244,145 @@ msgstr "" "butonul cand este gata." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Calibrare home" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Calibrare" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Calibrare gata" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Card scos" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Schimba filamentul" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Schimbare cu succes!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Schimbat corect?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Verificare axa X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Verificare axa Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Verificare axa Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Verificare pat" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Verif. endstop-uri" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Verif. fisier" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Verificare hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Verificare senzori" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Verificari" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Culoare gresita" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Comunitate" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Racire" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Copiaza limba selectata?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Coliz." #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Det.coliziune" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Coliziune detectata." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -381,39 +393,46 @@ msgstr "" "doar in modul normal" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Taie filamentul" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Filamentul se taie" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Data:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Minim" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Oprire steppere" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -424,7 +443,7 @@ msgstr "" "manual, capitolul First steps, sectiunea First layer calibration." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -432,222 +451,345 @@ msgstr "" "Vreti sa repetati ultimul pas pentru a reajusta distanta dintre varf si " "suprafata de print?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "EROARE:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "EROARE: Senzorul de filament nu merge, verificati conexiunea." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Scoate filament" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Se scoate filamentul" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Endstop neatins" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Endstop-uri" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Vent. extruder:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "Info. extruder" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "Autoload fil." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "Actiune FS" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 / mai vechi" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 / mai nou" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Statistici erori" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Stat. erori MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "nu detect. schimbare" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Viteza vent." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventilator" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Verif. vent." +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Epuizari fil." #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Senzor fil." #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Fil. curge si are culoarea corecta?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Fil. nu e incarcat" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Senz. de filament" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Filament folosit" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Fisier incomplet. Continua oricum?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Finalizare miscari" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Cal. first layer" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Mai intai, voi rula testele automate pentru a verifica cele mai intalnite " "probleme de asamblare." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Rezolvati problema si apasati butonul pe unitatea MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Vent. print?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Fata [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Ventilatoarele sunt" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "Versiune de G-code incorecta. Continuati?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -656,14 +798,14 @@ msgstr "" "anulat." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code pregatit pentru un alt tip de printer. Continuati?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -672,12 +814,12 @@ msgstr "" "nou. Print anulat." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code pregatit pentru firmware mai nou. Continuati?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -686,42 +828,42 @@ msgstr "" "Print anulat." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "Setup HW" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Incalzitor/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Incalzire" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Incalzirea dezactivata de timer-ul de siguranta" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Incalzirea gata." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -731,7 +873,7 @@ msgstr "" "proces de setup in care axa Z va fi calibrata. Apoi, vei fi gata sa printezi." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -740,24 +882,45 @@ msgstr "" "automate si calibrarile?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Put. max" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Voi rula calibrarea XYZ acum. Va dura aprox. 12 minute." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Voi rula calibrarea Z acum." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -766,295 +929,318 @@ msgstr "" "- Suprafete print." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Ecran informatii" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Incarca filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "Infige filamentul (nu-l incarca) in extruder si apasa butonul." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Este filamentul incarcat?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Este suprafata de print pe pat?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Iteratie" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Ultimul print" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Err. ultimului print" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Stanga" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Vent. hotend?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Stanga [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Lum. maxim" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Lum. minim" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Corectie lin." #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Reglare Z live" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Incarcati toate" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Incarca filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Incarca extruder" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Incarcare culoare" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Incarcare filament" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Fulie slabita" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Tare" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "Firmware MK3 detectat pe imprimanta MK3S" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "Firmware MK3S detectat pe imprimanta MK3" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "Mod MMU" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Se reia pozitia..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Restabilire temperatura..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Reluare..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Erori MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "Eroare incarcare MMU" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "Err. incarc MMU" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU necesita atentia utilizatorului." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "Err. MMU curent" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 conectat" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Comp. magneti" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Meniu principal" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Distorsiune" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Masurare distanta de referinta pentru punctul de calib." #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Calibrare mesh" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Schimbare mod in progres..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Miscare X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Miscare Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Miscare Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Miscare axe" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1064,153 +1250,161 @@ msgid "New firmware version available:" msgstr "Vers. de firmware noua disponibila:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nu" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Fara card SD" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Fara miscare." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "N/A" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nu este conectat" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Nu se roteste" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Acum voi calibra distanta dintre varf si suprafata patului." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Acum voi preincalzi extruder-ul pentru PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Acum inlaturati printul de test de pe suprafata de print." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Varf" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Diam. varf" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "Setari vechi detectate. PID, Esteps etc. de baza vor fi setate." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "O data" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "Calibrare PID" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "Calibrare PID gata" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "Calibrare PID" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Incalzire PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "Cal. PINDA" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Calibrarea temperaturii a esuat" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1218,19 +1412,36 @@ msgstr "" "Calibrarea PINDA s-a terminat si este activa. Poate fi dezactivata din " "meniul Setari->Cal. PINDA" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauza" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pauza print" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1239,7 +1450,7 @@ msgstr "" "Daca varful prinde hartia, opriti imediat imprimanta." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1253,22 +1464,22 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Verificati senzorul IR, scoateti filamentul daca exista." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Verificati:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Curatati patul si apoi apasati butonul pentru a continua." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Curatati varful pentru calibrare. Apasati butonul cand terminati." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1276,7 +1487,7 @@ msgstr "" "incarca." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1285,50 +1496,45 @@ msgstr "" "pentru a-l incarca." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Va rugam incarcati filamentul mai intai." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Deschideti idler-ul si scoateti filamentul manual." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Asezati suprafata de print pe pat." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Apasati butonul pentru a scoate filamentul." #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Va rugam scoateti filamentul imediat" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Va rugam scoateti filamentul, iar apoi apasati butonul." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Va rugam scoateti protectiile de transport mai intai." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Va rugam indepartati suprafata de print de pe pat." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Va rugam rulati calibrarea XYZ mai intai." @@ -1337,113 +1543,109 @@ msgstr "Va rugam rulati calibrarea XYZ mai intai." msgid "Please unload the filament first, then repeat this action." msgstr "Va rugam mai intai sa scoateti filamentul, apoi incercati din nou." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Va rugam actualizati firmware-ul MMU2. Se asteapta resetarea." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Va rugam actualizati" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Va rog asteptati" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Err. alimentare" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Preincalzire" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Preincalziti varful!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Preincalzire extruder. Asteptati, va rugam." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Preincalzire..." #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Preincalzire..." #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Preincalzire load" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Preincalzire unload" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Apasati butonul" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Apasati butonul pentru a preincalzi extruder-ul si continuati." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Apasati butonul pentru a restabili temperatura extruder-ului." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Print anulat" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Vent. print:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Printare de pe SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Print oprit" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Durata print" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "IP imprimanta:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1452,12 +1654,12 @@ msgstr "" "capitolul First steps, sectiunea Calibration flow." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Diametrul varfului este diferit de cel din G-code. Continuati?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1465,66 +1667,111 @@ msgstr "" "Diametrul varfului este diferit de cel din G-code. Va rugam verificati " "valoarea in setari. Print anulat." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "Port RPi" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Spate [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Recuperare print" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Scoateti filamentul vechi si apasati butonul pentru a incarca filamentul nou." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Redenumeste" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Reset." +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset. calibr. XYZ" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Continua print" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Reluare print..." +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Dreapta" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Dreapta [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1532,36 +1779,41 @@ msgstr "" "Rularea Wizard-ului va sterge rezultatele curente ale calibrarii si va porni " "de la inceput. Continuati?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "Card SD" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "OPRIT." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Se cauta punctele de calibrare" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Selecteaza" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1570,67 +1822,74 @@ msgstr "" "ecran." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Alege extruderul:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Select. filamentul:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Selectati limba" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" "Selectati temperatura de preheat a extruder-ului pentru materialul ales." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Selectati temp. potrivita pentru materialul curent." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Testare automata OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Start Autotestare" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Testare automata" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Err. test. automata!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Autotestare esuata" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Testarea automata va fi rulata pentru a calibra sensorless rehoming-ul." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Info. senzori" @@ -1640,31 +1899,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Senzorul a fost verificat, scoate filamentul." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Setati temperatura:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Setari" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Dist. severa" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Suprafata" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1677,18 +1936,18 @@ msgstr "" "%cReset." #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Stare endstop-uri" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Silent." #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Dist. usoara" @@ -1702,113 +1961,172 @@ msgstr "" "care pot fi sortate este 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "A fost intalnita o problema, calibrarea Z a fost initiata..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sortare" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sortare fisiere..." #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Sunet" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Viteza" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Se roteste" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" "Temp. ambient. stabila (21-26C) si o suprafata de lucru rigida necesare." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistici" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Silent." #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Suprafete print" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Oprire print" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Informatii" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "inversate" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatura" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturi" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1818,7 +2136,7 @@ msgstr "" "inaltimea optima. Folositi pozele din handbook (capitolul Calibration)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1827,66 +2145,102 @@ msgstr "" "First steps, sectiunea Calibration flow." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Data" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Total erori" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filament total" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Durata totala print" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Optiuni" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Descarca filament" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Scoatere filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verificarea a esuat, scoateti filamentul si incercati din nou." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Voltaje" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1899,99 +2253,99 @@ msgstr "" "modul silentios" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Se asteapta..." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Se asteapta racirea probei PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Se ateapta racirea extruder-ului si a patului" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Avert." #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Atentie: tipul imprimantei si al placii de baza s-a schimbat." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Atentie: tipul placii de baza s-a schimbat." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Atentie: tipul imprimantei s-a schimbat." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Filamentul a fost scos cu succes?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Eroare de cablare" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Corect. X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Detalii cal. XYZ" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "Calibrarea XYZ in regula. Distorsiunea va fi corectata automat." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" "Calibrarea XYZ in regula. Axele X/Y sunt distorsionate putin. Felicitari!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "Calibrarea XYZ compromisa. Punctele de calibrare din fata nu pot fi atinse." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" @@ -1999,124 +2353,180 @@ msgstr "" "atinse." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" "Calibrarea XYZ a esuat. Un punct de calibrare a patului nu a fost gasit." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Calibrarea XYZ a esuat. Punctele de calibrare din fata nu pot fi atinse." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Calibrarea XYZ a esuat. Va rugam consultati manualul." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Calibrarea XYZ a esuat. Punctele de calibrare din fata dreapta nu pot fi " "atinse." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Calibrarea XYZ ok. Axele X/Y sunt perpendiculare. Felicitari!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Distanta Y de la min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Corect. Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Da" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Puteti oricand sa reluati Wizard-ul din Calibrare -> Wizard." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Corect. Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Nr. Z-probe" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "compensare origine" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "si apasa butonul" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "a incarca filament" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "a scoate filament" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "necunoscut" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "vers. necunoscuta" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Reimprospata" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Incarcarea automata de fil. e valabila doar cand senzorul este pornit..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Coliziune detectata. Continuati printul?" +#~ msgid "Cutting filament" +#~ msgstr "Filamentul se taie" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "EROARE: Senzorul de filament nu merge, verificati conexiunea." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 / mai vechi" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 / mai nou" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Rezolvati problema si apasati butonul pe unitatea MMU." + +#~ msgid "Load all" +#~ msgstr "Incarcati toate" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Cal. first layer" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "Firmware MK3 detectat pe imprimanta MK3S" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "Firmware MK3S detectat pe imprimanta MK3" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Se reia pozitia..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Restabilire temperatura..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Reluare..." + +#~ msgid "MMU load failed" +#~ msgstr "Eroare incarcare MMU" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU necesita atentia utilizatorului." + +#~ msgid "MMU power fails" +#~ msgstr "Err. MMU curent" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Va rugam scoateti filamentul, iar apoi apasati butonul." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Va rugam actualizati firmware-ul MMU2. Se asteapta resetarea." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Apasati butonul pentru a restabili temperatura extruder-ului." diff --git a/lang/po/Firmware_sk.po b/lang/po/Firmware_sk.po index 2d0aa0c0d..b9f6c4f75 100644 --- a/lang/po/Firmware_sk.po +++ b/lang/po/Firmware_sk.po @@ -16,151 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 a starsie" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 a novsie" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "Ocakavana verzia %s" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Zrusit" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Doladenie Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Vsetko OK" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Vsetko je hotove!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Abeceda" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Okolie" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Dosli oba Z voziky k hornemu dorazu?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "Asist." #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Automat." #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autozav. filamentu" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" -"Autom. zavedenie filamentu je mozne len pri zapnutom senzore filamentu..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Autom. zavedenie filamentu aktivne, stlacte tlacidlo a vlozte filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Os" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Dlzka osi" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Spat" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Podlozka" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Zahrievanie podlozky" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Podlozka OK." #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Korekcie podlozky" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -168,50 +170,55 @@ msgstr "" "Kalibracia Z zlyhala. Sensor nezopol. Znecistena tryska? Cakam na reset." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Podlozka/Zohrievanie" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Stav remena" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Test remena" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Nastal vypadok prudu. Obnovit tlac?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Jasne" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Podsvietenie" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibracia XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrovat Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -220,13 +227,13 @@ msgstr "" "tlacidlom." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibrujem Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -235,140 +242,145 @@ msgstr "" "tlacidlom." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibr. vychodziu p." #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibracia" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibracia OK" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Karta vysunuta" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Vymenit filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Zmena uspesna!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Vymena ok?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Kontrola osi X" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Kontrola osi Y" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Kontrola osi Z" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Kontrola podlozky" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Kontrola endstopu" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Kontrolujem subor" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Kontrola hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Kontrola senzorov" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Kontrola" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Nespravna farba" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Komunitny prekl." #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Pokr." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Schladit" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kopirovat vybrany jazyk?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Naraz" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Det. narazu" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Zisteny naraz." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -379,39 +391,46 @@ msgstr "" "Normal mode" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Odstrihnut" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Strihanie" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Strihanie filam." - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "Temny" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Vypnut motory" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -422,7 +441,7 @@ msgstr "" "manualu, kapitola Zaciname, odstavec Nastavenie prvej vrstvy." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -430,222 +449,345 @@ msgstr "" "Chcete opakovat posledny krok a pozmenit vzdialenost medzi tryskou a " "podlozkou?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "Korekcia E:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "CHYBA:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "CHYBA: Filament senzor nereaguje, skontrolujte prosim zapojenie." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Vysunut fil." -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Vysuvam filament" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Koncovy spinac" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Kon. spinac nezopol" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Konc. spinace" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Lavy vent.:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autozav." +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS reakcia" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS 0.3 a starsie" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS 0.4 a novsie" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Zlyhanie" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Zlyhanie MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Falosne spustenie" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Rychlost vent." #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Test ventilatora" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Kontr. vent." +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Vypadky filam." #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "Fil. senzor" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Filament vytlaceny a spravnej farby?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Filament nezavedeny" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "Senzor filamentu" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Spotrebovany filam." #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Subor nekompletny. Pokracovat?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Dokoncovanie pohybu" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Kal. prvej vrstvy" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Najskor pomocou selftestu skontrolujem nejcastejsie chyby vznikajuce pri " "zostaveni tlaciarne." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Opravte chybu a potom stlacte tlacidlo na jednotke MMU." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Prietok" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Predny tlacovy vent?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "Vpredu [μm]" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Predny/lavy vent." #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-code pripraveny pre inu uroven. Pokracovat?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -653,14 +795,14 @@ msgstr "" "G-code pripraveny pre inu verziu. Vygenerujte G-code znova. Tlac zrusena." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-code je pripraveny pre iny typ tlaciarne. Pokracovat?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -669,12 +811,12 @@ msgstr "" "zrusena." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-code je pripraveny pre novsi firmware. Pokracovat?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -683,42 +825,42 @@ msgstr "" "zrusena." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW nastavenie" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Zohr./Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Zahrievanie" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Zohrievanie prerusene bezpecnostnym casovacom." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Zahrievanie OK." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -728,7 +870,7 @@ msgstr "" "nastavenia, v ktorom skalibrujem os Z. Potom budete moct zacat tlacit." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -737,24 +879,45 @@ msgstr "" "previedla kalibracnym procesom?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Vys. vykon" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "Teraz urobim XYZ kalibraciu. Zaberie to priblizne 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Teraz urobim kalibraciu Z." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -763,295 +926,318 @@ msgstr "" "Platne" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Informacie" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Vlozte filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "Vlozte filament (nezavadzajte) do extruderu a stlacte tlacidlo" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Je filament zavedeny?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Je platna na podlozke?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "Opakovanie" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Posledna tlac" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Zlyhanie posl. tlace" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Vlavo" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Lavy vent na tryske?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Vlavo [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Normalne" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Stlmene" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Korekcia lin." #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Doladenie osi Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Zaviest vsetko" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Zaviest filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Zaved. do trysky" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Cistenie farby" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Zavedenie filamentu" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Uvolnena remenica" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Hlasny" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3 firmware na MK3S tlaciarni" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S firmware na MK3 tlaciarni" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU mod" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Pokracujem v tlaci..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Pokracujem v nahrievani..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Pokracujem..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "Zlyhanie MMU" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU zaved. zlyhalo" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU zlyhalo" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU potrebuje zasah uzivatela." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU vyp. prudu" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 pripojene" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Komp. magnetu" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Hlavna ponuka" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Merane skos." #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Meriam referencnu vysku kalibracneho bodu" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "Mod" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Prebieha zmena modu..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Posunut X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Posunut Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Posunut Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Posunut os" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1061,153 +1247,161 @@ msgid "New firmware version available:" msgstr "Vysla nova verzia firmware:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nie" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Ziadna SD karta" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Bez pohybu." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Ziadne" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Nezapojene" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Netoci sa" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "Teraz skalibrujem vzdialenost medzi koncom trysky a povrchom podlozky." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Teraz predhrejem trysku pre PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Teraz odstrante testovaci vytlacok z platne." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Tryska" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Tryska" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Vyp" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "Neplatne hodnoty nastavenia. Bude pouzite predvolene PID, Esteps atd." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "Zap" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "Raz" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kal." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kal. ukoncena" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibracia" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "Nahrievanie PINDA" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "Teplotna kalibracia zlyhala" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1215,19 +1409,36 @@ msgstr "" "PINDA kalibracia dokoncena a je teraz aktivna. Da je mozno deaktivovat v " "menu Nastavenie->PINDA kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Pauza" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pozastavit tlac" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1237,7 +1448,7 @@ msgstr "" "tlacidlom X." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1251,30 +1462,30 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Prosim skontrolujte zapojenie IR senzoru a vyberte filament" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Skontrolujte:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Prosim ocistite podlozku a stlacte tlacidlo." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" "Pre uspesnu kalibraciu ocistite prosim tlacovu trysku. Potvrdte tlacidlom." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" "Prosim vlozte filament do extruderu a stlacte tlacidlo k jeho zavedeniu" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1283,50 +1494,45 @@ msgstr "" "zavedeniu" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Prosim najskor zavedte filament" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Prosim otvorte idler a manualne odstrante filament." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Umiestnite prosim platnu na podlozku" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Pre vysunutie filamentu stlacte prosim tlacidlo" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Prosim vyberte urychlene filament" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Prosim vyberte filament a potom stlacte tlacidlo." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Najskor prosim odstrante prevozne suciastky." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Odstrante prosim platnu z pozdlozky." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Nejskor spustte kalibraciu XYZ." @@ -1335,113 +1541,109 @@ msgstr "Nejskor spustte kalibraciu XYZ." msgid "Please unload the filament first, then repeat this action." msgstr "Prosim vyberte filament a zopakujte tuto akciu" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Prosim aktualizujte firmware v vasej MMU2 jednotke. Cakam na reset." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Aktualizujte prosim." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Cakajte prosim" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Vypadky prudu" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Predohrev" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Predhrejte trysku!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Predhrev trysky. Prosim cakajte." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Predhrev k strihu" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Predhrev k vysunutiu" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Predhrev k zavedeniu" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Predhrev k vybratiu" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Stlacte tlacidlo" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Pre nahriatie trysky a pokracovanie stlacte tlacidlo." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Pre pokracovanie nahrievania trysky stlacte tlacidlo." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Tlac prerusena" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Tlacovy vent.:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Tlac z SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Tlac pozastavena" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Cas tlace" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "IP adr. tlaciarne:" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1450,12 +1652,12 @@ msgstr "" "kapitola Zaciname, odstavec Postup kalibracie." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Priemer trysky tlaciarne sa lisi od G-code. Pokracovat?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1463,65 +1665,110 @@ msgstr "" "Priemer trysky tlaciarne sa lisi od G-code. Prosim skontrolujte nastavenie. " "Tlac zrusena." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Vzadu [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Obnovovanie tlace" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "Vyberte stary filament a stlacte tlacidlo pre zavedenie noveho." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Premenovat" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Reset XYZ kalibr." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Pokracovat" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Obnovenie tlace" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Vpravo" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Vpravo [μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1529,101 +1776,113 @@ msgstr "" "Spustenie Sprievodcu vymaze ulozene vysledky vsetkych kalibracii a spusti " "kalibracny proces od zaciatku. Pokracovat?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD karta" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "ZASTAVENE." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Hladam kalibracny bod podlozky" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Vybrat" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "Zvolte filament pre kalibraciu prvej vrstvy z nasledujuceho menu" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Vyberte extruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Zvolte filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Vyber jazyka" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Vyberte teplotu predohrevu trysky ktora zodpoveda vasmu materialu." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Zvolte teplotu, ktora odpoveda vasmu materialu." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Chyba Selftestu!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Selftest zlyhal" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "Pre kalibraciu presneho rehomovania bude teraz spusteny selftest." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Senzor info" @@ -1633,31 +1892,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Senzor overeny, vyberte filament." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Nastavte teplotu:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Nastavenie" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Tazke skos." #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Platna" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1670,18 +1929,18 @@ msgstr "" "%cReset" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Stav konc. spin." #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Tichy" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Lahke skos." @@ -1695,112 +1954,171 @@ msgstr "" "zoradenie je 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Vyskytol sa problem, zarovnam os Z ..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Triedit" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Triedenie suborov" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Zvuk" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Rychlost" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Toci sa" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "Je vyzadovana stabilna izbova teplota 21-26C a pevna podlozka." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistika" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Tichy" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Platne" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Zastavit tlac" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Prisne" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "Podpora" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Prehodene" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Teplota" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Teploty" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1810,7 +2128,7 @@ msgstr "" "vysku. Postupujte podla obrazku v handbooku (kapitola Kalibracia)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1819,66 +2137,102 @@ msgstr "" "Zaciname, sekcia Postup kalibracie." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Cas" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "Celkom" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Celkom zlyhani" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Filament celkom" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Celkovy cas tlace" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Ladit" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Vybrat filament" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Vysuvam filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Overenie zlyhalo, vyberte filament a skuste znovu." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Napatie" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1891,221 +2245,277 @@ msgstr "" "Stealth mode" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Caka sa na uzivatela" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Cakanie na schladnutie PINDA" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Cakanie na schladenie trysky a podlozky." #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Varovat" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Varovanie: doslo k zmene typu tlaciarne a motherboardu." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Varovanie: doslo k zmene typu motherboardu." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Varovanie: doslo k zmene typu tlaciarne." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Bolo vysunutie filamentu uspesne?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Chyba zapojenia" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Sprievodca" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "Korekcia X:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "Detaily XYZ kal." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" "Kalibracia XYZ v poradku. Skosenie bude automaticky vyrovnane pri tlaci." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "Kalibracia XYZ v poriadku. X/Y osi mierne skosene. Dobra praca!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "Kalibracia XYZ nepresna. Predne kalibracne body su velmi vpredu." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "Kalibracia XYZ nepresna. Pravy predny bod je velmi vpredu." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "Kalibracia XYZ zlyhala. Kalibracny bod podlozky nenajdeny." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" "Kalibracia XYZ zlyhala. Predne kalibracne body velmi vpredu. Zrovnajte " "tlaciaren." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "Kalibracia XYZ zlyhala. Nahliadnite do manualu." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "Kalibracia XYZ zlyhala. Pravy predny bod velmi vpredu. Zrovnajte tlaciaren." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "Kalibracia XYZ v poradku. X/Y osi su kolme. Gratulujem!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y vzdialenost od min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Korekcia Y:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ano" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" "Sprievodcu mozete kedykolvek znovu spustit z menu Kalibracia -> Sprievodca" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Korekcia Z:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Pocet merani Z" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] odsadenie bodu" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "a stlacte tlacidlo" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "k zavedeniu filam." #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "k vybraniu filamentu" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "neznamy" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "neznamy stav" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Obnovit" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "" +#~ "Autom. zavedenie filamentu je mozne len pri zapnutom senzore filamentu..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Zisteny naraz. Obnovit tlac?" +#~ msgid "Cutting filament" +#~ msgstr "Strihanie filam." + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "CHYBA: Filament senzor nereaguje, skontrolujte prosim zapojenie." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS 0.3 a starsie" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS 0.4 a novsie" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Opravte chybu a potom stlacte tlacidlo na jednotke MMU." + +#~ msgid "Load all" +#~ msgstr "Zaviest vsetko" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Kal. prvej vrstvy" + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3 firmware na MK3S tlaciarni" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S firmware na MK3 tlaciarni" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Pokracujem v tlaci..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Pokracujem v nahrievani..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Pokracujem..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU zaved. zlyhalo" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU potrebuje zasah uzivatela." + +#~ msgid "MMU power fails" +#~ msgstr "MMU vyp. prudu" + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Prosim vyberte filament a potom stlacte tlacidlo." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Prosim aktualizujte firmware v vasej MMU2 jednotke. Cakam na reset." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Pre pokracovanie nahrievania trysky stlacte tlacidlo." diff --git a/lang/po/Firmware_sl.po b/lang/po/Firmware_sl.po index 79b794aff..46b1a7140 100644 --- a/lang/po/Firmware_sl.po +++ b/lang/po/Firmware_sl.po @@ -16,352 +16,365 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr "" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr "" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr "" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "" - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." msgstr "" #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." msgstr "" #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "" #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "" #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "" #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -369,39 +382,46 @@ msgid "" msgstr "" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -410,294 +430,417 @@ msgid "" msgstr "" #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" msgstr "" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "" - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "" #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "" - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." msgstr "" #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." msgstr "" #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "" #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "" #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -705,7 +848,7 @@ msgid "" msgstr "" #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -714,319 +857,363 @@ msgstr "" "skozi postopek nastavitve?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "" +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." msgstr "" #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "" - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "" #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "" #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1036,178 +1223,203 @@ msgid "New firmware version available:" msgstr "" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "" #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "" #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "" #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "" +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "" #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "" #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." msgstr "" +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." msgstr "" #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1219,78 +1431,73 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "" #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "" #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "" #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." msgstr "" #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "" #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "" #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "" #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "" - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "" #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "" #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "" @@ -1299,289 +1506,342 @@ msgstr "" msgid "Please unload the filament first, then repeat this action." msgstr "" -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "" - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "" #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "" #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "" -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "" - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." msgstr "" #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." msgstr "" +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "" #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" msgstr "" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "" #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." msgstr "" #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "" #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "" +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "" @@ -1591,31 +1851,31 @@ msgid "Sensor verified, remove the filament now." msgstr "" #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1624,18 +1884,18 @@ msgid "" msgstr "" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "" @@ -1647,112 +1907,171 @@ msgid "" msgstr "" #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "" #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1760,73 +2079,109 @@ msgid "" msgstr "" #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." msgstr "" #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "" #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1835,210 +2190,210 @@ msgid "" msgstr "" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "" #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "" #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "" #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "" #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "" #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "" #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "" diff --git a/lang/po/Firmware_sv.po b/lang/po/Firmware_sv.po index 28234e4c5..761418ed1 100644 --- a/lang/po/Firmware_sv.po +++ b/lang/po/Firmware_sv.po @@ -16,150 +16,153 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #. MSG_IR_03_OR_OLDER c=18 -#: ../../Firmware/fsensor.cpp:178 ../../Firmware/messages.cpp:161 +#: ../../Firmware/Filament_sensor.cpp:287 +#: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 msgid " 0.3 or older" msgstr " 0.3 el äldre" #. MSG_IR_04_OR_NEWER c=18 -#: ../../Firmware/fsensor.cpp:180 ../../Firmware/messages.cpp:160 +#: ../../Firmware/Filament_sensor.cpp:289 +#: ../../Firmware/Filament_sensor.cpp:365 ../../Firmware/messages.cpp:164 msgid " 0.4 or newer" msgstr " 0.4 el nyare" #. MSG_SELFTEST_FS_LEVEL c=20 -#: ../../Firmware/ultralcd.cpp:7044 +#: ../../Firmware/ultralcd.cpp:7035 msgid "%s level expected" msgstr "%s nivå förväntad" #. MSG_CANCEL c=10 -#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1976 -#: ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/messages.cpp:18 ../../Firmware/ultralcd.cpp:1980 +#: ../../Firmware/ultralcd.cpp:3806 msgid ">Cancel" msgstr ">Avbryt" #. MSG_BABYSTEPPING_Z c=15 #. Beware: must include the ':' as its last character -#: ../../Firmware/ultralcd.cpp:2678 +#: ../../Firmware/ultralcd.cpp:2668 msgid "Adjusting Z:" msgstr "Justerar Z:" #. MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ../../Firmware/ultralcd.cpp:7321 +#: ../../Firmware/ultralcd.cpp:7311 msgid "All correct" msgstr "Allt korrekt" #. MSG_WIZARD_DONE c=20 r=3 -#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:4179 -#: ../../Firmware/ultralcd.cpp:4188 +#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4133 +#: ../../Firmware/ultralcd.cpp:4142 msgid "All is done. Happy printing!" msgstr "Allt är klart. God utskrift!" #. MSG_SORT_ALPHA c=8 -#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4402 msgid "Alphabet" msgstr "Alfabet" #. MSG_ALWAYS c=6 -#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4316 +#: ../../Firmware/messages.cpp:8 ../../Firmware/ultralcd.cpp:4287 msgid "Always" msgstr "" #. MSG_AMBIENT c=14 -#: ../../Firmware/ultralcd.cpp:1413 +#: ../../Firmware/ultralcd.cpp:1406 msgid "Ambient" msgstr "Omgivande" #. MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2991 +#: ../../Firmware/ultralcd.cpp:2981 msgid "Are left and right Z~carriages all up?" msgstr "Är båda Z-vagnarna helt uppe?" #. MSG_SOUND_BLIND c=7 -#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4467 +#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:4457 msgid "Assist" msgstr "" #. MSG_AUTO c=6 -#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:161 ../../Firmware/ultralcd.cpp:5862 msgid "Auto" msgstr "" #. MSG_AUTO_HOME c=18 -#: ../../Firmware/Marlin_main.cpp:3268 ../../Firmware/messages.cpp:9 -#: ../../Firmware/ultralcd.cpp:4908 +#: ../../Firmware/Marlin_main.cpp:3261 ../../Firmware/messages.cpp:9 +#: ../../Firmware/ultralcd.cpp:4871 msgid "Auto home" msgstr "Auto hem" #. MSG_AUTO_POWER c=10 -#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:5787 +#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:5777 msgid "Auto power" msgstr "Auto kraft" #. MSG_AUTOLOAD_FILAMENT c=18 -#: ../../Firmware/ultralcd.cpp:5580 +#: ../../Firmware/ultralcd.cpp:5584 msgid "AutoLoad filament" msgstr "Autoladda filament" -#. MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3557 -msgid "" -"Autoloading filament available only when filament sensor is turned on..." -msgstr "Autoladdning av fil. är endast möjligt när fil. sensorn är aktiv..." - #. MSG_AUTOLOADING_ENABLED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2309 +#: ../../Firmware/ultralcd.cpp:2301 msgid "" "Autoloading filament is active, just press the knob and insert filament..." msgstr "" "Autoladdning filament är aktiv, tryck på knappen och sätt i filament..." +#. MSG_PROGRESS_AVOID_GRIND c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:16 +#: ../../Firmware/mmu2_progress_converter.cpp:42 +msgid "Avoiding grind" +msgstr "" + #. MSG_SELFTEST_AXIS c=16 -#: ../../Firmware/ultralcd.cpp:7023 +#: ../../Firmware/ultralcd.cpp:7014 msgid "Axis" msgstr "Axel" #. MSG_SELFTEST_AXIS_LENGTH c=20 -#: ../../Firmware/ultralcd.cpp:7022 +#: ../../Firmware/ultralcd.cpp:7013 msgid "Axis length" msgstr "Axellängd" #. MSG_BACK c=18 -#: ../../Firmware/messages.cpp:59 ../../Firmware/ultralcd.cpp:2759 -#: ../../Firmware/ultralcd.cpp:5869 ../../Firmware/ultralcd.cpp:7849 +#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:2749 +#: ../../Firmware/ultralcd.cpp:4223 ../../Firmware/ultralcd.cpp:5859 +#: ../../Firmware/ultralcd.cpp:7826 msgid "Back" msgstr "Tillbaka" #. MSG_BED c=13 -#: ../../Firmware/Marlin_main.cpp:2048 ../../Firmware/Marlin_main.cpp:4764 -#: ../../Firmware/Marlin_main.cpp:4816 ../../Firmware/messages.cpp:12 -#: ../../Firmware/ultralcd.cpp:1411 ../../Firmware/ultralcd.cpp:5729 -#: ../../Firmware/ultralcd.cpp:5899 +#: ../../Firmware/Marlin_main.cpp:2029 ../../Firmware/Marlin_main.cpp:4792 +#: ../../Firmware/Marlin_main.cpp:4844 ../../Firmware/messages.cpp:12 +#: ../../Firmware/ultralcd.cpp:1404 ../../Firmware/ultralcd.cpp:5734 +#: ../../Firmware/ultralcd.cpp:5889 msgid "Bed" msgstr "Bädd" #. MSG_BED_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6257 ../../Firmware/messages.cpp:14 -#: ../../Firmware/ultralcd.cpp:578 +#: ../../Firmware/Marlin_main.cpp:6293 ../../Firmware/messages.cpp:14 +#: ../../Firmware/ultralcd.cpp:585 msgid "Bed Heating" msgstr "Bädden värms upp" #. MSG_BED_DONE c=20 -#: ../../Firmware/Marlin_main.cpp:6295 ../../Firmware/messages.cpp:13 -#: ../../Firmware/ultralcd.cpp:581 +#: ../../Firmware/Marlin_main.cpp:6331 ../../Firmware/messages.cpp:13 +#: ../../Firmware/ultralcd.cpp:588 msgid "Bed done" msgstr "Bädd klar" #. MSG_BED_CORRECTION_MENU c=18 -#: ../../Firmware/ultralcd.cpp:4920 +#: ../../Firmware/ultralcd.cpp:4883 msgid "Bed level correct" msgstr "Bäddnivå korrekt" #. MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:2211 ../../Firmware/Marlin_main.cpp:2990 -#: ../../Firmware/Marlin_main.cpp:3000 -#: ../../Firmware/mesh_bed_calibration.cpp:2862 -#: ../../Firmware/mesh_bed_calibration.cpp:2870 -#: ../../Firmware/mesh_bed_calibration.cpp:2896 ../../Firmware/messages.cpp:15 +#: ../../Firmware/Marlin_main.cpp:2209 ../../Firmware/Marlin_main.cpp:2985 +#: ../../Firmware/Marlin_main.cpp:2995 +#: ../../Firmware/mesh_bed_calibration.cpp:2858 +#: ../../Firmware/mesh_bed_calibration.cpp:2866 +#: ../../Firmware/mesh_bed_calibration.cpp:2892 ../../Firmware/messages.cpp:15 msgid "" "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for " "reset." @@ -168,50 +171,55 @@ msgstr "" "på återställning." #. MSG_SELFTEST_BEDHEATER c=20 -#: ../../Firmware/ultralcd.cpp:6980 +#: ../../Firmware/ultralcd.cpp:6971 msgid "Bed/Heater" msgstr "Bädd/Värmare" #. MSG_BELT_STATUS c=18 -#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1466 -#: ../../Firmware/ultralcd.cpp:1734 +#: ../../Firmware/messages.cpp:17 ../../Firmware/ultralcd.cpp:1457 +#: ../../Firmware/ultralcd.cpp:1726 msgid "Belt status" msgstr "Bält status" #. MSG_BELTTEST c=18 -#: ../../Firmware/ultralcd.cpp:4910 +#: ../../Firmware/ultralcd.cpp:4873 msgid "Belt test" msgstr "Bält test" #. MSG_RECOVER_PRINT c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:1604 ../../Firmware/Marlin_main.cpp:1626 -#: ../../Firmware/messages.cpp:77 +#: ../../Firmware/Marlin_main.cpp:1585 ../../Firmware/Marlin_main.cpp:1607 +#: ../../Firmware/messages.cpp:81 msgid "Blackout occurred. Recover print?" msgstr "Blackout inträffat. Återställa utskr?" #. MSG_BRIGHT c=6 -#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:159 ../../Firmware/ultralcd.cpp:5862 msgid "Bright" msgstr "Ljus" #. MSG_BRIGHTNESS c=18 -#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:4858 -#: ../../Firmware/ultralcd.cpp:5797 +#: ../../Firmware/messages.cpp:155 ../../Firmware/ultralcd.cpp:4821 +#: ../../Firmware/ultralcd.cpp:5787 msgid "Brightness" msgstr "Ljusstyrka" +#. MSG_TITLE_COMMUNICATION_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 +msgid "COMMUNICATION ERROR" +msgstr "" + #. MSG_CALIBRATE_BED c=18 -#: ../../Firmware/ultralcd.cpp:4914 +#: ../../Firmware/ultralcd.cpp:4877 msgid "Calibrate XYZ" msgstr "Kalibrerar XYZ" #. MSG_HOMEYZ c=18 -#: ../../Firmware/messages.cpp:48 ../../Firmware/ultralcd.cpp:4916 +#: ../../Firmware/messages.cpp:50 ../../Firmware/ultralcd.cpp:4879 msgid "Calibrate Z" msgstr "Kalibrera Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2954 +#: ../../Firmware/ultralcd.cpp:2944 msgid "" "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -220,13 +228,13 @@ msgstr "" "Klicka när du är klar." #. MSG_CALIBRATE_Z_AUTO c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:2167 ../../Firmware/messages.cpp:19 -#: ../../Firmware/ultralcd.cpp:626 +#: ../../Firmware/Marlin_main.cpp:2166 ../../Firmware/messages.cpp:19 +#: ../../Firmware/ultralcd.cpp:633 msgid "Calibrating Z" msgstr "Kalibrerar Z" #. MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 -#: ../../Firmware/ultralcd.cpp:2953 +#: ../../Firmware/ultralcd.cpp:2943 msgid "" "Calibrating Z. Rotate the knob to move the Z carriage up to the end " "stoppers. Click when done." @@ -235,140 +243,145 @@ msgstr "" "Klicka när du är klar." #. MSG_CALIBRATING_HOME c=20 -#: ../../Firmware/ultralcd.cpp:7323 +#: ../../Firmware/ultralcd.cpp:7313 msgid "Calibrating home" msgstr "Kalibrerar hem" #. MSG_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:63 ../../Firmware/ultralcd.cpp:5589 +#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:5594 msgid "Calibration" msgstr "Kalibrering" #. MSG_HOMEYZ_DONE c=20 -#: ../../Firmware/ultralcd.cpp:638 +#: ../../Firmware/ultralcd.cpp:644 msgid "Calibration done" msgstr "Kalibraring utförd" +#. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:228 +msgid "Cannot perform the action, filament is already loaded. Unload it first." +msgstr "" + #. MSG_SD_REMOVED c=20 -#: ../../Firmware/ultralcd.cpp:7723 +#: ../../Firmware/ultralcd.cpp:7700 msgid "Card removed" msgstr "Kort borttaget" #. MSG_CNG_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5546 +#: ../../Firmware/ultralcd.cpp:5547 msgid "Change SD card" msgstr "" #. MSG_FILAMENTCHANGE c=18 -#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5505 -#: ../../Firmware/ultralcd.cpp:5738 +#: ../../Firmware/messages.cpp:39 ../../Firmware/ultralcd.cpp:5506 +#: ../../Firmware/ultralcd.cpp:5743 msgid "Change filament" msgstr "Ändra filament" #. MSG_CHANGE_SUCCESS c=20 -#: ../../Firmware/ultralcd.cpp:2171 +#: ../../Firmware/ultralcd.cpp:2179 msgid "Change success!" msgstr "Ändring utförd!" #. MSG_CORRECTLY c=20 -#: ../../Firmware/ultralcd.cpp:2223 +#: ../../Firmware/ultralcd.cpp:2227 msgid "Changed correctly?" msgstr "Ändring korrekt?" #. MSG_CHECKING_X c=20 -#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6186 -#: ../../Firmware/ultralcd.cpp:7313 +#: ../../Firmware/messages.cpp:21 ../../Firmware/ultralcd.cpp:6187 +#: ../../Firmware/ultralcd.cpp:7303 msgid "Checking X axis" msgstr "Kontroll X-axel" #. MSG_CHECKING_Y c=20 -#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6195 -#: ../../Firmware/ultralcd.cpp:7314 +#: ../../Firmware/messages.cpp:22 ../../Firmware/ultralcd.cpp:6196 +#: ../../Firmware/ultralcd.cpp:7304 msgid "Checking Y axis" msgstr "Kontroll Y-axel" #. MSG_SELFTEST_CHECK_Z c=20 -#: ../../Firmware/ultralcd.cpp:7315 +#: ../../Firmware/ultralcd.cpp:7305 msgid "Checking Z axis" msgstr "Kontroll Z-axel" #. MSG_SELFTEST_CHECK_BED c=20 -#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:7316 +#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:7306 msgid "Checking bed" msgstr "Kontroll bädd" #. MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:7312 +#: ../../Firmware/ultralcd.cpp:7302 msgid "Checking endstops" msgstr "Kontroll ändlägen" #. MSG_CHECKING_FILE c=17 -#: ../../Firmware/ultralcd.cpp:7411 +#: ../../Firmware/ultralcd.cpp:7401 msgid "Checking file" msgstr "Kontrollerar fil" #. MSG_SELFTEST_CHECK_HOTEND c=20 -#: ../../Firmware/ultralcd.cpp:7318 +#: ../../Firmware/ultralcd.cpp:7308 msgid "Checking hotend" msgstr "Kontroll hotend" #. MSG_SELFTEST_CHECK_FSENSOR c=20 -#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7319 -#: ../../Firmware/ultralcd.cpp:7320 +#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:7309 +#: ../../Firmware/ultralcd.cpp:7310 msgid "Checking sensors" msgstr "Kontroll sensorer" #. MSG_CHECKS c=18 -#: ../../Firmware/ultralcd.cpp:4773 +#: ../../Firmware/ultralcd.cpp:4728 msgid "Checks" msgstr "Kontroller" #. MSG_NOT_COLOR c=19 -#: ../../Firmware/ultralcd.cpp:2226 +#: ../../Firmware/ultralcd.cpp:2230 msgid "Color not correct" msgstr "Färg ej korrekt" #. MSG_COMMUNITY_MADE c=18 -#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3733 +#: ../../Firmware/messages.cpp:23 ../../Firmware/ultralcd.cpp:3696 msgid "Community made" msgstr "Allmänhetsgjord" #. MSG_CONTINUE_SHORT c=5 -#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4712 +#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:4245 msgid "Cont." msgstr "Frts." #. MSG_COOLDOWN c=18 -#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2133 +#: ../../Firmware/messages.cpp:25 ../../Firmware/ultralcd.cpp:2138 msgid "Cooldown" msgstr "Kyla ner" #. MSG_COPY_SEL_LANG c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3671 +#: ../../Firmware/ultralcd.cpp:3634 msgid "Copy selected language?" msgstr "Kopiera det valda språket?" #. MSG_CRASH c=7 -#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1229 -#: ../../Firmware/ultralcd.cpp:1270 ../../Firmware/ultralcd.cpp:1280 +#: ../../Firmware/messages.cpp:26 ../../Firmware/ultralcd.cpp:1247 +#: ../../Firmware/ultralcd.cpp:1276 msgid "Crash" msgstr "Krock" #. MSG_CRASHDETECT c=13 -#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4352 -#: ../../Firmware/ultralcd.cpp:5773 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5779 +#: ../../Firmware/messages.cpp:28 ../../Firmware/ultralcd.cpp:4339 +#: ../../Firmware/ultralcd.cpp:4340 ../../Firmware/ultralcd.cpp:4342 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5765 +#: ../../Firmware/ultralcd.cpp:5769 msgid "Crash det." msgstr "Krockdetekt." #. MSG_CRASH_DETECTED c=20 -#: ../../Firmware/Marlin_main.cpp:597 ../../Firmware/messages.cpp:27 +#: ../../Firmware/Marlin_main.cpp:586 ../../Firmware/messages.cpp:27 msgid "Crash detected." msgstr "Krock upptäckt." #. MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3529 +#: ../../Firmware/ultralcd.cpp:3538 msgid "" "Crash detection can\n" "be turned on only in\n" @@ -379,39 +392,46 @@ msgstr "" "normalt läge" #. MSG_CUT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5183 -#: ../../Firmware/ultralcd.cpp:5575 +#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:5155 +#: ../../Firmware/ultralcd.cpp:5578 msgid "Cut filament" msgstr "Skär filament" #. MSG_CUTTER c=9 -#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4311 -#: ../../Firmware/ultralcd.cpp:4316 ../../Firmware/ultralcd.cpp:4321 +#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4287 ../../Firmware/ultralcd.cpp:4292 msgid "Cutter" msgstr "Skärare" -#. MSG_MMU_CUTTING_FIL c=18 -#: ../../Firmware/mmu.cpp:1048 -msgid "Cutting filament" -msgstr "Skär filament" - #. MSG_DATE c=17 -#: ../../Firmware/ultralcd.cpp:1676 +#: ../../Firmware/ultralcd.cpp:1667 msgid "Date:" msgstr "Datum:" #. MSG_DIM c=6 -#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:160 ../../Firmware/ultralcd.cpp:5862 msgid "Dim" msgstr "" +#. MSG_BTN_DISABLE_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 +msgid "Disable" +msgstr "" + #. MSG_DISABLE_STEPPERS c=18 -#: ../../Firmware/ultralcd.cpp:4810 +#: ../../Firmware/ultralcd.cpp:4764 msgid "Disable steppers" msgstr "Inaktivera stepper" +#. MSG_PROGRESS_DISENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:10 +#: ../../Firmware/mmu2_progress_converter.cpp:36 +#: ../../Firmware/mmu2_progress_converter.cpp:44 +msgid "Disengaging idler" +msgstr "" + #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 -#: ../../Firmware/Marlin_main.cpp:1549 ../../Firmware/Marlin_main.cpp:3408 +#: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 #: ../../Firmware/messages.cpp:11 msgid "" "Distance between tip of the nozzle and the bed surface has not been set yet. " @@ -422,7 +442,7 @@ msgstr "" "Vänligen följ manualen Första lagrets kalibrering." #. MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:4153 +#: ../../Firmware/ultralcd.cpp:4107 msgid "" "Do you want to repeat last step to readjust distance between nozzle and " "heatbed?" @@ -430,222 +450,345 @@ msgstr "" "Vill du upprepa det sista steget för att justera avståndet mellan munstycket " "och värmebädden?" +#. MSG_BTN_CONTINUE c=5 +#: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 +msgid "Done" +msgstr "" + #. MSG_EXTRUDER_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4222 +#: ../../Firmware/ultralcd.cpp:4176 msgid "E-correct:" msgstr "E-korrektion:" +#. MSG_PROGRESS_ERR_HELP_FIL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:19 +#: ../../Firmware/mmu2_progress_converter.cpp:48 +msgid "ERR Help filament" +msgstr "" + +#. MSG_PROGRESS_ERR_INTERNAL c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:18 +#: ../../Firmware/mmu2_progress_converter.cpp:47 +msgid "ERR Internal" +msgstr "" + +#. MSG_PROGRESS_ERR_TMC c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:20 +#: ../../Firmware/mmu2_progress_converter.cpp:49 +msgid "ERR TMC failed" +msgstr "" + +#. MSG_PROGRESS_WAIT_USER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:17 +#: ../../Firmware/mmu2_progress_converter.cpp:46 +msgid "ERR Wait for User" +msgstr "" + #. MSG_ERROR c=10 -#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2287 +#: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 msgid "ERROR:" msgstr "FEL:" -#. MSG_FSENS_NOT_RESPONDING c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3570 -msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "FEL: Filamentsensorn svarar inte, kontrollera anslutningen." - #. MSG_EJECT_FILAMENT c=17 -#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5164 -#: ../../Firmware/ultralcd.cpp:5573 +#: ../../Firmware/messages.cpp:60 ../../Firmware/ultralcd.cpp:5137 +#: ../../Firmware/ultralcd.cpp:5575 msgid "Eject filament" msgstr "Mata ut filament" -#. MSG_EJECTING_FILAMENT c=20 -#: ../../Firmware/mmu.cpp:1076 +#. MSG_PROGRESS_EJECT_FILAMENT c=20 +#. @@todo duplicate +#: ../../Firmware/mmu2_progress_converter.cpp:27 +#: ../../Firmware/mmu2_progress_converter.cpp:58 msgid "Ejecting filament" msgstr "Matar ut filament" #. MSG_SELFTEST_ENDSTOP c=16 -#: ../../Firmware/ultralcd.cpp:6993 +#: ../../Firmware/ultralcd.cpp:6984 msgid "Endstop" msgstr "Ändläge" #. MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ../../Firmware/ultralcd.cpp:6998 +#: ../../Firmware/ultralcd.cpp:6989 msgid "Endstop not hit" msgstr "Ändlage inte nått" #. MSG_SELFTEST_ENDSTOPS c=20 -#: ../../Firmware/ultralcd.cpp:6984 +#: ../../Firmware/ultralcd.cpp:6975 msgid "Endstops" msgstr "Ändlägen" +#. MSG_PROGRESS_ENGAGE_IDLER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:9 +#: ../../Firmware/mmu2_progress_converter.cpp:35 +#: ../../Firmware/mmu2_progress_converter.cpp:45 +msgid "Engaging idler" +msgstr "" + #. MSG_EXTRUDER c=17 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:30 -#: ../../Firmware/ultralcd.cpp:3503 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:30 +#: ../../Firmware/ultralcd.cpp:3512 msgid "Extruder" msgstr "" #. MSG_EXTRUDER_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7329 +#: ../../Firmware/messages.cpp:35 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7319 msgid "Extruder fan:" msgstr "Extruderfläkt:" #. MSG_INFO_EXTRUDER c=18 -#: ../../Firmware/ultralcd.cpp:1730 +#: ../../Firmware/ultralcd.cpp:1722 msgid "Extruder info" msgstr "" #. MSG_FSENSOR_AUTOLOAD c=13 -#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4237 -#: ../../Firmware/ultralcd.cpp:4245 ../../Firmware/ultralcd.cpp:4256 -#: ../../Firmware/ultralcd.cpp:4258 +#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:4230 +#: ../../Firmware/ultralcd.cpp:4237 msgid "F. autoload" msgstr "F. autoladdn" +#. MSG_FSENSOR_JAM_DETECTION c=13 +#: ../../Firmware/messages.cpp:46 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:4239 +msgid "F. jam detect" +msgstr "" + +#. MSG_FSENSOR_RUNOUT c=13 +#: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4236 +msgid "F. runout" +msgstr "" + +#. MSG_TITLE_FIL_ALREADY_LOADED c=20 +#: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 +msgid "FILAMENT ALREADY LOA" +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 +msgid "FINDA DIDNT TRIGGER" +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:197 +msgid "" +"FINDA didn't switch off while unloading filament. Try unloading manually. " +"Ensure filament can move and FINDA works." +msgstr "" + +#. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:196 +msgid "" +"FINDA didn't trigger while loading the filament. Ensure the filament can " +"move and FINDA works." +msgstr "" + +#. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 +msgid "FINDA: FILAM. STUCK" +msgstr "" + #. MSG_FS_ACTION c=10 -#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:4712 -#: ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 +#: ../../Firmware/ultralcd.cpp:4248 msgid "FS Action" msgstr "FS aktion" -#. MSG_FS_V_03_OR_OLDER c=18 -#: ../../Firmware/Marlin_main.cpp:9482 -msgid "FS v0.3 or older" -msgstr "FS v0.3 el äldre" +#. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 +#: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 +msgid "FSENSOR DIDNT TRIGG." +msgstr "" -#. MSG_FS_V_04_OR_NEWER c=18 -#: ../../Firmware/Marlin_main.cpp:9474 -msgid "FS v0.4 or newer" -msgstr "FS v0.4 el nyare" +#. MSG_TITLE_FSENSOR_TOO_EARLY c=20 +#: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 +msgid "FSENSOR TOO EARLY" +msgstr "" + +#. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 +#: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 +msgid "FSENSOR: FIL. STUCK" +msgstr "" + +#. MSG_TITLE_FW_RUNTIME_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 +msgid "FW RUNTIME ERROR" +msgstr "" #. MSG_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5597 +#: ../../Firmware/ultralcd.cpp:5602 msgid "Fail stats" msgstr "Felstatistik" #. MSG_MMU_FAIL_STATS c=18 -#: ../../Firmware/ultralcd.cpp:5600 +#: ../../Firmware/ultralcd.cpp:5605 msgid "Fail stats MMU" msgstr "Felstatistik MMU" #. MSG_FALSE_TRIGGERING c=20 -#: ../../Firmware/ultralcd.cpp:7039 +#: ../../Firmware/ultralcd.cpp:7030 msgid "False triggering" msgstr "Felaktig utlösare" #. MSG_FAN_SPEED c=14 -#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5731 -#: ../../Firmware/ultralcd.cpp:5901 +#: ../../Firmware/messages.cpp:34 ../../Firmware/ultralcd.cpp:5736 +#: ../../Firmware/ultralcd.cpp:5891 msgid "Fan speed" msgstr "Fläktfart" #. MSG_SELFTEST_FAN c=20 -#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:7151 -#: ../../Firmware/ultralcd.cpp:7309 ../../Firmware/ultralcd.cpp:7310 -#: ../../Firmware/ultralcd.cpp:7311 +#: ../../Firmware/messages.cpp:90 ../../Firmware/ultralcd.cpp:7141 +#: ../../Firmware/ultralcd.cpp:7299 ../../Firmware/ultralcd.cpp:7300 +#: ../../Firmware/ultralcd.cpp:7301 msgid "Fan test" msgstr "Fläkttest" #. MSG_FANS_CHECK c=13 -#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:5764 +#: ../../Firmware/messages.cpp:31 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:5754 msgid "Fans check" msgstr "Fläktcheck" +#. MSG_PROGRESS_FEED_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:13 +#: ../../Firmware/mmu2_progress_converter.cpp:39 +msgid "Feeding to FINDA" +msgstr "" + +#. MSG_PROGRESS_FEED_FSENSOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:31 +#: ../../Firmware/mmu2_progress_converter.cpp:62 +msgid "Feeding to FSensor" +msgstr "" + +#. MSG_PROGRESS_FEED_EXTRUDER c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:14 +#: ../../Firmware/mmu2_progress_converter.cpp:40 +msgid "Feeding to extruder" +msgstr "" + +#. MSG_PROGRESS_FEED_NOZZLE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:15 +#: ../../Firmware/mmu2_progress_converter.cpp:41 +msgid "Feeding to nozzle" +msgstr "" + #. MSG_FIL_RUNOUTS c=15 -#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1228 -#: ../../Firmware/ultralcd.cpp:1269 ../../Firmware/ultralcd.cpp:1335 -#: ../../Firmware/ultralcd.cpp:1337 +#: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 +#: ../../Firmware/ultralcd.cpp:1275 ../../Firmware/ultralcd.cpp:1329 +#: ../../Firmware/ultralcd.cpp:1331 msgid "Fil. runouts" msgstr "Fil. avbrott" #. MSG_FSENSOR c=12 -#: ../../Firmware/messages.cpp:45 ../../Firmware/ultralcd.cpp:3459 -#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4242 -#: ../../Firmware/ultralcd.cpp:4252 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5749 ../../Firmware/ultralcd.cpp:5753 +#: ../../Firmware/messages.cpp:47 ../../Firmware/ultralcd.cpp:3473 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4768 +#: ../../Firmware/ultralcd.cpp:5747 msgid "Fil. sensor" msgstr "" #. MSG_FILAMENT c=17 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:33 ../../Firmware/ultralcd.cpp:3843 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:33 +#: ../../Firmware/ultralcd.cpp:3806 msgid "Filament" msgstr "Mata ut filament" #. MSG_FILAMENT_CLEAN c=20 r=2 -#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2295 -#: ../../Firmware/ultralcd.cpp:2301 +#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:2290 +#: ../../Firmware/ultralcd.cpp:2294 msgid "Filament extruding & with correct color?" msgstr "Extruderas filament med rätt färg?" #. MSG_NOT_LOADED c=19 -#: ../../Firmware/ultralcd.cpp:2225 +#: ../../Firmware/ultralcd.cpp:2229 msgid "Filament not loaded" msgstr "Filament ej laddat" #. MSG_SELFTEST_FILAMENT_SENSOR c=17 -#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7034 -#: ../../Firmware/ultralcd.cpp:7038 ../../Firmware/ultralcd.cpp:7042 -#: ../../Firmware/ultralcd.cpp:7338 +#: ../../Firmware/messages.cpp:96 ../../Firmware/ultralcd.cpp:7025 +#: ../../Firmware/ultralcd.cpp:7029 ../../Firmware/ultralcd.cpp:7033 +#: ../../Firmware/ultralcd.cpp:7328 msgid "Filament sensor" msgstr "" +#. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:199 +msgid "" +"Filament sensor didn't switch off while unloading filament. Ensure filament " +"can move and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:198 +msgid "" +"Filament sensor didn't trigger while loading the filament. Ensure the " +"filament reached the fsensor and the sensor works." +msgstr "" + +#. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:201 +msgid "" +"Filament sensor triggered too early while loading to extruder. Check there " +"isn't anything stuck in PTFE tube. Check that sensor reads properly." +msgstr "" + #. MSG_FILAMENT_USED c=19 -#: ../../Firmware/ultralcd.cpp:2373 +#: ../../Firmware/ultralcd.cpp:2363 msgid "Filament used" msgstr "Använt filament" #. MSG_FILE_INCOMPLETE c=20 r=3 -#: ../../Firmware/ultralcd.cpp:7470 +#: ../../Firmware/ultralcd.cpp:7460 msgid "File incomplete. Continue anyway?" msgstr "Filen är ofullständig. Fortsätta ändå?" #. MSG_FINISHING_MOVEMENTS c=20 -#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:5322 -#: ../../Firmware/ultralcd.cpp:5638 +#: ../../Firmware/messages.cpp:41 ../../Firmware/mmu2_progress_converter.cpp:43 +#: ../../Firmware/ultralcd.cpp:5323 ../../Firmware/ultralcd.cpp:5643 msgid "Finishing movements" msgstr "Avslutar flyttning" #. MSG_V2_CALIBRATION c=18 -#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4906 -#: ../../Firmware/ultralcd.cpp:5432 +#: ../../Firmware/messages.cpp:125 ../../Firmware/ultralcd.cpp:4869 +#: ../../Firmware/ultralcd.cpp:5433 msgid "First layer cal." msgstr "Förstalager kalib." #. MSG_WIZARD_SELFTEST c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4074 +#: ../../Firmware/ultralcd.cpp:4032 msgid "First, I will run the selftest to check most common assembly problems." msgstr "" "Först kommer jag att utföra självtestet för att kontrollera de vanligaste " "monteringsproblemen." -#. MSG_MMU_FIX_ISSUE c=20 r=4 -#: ../../Firmware/mmu.cpp:728 -msgid "Fix the issue and then press button on MMU unit." -msgstr "Åtgärda problemet och tryck sedan på knappen på MMU-enheten." - #. MSG_FLOW c=15 -#: ../../Firmware/ultralcd.cpp:5732 +#: ../../Firmware/ultralcd.cpp:5737 msgid "Flow" msgstr "Flöde" #. MSG_SELFTEST_PART_FAN c=20 -#: ../../Firmware/messages.cpp:83 ../../Firmware/ultralcd.cpp:7004 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:6995 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Front print fan?" msgstr "Frontfläkt?" #. MSG_BED_CORRECTION_FRONT c=14 -#: ../../Firmware/ultralcd.cpp:2762 +#: ../../Firmware/ultralcd.cpp:2752 msgid "Front side[μm]" msgstr "" #. MSG_SELFTEST_FANS c=20 -#: ../../Firmware/ultralcd.cpp:7028 +#: ../../Firmware/ultralcd.cpp:7019 msgid "Front/left fans" msgstr "Front/vänster fläkt" #. MSG_GCODE_DIFF_CONTINUE c=20 r=4 -#: ../../Firmware/util.cpp:418 +#: ../../Firmware/util.cpp:402 msgid "G-code sliced for a different level. Continue?" msgstr "G-kod genererad för en annan nivå. Fortsätta?" #. MSG_GCODE_DIFF_CANCELLED c=20 r=7 -#: ../../Firmware/util.cpp:424 +#: ../../Firmware/util.cpp:409 msgid "" "G-code sliced for a different level. Please re-slice the model again. Print " "cancelled." @@ -654,14 +797,14 @@ msgstr "" "Utskriften avbröts." #. MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 -#: ../../Firmware/messages.cpp:131 ../../Firmware/util.cpp:335 -#: ../../Firmware/util.cpp:471 +#: ../../Firmware/messages.cpp:135 ../../Firmware/util.cpp:323 +#: ../../Firmware/util.cpp:454 msgid "G-code sliced for a different printer type. Continue?" msgstr "G-kod genererad för en annan skrivartyp. Fortsätta?" #. MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 -#: ../../Firmware/messages.cpp:132 ../../Firmware/util.cpp:341 -#: ../../Firmware/util.cpp:477 +#: ../../Firmware/messages.cpp:136 ../../Firmware/util.cpp:329 +#: ../../Firmware/util.cpp:460 msgid "" "G-code sliced for a different printer type. Please re-slice the model again. " "Print cancelled." @@ -670,12 +813,12 @@ msgstr "" "Utskriften avbröts." #. MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:385 +#: ../../Firmware/util.cpp:370 msgid "G-code sliced for a newer firmware. Continue?" msgstr "G-kod genererad för en nyare firmware. Fortsätta?" #. MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 -#: ../../Firmware/util.cpp:391 +#: ../../Firmware/util.cpp:377 msgid "" "G-code sliced for a newer firmware. Please update the firmware. Print " "cancelled." @@ -684,42 +827,42 @@ msgstr "" "Utskriften avbröts." #. MSG_GCODE c=8 -#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4663 -#: ../../Firmware/ultralcd.cpp:4666 ../../Firmware/ultralcd.cpp:4669 -#: ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4653 +#: ../../Firmware/ultralcd.cpp:4656 ../../Firmware/ultralcd.cpp:4659 +#: ../../Firmware/ultralcd.cpp:4662 msgid "Gcode" msgstr "" #. MSG_HW_SETUP c=18 -#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:4680 -#: ../../Firmware/ultralcd.cpp:4734 ../../Firmware/ultralcd.cpp:4826 +#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4670 +#: ../../Firmware/ultralcd.cpp:4689 ../../Firmware/ultralcd.cpp:4789 msgid "HW Setup" msgstr "HW inställning" #. MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ../../Firmware/ultralcd.cpp:6976 +#: ../../Firmware/ultralcd.cpp:6967 msgid "Heater/Thermistor" msgstr "Värmare/Termistor" #. MSG_HEATING c=20 -#: ../../Firmware/Marlin_main.cpp:6200 ../../Firmware/messages.cpp:46 -#: ../../Firmware/ultralcd.cpp:570 +#: ../../Firmware/Marlin_main.cpp:6236 ../../Firmware/messages.cpp:48 +#: ../../Firmware/ultralcd.cpp:577 msgid "Heating" msgstr "Uppvärmning" #. MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:9395 +#: ../../Firmware/Marlin_main.cpp:9477 msgid "Heating disabled by safety timer." msgstr "Uppvärmning avaktiverad av säkerhetstimer." #. MSG_HEATING_COMPLETE c=20 -#: ../../Firmware/Marlin_main.cpp:6231 ../../Firmware/messages.cpp:47 -#: ../../Firmware/ultralcd.cpp:573 +#: ../../Firmware/Marlin_main.cpp:6267 ../../Firmware/messages.cpp:49 +#: ../../Firmware/ultralcd.cpp:580 msgid "Heating done." msgstr "Uppvärmning klar." #. MSG_WIZARD_WELCOME_SHIPPING c=20 r=12 -#: ../../Firmware/messages.cpp:119 ../../Firmware/ultralcd.cpp:4050 +#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4008 msgid "" "Hi, I am your Original Prusa i3 printer. I will guide you through a short " "setup process, in which the Z-axis will be calibrated. Then, you will be " @@ -730,7 +873,7 @@ msgstr "" "att skriva ut." #. MSG_WIZARD_WELCOME c=20 r=7 -#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4053 +#: ../../Firmware/messages.cpp:122 ../../Firmware/ultralcd.cpp:4011 msgid "" "Hi, I am your Original Prusa i3 printer. Would you like me to guide you " "through the setup process?" @@ -739,25 +882,46 @@ msgstr "" "installationsprocessen?" #. MSG_HIGH_POWER c=10 -#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5788 +#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5778 msgid "High power" msgstr "Hög kraft" +#. MSG_PROGRESS_HOMING c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:29 +#: ../../Firmware/mmu2_progress_converter.cpp:60 +msgid "Homing" +msgstr "" + #. MSG_WIZARD_XYZ_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4083 +#: ../../Firmware/ultralcd.cpp:4041 msgid "I will run xyz calibration now. It will take approx. 12 mins." msgstr "" "Jag kommer att utföra en xyz-kalibrering nu. Det kommer att ta ca. 12 min." #. MSG_WIZARD_Z_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4091 +#: ../../Firmware/ultralcd.cpp:4049 msgid "I will run z calibration now." msgstr "Jag kommer att utföra z-kalibrering nu." +#. MSG_TITLE_IDLER_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 +msgid "IDLER CANNOT HOME" +msgstr "" + +#. MSG_TITLE_IDLER_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 +msgid "IDLER CANNOT MOVE" +msgstr "" + +#. MSG_TITLE_INVALID_TOOL c=20 +#: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 +msgid "INVALID TOOL" +msgstr "" + #. MSG_ADDITIONAL_SHEETS c=20 r=9 -#: ../../Firmware/ultralcd.cpp:4161 +#: ../../Firmware/ultralcd.cpp:4115 msgid "" "If you have additional steel sheets, calibrate their presets in Settings - " "HW Setup - Steel sheets." @@ -766,296 +930,319 @@ msgstr "" "Inställningar - HW inställning - Metallskiva." #. MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=20 r=4 -#: ../../Firmware/mesh_bed_calibration.cpp:2531 +#: ../../Firmware/mesh_bed_calibration.cpp:2530 msgid "Improving bed calibration point" msgstr "" #. MSG_INFO_SCREEN c=18 -#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:5486 +#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:5487 msgid "Info screen" msgstr "Infoskärm" #. MSG_INIT_SDCARD c=18 -#: ../../Firmware/ultralcd.cpp:5553 +#: ../../Firmware/ultralcd.cpp:5554 msgid "Init. SD card" msgstr "" #. MSG_INSERT_FILAMENT c=20 -#: ../../Firmware/ultralcd.cpp:2160 +#: ../../Firmware/ultralcd.cpp:2165 msgid "Insert filament" msgstr "Sätt i filament" #. MSG_INSERT_FIL c=20 r=6 -#: ../../Firmware/ultralcd.cpp:6231 +#: ../../Firmware/ultralcd.cpp:6233 msgid "" "Insert the filament (do not load it) into the extruder and then press the " "knob." msgstr "" "Infoga filamentet (ladda inte in det) i extrudern och tryck sedan på knappen." +#. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 +#: ../../Firmware/mmu2/errors_list.h:232 +msgid "" +"Internal runtime error. Try resetting the MMU unit or updating the firmware. " +"If the issue persists, contact support." +msgstr "" + #. MSG_FILAMENT_LOADED c=20 r=2 -#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3863 -#: ../../Firmware/ultralcd.cpp:4116 ../../Firmware/ultralcd.cpp:4119 +#: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 +#: ../../Firmware/ultralcd.cpp:4074 msgid "Is filament loaded?" msgstr "Är filament isatt?" #. MSG_STEEL_SHEET_CHECK c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3309 ../../Firmware/Marlin_main.cpp:4883 -#: ../../Firmware/messages.cpp:106 ../../Firmware/ultralcd.cpp:4092 +#: ../../Firmware/Marlin_main.cpp:3301 ../../Firmware/Marlin_main.cpp:4911 +#: ../../Firmware/messages.cpp:110 ../../Firmware/ultralcd.cpp:4050 msgid "Is steel sheet on heatbed?" msgstr "Ligger metallskiva på värmebädden?" #. MSG_ITERATION c=12 -#: ../../Firmware/mesh_bed_calibration.cpp:2253 ../../Firmware/messages.cpp:49 +#: ../../Firmware/mesh_bed_calibration.cpp:2252 ../../Firmware/messages.cpp:51 msgid "Iteration" msgstr "" #. MSG_LAST_PRINT c=18 -#: ../../Firmware/messages.cpp:52 ../../Firmware/ultralcd.cpp:1156 -#: ../../Firmware/ultralcd.cpp:1304 +#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:1166 +#: ../../Firmware/ultralcd.cpp:1299 msgid "Last print" msgstr "Senaste utskrift" #. MSG_LAST_PRINT_FAILURES c=20 -#: ../../Firmware/messages.cpp:53 ../../Firmware/ultralcd.cpp:1177 -#: ../../Firmware/ultralcd.cpp:1267 ../../Firmware/ultralcd.cpp:1277 -#: ../../Firmware/ultralcd.cpp:1334 +#: ../../Firmware/messages.cpp:55 ../../Firmware/ultralcd.cpp:1186 +#: ../../Firmware/ultralcd.cpp:1273 ../../Firmware/ultralcd.cpp:1328 msgid "Last print failures" msgstr "Senaste utskriftsfel" #. MSG_LEFT c=10 -#: ../../Firmware/ultralcd.cpp:2504 +#: ../../Firmware/ultralcd.cpp:2494 msgid "Left" msgstr "Vänster" #. MSG_SELFTEST_EXTRUDER_FAN c=20 -#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:7010 -#: ../../Firmware/ultralcd.cpp:7157 ../../Firmware/ultralcd.cpp:7162 +#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7001 +#: ../../Firmware/ultralcd.cpp:7147 ../../Firmware/ultralcd.cpp:7152 msgid "Left hotend fan?" msgstr "Vänst hotend fläkt?" #. MSG_BED_CORRECTION_LEFT c=14 -#: ../../Firmware/ultralcd.cpp:2760 +#: ../../Firmware/ultralcd.cpp:2750 msgid "Left side [μm]" msgstr "Vänstsida [μm]" #. MSG_BL_HIGH c=12 -#: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:5870 +#: ../../Firmware/messages.cpp:156 ../../Firmware/ultralcd.cpp:5860 msgid "Level Bright" msgstr "Ljusnivå" #. MSG_BL_LOW c=12 -#: ../../Firmware/messages.cpp:153 ../../Firmware/ultralcd.cpp:5871 +#: ../../Firmware/messages.cpp:157 ../../Firmware/ultralcd.cpp:5861 msgid "Level Dimmed" msgstr "Nivå dämpad" #. MSG_LIN_CORRECTION c=18 -#: ../../Firmware/ultralcd.cpp:4834 +#: ../../Firmware/ultralcd.cpp:4797 msgid "Lin. correction" msgstr "Linjär korrektion" #. MSG_BABYSTEP_Z c=18 -#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4846 -#: ../../Firmware/ultralcd.cpp:5501 +#: ../../Firmware/messages.cpp:10 ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:5502 msgid "Live adjust Z" msgstr "Live justera Z" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5128 -msgid "Load all" -msgstr "Ladda alla" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 -#: ../../Firmware/messages.cpp:54 ../../Firmware/ultralcd.cpp:5130 -#: ../../Firmware/ultralcd.cpp:5141 ../../Firmware/ultralcd.cpp:5570 -#: ../../Firmware/ultralcd.cpp:5584 +#: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 +#: ../../Firmware/ultralcd.cpp:5119 ../../Firmware/ultralcd.cpp:5180 +#: ../../Firmware/ultralcd.cpp:5571 ../../Firmware/ultralcd.cpp:5589 msgid "Load filament" msgstr "Ladda filament" +#. MSG_LOAD_TO_EXTRUDER c=18 +#: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 +msgid "Load to extruder" +msgstr "" + #. MSG_LOAD_TO_NOZZLE c=18 -#: ../../Firmware/ultralcd.cpp:5571 +#: ../../Firmware/ultralcd.cpp:5573 msgid "Load to nozzle" msgstr "Ladd till munstyck" #. MSG_LOADING_COLOR c=20 -#: ../../Firmware/ultralcd.cpp:2193 +#: ../../Firmware/ultralcd.cpp:2201 msgid "Loading color" msgstr "Laddar färg" #. MSG_LOADING_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:3638 ../../Firmware/messages.cpp:55 -#: ../../Firmware/mmu.cpp:872 ../../Firmware/mmu.cpp:906 -#: ../../Firmware/mmu.cpp:1014 ../../Firmware/mmu.cpp:1026 -#: ../../Firmware/ultralcd.cpp:2204 ../../Firmware/ultralcd.cpp:3957 +#: ../../Firmware/Marlin_main.cpp:3651 ../../Firmware/messages.cpp:58 +#: ../../Firmware/mmu2.cpp:438 ../../Firmware/mmu2.cpp:468 +#: ../../Firmware/mmu2_progress_converter.cpp:51 +#: ../../Firmware/ultralcd.cpp:2212 ../../Firmware/ultralcd.cpp:3919 msgid "Loading filament" msgstr "Laddar filament" #. MSG_LOOSE_PULLEY c=20 -#: ../../Firmware/ultralcd.cpp:7016 +#: ../../Firmware/ultralcd.cpp:7007 msgid "Loose pulley" msgstr "Lös pulley" #. MSG_SOUND_LOUD c=7 -#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4460 msgid "Loud" msgstr "Högt" -#. MSG_MK3_FIRMWARE_ON_MK3S c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:880 -msgid "MK3 firmware detected on MK3S printer" -msgstr "MK3-firmware upptäckt på MK3S-skrivare" +#. MSG_TITLE_FW_UPDATE_NEEDED c=20 +#: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 +msgid "MMU FW UPDATE NEEDED" +msgstr "" -#. MSG_MK3S_FIRMWARE_ON_MK3 c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:873 -msgid "MK3S firmware detected on MK3 printer" -msgstr "MK3S-firmware upptäckt på MK3-skrivare" +#. MSG_DESC_QUEUE_FULL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:230 +msgid "MMU Firmware internal error, please reset the MMU." +msgstr "" #. MSG_MMU_MODE c=8 -#: ../../Firmware/messages.cpp:134 ../../Firmware/ultralcd.cpp:4389 -#: ../../Firmware/ultralcd.cpp:4390 +#: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 +#: ../../Firmware/ultralcd.cpp:4380 msgid "MMU Mode" msgstr "MMU-läge" -#. MSG_MMU_OK_RESUMING_POSITION c=20 r=4 -#: ../../Firmware/mmu.cpp:763 -msgid "MMU OK. Resuming position..." -msgstr "MMU OK. Återupptar position..." +#. MSG_TITLE_MMU_NOT_RESPONDING c=20 +#: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 +msgid "MMU NOT RESPONDING" +msgstr "" -#. MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 -#: ../../Firmware/mmu.cpp:756 -msgid "MMU OK. Resuming temperature..." -msgstr "MMU OK. Återupptar temperatur..." - -#. MSG_MMU_OK_RESUMING c=20 r=4 -#: ../../Firmware/mmu.cpp:774 -msgid "MMU OK. Resuming..." -msgstr "MMU OK. Återupptar..." +#. MSG_MMU_RESTORE_TEMP c=20 r=4 +#: ../../Firmware/mmu2.cpp:598 +msgid "MMU Retry: Restoring temperature..." +msgstr "" #. MSG_MMU_FAILS c=15 -#: ../../Firmware/messages.cpp:64 ../../Firmware/ultralcd.cpp:1178 -#: ../../Firmware/ultralcd.cpp:1201 +#: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 +#: ../../Firmware/ultralcd.cpp:1215 msgid "MMU fails" msgstr "MMU felar" -#. MSG_MMU_LOAD_FAILED c=20 -#: ../../Firmware/mmu.cpp:1248 -msgid "MMU load failed" -msgstr "MMU-laddning felade" - #. MSG_MMU_LOAD_FAILS c=15 -#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:1179 -#: ../../Firmware/ultralcd.cpp:1202 +#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:1188 msgid "MMU load fails" msgstr "MMU-laddn felar" -#. MSG_MMU_USER_ATTENTION c=20 r=3 -#: ../../Firmware/mmu.cpp:723 -msgid "MMU needs user attention." -msgstr "MMU fordrar användarens uppmärksamhet.." +#. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:227 +msgid "" +"MMU unit not responding correctly. Check the wiring and connectors. If the " +"issue persists, contact support." +msgstr "" -#. MSG_MMU_POWER_FAILS c=15 -#: ../../Firmware/ultralcd.cpp:1203 -msgid "MMU power fails" -msgstr "MMU strömavbr." +#. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:226 +msgid "" +"MMU unit not responding. Check the wiring and connectors. If the issue " +"persists, contact support." +msgstr "" #. MSG_MMU_CONNECTED c=18 -#: ../../Firmware/ultralcd.cpp:1688 +#: ../../Firmware/ultralcd.cpp:1679 msgid "MMU2 connected" msgstr "MMU2 ansluten" #. MSG_MAGNETS_COMP c=13 -#: ../../Firmware/messages.cpp:147 ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/messages.cpp:151 ../../Firmware/ultralcd.cpp:5834 msgid "Magnets comp." msgstr "Magnets komp." #. MSG_MAIN c=18 -#: ../../Firmware/messages.cpp:58 ../../Firmware/ultralcd.cpp:1155 -#: ../../Firmware/ultralcd.cpp:1303 ../../Firmware/ultralcd.cpp:1346 -#: ../../Firmware/ultralcd.cpp:1653 ../../Firmware/ultralcd.cpp:4803 -#: ../../Firmware/ultralcd.cpp:4900 ../../Firmware/ultralcd.cpp:5127 -#: ../../Firmware/ultralcd.cpp:5139 ../../Firmware/ultralcd.cpp:5162 -#: ../../Firmware/ultralcd.cpp:5181 ../../Firmware/ultralcd.cpp:5725 +#: ../../Firmware/messages.cpp:62 ../../Firmware/ultralcd.cpp:1165 +#: ../../Firmware/ultralcd.cpp:1298 ../../Firmware/ultralcd.cpp:1340 +#: ../../Firmware/ultralcd.cpp:1644 ../../Firmware/ultralcd.cpp:4757 +#: ../../Firmware/ultralcd.cpp:4863 ../../Firmware/ultralcd.cpp:5097 +#: ../../Firmware/ultralcd.cpp:5117 ../../Firmware/ultralcd.cpp:5135 +#: ../../Firmware/ultralcd.cpp:5153 ../../Firmware/ultralcd.cpp:5177 +#: ../../Firmware/ultralcd.cpp:5730 msgid "Main" msgstr "Huvudsaklig" #. MSG_MEASURED_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:2535 msgid "Measured skew" msgstr "Mätt skevhet" #. MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3290 -#: ../../Firmware/mesh_bed_calibration.cpp:2840 ../../Firmware/messages.cpp:62 +#: ../../Firmware/Marlin_main.cpp:3282 +#: ../../Firmware/mesh_bed_calibration.cpp:2836 ../../Firmware/messages.cpp:66 msgid "Measuring reference height of calibration point" msgstr "Mätning av referenshöjd för kalibreringspunkt" #. MSG_MESH c=12 -#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:5840 +#: ../../Firmware/messages.cpp:148 ../../Firmware/ultralcd.cpp:5830 msgid "Mesh" msgstr "Nätverk" #. MSG_MESH_BED_LEVELING c=18 -#: ../../Firmware/messages.cpp:145 ../../Firmware/ultralcd.cpp:4831 -#: ../../Firmware/ultralcd.cpp:4918 +#: ../../Firmware/messages.cpp:149 ../../Firmware/ultralcd.cpp:4794 +#: ../../Firmware/ultralcd.cpp:4881 msgid "Mesh Bed Leveling" msgstr "Bäddytsjustering" #. MSG_MODE c=6 -#: ../../Firmware/messages.cpp:100 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4346 ../../Firmware/ultralcd.cpp:4366 -#: ../../Firmware/ultralcd.cpp:4369 ../../Firmware/ultralcd.cpp:4372 -#: ../../Firmware/ultralcd.cpp:4375 ../../Firmware/ultralcd.cpp:5771 -#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5785 -#: ../../Firmware/ultralcd.cpp:5786 ../../Firmware/ultralcd.cpp:5787 -#: ../../Firmware/ultralcd.cpp:5788 ../../Firmware/ultralcd.cpp:5872 +#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4336 ../../Firmware/ultralcd.cpp:4356 +#: ../../Firmware/ultralcd.cpp:4359 ../../Firmware/ultralcd.cpp:4362 +#: ../../Firmware/ultralcd.cpp:4365 ../../Firmware/ultralcd.cpp:5761 +#: ../../Firmware/ultralcd.cpp:5768 ../../Firmware/ultralcd.cpp:5775 +#: ../../Firmware/ultralcd.cpp:5776 ../../Firmware/ultralcd.cpp:5777 +#: ../../Firmware/ultralcd.cpp:5778 ../../Firmware/ultralcd.cpp:5862 msgid "Mode" msgstr "" #. MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:3606 +#: ../../Firmware/ultralcd.cpp:3587 msgid "Mode change in progress..." msgstr "Lägesändring pågår..." #. MSG_MODEL c=8 -#: ../../Firmware/messages.cpp:129 ../../Firmware/ultralcd.cpp:4583 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4589 -#: ../../Firmware/ultralcd.cpp:4592 +#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4573 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4579 +#: ../../Firmware/ultralcd.cpp:4582 msgid "Model" msgstr "Modell" +#. MSG_DESC_TMC c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:207 +msgid "More details online." +msgstr "" + +#. MSG_BTN_MORE c=5 +#: ../../Firmware/mmu2/errors_list.h:287 +#: ../../Firmware/mmu2_error_converter.cpp:153 +msgid "More⏬" +msgstr "" + #. MSG_SELFTEST_MOTOR c=18 -#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:6990 -#: ../../Firmware/ultralcd.cpp:6999 ../../Firmware/ultralcd.cpp:7017 +#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 +#: ../../Firmware/ultralcd.cpp:6990 ../../Firmware/ultralcd.cpp:7008 msgid "Motor" msgstr "" #. MSG_MOVE_X c=18 -#: ../../Firmware/ultralcd.cpp:3500 +#: ../../Firmware/ultralcd.cpp:3509 msgid "Move X" msgstr "Flytta X" #. MSG_MOVE_Y c=18 -#: ../../Firmware/ultralcd.cpp:3501 +#: ../../Firmware/ultralcd.cpp:3510 msgid "Move Y" msgstr "Flytta Y" #. MSG_MOVE_Z c=18 -#: ../../Firmware/ultralcd.cpp:3502 +#: ../../Firmware/ultralcd.cpp:3511 msgid "Move Z" msgstr "Flytta Z" #. MSG_MOVE_AXIS c=18 -#: ../../Firmware/ultralcd.cpp:4809 +#: ../../Firmware/ultralcd.cpp:4763 msgid "Move axis" msgstr "Flytta axlar" +#. MSG_PROGRESS_MOVING_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:30 +#: ../../Firmware/mmu2_progress_converter.cpp:61 +msgid "Moving selector" +msgstr "" + #. MSG_NA c=3 -#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:124 -#: ../../Firmware/ultralcd.cpp:2510 ../../Firmware/ultralcd.cpp:2555 -#: ../../Firmware/ultralcd.cpp:3419 ../../Firmware/ultralcd.cpp:4236 -#: ../../Firmware/ultralcd.cpp:4284 ../../Firmware/ultralcd.cpp:5745 -#: ../../Firmware/ultralcd.cpp:5844 +#: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 +#: ../../Firmware/ultralcd.cpp:2500 ../../Firmware/ultralcd.cpp:2545 +#: ../../Firmware/ultralcd.cpp:3434 ../../Firmware/ultralcd.cpp:4229 +#: ../../Firmware/ultralcd.cpp:4230 ../../Firmware/ultralcd.cpp:4232 +#: ../../Firmware/ultralcd.cpp:5834 msgid "N/A" msgstr "" @@ -1065,156 +1252,164 @@ msgid "New firmware version available:" msgstr "Ny firmware version tillgänglig:" #. MSG_NO c=4 -#: ../../Firmware/messages.cpp:66 ../../Firmware/ultralcd.cpp:2812 -#: ../../Firmware/ultralcd.cpp:3188 ../../Firmware/ultralcd.cpp:4793 -#: ../../Firmware/ultralcd.cpp:5996 +#: ../../Firmware/messages.cpp:70 ../../Firmware/ultralcd.cpp:2802 +#: ../../Firmware/ultralcd.cpp:3170 ../../Firmware/ultralcd.cpp:4747 +#: ../../Firmware/ultralcd.cpp:5997 msgid "No" msgstr "Nej" #. MSG_NO_CARD c=18 -#: ../../Firmware/ultralcd.cpp:5551 +#: ../../Firmware/ultralcd.cpp:5552 msgid "No SD card" msgstr "Inget SD-kort" #. MSG_NO_MOVE c=20 -#: ../../Firmware/Marlin_main.cpp:5374 +#: ../../Firmware/Marlin_main.cpp:5402 msgid "No move." msgstr "Ingen rörelse." #. MSG_NONE c=8 -#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4413 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:4583 ../../Firmware/ultralcd.cpp:4592 -#: ../../Firmware/ultralcd.cpp:4622 ../../Firmware/ultralcd.cpp:4631 -#: ../../Firmware/ultralcd.cpp:4663 ../../Firmware/ultralcd.cpp:4672 +#: ../../Firmware/messages.cpp:130 ../../Firmware/ultralcd.cpp:4403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:4573 ../../Firmware/ultralcd.cpp:4582 +#: ../../Firmware/ultralcd.cpp:4612 ../../Firmware/ultralcd.cpp:4621 +#: ../../Firmware/ultralcd.cpp:4653 ../../Firmware/ultralcd.cpp:4662 msgid "None" msgstr "Ingen" #. MSG_NORMAL c=7 -#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:4344 -#: ../../Firmware/ultralcd.cpp:4389 ../../Firmware/ultralcd.cpp:4405 -#: ../../Firmware/ultralcd.cpp:4424 ../../Firmware/ultralcd.cpp:5771 +#: ../../Firmware/messages.cpp:108 ../../Firmware/ultralcd.cpp:4334 +#: ../../Firmware/ultralcd.cpp:4379 ../../Firmware/ultralcd.cpp:4395 +#: ../../Firmware/ultralcd.cpp:4414 ../../Firmware/ultralcd.cpp:5761 msgid "Normal" msgstr "" #. MSG_SELFTEST_NOTCONNECTED c=20 -#: ../../Firmware/ultralcd.cpp:6977 +#: ../../Firmware/ultralcd.cpp:6968 msgid "Not connected" msgstr "Inte ansluten" #. MSG_SELFTEST_FAN_NO c=19 -#: ../../Firmware/messages.cpp:87 ../../Firmware/ultralcd.cpp:7176 -#: ../../Firmware/ultralcd.cpp:7191 ../../Firmware/ultralcd.cpp:7199 +#: ../../Firmware/messages.cpp:91 ../../Firmware/ultralcd.cpp:7166 +#: ../../Firmware/ultralcd.cpp:7181 ../../Firmware/ultralcd.cpp:7189 msgid "Not spinning" msgstr "Roterar inte" #. MSG_WIZARD_V2_CAL c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3970 +#: ../../Firmware/ultralcd.cpp:3928 msgid "" "Now I will calibrate distance between tip of the nozzle and heatbed surface." msgstr "" "Nu ska jag kalibrera avståndet mellan munstyckets spets och värmebäddsytan." #. MSG_WIZARD_WILL_PREHEAT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4099 +#: ../../Firmware/ultralcd.cpp:4059 msgid "Now I will preheat nozzle for PLA." msgstr "Nu ska jag förvärma munstycket för PLA." #. MSG_REMOVE_TEST_PRINT c=20 r=4 -#: ../../Firmware/ultralcd.cpp:4090 +#: ../../Firmware/ultralcd.cpp:4048 msgid "Now remove the test print from steel sheet." msgstr "Ta nu bort testutskriften från metallskivan." #. MSG_NOZZLE c=10 -#: ../../Firmware/messages.cpp:67 ../../Firmware/ultralcd.cpp:1410 -#: ../../Firmware/ultralcd.cpp:4501 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4507 ../../Firmware/ultralcd.cpp:4510 -#: ../../Firmware/ultralcd.cpp:5728 ../../Firmware/ultralcd.cpp:5890 +#: ../../Firmware/messages.cpp:71 ../../Firmware/ultralcd.cpp:1403 +#: ../../Firmware/ultralcd.cpp:4491 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4497 ../../Firmware/ultralcd.cpp:4500 +#: ../../Firmware/ultralcd.cpp:5733 ../../Firmware/ultralcd.cpp:5880 msgid "Nozzle" msgstr "Munstycke" #. MSG_NOZZLE_DIAMETER c=10 -#: ../../Firmware/messages.cpp:133 ../../Firmware/ultralcd.cpp:4554 +#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4544 msgid "Nozzle d." msgstr "Munst dia." +#. MSG_PROGRESS_OK c=4 +#: ../../Firmware/mmu2_progress_converter.cpp:8 +#: ../../Firmware/mmu2_progress_converter.cpp:34 +msgid "OK" +msgstr "" + #. MSG_OFF c=3 -#: ../../Firmware/menu.cpp:467 ../../Firmware/messages.cpp:122 -#: ../../Firmware/ultralcd.cpp:4242 ../../Firmware/ultralcd.cpp:4258 -#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4321 -#: ../../Firmware/ultralcd.cpp:4350 ../../Firmware/ultralcd.cpp:4819 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4842 -#: ../../Firmware/ultralcd.cpp:5652 ../../Firmware/ultralcd.cpp:5749 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5775 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 +#: ../../Firmware/messages.cpp:126 ../../Firmware/ultralcd.cpp:4225 +#: ../../Firmware/ultralcd.cpp:4236 ../../Firmware/ultralcd.cpp:4237 +#: ../../Firmware/ultralcd.cpp:4239 ../../Firmware/ultralcd.cpp:4264 +#: ../../Firmware/ultralcd.cpp:4292 ../../Firmware/ultralcd.cpp:4340 +#: ../../Firmware/ultralcd.cpp:4775 ../../Firmware/ultralcd.cpp:4782 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:5657 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5765 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "Off" msgstr "Av" #. MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 -#: ../../Firmware/Marlin_main.cpp:1532 +#: ../../Firmware/Marlin_main.cpp:1513 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" "Gamla inställningar hittades. Standard PID, Esteps etc. kommer att ställas " "in." #. MSG_ON c=3 -#: ../../Firmware/messages.cpp:123 ../../Firmware/ultralcd.cpp:4252 -#: ../../Firmware/ultralcd.cpp:4256 ../../Firmware/ultralcd.cpp:4288 -#: ../../Firmware/ultralcd.cpp:4311 ../../Firmware/ultralcd.cpp:4349 -#: ../../Firmware/ultralcd.cpp:4819 ../../Firmware/ultralcd.cpp:4838 -#: ../../Firmware/ultralcd.cpp:4842 ../../Firmware/ultralcd.cpp:5753 -#: ../../Firmware/ultralcd.cpp:5764 ../../Firmware/ultralcd.cpp:5773 -#: ../../Firmware/ultralcd.cpp:5844 ../../Firmware/ultralcd.cpp:7852 -#: ../../Firmware/ultralcd.cpp:7856 +#: ../../Firmware/SpoolJoin.cpp:38 ../../Firmware/messages.cpp:127 +#: ../../Firmware/ultralcd.cpp:4225 ../../Firmware/ultralcd.cpp:4236 +#: ../../Firmware/ultralcd.cpp:4237 ../../Firmware/ultralcd.cpp:4239 +#: ../../Firmware/ultralcd.cpp:4264 ../../Firmware/ultralcd.cpp:4282 +#: ../../Firmware/ultralcd.cpp:4339 ../../Firmware/ultralcd.cpp:4775 +#: ../../Firmware/ultralcd.cpp:4782 ../../Firmware/ultralcd.cpp:4801 +#: ../../Firmware/ultralcd.cpp:4805 ../../Firmware/ultralcd.cpp:5754 +#: ../../Firmware/ultralcd.cpp:5763 ../../Firmware/ultralcd.cpp:5834 +#: ../../Firmware/ultralcd.cpp:7829 ../../Firmware/ultralcd.cpp:7833 msgid "On" msgstr "På" #. MSG_SOUND_ONCE c=7 -#: ../../Firmware/messages.cpp:142 ../../Firmware/ultralcd.cpp:4461 +#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:4451 msgid "Once" msgstr "En gång" #. MSG_PAUSED_THERMAL_ERROR c=20 -#: ../../Firmware/Marlin_main.cpp:9715 ../../Firmware/messages.cpp:164 +#: ../../Firmware/Marlin_main.cpp:9677 ../../Firmware/messages.cpp:168 msgid "PAUSED THERMAL ERROR" msgstr "" #. MSG_PID_RUNNING c=20 -#: ../../Firmware/ultralcd.cpp:1025 +#: ../../Firmware/ultralcd.cpp:1036 msgid "PID cal." msgstr "PID kalibrering." #. MSG_PID_FINISHED c=20 -#: ../../Firmware/ultralcd.cpp:1030 +#: ../../Firmware/ultralcd.cpp:1041 msgid "PID cal. finished" msgstr "PID kalibrering klar" #. MSG_PID_EXTRUDER c=17 -#: ../../Firmware/ultralcd.cpp:4921 +#: ../../Firmware/ultralcd.cpp:4884 msgid "PID calibration" msgstr "PID kalibrering" #. MSG_PINDA_PREHEAT c=20 -#: ../../Firmware/ultralcd.cpp:660 +#: ../../Firmware/ultralcd.cpp:666 msgid "PINDA Heating" msgstr "PINDA uppvärmning" #. MSG_PINDA_CALIBRATION c=13 -#: ../../Firmware/Marlin_main.cpp:4929 ../../Firmware/Marlin_main.cpp:5032 -#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:657 -#: ../../Firmware/ultralcd.cpp:4838 ../../Firmware/ultralcd.cpp:4928 +#: ../../Firmware/Marlin_main.cpp:4957 ../../Firmware/Marlin_main.cpp:5060 +#: ../../Firmware/messages.cpp:113 ../../Firmware/ultralcd.cpp:663 +#: ../../Firmware/ultralcd.cpp:4801 ../../Firmware/ultralcd.cpp:4891 msgid "PINDA cal." msgstr "PINDA kal." #. MSG_PINDA_CAL_FAILED c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3369 +#: ../../Firmware/ultralcd.cpp:3384 msgid "PINDA calibration failed" msgstr "PINDA-kalibrering misslyckades" #. MSG_PINDA_CALIBRATION_DONE c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:5109 ../../Firmware/messages.cpp:110 -#: ../../Firmware/ultralcd.cpp:3363 +#: ../../Firmware/Marlin_main.cpp:5137 ../../Firmware/messages.cpp:114 +#: ../../Firmware/ultralcd.cpp:3378 msgid "" "PINDA calibration is finished and active. It can be disabled in menu " "Settings->PINDA cal." @@ -1222,19 +1417,36 @@ msgstr "" "PINDA-kalibreringen är klar och aktiv. PINDA kalibrering kan inaktiveras i " "menyn Inställningar->PINDA kal." +#. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 +msgid "PULLEY CANNOT MOVE" +msgstr "" + +#. MSG_PROGRESS_PARK_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:26 +#: ../../Firmware/mmu2_progress_converter.cpp:57 +msgid "Parking selector" +msgstr "" + #. MSG_PAUSE c=5 -#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:4715 +#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 msgid "Pause" msgstr "Paus" #. MSG_PAUSE_PRINT c=18 -#: ../../Firmware/messages.cpp:69 ../../Firmware/ultralcd.cpp:5515 -#: ../../Firmware/ultralcd.cpp:5517 +#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:5516 +#: ../../Firmware/ultralcd.cpp:5518 msgid "Pause print" msgstr "Pausa utskrift" +#. MSG_PROGRESS_PERFORM_CUT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:24 +#: ../../Firmware/mmu2_progress_converter.cpp:55 +msgid "Performing cut" +msgstr "" + #. MSG_PAPER c=20 r=10 -#: ../../Firmware/Marlin_main.cpp:3312 ../../Firmware/messages.cpp:68 +#: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 msgid "" "Place a sheet of paper under the nozzle during the calibration of first 4 " "points. If the nozzle catches the paper, power off the printer immediately." @@ -1243,7 +1455,7 @@ msgstr "" "punkterna. Stäng av skrivaren omedelbart om munstycket rör vid pappret.." #. MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:114 ../../Firmware/ultralcd.cpp:4184 +#: ../../Firmware/messages.cpp:118 ../../Firmware/ultralcd.cpp:4138 msgid "" "Please check our handbook and fix the problem. Then resume the Wizard by " "rebooting the printer." @@ -1257,22 +1469,22 @@ msgid "Please check the IR sensor connection, unload filament if present." msgstr "Kontrollera IR-sensorns anslutning, mata ut eventuellt filament." #. MSG_SELFTEST_PLEASECHECK c=20 -#: ../../Firmware/ultralcd.cpp:6971 +#: ../../Firmware/ultralcd.cpp:6962 msgid "Please check:" msgstr "Kontrollera:" #. MSG_WIZARD_CLEAN_HEATBED c=20 r=8 -#: ../../Firmware/ultralcd.cpp:4156 +#: ../../Firmware/ultralcd.cpp:4110 msgid "Please clean heatbed and then press the knob." msgstr "Rengör bädden och tryck sedan på knappen." #. MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:3288 ../../Firmware/messages.cpp:24 +#: ../../Firmware/Marlin_main.cpp:3280 ../../Firmware/messages.cpp:24 msgid "Please clean the nozzle for calibration. Click when done." msgstr "Rengör munstycket för kalibrering. Klicka när du är klar." #. MSG_WIZARD_LOAD_FILAMENT c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3953 +#: ../../Firmware/ultralcd.cpp:3915 msgid "" "Please insert filament into the extruder, then press the knob to load it." msgstr "" @@ -1280,7 +1492,7 @@ msgstr "" "inladdning.." #. MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3948 +#: ../../Firmware/ultralcd.cpp:3912 msgid "" "Please insert filament into the first tube of the MMU, then press the knob " "to load it." @@ -1289,50 +1501,45 @@ msgstr "" "knappen för inladdning." #. MSG_PLEASE_LOAD_PLA c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3871 +#: ../../Firmware/ultralcd.cpp:3835 msgid "Please load filament first." msgstr "Vänligen ladda filament först." #. MSG_CHECK_IDLER c=20 r=5 -#: ../../Firmware/Marlin_main.cpp:3548 +#: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." msgstr "Öppna idler och ta bort filamentet manuellt." #. MSG_PLACE_STEEL_SHEET c=20 r=5 -#: ../../Firmware/mesh_bed_calibration.cpp:2799 ../../Firmware/messages.cpp:70 -#: ../../Firmware/ultralcd.cpp:4093 +#: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 +#: ../../Firmware/ultralcd.cpp:4052 msgid "Please place steel sheet on heatbed." msgstr "Placera metallskiva på värmebädden." #. MSG_PRESS_TO_UNLOAD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11577 ../../Firmware/Marlin_main.cpp:11630 -#: ../../Firmware/messages.cpp:74 +#: ../../Firmware/Marlin_main.cpp:11532 ../../Firmware/Marlin_main.cpp:11585 +#: ../../Firmware/messages.cpp:78 msgid "Please press the knob to unload filament" msgstr "Vänligen tryck på knappen för att mata ut filament" #. MSG_PULL_OUT_FILAMENT c=20 r=4 -#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:5221 +#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:5221 msgid "Please pull out filament immediately" msgstr "Vänligen ta ut filamentet omedelbart" -#. MSG_EJECT_REMOVE c=20 r=4 -#: ../../Firmware/mmu.cpp:1082 -msgid "Please remove filament and then press the knob." -msgstr "Ta bort filamentet och tryck sedan på knappen." - #. MSG_REMOVE_SHIPPING_HELPERS c=20 r=3 -#: ../../Firmware/ultralcd.cpp:4089 +#: ../../Firmware/ultralcd.cpp:4047 msgid "Please remove shipping helpers first." msgstr "Vänligen ta bort fraktinsatserna först." #. MSG_REMOVE_STEEL_SHEET c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3310 ../../Firmware/Marlin_main.cpp:4893 -#: ../../Firmware/messages.cpp:79 +#: ../../Firmware/Marlin_main.cpp:3303 ../../Firmware/Marlin_main.cpp:4921 +#: ../../Firmware/messages.cpp:83 msgid "Please remove steel sheet from heatbed." msgstr "Ta bort metallskivan från värmebädden." #. MSG_RUN_XYZ c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4869 +#: ../../Firmware/Marlin_main.cpp:4897 msgid "Please run XYZ calibration first." msgstr "Utför XYZ-kalibrering först." @@ -1341,113 +1548,109 @@ msgstr "Utför XYZ-kalibrering först." msgid "Please unload the filament first, then repeat this action." msgstr "Vänligen mata ut filamentet först och upprepa sedan denna åtgärd." -#. MSG_UPDATE_MMU2_FW c=20 r=4 -#: ../../Firmware/mmu.cpp:1002 -msgid "Please update firmware in your MMU2. Waiting for reset." -msgstr "Uppdatera firmware i din MMU2. Väntar på återställning." - #. MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: ../../Firmware/util.cpp:203 msgid "Please upgrade." msgstr "Vänligen uppgradera." #. MSG_PLEASE_WAIT c=20 -#: ../../Firmware/Marlin_main.cpp:3544 ../../Firmware/Marlin_main.cpp:3560 -#: ../../Firmware/Marlin_main.cpp:7928 ../../Firmware/messages.cpp:71 -#: ../../Firmware/ultralcd.cpp:2194 ../../Firmware/ultralcd.cpp:2205 +#: ../../Firmware/Marlin_main.cpp:3577 ../../Firmware/Marlin_main.cpp:3595 +#: ../../Firmware/Marlin_main.cpp:7957 ../../Firmware/messages.cpp:75 +#: ../../Firmware/ultralcd.cpp:2202 ../../Firmware/ultralcd.cpp:2213 msgid "Please wait" msgstr "Vänligen vänta" #. MSG_POWER_FAILURES c=15 -#: ../../Firmware/messages.cpp:72 ../../Firmware/ultralcd.cpp:1227 -#: ../../Firmware/ultralcd.cpp:1268 ../../Firmware/ultralcd.cpp:1278 +#: ../../Firmware/messages.cpp:76 ../../Firmware/ultralcd.cpp:1245 +#: ../../Firmware/ultralcd.cpp:1274 msgid "Power failures" msgstr "Strömavbrott" #. MSG_PREHEAT c=18 -#: ../../Firmware/ultralcd.cpp:5510 +#: ../../Firmware/ultralcd.cpp:5511 msgid "Preheat" msgstr "Förvärm" #. MSG_PREHEAT_NOZZLE c=20 -#: ../../Firmware/messages.cpp:73 ../../Firmware/ultralcd.cpp:2288 +#: ../../Firmware/messages.cpp:77 ../../Firmware/ultralcd.cpp:2283 msgid "Preheat the nozzle!" msgstr "Förvärm munstycket!" #. MSG_WIZARD_HEATING c=20 r=3 -#: ../../Firmware/messages.cpp:116 ../../Firmware/ultralcd.cpp:2908 -#: ../../Firmware/ultralcd.cpp:3932 ../../Firmware/ultralcd.cpp:3934 +#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2898 +#: ../../Firmware/ultralcd.cpp:3897 ../../Firmware/ultralcd.cpp:3899 msgid "Preheating nozzle. Please wait." msgstr "Förvärmer munstycke. Vänta." #. MSG_PREHEATING_TO_CUT c=20 -#: ../../Firmware/ultralcd.cpp:1996 +#: ../../Firmware/ultralcd.cpp:2001 msgid "Preheating to cut" msgstr "Förvärmer för skära" #. MSG_PREHEATING_TO_EJECT c=20 -#: ../../Firmware/ultralcd.cpp:1993 +#: ../../Firmware/ultralcd.cpp:1998 msgid "Preheating to eject" msgstr "Förvämer för utmatn" #. MSG_PREHEATING_TO_LOAD c=20 -#: ../../Firmware/ultralcd.cpp:1984 +#: ../../Firmware/ultralcd.cpp:1989 msgid "Preheating to load" msgstr "Förvärmer för laddn" #. MSG_PREHEATING_TO_UNLOAD c=20 -#: ../../Firmware/ultralcd.cpp:1989 +#: ../../Firmware/ultralcd.cpp:1994 msgid "Preheating to unload" msgstr "Förvärmer for utmatn" +#. MSG_PROGRESS_PREPARE_BLADE c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:22 +#: ../../Firmware/mmu2_progress_converter.cpp:53 +msgid "Preparing blade" +msgstr "" + #. MSG_PRESS_KNOB c=20 -#: ../../Firmware/ultralcd.cpp:1817 +#: ../../Firmware/ultralcd.cpp:1809 msgid "Press the knob" msgstr "Tryck på knappen" #. MSG_PRESS_TO_PREHEAT c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:11608 +#: ../../Firmware/Marlin_main.cpp:11563 msgid "Press the knob to preheat nozzle and continue." msgstr "Tryck på knappen för att förvärma munstycket och fortsätta." -#. MSG_RESUME_NOZZLE_TEMP c=20 r=4 -#: ../../Firmware/mmu.cpp:727 -msgid "Press the knob to resume nozzle temperature." -msgstr "Tryck på knappen för att återställa munstyckstemperaturen." - #. MSG_PRINT_ABORTED c=20 -#: ../../Firmware/messages.cpp:75 ../../Firmware/ultralcd.cpp:860 +#: ../../Firmware/messages.cpp:79 ../../Firmware/ultralcd.cpp:871 msgid "Print aborted" msgstr "Utskriften avbröts" #. MSG_PRINT_FAN_SPEED c=16 -#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1134 -#: ../../Firmware/ultralcd.cpp:7332 +#: ../../Firmware/messages.cpp:36 ../../Firmware/ultralcd.cpp:1144 +#: ../../Firmware/ultralcd.cpp:7322 msgid "Print fan:" msgstr "Utskriftsfläkt:" #. MSG_CARD_MENU c=18 -#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5543 +#: ../../Firmware/messages.cpp:20 ../../Firmware/ultralcd.cpp:5544 msgid "Print from SD" msgstr "Skriv ut från SD" #. MSG_PRINT_PAUSED c=20 -#: ../../Firmware/ultralcd.cpp:874 +#: ../../Firmware/ultralcd.cpp:885 msgid "Print paused" msgstr "Utskriften pausad" #. MSG_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2374 +#: ../../Firmware/ultralcd.cpp:2364 msgid "Print time" msgstr "Utskriftstid" #. MSG_PRINTER_IP c=18 -#: ../../Firmware/ultralcd.cpp:1719 +#: ../../Firmware/ultralcd.cpp:1711 msgid "Printer IP Addr:" msgstr "" #. MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1545 ../../Firmware/messages.cpp:42 +#: ../../Firmware/Marlin_main.cpp:1526 ../../Firmware/messages.cpp:42 msgid "" "Printer has not been calibrated yet. Please follow the manual, chapter First " "steps, section Calibration flow." @@ -1456,12 +1659,12 @@ msgstr "" "stegen, avsnitt Kalibreringsflöde." #. MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 -#: ../../Firmware/util.cpp:299 +#: ../../Firmware/util.cpp:289 msgid "Printer nozzle diameter differs from the G-code. Continue?" msgstr "Skrivarmunstyckets diameter skiljer sig från G-koden. Fortsätta?" #. MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 -#: ../../Firmware/util.cpp:305 +#: ../../Firmware/util.cpp:295 msgid "" "Printer nozzle diameter differs from the G-code. Please check the value in " "settings. Print cancelled." @@ -1469,67 +1672,112 @@ msgstr "" "Skrivarmunstyckets diameter skiljer sig från G-koden. Kontrollera värdet i " "inställningarna. Utskriften avbröts." +#. MSG_DESC_PULLEY_STALLED c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:200 +msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." +msgstr "" + +#. MSG_PROGRESS_PUSH_FILAMENT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:23 +#: ../../Firmware/mmu2_progress_converter.cpp:54 +msgid "Pushing filament" +msgstr "" + +#. MSG_TITLE_QUEUE_FULL c=20 +#: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 +msgid "QUEUE FULL" +msgstr "" + #. MSG_RPI_PORT c=13 -#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4842 +#: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 msgid "RPi port" msgstr "" #. MSG_BED_CORRECTION_REAR c=14 -#: ../../Firmware/ultralcd.cpp:2763 +#: ../../Firmware/ultralcd.cpp:2753 msgid "Rear side [μm]" msgstr "Baksida [μm]" #. MSG_RECOVERING_PRINT c=20 -#: ../../Firmware/Marlin_main.cpp:10951 +#: ../../Firmware/Marlin_main.cpp:10899 msgid "Recovering print" msgstr "Återställer utskrift" #. MSG_REMOVE_OLD_FILAMENT c=20 r=5 -#: ../../Firmware/mmu.cpp:831 +#: ../../Firmware/Marlin_main.cpp:3461 msgid "Remove old filament and press the knob to start loading new filament." msgstr "" "Ta bort det gamla filamentet och tryck på knappen för att börja ladda nytt " "filament." #. MSG_RENAME c=18 -#: ../../Firmware/ultralcd.cpp:5434 +#: ../../Firmware/ultralcd.cpp:5435 msgid "Rename" msgstr "Döp om" +#. MSG_DESC_INVALID_TOOL c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:229 +msgid "" +"Requested filament tool is not available on this hardware. Check the G-code " +"for tool index out of range (T0-T4)." +msgstr "" + #. MSG_RESET c=14 -#: ../../Firmware/messages.cpp:80 ../../Firmware/ultralcd.cpp:2764 -#: ../../Firmware/ultralcd.cpp:5435 +#: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 +#: ../../Firmware/ultralcd.cpp:5436 msgid "Reset" msgstr "Återställ" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "" + #. MSG_CALIBRATE_BED_RESET c=18 -#: ../../Firmware/ultralcd.cpp:4925 +#: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." msgstr "Återställ XYZ-kal." #. MSG_RESUME_PRINT c=18 -#: ../../Firmware/Marlin_main.cpp:655 ../../Firmware/messages.cpp:81 -#: ../../Firmware/ultralcd.cpp:5529 ../../Firmware/ultralcd.cpp:5531 +#: ../../Firmware/Marlin_main.cpp:644 ../../Firmware/messages.cpp:85 +#: ../../Firmware/ultralcd.cpp:5530 ../../Firmware/ultralcd.cpp:5532 msgid "Resume print" msgstr "Återuppta utskrift" #. MSG_RESUMING_PRINT c=20 -#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:668 +#: ../../Firmware/messages.cpp:86 ../../Firmware/ultralcd.cpp:674 msgid "Resuming print" msgstr "Återupptar utskrift" +#. MSG_PROGRESS_RETRACT_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:28 +#: ../../Firmware/mmu2_progress_converter.cpp:59 +msgid "Retract from FINDA" +msgstr "" + +#. MSG_BTN_RETRY c=5 +#: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 +msgid "Retry" +msgstr "" + +#. MSG_PROGRESS_RETURN_SELECTOR c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:25 +#: ../../Firmware/mmu2_progress_converter.cpp:56 +msgid "Returning selector" +msgstr "" + #. MSG_RIGHT c=10 -#: ../../Firmware/ultralcd.cpp:2505 +#: ../../Firmware/ultralcd.cpp:2495 msgid "Right" msgstr "Höger" #. MSG_BED_CORRECTION_RIGHT c=14 -#: ../../Firmware/ultralcd.cpp:2761 +#: ../../Firmware/ultralcd.cpp:2751 msgid "Right side[μm]" msgstr "Höger sida[μm]" #. MSG_WIZARD_RERUN c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3892 +#: ../../Firmware/ultralcd.cpp:3857 msgid "" "Running Wizard will delete current calibration results and start from the " "beginning. Continue?" @@ -1537,36 +1785,41 @@ msgstr "" "Att utföra guiden kommer att radera aktuella kalibreringsinställningar och " "börja om från början. Fortsätta?" -#. MSG_RUNOUTS c=7 -#: ../../Firmware/ultralcd.cpp:1279 -msgid "Runouts" -msgstr "Avbrott" - #. MSG_SD_CARD c=8 -#: ../../Firmware/messages.cpp:135 ../../Firmware/ultralcd.cpp:4403 -#: ../../Firmware/ultralcd.cpp:4405 ../../Firmware/ultralcd.cpp:4422 -#: ../../Firmware/ultralcd.cpp:4424 +#: ../../Firmware/messages.cpp:139 ../../Firmware/ultralcd.cpp:4393 +#: ../../Firmware/ultralcd.cpp:4395 ../../Firmware/ultralcd.cpp:4412 +#: ../../Firmware/ultralcd.cpp:4414 msgid "SD card" msgstr "SD-kort" +#. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 +#: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 +msgid "SELECTOR CANNOT HOME" +msgstr "" + +#. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 +#: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 +msgid "SELECTOR CANNOT MOVE" +msgstr "" + #. MSG_STOPPED c=20 -#: ../../Firmware/Marlin_main.cpp:9744 ../../Firmware/messages.cpp:108 +#: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 msgid "STOPPED." msgstr "STOPPAD." #. MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3 -#: ../../Firmware/Marlin_main.cpp:3294 ../../Firmware/Marlin_main.cpp:3314 -#: ../../Firmware/mesh_bed_calibration.cpp:2234 ../../Firmware/messages.cpp:40 +#: ../../Firmware/Marlin_main.cpp:3286 ../../Firmware/Marlin_main.cpp:3308 +#: ../../Firmware/mesh_bed_calibration.cpp:2233 ../../Firmware/messages.cpp:40 msgid "Searching bed calibration point" msgstr "Söker efter kalibreringspunkt för bädden" #. MSG_SELECT c=18 -#: ../../Firmware/ultralcd.cpp:5427 +#: ../../Firmware/ultralcd.cpp:5428 msgid "Select" msgstr "Välj" #. MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7 -#: ../../Firmware/ultralcd.cpp:3974 +#: ../../Firmware/ultralcd.cpp:3932 msgid "" "Select a filament for the First Layer Calibration and select it in the on-" "screen menu." @@ -1574,66 +1827,73 @@ msgstr "" "Välj ett filament för första lagrets kalibrering och välj det i skärmmenyn." #. MSG_SELECT_EXTRUDER c=20 -#: ../../Firmware/Marlin_main.cpp:8605 ../../Firmware/messages.cpp:50 +#: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 +#: ../../Firmware/Tcodes.cpp:51 ../../Firmware/messages.cpp:52 msgid "Select extruder:" msgstr "Välj extruder:" #. MSG_SELECT_FILAMENT c=20 -#: ../../Firmware/Marlin_main.cpp:8574 ../../Firmware/Marlin_main.cpp:8601 -#: ../../Firmware/messages.cpp:51 ../../Firmware/ultralcd.cpp:3842 +#: ../../Firmware/Tcodes.cpp:33 ../../Firmware/messages.cpp:53 +#: ../../Firmware/ultralcd.cpp:3805 msgid "Select filament:" msgstr "Välj filament:" #. MSG_SELECT_LANGUAGE c=18 -#: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:3687 -#: ../../Firmware/ultralcd.cpp:4849 +#: ../../Firmware/messages.cpp:99 ../../Firmware/ultralcd.cpp:3650 +#: ../../Firmware/ultralcd.cpp:4812 msgid "Select language" msgstr "Välj språk" #. MSG_SEL_PREHEAT_TEMP c=20 r=6 -#: ../../Firmware/ultralcd.cpp:4130 +#: ../../Firmware/ultralcd.cpp:4084 msgid "Select nozzle preheat temperature which matches your material." msgstr "Välj munstycksförvärmningstemperatur som passar ditt material." #. MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3979 +#: ../../Firmware/ultralcd.cpp:3937 msgid "Select temperature which matches your material." msgstr "Välj temperatur som passar ditt material." +#. MSG_PROGRESS_SELECT_SLOT c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:21 +#: ../../Firmware/mmu2_progress_converter.cpp:52 +msgid "Selecting fil. slot" +msgstr "" + #. MSG_SELFTEST_OK c=20 -#: ../../Firmware/ultralcd.cpp:6530 +#: ../../Firmware/ultralcd.cpp:6522 msgid "Self test OK" msgstr "Självtest OK" #. MSG_SELFTEST_START c=20 -#: ../../Firmware/ultralcd.cpp:6298 +#: ../../Firmware/ultralcd.cpp:6295 msgid "Self test start" msgstr "Självteststart" #. MSG_SELFTEST c=18 -#: ../../Firmware/ultralcd.cpp:4912 +#: ../../Firmware/ultralcd.cpp:4875 msgid "Selftest" msgstr "Självtest" #. MSG_SELFTEST_ERROR c=20 -#: ../../Firmware/ultralcd.cpp:6970 +#: ../../Firmware/ultralcd.cpp:6961 msgid "Selftest error!" msgstr "Självtestfel!" #. MSG_SELFTEST_FAILED c=20 -#: ../../Firmware/messages.cpp:85 ../../Firmware/ultralcd.cpp:6534 -#: ../../Firmware/ultralcd.cpp:7057 ../../Firmware/ultralcd.cpp:7322 +#: ../../Firmware/messages.cpp:89 ../../Firmware/ultralcd.cpp:6526 +#: ../../Firmware/ultralcd.cpp:7048 ../../Firmware/ultralcd.cpp:7312 msgid "Selftest failed" msgstr "Självtestet felade" #. MSG_FORCE_SELFTEST c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:1564 +#: ../../Firmware/Marlin_main.cpp:1545 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" "Självtest kommer att utföras för att kalibrera exakt sensorlös hemposition." #. MSG_INFO_SENSORS c=18 -#: ../../Firmware/ultralcd.cpp:1731 +#: ../../Firmware/ultralcd.cpp:1723 msgid "Sensor info" msgstr "Sensorinformation" @@ -1643,31 +1903,31 @@ msgid "Sensor verified, remove the filament now." msgstr "Sensor verifierad, ta bort filamentet nu." #. MSG_SET_TEMPERATURE c=20 -#: ../../Firmware/ultralcd.cpp:2781 +#: ../../Firmware/ultralcd.cpp:2771 msgid "Set temperature:" msgstr "Sätt temperatur:" #. MSG_SETTINGS c=18 -#: ../../Firmware/messages.cpp:94 ../../Firmware/ultralcd.cpp:3499 -#: ../../Firmware/ultralcd.cpp:3704 ../../Firmware/ultralcd.cpp:4214 -#: ../../Firmware/ultralcd.cpp:5588 ../../Firmware/ultralcd.cpp:5835 -#: ../../Firmware/ultralcd.cpp:5888 +#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:3508 +#: ../../Firmware/ultralcd.cpp:3667 ../../Firmware/ultralcd.cpp:4168 +#: ../../Firmware/ultralcd.cpp:5593 ../../Firmware/ultralcd.cpp:5825 +#: ../../Firmware/ultralcd.cpp:5878 msgid "Settings" msgstr "Inställningar" #. MSG_SEVERE_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2548 +#: ../../Firmware/ultralcd.cpp:2538 msgid "Severe skew" msgstr "Hög skevhet" #. MSG_SHEET c=10 #: ../../Firmware/menu.cpp:209 ../../Firmware/menu.cpp:221 -#: ../../Firmware/messages.cpp:60 +#: ../../Firmware/messages.cpp:64 msgid "Sheet" msgstr "Skiva" #. MSG_SHEET_OFFSET c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3832 +#: ../../Firmware/ultralcd.cpp:3795 msgid "" "Sheet %.7s\n" "Z offset: %+1.3fmm\n" @@ -1680,18 +1940,18 @@ msgstr "" "%cÅterställ" #. MSG_SHOW_END_STOPS c=18 -#: ../../Firmware/ultralcd.cpp:4923 +#: ../../Firmware/ultralcd.cpp:4886 msgid "Show end stops" msgstr "Visa ändlägen" #. MSG_SILENT c=7 -#: ../../Firmware/messages.cpp:103 ../../Firmware/ultralcd.cpp:4369 -#: ../../Firmware/ultralcd.cpp:4464 ../../Firmware/ultralcd.cpp:5786 +#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:4359 +#: ../../Firmware/ultralcd.cpp:4454 ../../Firmware/ultralcd.cpp:5776 msgid "Silent" msgstr "Tyst" #. MSG_SLIGHT_SKEW c=14 -#: ../../Firmware/ultralcd.cpp:2547 +#: ../../Firmware/ultralcd.cpp:2537 msgid "Slight skew" msgstr "Låg skevhet" @@ -1705,112 +1965,171 @@ msgstr "" "sortering är 100." #. MSG_ZLEVELING_ENFORCED c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:3057 +#: ../../Firmware/Marlin_main.cpp:3052 msgid "Some problem encountered, Z-leveling enforced ..." msgstr "Ett problem har uppstått, Z-nivellering utförs..." #. MSG_SORT c=7 -#: ../../Firmware/messages.cpp:136 ../../Firmware/ultralcd.cpp:4411 -#: ../../Firmware/ultralcd.cpp:4412 ../../Firmware/ultralcd.cpp:4413 +#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4401 +#: ../../Firmware/ultralcd.cpp:4402 ../../Firmware/ultralcd.cpp:4403 msgid "Sort" msgstr "Sortera" #. MSG_SORTING_FILES c=20 #: ../../Firmware/cardreader.cpp:862 ../../Firmware/cardreader.cpp:929 -#: ../../Firmware/messages.cpp:96 +#: ../../Firmware/messages.cpp:100 msgid "Sorting files" msgstr "Sorterar filer" #. MSG_SOUND c=9 -#: ../../Firmware/messages.cpp:140 ../../Firmware/ultralcd.cpp:4458 -#: ../../Firmware/ultralcd.cpp:4461 ../../Firmware/ultralcd.cpp:4464 -#: ../../Firmware/ultralcd.cpp:4467 ../../Firmware/ultralcd.cpp:4470 +#: ../../Firmware/messages.cpp:144 ../../Firmware/ultralcd.cpp:4448 +#: ../../Firmware/ultralcd.cpp:4451 ../../Firmware/ultralcd.cpp:4454 +#: ../../Firmware/ultralcd.cpp:4457 ../../Firmware/ultralcd.cpp:4460 msgid "Sound" msgstr "Ljud" #. MSG_SPEED c=15 -#: ../../Firmware/ultralcd.cpp:5726 +#: ../../Firmware/ultralcd.cpp:5731 msgid "Speed" msgstr "Fart" #. MSG_SELFTEST_FAN_YES c=19 -#: ../../Firmware/messages.cpp:88 ../../Firmware/ultralcd.cpp:7174 -#: ../../Firmware/ultralcd.cpp:7189 ../../Firmware/ultralcd.cpp:7197 +#: ../../Firmware/messages.cpp:92 ../../Firmware/ultralcd.cpp:7164 +#: ../../Firmware/ultralcd.cpp:7179 ../../Firmware/ultralcd.cpp:7187 msgid "Spinning" msgstr "Rotation" #. MSG_TEMP_CAL_WARNING c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:4882 +#: ../../Firmware/Marlin_main.cpp:4910 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "Stabil omgivningstemperatur 21-26C krävs samt ett styvt stativ." #. MSG_STATISTICS c=18 -#: ../../Firmware/ultralcd.cpp:5593 +#: ../../Firmware/ultralcd.cpp:5598 msgid "Statistics" msgstr "Statistik" #. MSG_STEALTH c=7 -#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:4346 -#: ../../Firmware/ultralcd.cpp:4390 ../../Firmware/ultralcd.cpp:5778 +#: ../../Firmware/messages.cpp:109 ../../Firmware/ultralcd.cpp:4336 +#: ../../Firmware/ultralcd.cpp:4380 ../../Firmware/ultralcd.cpp:5768 msgid "Stealth" msgstr "Tyst" #. MSG_STEEL_SHEETS c=18 -#: ../../Firmware/messages.cpp:61 ../../Firmware/ultralcd.cpp:4771 -#: ../../Firmware/ultralcd.cpp:5424 +#: ../../Firmware/messages.cpp:65 ../../Firmware/ultralcd.cpp:4726 +#: ../../Firmware/ultralcd.cpp:5425 msgid "Steel sheets" msgstr "Metallskivor" +#. MSG_BTN_STOP c=5 +#: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 +msgid "Stop" +msgstr "" + #. MSG_STOP_PRINT c=18 -#: ../../Firmware/messages.cpp:107 ../../Firmware/ultralcd.cpp:5536 -#: ../../Firmware/ultralcd.cpp:5995 +#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 +#: ../../Firmware/ultralcd.cpp:5996 msgid "Stop print" msgstr "Stoppa utskriften" #. MSG_STRICT c=8 -#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:4507 -#: ../../Firmware/ultralcd.cpp:4589 ../../Firmware/ultralcd.cpp:4628 -#: ../../Firmware/ultralcd.cpp:4669 +#: ../../Firmware/messages.cpp:132 ../../Firmware/ultralcd.cpp:4497 +#: ../../Firmware/ultralcd.cpp:4579 ../../Firmware/ultralcd.cpp:4618 +#: ../../Firmware/ultralcd.cpp:4659 msgid "Strict" msgstr "Strikt" #. MSG_SUPPORT c=18 -#: ../../Firmware/ultralcd.cpp:5602 +#: ../../Firmware/ultralcd.cpp:5607 msgid "Support" msgstr "" #. MSG_SELFTEST_SWAPPED c=16 -#: ../../Firmware/ultralcd.cpp:7029 +#: ../../Firmware/ultralcd.cpp:7020 msgid "Swapped" msgstr "Utbytt" #. MSG_THERMAL_ANOMALY c=20 -#: ../../Firmware/messages.cpp:166 ../../Firmware/temperature.cpp:2442 +#: ../../Firmware/messages.cpp:170 ../../Firmware/temperature.cpp:2440 msgid "THERMAL ANOMALY" msgstr "" #. MSG_TM_AUTOTUNE_FAILED c=20 -#: ../../Firmware/temperature.cpp:2899 +#: ../../Firmware/temperature.cpp:2897 msgid "TM autotune failed" msgstr "" +#. MSG_TITLE_TMC_DRIVER_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 +#: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 +msgid "TMC DRIVER ERROR" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_RESET c=20 +#: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 +#: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 +msgid "TMC DRIVER RESET" +msgstr "" + +#. MSG_TITLE_TMC_DRIVER_SHORTED c=20 +#: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 +#: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 +msgid "TMC DRIVER SHORTED" +msgstr "" + +#. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 +#: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 +msgid "TMC OVERHEAT ERROR" +msgstr "" + +#. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 +#: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 +#: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 +msgid "TMC UNDERVOLTAGE ERR" +msgstr "" + #. MSG_TEMP_MODEL_AUTOTUNE c=20 -#: ../../Firmware/temperature.cpp:2884 +#: ../../Firmware/temperature.cpp:2882 msgid "Temp. model autotune" msgstr "" #. MSG_TEMPERATURE c=18 -#: ../../Firmware/ultralcd.cpp:4805 +#: ../../Firmware/ultralcd.cpp:4759 msgid "Temperature" msgstr "Temperatur" #. MSG_MENU_TEMPERATURES c=18 -#: ../../Firmware/ultralcd.cpp:1737 +#: ../../Firmware/ultralcd.cpp:1729 msgid "Temperatures" msgstr "Temperaturer" +#. MSG_TESTING_FILAMENT c=20 +#: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 +msgid "Testing filament" +msgstr "" + +#. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:205 +msgid "" +"The Idler cannot home properly. Check for anything blocking its movement." +msgstr "" + +#. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 +#: ../../Firmware/mmu2/errors_list.h:231 +msgid "" +"The MMU unit reports its FW version incompatible with the printer's " +"firmware. Make sure the MMU firmware is up to date." +msgstr "" + +#. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:202 +msgid "" +"The Selector cannot home properly. Check for anything blocking its movement." +msgstr "" + #. MSG_WIZARD_V2_CAL_2 c=20 r=12 -#: ../../Firmware/ultralcd.cpp:3982 +#: ../../Firmware/ultralcd.cpp:3940 msgid "" "The printer will start printing a zig-zag line. Rotate the knob until you " "reach the optimal height. Check the pictures in the handbook (Calibration " @@ -1820,7 +2139,7 @@ msgstr "" "optimal höjd. Kontrollera med bilderna i handboken (Kalibreringskapitlet)." #. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 -#: ../../Firmware/Marlin_main.cpp:1558 ../../Firmware/messages.cpp:43 +#: ../../Firmware/Marlin_main.cpp:1539 ../../Firmware/messages.cpp:43 msgid "" "There is still a need to make Z calibration. Please follow the manual, " "chapter First steps, section Calibration flow." @@ -1829,66 +2148,102 @@ msgstr "" "manualen, kapitel Första stegen, avsnitt Kalibreringsflöde." #. MSG_SORT_TIME c=8 -#: ../../Firmware/messages.cpp:137 ../../Firmware/ultralcd.cpp:4411 +#: ../../Firmware/messages.cpp:141 ../../Firmware/ultralcd.cpp:4401 msgid "Time" msgstr "Tid" #. MSG_TIMEOUT c=12 -#: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:5873 +#: ../../Firmware/messages.cpp:158 ../../Firmware/ultralcd.cpp:5863 msgid "Timeout" msgstr "" #. MSG_TOTAL c=6 -#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:1157 -#: ../../Firmware/ultralcd.cpp:1305 +#: ../../Firmware/messages.cpp:101 ../../Firmware/ultralcd.cpp:1167 +#: ../../Firmware/ultralcd.cpp:1300 msgid "Total" msgstr "" #. MSG_TOTAL_FAILURES c=20 -#: ../../Firmware/messages.cpp:98 ../../Firmware/ultralcd.cpp:1200 -#: ../../Firmware/ultralcd.cpp:1226 ../../Firmware/ultralcd.cpp:1336 +#: ../../Firmware/messages.cpp:102 ../../Firmware/ultralcd.cpp:1214 +#: ../../Firmware/ultralcd.cpp:1244 ../../Firmware/ultralcd.cpp:1330 msgid "Total failures" msgstr "Totala misslyckanden" #. MSG_TOTAL_FILAMENT c=19 -#: ../../Firmware/ultralcd.cpp:2395 +#: ../../Firmware/ultralcd.cpp:2385 msgid "Total filament" msgstr "Totalt filament" #. MSG_TOTAL_PRINT_TIME c=19 -#: ../../Firmware/ultralcd.cpp:2396 +#: ../../Firmware/ultralcd.cpp:2386 msgid "Total print time" msgstr "Total utskriftstid" #. MSG_TUNE c=18 -#: ../../Firmware/ultralcd.cpp:5508 +#: ../../Firmware/ultralcd.cpp:5509 msgid "Tune" msgstr "Ställ in" -#. MSG_UNLOAD_FILAMENT c=18 -#: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5572 -#: ../../Firmware/ultralcd.cpp:5586 +#. MSG_TITLE_UNLOAD_MANUALLY c=20 +#: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 +msgid "UNLOAD MANUALLY" +msgstr "" + +#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 +#: ../../Firmware/mmu2/errors_list.h:233 +msgid "" +"Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " +"is free. Check FINDA connection." +msgstr "" + +#. MSG_BTN_UNLOAD c=6 +#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 +msgid "Unload" +msgstr "" + +#. MSG_UNLOAD_FILAMENT c=16 +#: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 +#: ../../Firmware/ultralcd.cpp:5591 msgid "Unload filament" msgstr "Ta bort filament" #. MSG_UNLOADING_FILAMENT c=20 -#: ../../Firmware/messages.cpp:112 ../../Firmware/mmu.cpp:957 -#: ../../Firmware/ultralcd.cpp:5205 +#: ../../Firmware/Marlin_main.cpp:3502 ../../Firmware/messages.cpp:116 +#: ../../Firmware/mmu2_progress_converter.cpp:50 +#: ../../Firmware/ultralcd.cpp:5193 msgid "Unloading filament" msgstr "Tar bort filament" +#. MSG_PROGRESS_UNLOAD_FINDA c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:11 +#: ../../Firmware/mmu2_progress_converter.cpp:37 +msgid "Unloading to FINDA" +msgstr "" + +#. MSG_PROGRESS_UNLOAD_PULLEY c=20 +#: ../../Firmware/mmu2_progress_converter.cpp:12 +#: ../../Firmware/mmu2_progress_converter.cpp:38 +msgid "Unloading to pulley" +msgstr "" + #. MSG_FIL_FAILED c=20 r=5 -#: ../../Firmware/ultralcd.cpp:6266 +#: ../../Firmware/ultralcd.cpp:6265 msgid "Verification failed, remove the filament and try again." msgstr "Verifieringen misslyckades, ta bort filamentet och försök igen." #. MSG_MENU_VOLTAGES c=18 -#: ../../Firmware/ultralcd.cpp:1740 +#: ../../Firmware/ultralcd.cpp:1732 msgid "Voltages" msgstr "Spänning" +#. MSG_TITLE_TMC_WARNING_TMC_TOO_HOT c=20 +#: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 +#: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 +msgid "WARNING TMC TOO HOT" +msgstr "" + #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 -#: ../../Firmware/ultralcd.cpp:3542 +#: ../../Firmware/ultralcd.cpp:3551 msgid "" "WARNING:\n" "Crash detection\n" @@ -1901,98 +2256,98 @@ msgstr "" "tyst-läge" #. MSG_USERWAIT c=20 -#: ../../Firmware/Marlin_main.cpp:4087 +#: ../../Firmware/Marlin_main.cpp:4115 msgid "Wait for user..." msgstr "Väntar på användare." #. MSG_WAITING_TEMP_PINDA c=20 r=3 -#: ../../Firmware/ultralcd.cpp:2889 +#: ../../Firmware/ultralcd.cpp:2879 msgid "Waiting for PINDA probe cooling" msgstr "Väntar på PINDA-sondens kylning" #. MSG_WAITING_TEMP c=20 r=4 -#: ../../Firmware/ultralcd.cpp:2921 +#: ../../Firmware/ultralcd.cpp:2911 msgid "Waiting for nozzle and bed cooling" msgstr "Väntar på munstycks- och bäddkylning" #. MSG_WARN c=8 -#: ../../Firmware/messages.cpp:127 ../../Firmware/ultralcd.cpp:4504 -#: ../../Firmware/ultralcd.cpp:4586 ../../Firmware/ultralcd.cpp:4625 -#: ../../Firmware/ultralcd.cpp:4666 +#: ../../Firmware/messages.cpp:131 ../../Firmware/ultralcd.cpp:4494 +#: ../../Firmware/ultralcd.cpp:4576 ../../Firmware/ultralcd.cpp:4615 +#: ../../Firmware/ultralcd.cpp:4656 msgid "Warn" msgstr "Varna" #. MSG_CHANGED_BOTH c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1524 +#: ../../Firmware/Marlin_main.cpp:1505 msgid "Warning: both printer type and motherboard type changed." msgstr "Varning: både skrivartyp och moderkortstyp har ändrats." #. MSG_CHANGED_MOTHERBOARD c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1516 +#: ../../Firmware/Marlin_main.cpp:1497 msgid "Warning: motherboard type changed." msgstr "Varning: moderkortstyp ändrad." #. MSG_CHANGED_PRINTER c=20 r=4 -#: ../../Firmware/Marlin_main.cpp:1520 +#: ../../Firmware/Marlin_main.cpp:1501 msgid "Warning: printer type changed." msgstr "Varning: skrivartyp har ändrats." #. MSG_UNLOAD_SUCCESSFUL c=20 r=2 -#: ../../Firmware/Marlin_main.cpp:3539 +#: ../../Firmware/Marlin_main.cpp:3574 msgid "Was filament unload successful?" msgstr "Lyckades filamentutmatningen?" #. MSG_SELFTEST_WIRINGERROR c=18 -#: ../../Firmware/messages.cpp:93 ../../Firmware/ultralcd.cpp:6981 -#: ../../Firmware/ultralcd.cpp:6985 ../../Firmware/ultralcd.cpp:7005 -#: ../../Firmware/ultralcd.cpp:7011 ../../Firmware/ultralcd.cpp:7035 +#: ../../Firmware/messages.cpp:97 ../../Firmware/ultralcd.cpp:6972 +#: ../../Firmware/ultralcd.cpp:6976 ../../Firmware/ultralcd.cpp:6996 +#: ../../Firmware/ultralcd.cpp:7002 ../../Firmware/ultralcd.cpp:7026 msgid "Wiring error" msgstr "Kabelfel" #. MSG_WIZARD c=17 -#: ../../Firmware/ultralcd.cpp:4903 +#: ../../Firmware/ultralcd.cpp:4866 msgid "Wizard" msgstr "Guide" #. MSG_X_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4218 +#: ../../Firmware/ultralcd.cpp:4172 msgid "X-correct:" msgstr "X-korrektion:" #. MSG_XFLASH c=18 -#: ../../Firmware/ultralcd.cpp:5604 +#: ../../Firmware/ultralcd.cpp:5609 msgid "XFLASH init" msgstr "" #. MSG_XYZ_DETAILS c=18 -#: ../../Firmware/ultralcd.cpp:1729 +#: ../../Firmware/ultralcd.cpp:1721 msgid "XYZ cal. details" msgstr "XYZ kal. detaljer" #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3341 +#: ../../Firmware/ultralcd.cpp:3356 msgid "XYZ calibration all right. Skew will be corrected automatically." msgstr "XYZ-kalibrering är ok. Skevhet kommer att korrigeras automatiskt." #. MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3338 +#: ../../Firmware/ultralcd.cpp:3353 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" msgstr "XYZ-kalibrering ok. X/Y-axlarna är mycket lite skeva. Bra jobbat!" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3334 msgid "XYZ calibration compromised. Front calibration points not reachable." msgstr "" "XYZ-kalibrering komprometterad. Främre kalibreringspunkter kan inte nås." #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3325 +#: ../../Firmware/ultralcd.cpp:3340 msgid "" "XYZ calibration compromised. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3322 +#: ../../Firmware/ultralcd.cpp:3337 msgid "" "XYZ calibration compromised. Right front calibration point not reachable." msgstr "" @@ -2000,121 +2355,179 @@ msgstr "" "nås." #. MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3301 +#: ../../Firmware/ultralcd.cpp:3316 msgid "XYZ calibration failed. Bed calibration point was not found." msgstr "XYZ-kalibrering misslyckades. Bäddkalibreringspunkterna hittades inte." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3307 +#: ../../Firmware/ultralcd.cpp:3322 msgid "XYZ calibration failed. Front calibration points not reachable." msgstr "XYZ-kalibrering misslyckades. Främre kalibreringspunkter kan inte nås." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3313 +#: ../../Firmware/ultralcd.cpp:3328 msgid "XYZ calibration failed. Left front calibration point not reachable." msgstr "" #. MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 -#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3304 -#: ../../Firmware/ultralcd.cpp:3332 +#: ../../Firmware/messages.cpp:16 ../../Firmware/ultralcd.cpp:3319 +#: ../../Firmware/ultralcd.cpp:3347 msgid "XYZ calibration failed. Please consult the manual." msgstr "XYZ-kalibrering misslyckades. Se bruksanvisningen." #. MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=6 -#: ../../Firmware/ultralcd.cpp:3310 +#: ../../Firmware/ultralcd.cpp:3325 msgid "XYZ calibration failed. Right front calibration point not reachable." msgstr "" "XYZ-kalibrering misslyckades. Höger främre kalibreringspunkt kan inte nås." #. MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 -#: ../../Firmware/ultralcd.cpp:3335 +#: ../../Firmware/ultralcd.cpp:3350 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" msgstr "XYZ-kalibrering ok. X/Y-axlarna ar vinkelräta. Grattis!" #. MSG_Y_DIST_FROM_MIN c=20 -#: ../../Firmware/ultralcd.cpp:2502 +#: ../../Firmware/ultralcd.cpp:2492 msgid "Y distance from min" msgstr "Y avstånd från min" #. MSG_Y_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4219 +#: ../../Firmware/ultralcd.cpp:4173 msgid "Y-correct:" msgstr "Y-korrektion:" #. MSG_YES c=4 -#: ../../Firmware/messages.cpp:120 ../../Firmware/ultralcd.cpp:2224 -#: ../../Firmware/ultralcd.cpp:2808 ../../Firmware/ultralcd.cpp:3188 -#: ../../Firmware/ultralcd.cpp:4793 ../../Firmware/ultralcd.cpp:5997 +#: ../../Firmware/messages.cpp:124 ../../Firmware/ultralcd.cpp:2228 +#: ../../Firmware/ultralcd.cpp:2798 ../../Firmware/ultralcd.cpp:3170 +#: ../../Firmware/ultralcd.cpp:4747 ../../Firmware/ultralcd.cpp:5998 msgid "Yes" msgstr "Ja" #. MSG_FW_VERSION_ALPHA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:846 +#: ../../Firmware/Marlin_main.cpp:835 msgid "" "You are using firmware alpha version. This is development version. Using " "this version is not recommended and may cause printer damage." msgstr "" #. MSG_FW_VERSION_BETA c=20 r=8 -#: ../../Firmware/Marlin_main.cpp:847 +#: ../../Firmware/Marlin_main.cpp:836 msgid "" "You are using firmware beta version. This is development version. Using this " "version is not recommended and may cause printer damage." msgstr "" #. MSG_WIZARD_QUIT c=20 r=8 -#: ../../Firmware/messages.cpp:117 ../../Firmware/ultralcd.cpp:4195 +#: ../../Firmware/messages.cpp:121 ../../Firmware/ultralcd.cpp:4149 msgid "You can always resume the Wizard from Calibration -> Wizard." msgstr "Du kan alltid återuppta guiden från Kalibrering -> Guide." #. MSG_Z_CORRECTION c=13 -#: ../../Firmware/ultralcd.cpp:4220 +#: ../../Firmware/ultralcd.cpp:4174 msgid "Z-correct:" msgstr "Z-korrekt:" #. MSG_Z_PROBE_NR c=14 -#: ../../Firmware/messages.cpp:146 ../../Firmware/ultralcd.cpp:5843 +#: ../../Firmware/messages.cpp:150 ../../Firmware/ultralcd.cpp:5833 msgid "Z-probe nr." msgstr "Z-sond nr." #. MSG_MEASURED_OFFSET c=20 -#: ../../Firmware/ultralcd.cpp:2573 +#: ../../Firmware/ultralcd.cpp:2563 msgid "[0;0] point offset" msgstr "[0;0] punktförskjutn" #. MSG_PRESS c=20 r=2 -#: ../../Firmware/ultralcd.cpp:2162 +#: ../../Firmware/ultralcd.cpp:2170 msgid "and press the knob" msgstr "och tryck på knappen" #. MSG_TO_LOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1824 +#: ../../Firmware/ultralcd.cpp:1817 msgid "to load filament" msgstr "att ladda filament" #. MSG_TO_UNLOAD_FIL c=20 -#: ../../Firmware/ultralcd.cpp:1828 +#: ../../Firmware/ultralcd.cpp:1821 msgid "to unload filament" msgstr "att ta bort filament" #. MSG_UNKNOWN c=13 -#: ../../Firmware/ultralcd.cpp:1696 +#: ../../Firmware/ultralcd.cpp:1688 msgid "unknown" msgstr "okänd" #. MSG_IR_UNKNOWN c=18 -#: ../../Firmware/fsensor.cpp:182 ../../Firmware/messages.cpp:162 +#: ../../Firmware/Filament_sensor.cpp:291 ../../Firmware/messages.cpp:166 msgid "unknown state" msgstr "okänt tillstånd" #. MSG_REFRESH c=18 -#: ../../Firmware/messages.cpp:78 ../../Firmware/ultralcd.cpp:6085 -#: ../../Firmware/ultralcd.cpp:6088 +#: ../../Firmware/messages.cpp:82 ../../Firmware/ultralcd.cpp:6086 +#: ../../Firmware/ultralcd.cpp:6089 msgid "🔃Refresh" msgstr "🔃Uppdatera" +#~ msgid "" +#~ "Autoloading filament available only when filament sensor is turned on..." +#~ msgstr "Autoladdning av fil. är endast möjligt när fil. sensorn är aktiv..." + #~ msgid "Crash detected. Resume print?" #~ msgstr "Krock upptäckt. Återuppta utskrift?" +#~ msgid "Cutting filament" +#~ msgstr "Skär filament" + +#~ msgid "ERROR: Filament sensor is not responding, please check connection." +#~ msgstr "FEL: Filamentsensorn svarar inte, kontrollera anslutningen." + +#~ msgid "FS v0.3 or older" +#~ msgstr "FS v0.3 el äldre" + +#~ msgid "FS v0.4 or newer" +#~ msgstr "FS v0.4 el nyare" + +#~ msgid "Fix the issue and then press button on MMU unit." +#~ msgstr "Åtgärda problemet och tryck sedan på knappen på MMU-enheten." + +#~ msgid "Load all" +#~ msgstr "Ladda alla" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Först lager kalibr." + +#~ msgid "MK3 firmware detected on MK3S printer" +#~ msgstr "MK3-firmware upptäckt på MK3S-skrivare" + +#~ msgid "MK3S firmware detected on MK3 printer" +#~ msgstr "MK3S-firmware upptäckt på MK3-skrivare" + +#~ msgid "MMU OK. Resuming position..." +#~ msgstr "MMU OK. Återupptar position..." + +#~ msgid "MMU OK. Resuming temperature..." +#~ msgstr "MMU OK. Återupptar temperatur..." + +#~ msgid "MMU OK. Resuming..." +#~ msgstr "MMU OK. Återupptar..." + +#~ msgid "MMU load failed" +#~ msgstr "MMU-laddning felade" + +#~ msgid "MMU needs user attention." +#~ msgstr "MMU fordrar användarens uppmärksamhet.." + +#~ msgid "MMU power fails" +#~ msgstr "MMU strömavbr." + +#~ msgid "Please remove filament and then press the knob." +#~ msgstr "Ta bort filamentet och tryck sedan på knappen." + +#~ msgid "Please update firmware in your MMU2. Waiting for reset." +#~ msgstr "Uppdatera firmware i din MMU2. Väntar på återställning." + +#~ msgid "Press the knob to resume nozzle temperature." +#~ msgstr "Tryck på knappen för att återställa munstyckstemperaturen." + +#~ msgid "Runouts" +#~ msgstr "Avbrott" From ae8d1eb5463230dff9853aaebbbe0aa7ede4f319 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 16:34:56 +0200 Subject: [PATCH 309/319] Dutch translation part 1 --- lang/po/Firmware_de.po | 51 ++++++++++++++++++++---------------- lang/po/Firmware_nl.po | 59 +++++++++++++++++++++++++++--------------- 2 files changed, 67 insertions(+), 43 deletions(-) diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 29722c45b..863c907cd 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -579,8 +579,9 @@ msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" -"Die FINDA schaltete sich beim Entladen nicht aus. Versuchen Sie, Fil. manuell zu" -" entladen. Überprüfen Sie, dass sich Fil. bewegen kann und die FINDA funktioniert." +"Die FINDA schaltete sich beim Entladen nicht aus. Versuchen Sie, Fil. " +"manuell zu entladen. Überprüfen Sie, dass sich Fil. bewegen kann und die " +"FINDA funktioniert." #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:196 @@ -724,8 +725,8 @@ msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" -"Der FSensor hat sich beim Entladen des Fil. nicht abgeschaltet. Stellen" -" Sie sicher, dass sich das Fil. bewegen kann und der Sensor funktioniert." +"Der FSensor hat sich beim Entladen des Fil. nicht abgeschaltet. Stellen Sie " +"sicher, dass sich das Fil. bewegen kann und der Sensor funktioniert." #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:198 @@ -733,8 +734,9 @@ msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" -"Der FSensor hat beim Laden des Filaments nicht ausgelöst. Stellen Sie sicher, " -"dass das Filament den Sensor erreicht hat und der Sensor funktioniert." +"Der FSensor hat beim Laden des Filaments nicht ausgelöst. Stellen Sie " +"sicher, dass das Filament den Sensor erreicht hat und der Sensor " +"funktioniert." #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:201 @@ -1049,9 +1051,10 @@ msgid "Live adjust Z" msgstr "Z einstellen" #. MSG_LOAD_ALL c=18 -#: ../../Firmware/ultralcd.cpp:5098 ../../Firmware/ultralcd.cpp:5178 -msgid "Load all" -msgstr "Alle laden" +#: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 +#: ../../Firmware/ultralcd.cpp:5178 +msgid "Load All" +msgstr "" #. MSG_LOAD_FILAMENT c=17 #: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 @@ -1147,8 +1150,9 @@ msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." msgstr "" -"MMU-Einheit antwortet nicht. Überprüfen Sie die Verkabelung und die Anschlüsse. " -"Wenn das Problem weiterhin besteht, wenden Sie sich an den Support." +"MMU-Einheit antwortet nicht. Überprüfen Sie die Verkabelung und die " +"Anschlüsse. Wenn das Problem weiterhin besteht, wenden Sie sich an den " +"Support." #. MSG_MMU_CONNECTED c=18 #: ../../Firmware/ultralcd.cpp:1679 @@ -1755,6 +1759,11 @@ msgstr "" msgid "Reset" msgstr "Reset" +#. MSG_BTN_RESTART_MMU c=9 +#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 +msgid "Reset MMU" +msgstr "Reset MMU" + #. MSG_CALIBRATE_BED_RESET c=18 #: ../../Firmware/ultralcd.cpp:4888 msgid "Reset XYZ calibr." @@ -1798,11 +1807,6 @@ msgstr "Rechts" msgid "Right side[μm]" msgstr "Rechts [μm]" -#. MSG_BTN_RESTART_MMU c=9 -#: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 -msgid "Reset MMU" -msgstr "Reset MMU" - #. MSG_WIZARD_RERUN c=20 r=7 #: ../../Firmware/ultralcd.cpp:3857 msgid "" @@ -2142,7 +2146,7 @@ msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" "Die Spannrolle kann die Startposition nicht richtig erreichen. Prüfen Sie, " -"ob irgendetwas seine Bewegung blockiert. +"ob irgendetwas seine Bewegung blockiert." #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 #: ../../Firmware/mmu2/errors_list.h:231 @@ -2150,17 +2154,17 @@ msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" -"Die MMU-Einheit meldet, dass ihre FW-Version nicht mit der Firmware" -" des Druckers kompatibel ist. Stellen Sie sicher, dass die " -"MMU-Firmware auf dem neuesten Stand ist." +"Die MMU-Einheit meldet, dass ihre FW-Version nicht mit der Firmware des " +"Druckers kompatibel ist. Stellen Sie sicher, dass die MMU-Firmware auf dem " +"neuesten Stand ist." #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:202 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" -"Der Selektor kann die Startposition nicht richtig erreichen. Prüfen Sie, " -"ob irgendetwas seine Bewegung blockiert. +"Der Selektor kann die Startposition nicht richtig erreichen. Prüfen Sie, ob " +"irgendetwas seine Bewegung blockiert." #. MSG_WIZARD_V2_CAL_2 c=20 r=12 #: ../../Firmware/ultralcd.cpp:3940 @@ -2536,6 +2540,9 @@ msgstr "🔃Aktualisiere" #~ msgid "Fix the issue and then press button on MMU unit." #~ msgstr "Beseitigen Sie das Problem und drücken Sie dann den Knopf am MMU." +#~ msgid "Load all" +#~ msgstr "Alle laden" + #~ msgid "M117 First layer cal." #~ msgstr "M117 Erste-Schicht Kal." diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 9a016d180..58935c1b7 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -113,7 +113,7 @@ msgstr "" #: ../../Firmware/mmu2_progress_converter.cpp:16 #: ../../Firmware/mmu2_progress_converter.cpp:42 msgid "Avoiding grind" -msgstr "" +msgstr "Slijpen vermijden" #. MSG_SELFTEST_AXIS c=16 #: ../../Firmware/ultralcd.cpp:7014 @@ -206,7 +206,7 @@ msgstr "Helderheid" #. MSG_TITLE_COMMUNICATION_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:147 ../../Firmware/mmu2/errors_list.h:185 msgid "COMMUNICATION ERROR" -msgstr "" +msgstr "COMMUNICATIEFOUT" #. MSG_CALIBRATE_BED c=18 #: ../../Firmware/ultralcd.cpp:4877 @@ -261,6 +261,7 @@ msgstr "Kalibratie klaar" #: ../../Firmware/mmu2/errors_list.h:228 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" +"De actie kan niet worden uitgevoerd, de filament is al geladen. Eerst uitladen." #. MSG_SD_REMOVED c=20 #: ../../Firmware/ultralcd.cpp:7700 @@ -416,7 +417,7 @@ msgstr "Dim" #. MSG_BTN_DISABLE_MMU c=9 #: ../../Firmware/mmu2/errors_list.h:286 ../../Firmware/mmu2/errors_list.h:296 msgid "Disable" -msgstr "" +msgstr "Uitschak." #. MSG_DISABLE_STEPPERS c=18 #: ../../Firmware/ultralcd.cpp:4764 @@ -428,7 +429,7 @@ msgstr "Motoren uit" #: ../../Firmware/mmu2_progress_converter.cpp:36 #: ../../Firmware/mmu2_progress_converter.cpp:44 msgid "Disengaging idler" -msgstr "" +msgstr "Ontkoppel rondesel" #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 #: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 @@ -454,7 +455,7 @@ msgstr "" #. MSG_BTN_CONTINUE c=5 #: ../../Firmware/mmu2/errors_list.h:282 ../../Firmware/mmu2/errors_list.h:292 msgid "Done" -msgstr "" +msgstr "Klaar" #. MSG_EXTRUDER_CORRECTION c=13 #: ../../Firmware/ultralcd.cpp:4176 @@ -465,25 +466,25 @@ msgstr "E-correctie:" #: ../../Firmware/mmu2_progress_converter.cpp:19 #: ../../Firmware/mmu2_progress_converter.cpp:48 msgid "ERR Help filament" -msgstr "" +msgstr "FOUT help filament" #. MSG_PROGRESS_ERR_INTERNAL c=20 #: ../../Firmware/mmu2_progress_converter.cpp:18 #: ../../Firmware/mmu2_progress_converter.cpp:47 msgid "ERR Internal" -msgstr "" +msgstr "FOUT Inern" #. MSG_PROGRESS_ERR_TMC c=20 #: ../../Firmware/mmu2_progress_converter.cpp:20 #: ../../Firmware/mmu2_progress_converter.cpp:49 msgid "ERR TMC failed" -msgstr "" +msgstr "FOUT TMC" #. MSG_PROGRESS_WAIT_USER c=20 #: ../../Firmware/mmu2_progress_converter.cpp:17 #: ../../Firmware/mmu2_progress_converter.cpp:46 msgid "ERR Wait for User" -msgstr "" +msgstr "FOUT Wacht gebruiker" #. MSG_ERROR c=10 #: ../../Firmware/messages.cpp:29 ../../Firmware/ultralcd.cpp:2282 @@ -523,7 +524,7 @@ msgstr "Eindstops" #: ../../Firmware/mmu2_progress_converter.cpp:35 #: ../../Firmware/mmu2_progress_converter.cpp:45 msgid "Engaging idler" -msgstr "" +msgstr "Koppeln rolspel" #. MSG_EXTRUDER c=17 #: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 @@ -559,12 +560,12 @@ msgstr "" #: ../../Firmware/messages.cpp:44 ../../Firmware/ultralcd.cpp:4229 #: ../../Firmware/ultralcd.cpp:4236 msgid "F. runout" -msgstr "" +msgstr "FS. uitloop" #. MSG_TITLE_FIL_ALREADY_LOADED c=20 #: ../../Firmware/mmu2/errors_list.h:148 ../../Firmware/mmu2/errors_list.h:186 msgid "FILAMENT ALREADY LOA" -msgstr "" +msgstr "FILAMENT AL GELADEN" #. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 @@ -577,6 +578,8 @@ msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" +"De FINDA schakelde niet uit bij het lossen. Probeer Fil. handmatig " +"te ontladen. Controleer of Fil. kan bewegen en of de FINDA werkt." #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:196 @@ -584,11 +587,13 @@ msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." msgstr "" +"FINDA ging niet af bij het laden van de filament. Controleer of het filament " +"kan bewegen en FINDA werkt." #. MSG_TITLE_FINDA_DIDNT_GO_OFF c=20 #: ../../Firmware/mmu2/errors_list.h:119 ../../Firmware/mmu2/errors_list.h:157 msgid "FINDA: FILAM. STUCK" -msgstr "" +msgstr "FINDA NIET FIL.VRIJ" #. MSG_FS_ACTION c=10 #: ../../Firmware/messages.cpp:152 ../../Firmware/ultralcd.cpp:4245 @@ -599,22 +604,22 @@ msgstr "FS actie" #. MSG_TITLE_FSENSOR_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:120 ../../Firmware/mmu2/errors_list.h:158 msgid "FSENSOR DIDNT TRIGG." -msgstr "" +msgstr "FSEN. NIET AF GEGAAN" #. MSG_TITLE_FSENSOR_TOO_EARLY c=20 #: ../../Firmware/mmu2/errors_list.h:123 ../../Firmware/mmu2/errors_list.h:161 msgid "FSENSOR TOO EARLY" -msgstr "" +msgstr "FSENSOR TE VROEG" #. MSG_TITLE_FSENSOR_DIDNT_GO_OFF c=20 #: ../../Firmware/mmu2/errors_list.h:121 ../../Firmware/mmu2/errors_list.h:159 msgid "FSENSOR: FIL. STUCK" -msgstr "" +msgstr "FSENSOR FIL. VAST" #. MSG_TITLE_FW_RUNTIME_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:152 ../../Firmware/mmu2/errors_list.h:190 msgid "FW RUNTIME ERROR" -msgstr "" +msgstr "FW RUNTIME FOUT" #. MSG_FAIL_STATS c=18 #: ../../Firmware/ultralcd.cpp:5602 @@ -654,25 +659,25 @@ msgstr "Fans check" #: ../../Firmware/mmu2_progress_converter.cpp:13 #: ../../Firmware/mmu2_progress_converter.cpp:39 msgid "Feeding to FINDA" -msgstr "" +msgstr "Voeding tot FINDA" #. MSG_PROGRESS_FEED_FSENSOR c=20 #: ../../Firmware/mmu2_progress_converter.cpp:31 #: ../../Firmware/mmu2_progress_converter.cpp:62 msgid "Feeding to FSensor" -msgstr "" +msgstr "Voeding tot FSensor" #. MSG_PROGRESS_FEED_EXTRUDER c=20 #: ../../Firmware/mmu2_progress_converter.cpp:14 #: ../../Firmware/mmu2_progress_converter.cpp:40 msgid "Feeding to extruder" -msgstr "" +msgstr "Voeding tot extruder" #. MSG_PROGRESS_FEED_NOZZLE c=20 #: ../../Firmware/mmu2_progress_converter.cpp:15 #: ../../Firmware/mmu2_progress_converter.cpp:41 msgid "Feeding to nozzle" -msgstr "" +msgstr "Voeding tot tuit" #. MSG_FIL_RUNOUTS c=15 #: ../../Firmware/messages.cpp:32 ../../Firmware/ultralcd.cpp:1246 @@ -718,6 +723,8 @@ msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" +"Filament sensor schakelde niet uit tijdens het lossen van filament. " +"Controleer of het filament kan bewegen en de sensor werkt." #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:198 @@ -725,6 +732,8 @@ msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" +"De filament sensor ging niet af tijdens het laden van de filament. " +"Controleer of het filament de fsensor heeft bereikt en de sensor werkt." #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:201 @@ -732,6 +741,8 @@ msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." msgstr "" +"Filament sensor te vroeg geactiveerd tijdens laden naar extruder. Controleer of " +"er niets vastzit in de PTFE-buis. Controleer of de sensor goed leest." #. MSG_FILAMENT_USED c=19 #: ../../Firmware/ultralcd.cpp:2363 @@ -963,6 +974,8 @@ msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." msgstr "" +"Interne runtime fout. Probeer de MMU-eenheid te resetten of de firmware bij te " +"werken. Als het probleem aanhoudt, neem dan contact op met support." #. MSG_FILAMENT_LOADED c=20 r=2 #: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 @@ -1120,6 +1133,8 @@ msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" +"MMU eenheid reageert niet correct. Controleer de bedrading en connectoren. " +"Als het probleem aanhoudt, neem dan contact op met support." #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:226 @@ -1127,6 +1142,8 @@ msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." msgstr "" +"MMU eenheid reageert niet. Controleer de bedrading en connectoren. Als het " +"probleem aanhoudt, neem dan contact op met support." #. MSG_MMU_CONNECTED c=18 #: ../../Firmware/ultralcd.cpp:1679 From 068f4763e2055dacbf660ace4e2ee72a30e0fdce Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 16:53:30 +0200 Subject: [PATCH 310/319] Update translatable strings to match our extraction macros Update pot and po files --- Firmware/mmu2/errors_list.h | 74 ++++++++++++++++++------------------- lang/po/Firmware.pot | 50 ++++++++++++++++--------- lang/po/Firmware_cs.po | 50 ++++++++++++++++--------- lang/po/Firmware_da.po | 50 ++++++++++++++++--------- lang/po/Firmware_de.po | 50 ++++++++++++++++--------- lang/po/Firmware_es.po | 50 ++++++++++++++++--------- lang/po/Firmware_fr.po | 50 ++++++++++++++++--------- lang/po/Firmware_hr.po | 50 ++++++++++++++++--------- lang/po/Firmware_hu.po | 50 ++++++++++++++++--------- lang/po/Firmware_it.po | 50 ++++++++++++++++--------- lang/po/Firmware_lb.po | 50 ++++++++++++++++--------- lang/po/Firmware_lt.po | 50 ++++++++++++++++--------- lang/po/Firmware_nl.po | 65 ++++++++++++++++++++------------ lang/po/Firmware_no.po | 50 ++++++++++++++++--------- lang/po/Firmware_pl.po | 50 ++++++++++++++++--------- lang/po/Firmware_ro.po | 50 ++++++++++++++++--------- lang/po/Firmware_sk.po | 50 ++++++++++++++++--------- lang/po/Firmware_sl.po | 50 ++++++++++++++++--------- lang/po/Firmware_sv.po | 50 ++++++++++++++++--------- 19 files changed, 639 insertions(+), 350 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index 4edf5f2d6..a7eddbda0 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -200,7 +200,7 @@ static const char MSG_DESC_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament se static const char MSG_DESC_PULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); ////MSG_DESC_PULLEY_STALLED c=20 r=8 static const char MSG_DESC_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); ////MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 static const char MSG_DESC_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR(""); // these errors have been disabled +static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR(" "); /////MSG_DESC_CANNOT_MOVE c=20 //these errors have been disabled //static const char MSG_DESC_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); static const char MSG_DESC_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 //static const char MSG_DESC_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); @@ -233,42 +233,42 @@ static const char MSG_DESC_FW_RUNTIME_ERROR[] PROGMEM_I1 = ISTR("Internal runtim static const char MSG_DESC_UNLOAD_MANUALLY[] PROGMEM_I1 = ISTR("Unexpected FINDA reading. Ensure no filament is under FINDA and the selector is free. Check FINDA connection."); ////MSG_DESC_UNLOAD_MANUALLY c=20 r=8 static const char * const errorDescs[] PROGMEM = { - MSG_DESC_FINDA_DIDNT_TRIGGER, - MSG_DESC_FINDA_DIDNT_GO_OFF, - MSG_DESC_FSENSOR_DIDNT_TRIGGER, - MSG_DESC_FSENSOR_DIDNT_GO_OFF, - MSG_DESC_PULLEY_STALLED, - MSG_DESC_FSENSOR_TOO_EARLY, - MSG_DESC_SELECTOR_CANNOT_HOME, - MSG_DESC_CANNOT_MOVE, - MSG_DESC_IDLER_CANNOT_HOME, - MSG_DESC_CANNOT_MOVE, - MSG_DESC_TMC, // descPULLEY_WARNING_TMC_TOO_HOT, - MSG_DESC_TMC, // descSELECTOR_WARNING_TMC_TOO_HOT, - MSG_DESC_TMC, // descIDLER_WARNING_TMC_TOO_HOT, - MSG_DESC_TMC, // descPULLEY_TMC_OVERHEAT_ERROR, - MSG_DESC_TMC, // descSELECTOR_TMC_OVERHEAT_ERROR, - MSG_DESC_TMC, // descIDLER_TMC_OVERHEAT_ERROR, - MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_ERROR, - MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_ERROR, - MSG_DESC_TMC, // descIDLER_TMC_DRIVER_ERROR, - MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_RESET, - MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_RESET, - MSG_DESC_TMC, // descIDLER_TMC_DRIVER_RESET, - MSG_DESC_TMC, // descPULLEY_TMC_UNDERVOLTAGE_ERROR, - MSG_DESC_TMC, // descSELECTOR_TMC_UNDERVOLTAGE_ERROR, - MSG_DESC_TMC, // descIDLER_TMC_UNDERVOLTAGE_ERROR, - MSG_DESC_TMC, // descPULLEY_TMC_DRIVER_SHORTED, - MSG_DESC_TMC, // descSELECTOR_TMC_DRIVER_SHORTED, - MSG_DESC_TMC, // descIDLER_TMC_DRIVER_SHORTED, - MSG_DESC_MMU_NOT_RESPONDING, - MSG_DESC_COMMUNICATION_ERROR, - MSG_DESC_FILAMENT_ALREADY_LOADED, - MSG_DESC_INVALID_TOOL, - MSG_DESC_QUEUE_FULL, - MSG_DESC_FW_UPDATE_NEEDED, - MSG_DESC_FW_RUNTIME_ERROR, - MSG_DESC_UNLOAD_MANUALLY + _R(MSG_DESC_FINDA_DIDNT_TRIGGER), + _R(MSG_DESC_FINDA_DIDNT_GO_OFF), + _R(MSG_DESC_FSENSOR_DIDNT_TRIGGER), + _R(MSG_DESC_FSENSOR_DIDNT_GO_OFF), + _R(MSG_DESC_PULLEY_STALLED), + _R(MSG_DESC_FSENSOR_TOO_EARLY), + _R(MSG_DESC_SELECTOR_CANNOT_HOME), + _R(MSG_DESC_CANNOT_MOVE), + _R(MSG_DESC_IDLER_CANNOT_HOME), + _R(MSG_DESC_CANNOT_MOVE), + _R(MSG_DESC_TMC), // descPULLEY_WARNING_TMC_TOO_HOT + _R(MSG_DESC_TMC), // descSELECTOR_WARNING_TMC_TOO_HOT + _R(MSG_DESC_TMC), // descIDLER_WARNING_TMC_TOO_HOT + _R(MSG_DESC_TMC), // descPULLEY_TMC_OVERHEAT_ERROR + _R(MSG_DESC_TMC), // descSELECTOR_TMC_OVERHEAT_ERROR + _R(MSG_DESC_TMC), // descIDLER_TMC_OVERHEAT_ERROR + _R(MSG_DESC_TMC), // descPULLEY_TMC_DRIVER_ERROR + _R(MSG_DESC_TMC), // descSELECTOR_TMC_DRIVER_ERROR + _R(MSG_DESC_TMC), // descIDLER_TMC_DRIVER_ERROR + _R(MSG_DESC_TMC), // descPULLEY_TMC_DRIVER_RESET + _R(MSG_DESC_TMC), // descSELECTOR_TMC_DRIVER_RESET + _R(MSG_DESC_TMC), // descIDLER_TMC_DRIVER_RESET + _R(MSG_DESC_TMC), // descPULLEY_TMC_UNDERVOLTAGE_ERROR + _R(MSG_DESC_TMC), // descSELECTOR_TMC_UNDERVOLTAGE_ERROR + _R(MSG_DESC_TMC), // descIDLER_TMC_UNDERVOLTAGE_ERROR + _R(MSG_DESC_TMC), // descPULLEY_TMC_DRIVER_SHORTED + _R(MSG_DESC_TMC), // descSELECTOR_TMC_DRIVER_SHORTED + _R(MSG_DESC_TMC), // descIDLER_TMC_DRIVER_SHORTED + _R(MSG_DESC_MMU_NOT_RESPONDING), + _R(MSG_DESC_COMMUNICATION_ERROR), + _R(MSG_DESC_FILAMENT_ALREADY_LOADED), + _R(MSG_DESC_INVALID_TOOL), + _R(MSG_DESC_QUEUE_FULL), + _R(MSG_DESC_FW_UPDATE_NEEDED), + _R(MSG_DESC_FW_RUNTIME_ERROR), + _R(MSG_DESC_UNLOAD_MANUALLY) }; // we have max 3 buttons/operations to select from diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index 9a67edb84..0eb0c7aa1 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -6,6 +6,13 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -242,7 +249,7 @@ msgid "Calibration done" msgstr "" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "" "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -549,14 +556,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -690,21 +697,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -920,7 +927,7 @@ msgid "" msgstr "" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware." " If the issue persists, contact support." @@ -1045,7 +1052,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1077,14 +1084,14 @@ msgid "MMU load fails" msgstr "" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1157,7 +1164,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1618,7 +1634,7 @@ msgid "" msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1659,7 +1675,7 @@ msgid "Rename" msgstr "" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2043,20 +2059,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2119,7 +2135,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector" " is free. Check FINDA connection." diff --git a/lang/po/Firmware_cs.po b/lang/po/Firmware_cs.po index 6008dba82..06fef3b97 100644 --- a/lang/po/Firmware_cs.po +++ b/lang/po/Firmware_cs.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,7 +265,7 @@ msgid "Calibration done" msgstr "Kalibrace OK" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -570,14 +577,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -711,21 +718,21 @@ msgid "Filament sensor" msgstr "Senzor filamentu" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -954,7 +961,7 @@ msgid "" msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1079,7 +1086,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1111,14 +1118,14 @@ msgid "MMU load fails" msgstr "MMU selhani zav" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1191,7 +1198,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1666,7 +1682,7 @@ msgstr "" "Tisk zrusen." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1707,7 +1723,7 @@ msgid "Rename" msgstr "Prejmenovat" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2099,20 +2115,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2179,7 +2195,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_da.po b/lang/po/Firmware_da.po index 28b173235..1586d32a1 100644 --- a/lang/po/Firmware_da.po +++ b/lang/po/Firmware_da.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -251,7 +258,7 @@ msgid "Calibration done" msgstr "" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -557,14 +564,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -698,21 +705,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -929,7 +936,7 @@ msgid "" msgstr "" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1054,7 +1061,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1086,14 +1093,14 @@ msgid "MMU load fails" msgstr "" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1166,7 +1173,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1627,7 +1643,7 @@ msgid "" msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1668,7 +1684,7 @@ msgid "Rename" msgstr "" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2052,20 +2068,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2128,7 +2144,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 863c907cd..306b5357d 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,7 +265,7 @@ msgid "Calibration done" msgstr "Kalibrierung OK" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" "Die Aktion kann nicht ausgeführt werden, das Filament ist bereits geladen. " @@ -574,7 +581,7 @@ msgid "FINDA DIDNT TRIGGER" msgstr "FINDA N. AUSGELÖST" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." @@ -584,7 +591,7 @@ msgstr "" "FINDA funktioniert." #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -720,7 +727,7 @@ msgid "Filament sensor" msgstr "Filamentsensor" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." @@ -729,7 +736,7 @@ msgstr "" "sicher, dass sich das Fil. bewegen kann und der Sensor funktioniert." #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." @@ -739,7 +746,7 @@ msgstr "" "funktioniert." #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -975,7 +982,7 @@ msgstr "" "den Knopf." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1103,7 +1110,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "MMU FW UPDATE NÖTIG" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "MMU Firmware interner Fehler, bitte setzen Sie die MMU zurück." @@ -1135,7 +1142,7 @@ msgid "MMU load fails" msgstr "MMU Ladefehler" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." @@ -1145,7 +1152,7 @@ msgstr "" "Support." #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1221,7 +1228,16 @@ msgid "Model" msgstr "Modell" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "Weiter Details online." @@ -1700,7 +1716,7 @@ msgstr "" "den Wert in den Einstellungen. Druck abgebrochen." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" "Der Riemenscheiben- motor ist blockiert. Sicherstellen, dass sich die " @@ -1745,7 +1761,7 @@ msgid "Rename" msgstr "Umbenennen" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2141,7 +2157,7 @@ msgid "Testing filament" msgstr "Teste filament" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2149,7 +2165,7 @@ msgstr "" "ob irgendetwas seine Bewegung blockiert." #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." @@ -2159,7 +2175,7 @@ msgstr "" "neuesten Stand ist." #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2229,7 +2245,7 @@ msgid "UNLOAD MANUALLY" msgstr "ENTLADE MANUELL" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_es.po b/lang/po/Firmware_es.po index ed7b23e14..4d10330a2 100644 --- a/lang/po/Firmware_es.po +++ b/lang/po/Firmware_es.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Calibracion OK" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -570,14 +577,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -711,21 +718,21 @@ msgid "Filament sensor" msgstr "Sensor de fil." #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -956,7 +963,7 @@ msgstr "" "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1081,7 +1088,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1113,14 +1120,14 @@ msgid "MMU load fails" msgstr "Carga MMU falla" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1193,7 +1200,16 @@ msgid "Model" msgstr "Modelo" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1676,7 +1692,7 @@ msgstr "" "ajustes. Impresion cancelada." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1719,7 +1735,7 @@ msgid "Rename" msgstr "Renombrar" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2118,20 +2134,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2199,7 +2215,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_fr.po b/lang/po/Firmware_fr.po index c34160437..4648fe355 100644 --- a/lang/po/Firmware_fr.po +++ b/lang/po/Firmware_fr.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,7 +265,7 @@ msgid "Calibration done" msgstr "Calibration terminee" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -573,14 +580,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -714,21 +721,21 @@ msgid "Filament sensor" msgstr "Capteur de fil." #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -963,7 +970,7 @@ msgstr "" "appuyez sur le bouton." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1088,7 +1095,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1120,14 +1127,14 @@ msgid "MMU load fails" msgstr "Def. charg. MMU" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1200,7 +1207,16 @@ msgid "Model" msgstr "Modele" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1680,7 +1696,7 @@ msgstr "" "Code. Merci de verifier le parametre dans les reglages. Impression annulee." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1722,7 +1738,7 @@ msgid "Rename" msgstr "Renommer" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2119,20 +2135,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2200,7 +2216,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_hr.po b/lang/po/Firmware_hr.po index ff714df52..bef511644 100644 --- a/lang/po/Firmware_hr.po +++ b/lang/po/Firmware_hr.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Kalibracija gotova" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -568,14 +575,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -709,21 +716,21 @@ msgid "Filament sensor" msgstr "Senzor filamenta" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -954,7 +961,7 @@ msgstr "" "Umetnite filament (nemojte ga puniti) u ekstruder i zatim pritisnite gumb." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1079,7 +1086,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1111,14 +1118,14 @@ msgid "MMU load fails" msgstr "Neusp. MMU punj" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1191,7 +1198,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1665,7 +1681,7 @@ msgstr "" "vrijednost u postavkama. Print je otkazan." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1708,7 +1724,7 @@ msgid "Rename" msgstr "Preimenuj" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2106,20 +2122,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2186,7 +2202,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_hu.po b/lang/po/Firmware_hu.po index 9b2e1f25b..06a44924b 100644 --- a/lang/po/Firmware_hu.po +++ b/lang/po/Firmware_hu.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Kalibracio kesz" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -571,14 +578,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -712,21 +719,21 @@ msgid "Filament sensor" msgstr "Filament szenzor" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -958,7 +965,7 @@ msgstr "" "gombot." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1083,7 +1090,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1115,14 +1122,14 @@ msgid "MMU load fails" msgstr "MMU bet. hibak" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1195,7 +1202,16 @@ msgid "Model" msgstr "Modell" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1672,7 +1688,7 @@ msgstr "" "beallitasokban. Nyomtatas megallitva." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1715,7 +1731,7 @@ msgid "Rename" msgstr "Atnevezes" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2110,20 +2126,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2191,7 +2207,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_it.po b/lang/po/Firmware_it.po index 793a8da9c..d8edd774a 100644 --- a/lang/po/Firmware_it.po +++ b/lang/po/Firmware_it.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Calibr. completa" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -571,14 +578,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -712,21 +719,21 @@ msgid "Filament sensor" msgstr "Sensore filam." #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -957,7 +964,7 @@ msgstr "" "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1082,7 +1089,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1114,14 +1121,14 @@ msgid "MMU load fails" msgstr "Car MMU falliti" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1194,7 +1201,16 @@ msgid "Model" msgstr "Modello" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1670,7 +1686,7 @@ msgstr "" "Stampa annullata." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1713,7 +1729,7 @@ msgid "Rename" msgstr "Rinomina" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2110,20 +2126,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2191,7 +2207,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_lb.po b/lang/po/Firmware_lb.po index 8fa9eb20e..0aa1123ac 100644 --- a/lang/po/Firmware_lb.po +++ b/lang/po/Firmware_lb.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -251,7 +258,7 @@ msgid "Calibration done" msgstr "" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -557,14 +564,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -698,21 +705,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -929,7 +936,7 @@ msgid "" msgstr "" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1054,7 +1061,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1086,14 +1093,14 @@ msgid "MMU load fails" msgstr "" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1166,7 +1173,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1627,7 +1643,7 @@ msgid "" msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1668,7 +1684,7 @@ msgid "Rename" msgstr "" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2052,20 +2068,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2128,7 +2144,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_lt.po b/lang/po/Firmware_lt.po index 476eaac42..6e62226b9 100644 --- a/lang/po/Firmware_lt.po +++ b/lang/po/Firmware_lt.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -251,7 +258,7 @@ msgid "Calibration done" msgstr "" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -557,14 +564,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -698,21 +705,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -929,7 +936,7 @@ msgid "" msgstr "" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1054,7 +1061,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1086,14 +1093,14 @@ msgid "MMU load fails" msgstr "" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1166,7 +1173,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1627,7 +1643,7 @@ msgid "" msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1668,7 +1684,7 @@ msgid "Rename" msgstr "" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2052,20 +2068,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2128,7 +2144,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 58935c1b7..fca44de2f 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,10 +265,11 @@ msgid "Calibration done" msgstr "Kalibratie klaar" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" -"De actie kan niet worden uitgevoerd, de filament is al geladen. Eerst uitladen." +"De actie kan niet worden uitgevoerd, de filament is al geladen. Eerst " +"uitladen." #. MSG_SD_REMOVED c=20 #: ../../Firmware/ultralcd.cpp:7700 @@ -573,16 +581,16 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" -"De FINDA schakelde niet uit bij het lossen. Probeer Fil. handmatig " -"te ontladen. Controleer of Fil. kan bewegen en of de FINDA werkt." +"De FINDA schakelde niet uit bij het lossen. Probeer Fil. handmatig te " +"ontladen. Controleer of Fil. kan bewegen en of de FINDA werkt." #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -718,7 +726,7 @@ msgid "Filament sensor" msgstr "Filamentsensor" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." @@ -727,7 +735,7 @@ msgstr "" "Controleer of het filament kan bewegen en de sensor werkt." #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." @@ -736,13 +744,13 @@ msgstr "" "Controleer of het filament de fsensor heeft bereikt en de sensor werkt." #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." msgstr "" -"Filament sensor te vroeg geactiveerd tijdens laden naar extruder. Controleer of " -"er niets vastzit in de PTFE-buis. Controleer of de sensor goed leest." +"Filament sensor te vroeg geactiveerd tijdens laden naar extruder. Controleer " +"of er niets vastzit in de PTFE-buis. Controleer of de sensor goed leest." #. MSG_FILAMENT_USED c=19 #: ../../Firmware/ultralcd.cpp:2363 @@ -969,13 +977,13 @@ msgstr "" "Steek a.u.b. filament (maar niet laden) in de extruder en druk op knop." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." msgstr "" -"Interne runtime fout. Probeer de MMU-eenheid te resetten of de firmware bij te " -"werken. Als het probleem aanhoudt, neem dan contact op met support." +"Interne runtime fout. Probeer de MMU-eenheid te resetten of de firmware bij " +"te werken. Als het probleem aanhoudt, neem dan contact op met support." #. MSG_FILAMENT_LOADED c=20 r=2 #: ../../Firmware/messages.cpp:38 ../../Firmware/ultralcd.cpp:3827 @@ -1096,7 +1104,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1128,7 +1136,7 @@ msgid "MMU load fails" msgstr "MMU laadfout" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." @@ -1137,7 +1145,7 @@ msgstr "" "Als het probleem aanhoudt, neem dan contact op met support." #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1212,7 +1220,16 @@ msgid "Model" msgstr "Model" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1690,7 +1707,7 @@ msgstr "" "de waarde in de instellingen. Afdrukken geannuleerd." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1732,7 +1749,7 @@ msgid "Rename" msgstr "Hernoem" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2132,20 +2149,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2213,7 +2230,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_no.po b/lang/po/Firmware_no.po index 9da4fdae1..5de96085e 100644 --- a/lang/po/Firmware_no.po +++ b/lang/po/Firmware_no.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,7 +265,7 @@ msgid "Calibration done" msgstr "Kalibrering ferdig" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -571,14 +578,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -712,21 +719,21 @@ msgid "Filament sensor" msgstr "Filamentsensor" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -951,7 +958,7 @@ msgid "" msgstr "Sett inn filamentet i ekstruderen og deretter trykk inn valghjulet." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1076,7 +1083,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1108,14 +1115,14 @@ msgid "MMU load fails" msgstr "MMU lastefeil" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1188,7 +1195,16 @@ msgid "Model" msgstr "Modell" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1660,7 +1676,7 @@ msgstr "" "hva som er satt. Print avbrutt." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1701,7 +1717,7 @@ msgid "Rename" msgstr "Gi nytt navn" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2092,20 +2108,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2173,7 +2189,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_pl.po b/lang/po/Firmware_pl.po index ecfb693e3..14ce91adb 100644 --- a/lang/po/Firmware_pl.po +++ b/lang/po/Firmware_pl.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Kalibracja OK" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -571,14 +578,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -712,21 +719,21 @@ msgid "Filament sensor" msgstr "Czujnik filamentu" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -955,7 +962,7 @@ msgstr "" "pokretlo." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1080,7 +1087,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1112,14 +1119,14 @@ msgid "MMU load fails" msgstr "Bledy lad. MMU" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1192,7 +1199,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1667,7 +1683,7 @@ msgstr "" "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1708,7 +1724,7 @@ msgid "Rename" msgstr "Zmien nazwe" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2105,20 +2121,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2186,7 +2202,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_ro.po b/lang/po/Firmware_ro.po index 7e81ce6a6..9f314244e 100644 --- a/lang/po/Firmware_ro.po +++ b/lang/po/Firmware_ro.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -259,7 +266,7 @@ msgid "Calibration done" msgstr "Calibrare gata" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -572,14 +579,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -713,21 +720,21 @@ msgid "Filament sensor" msgstr "Senz. de filament" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -956,7 +963,7 @@ msgid "" msgstr "Infige filamentul (nu-l incarca) in extruder si apasa butonul." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1081,7 +1088,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1113,14 +1120,14 @@ msgid "MMU load fails" msgstr "Err. incarc MMU" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1193,7 +1200,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1668,7 +1684,7 @@ msgstr "" "valoarea in setari. Print anulat." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1710,7 +1726,7 @@ msgid "Rename" msgstr "Redenumeste" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2107,20 +2123,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2187,7 +2203,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_sk.po b/lang/po/Firmware_sk.po index b9f6c4f75..829d63029 100644 --- a/lang/po/Firmware_sk.po +++ b/lang/po/Firmware_sk.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,7 +264,7 @@ msgid "Calibration done" msgstr "Kalibracia OK" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -570,14 +577,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -711,21 +718,21 @@ msgid "Filament sensor" msgstr "Senzor filamentu" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -953,7 +960,7 @@ msgid "" msgstr "Vlozte filament (nezavadzajte) do extruderu a stlacte tlacidlo" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1078,7 +1085,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1110,14 +1117,14 @@ msgid "MMU load fails" msgstr "MMU zlyhalo" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1190,7 +1197,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1666,7 +1682,7 @@ msgstr "" "Tlac zrusena." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1707,7 +1723,7 @@ msgid "Rename" msgstr "Premenovat" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2099,20 +2115,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2179,7 +2195,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_sl.po b/lang/po/Firmware_sl.po index 46b1a7140..5aec8e0b7 100644 --- a/lang/po/Firmware_sl.po +++ b/lang/po/Firmware_sl.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -251,7 +258,7 @@ msgid "Calibration done" msgstr "" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -557,14 +564,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -698,21 +705,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -929,7 +936,7 @@ msgid "" msgstr "" #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1054,7 +1061,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1086,14 +1093,14 @@ msgid "MMU load fails" msgstr "" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1166,7 +1173,16 @@ msgid "Model" msgstr "" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1627,7 +1643,7 @@ msgid "" msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1668,7 +1684,7 @@ msgid "Rename" msgstr "" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2052,20 +2068,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2128,7 +2144,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." diff --git a/lang/po/Firmware_sv.po b/lang/po/Firmware_sv.po index 761418ed1..a7e746635 100644 --- a/lang/po/Firmware_sv.po +++ b/lang/po/Firmware_sv.po @@ -15,6 +15,13 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#. MSG_DESC_CANNOT_MOVE c=20 +#. these errors have been disabled +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid " " +msgstr "" + #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -258,7 +265,7 @@ msgid "Calibration done" msgstr "Kalibraring utförd" #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:228 +#: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." msgstr "" @@ -571,14 +578,14 @@ msgid "FINDA DIDNT TRIGGER" msgstr "" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:197 +#: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 msgid "" "FINDA didn't switch off while unloading filament. Try unloading manually. " "Ensure filament can move and FINDA works." msgstr "" #. MSG_DESC_FINDA_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:196 +#: ../../Firmware/mmu2/errors_list.h:196 ../../Firmware/mmu2/errors_list.h:236 msgid "" "FINDA didn't trigger while loading the filament. Ensure the filament can " "move and FINDA works." @@ -712,21 +719,21 @@ msgid "Filament sensor" msgstr "" #. MSG_DESC_FSENSOR_DIDNT_GO_OFF c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:199 +#: ../../Firmware/mmu2/errors_list.h:199 ../../Firmware/mmu2/errors_list.h:239 msgid "" "Filament sensor didn't switch off while unloading filament. Ensure filament " "can move and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_DIDNT_TRIGGER c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:198 +#: ../../Firmware/mmu2/errors_list.h:198 ../../Firmware/mmu2/errors_list.h:238 msgid "" "Filament sensor didn't trigger while loading the filament. Ensure the " "filament reached the fsensor and the sensor works." msgstr "" #. MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:201 +#: ../../Firmware/mmu2/errors_list.h:201 ../../Firmware/mmu2/errors_list.h:241 msgid "" "Filament sensor triggered too early while loading to extruder. Check there " "isn't anything stuck in PTFE tube. Check that sensor reads properly." @@ -958,7 +965,7 @@ msgstr "" "Infoga filamentet (ladda inte in det) i extrudern och tryck sedan på knappen." #. MSG_DESC_FW_RUNTIME_ERROR c=20 r=11 -#: ../../Firmware/mmu2/errors_list.h:232 +#: ../../Firmware/mmu2/errors_list.h:232 ../../Firmware/mmu2/errors_list.h:270 msgid "" "Internal runtime error. Try resetting the MMU unit or updating the firmware. " "If the issue persists, contact support." @@ -1083,7 +1090,7 @@ msgid "MMU FW UPDATE NEEDED" msgstr "" #. MSG_DESC_QUEUE_FULL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:230 +#: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." msgstr "" @@ -1115,14 +1122,14 @@ msgid "MMU load fails" msgstr "MMU-laddn felar" #. MSG_DESC_COMMUNICATION_ERROR c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:227 +#: ../../Firmware/mmu2/errors_list.h:227 ../../Firmware/mmu2/errors_list.h:265 msgid "" "MMU unit not responding correctly. Check the wiring and connectors. If the " "issue persists, contact support." msgstr "" #. MSG_DESC_MMU_NOT_RESPONDING c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:226 +#: ../../Firmware/mmu2/errors_list.h:226 ../../Firmware/mmu2/errors_list.h:264 msgid "" "MMU unit not responding. Check the wiring and connectors. If the issue " "persists, contact support." @@ -1195,7 +1202,16 @@ msgid "Model" msgstr "Modell" #. MSG_DESC_TMC c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:207 +#: ../../Firmware/mmu2/errors_list.h:207 ../../Firmware/mmu2/errors_list.h:246 +#: ../../Firmware/mmu2/errors_list.h:247 ../../Firmware/mmu2/errors_list.h:248 +#: ../../Firmware/mmu2/errors_list.h:249 ../../Firmware/mmu2/errors_list.h:250 +#: ../../Firmware/mmu2/errors_list.h:251 ../../Firmware/mmu2/errors_list.h:252 +#: ../../Firmware/mmu2/errors_list.h:253 ../../Firmware/mmu2/errors_list.h:254 +#: ../../Firmware/mmu2/errors_list.h:255 ../../Firmware/mmu2/errors_list.h:256 +#: ../../Firmware/mmu2/errors_list.h:257 ../../Firmware/mmu2/errors_list.h:258 +#: ../../Firmware/mmu2/errors_list.h:259 ../../Firmware/mmu2/errors_list.h:260 +#: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 +#: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." msgstr "" @@ -1673,7 +1689,7 @@ msgstr "" "inställningarna. Utskriften avbröts." #. MSG_DESC_PULLEY_STALLED c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:200 +#: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." msgstr "" @@ -1716,7 +1732,7 @@ msgid "Rename" msgstr "Döp om" #. MSG_DESC_INVALID_TOOL c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:229 +#: ../../Firmware/mmu2/errors_list.h:229 ../../Firmware/mmu2/errors_list.h:267 msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." @@ -2110,20 +2126,20 @@ msgid "Testing filament" msgstr "" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:205 +#: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 -#: ../../Firmware/mmu2/errors_list.h:231 +#: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:202 +#: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." msgstr "" @@ -2190,7 +2206,7 @@ msgid "UNLOAD MANUALLY" msgstr "" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 -#: ../../Firmware/mmu2/errors_list.h:233 +#: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." From 075a80e2641978e1261c5ed751d76acdfebb9a5a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 17:38:45 +0200 Subject: [PATCH 311/319] Add missing text Finish Dutch translation --- Firmware/mmu2/errors_list.h | 2 +- lang/po/Firmware.pot | 13 ++--- lang/po/Firmware_cs.po | 13 ++--- lang/po/Firmware_da.po | 13 ++--- lang/po/Firmware_de.po | 15 +++-- lang/po/Firmware_es.po | 13 ++--- lang/po/Firmware_fr.po | 13 ++--- lang/po/Firmware_hr.po | 13 ++--- lang/po/Firmware_hu.po | 13 ++--- lang/po/Firmware_it.po | 13 ++--- lang/po/Firmware_lb.po | 13 ++--- lang/po/Firmware_lt.po | 13 ++--- lang/po/Firmware_nl.po | 106 +++++++++++++++++++----------------- lang/po/Firmware_no.po | 13 ++--- lang/po/Firmware_pl.po | 13 ++--- lang/po/Firmware_ro.po | 13 ++--- lang/po/Firmware_sk.po | 13 ++--- lang/po/Firmware_sl.po | 13 ++--- lang/po/Firmware_sv.po | 13 ++--- 19 files changed, 161 insertions(+), 170 deletions(-) diff --git a/Firmware/mmu2/errors_list.h b/Firmware/mmu2/errors_list.h index a7eddbda0..322bf0356 100644 --- a/Firmware/mmu2/errors_list.h +++ b/Firmware/mmu2/errors_list.h @@ -200,7 +200,7 @@ static const char MSG_DESC_FSENSOR_DIDNT_GO_OFF[] PROGMEM_I1 = ISTR("Filament se static const char MSG_DESC_PULLEY_STALLED[] PROGMEM_I1 = ISTR("Pulley motor stalled. Ensure the pulley can move and check the wiring."); ////MSG_DESC_PULLEY_STALLED c=20 r=8 static const char MSG_DESC_FSENSOR_TOO_EARLY[] PROGMEM_I1 = ISTR("Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly."); ////MSG_DESC_FSENSOR_TOO_EARLY c=20 r=8 static const char MSG_DESC_SELECTOR_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Selector cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 -static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR(" "); /////MSG_DESC_CANNOT_MOVE c=20 //these errors have been disabled +static const char MSG_DESC_CANNOT_MOVE[] PROGMEM_I1 = ISTR("Can't move Selector or Idler."); /////MSG_DESC_CANNOT_MOVE c=20 r=4 //static const char MSG_DESC_SELECTOR_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Selector cannot move. Check for anything blocking its movement. Check the wiring is correct."); static const char MSG_DESC_IDLER_CANNOT_HOME[] PROGMEM_I1 = ISTR("The Idler cannot home properly. Check for anything blocking its movement."); ////MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 //static const char MSG_DESC_IDLER_CANNOT_MOVE[] PROGMEM_I1 = ISTR("The Idler cannot move properly. Check for anything blocking its movement. Check the wiring is correct."); diff --git a/lang/po/Firmware.pot b/lang/po/Firmware.pot index 0eb0c7aa1..7226c13b0 100644 --- a/lang/po/Firmware.pot +++ b/lang/po/Firmware.pot @@ -6,13 +6,6 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -248,6 +241,12 @@ msgstr "" msgid "Calibration done" msgstr "" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "" diff --git a/lang/po/Firmware_cs.po b/lang/po/Firmware_cs.po index 06fef3b97..04e175c8f 100644 --- a/lang/po/Firmware_cs.po +++ b/lang/po/Firmware_cs.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "Kalibrace" msgid "Calibration done" msgstr "Kalibrace OK" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_da.po b/lang/po/Firmware_da.po index 1586d32a1..3c1a18afb 100644 --- a/lang/po/Firmware_da.po +++ b/lang/po/Firmware_da.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,6 +250,12 @@ msgstr "" msgid "Calibration done" msgstr "" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index 306b5357d..ccc4de8ef 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "Kalibrierung" msgid "Calibration done" msgstr "Kalibrierung OK" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "Kann Selektor oder Riemenscheibe nicht bewegen." + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." @@ -1061,7 +1060,7 @@ msgstr "Z einstellen" #: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 #: ../../Firmware/ultralcd.cpp:5178 msgid "Load All" -msgstr "" +msgstr "Alle laden" #. MSG_LOAD_FILAMENT c=17 #: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 diff --git a/lang/po/Firmware_es.po b/lang/po/Firmware_es.po index 4d10330a2..d4e3de31a 100644 --- a/lang/po/Firmware_es.po +++ b/lang/po/Firmware_es.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Calibracion" msgid "Calibration done" msgstr "Calibracion OK" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_fr.po b/lang/po/Firmware_fr.po index 4648fe355..bf937572d 100644 --- a/lang/po/Firmware_fr.po +++ b/lang/po/Firmware_fr.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "" msgid "Calibration done" msgstr "Calibration terminee" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_hr.po b/lang/po/Firmware_hr.po index bef511644..5359db4c2 100644 --- a/lang/po/Firmware_hr.po +++ b/lang/po/Firmware_hr.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Kalibriranje" msgid "Calibration done" msgstr "Kalibracija gotova" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_hu.po b/lang/po/Firmware_hu.po index 06a44924b..997907511 100644 --- a/lang/po/Firmware_hu.po +++ b/lang/po/Firmware_hu.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Kalibracio" msgid "Calibration done" msgstr "Kalibracio kesz" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_it.po b/lang/po/Firmware_it.po index d8edd774a..b0924c0e5 100644 --- a/lang/po/Firmware_it.po +++ b/lang/po/Firmware_it.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Calibrazione" msgid "Calibration done" msgstr "Calibr. completa" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_lb.po b/lang/po/Firmware_lb.po index 0aa1123ac..60568e415 100644 --- a/lang/po/Firmware_lb.po +++ b/lang/po/Firmware_lb.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,6 +250,12 @@ msgstr "" msgid "Calibration done" msgstr "" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_lt.po b/lang/po/Firmware_lt.po index 6e62226b9..57b708899 100644 --- a/lang/po/Firmware_lt.po +++ b/lang/po/Firmware_lt.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,6 +250,12 @@ msgstr "" msgid "Calibration done" msgstr "" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index fca44de2f..03a52fc42 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "Kalibratie" msgid "Calibration done" msgstr "Kalibratie klaar" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." @@ -578,7 +577,7 @@ msgstr "FILAMENT AL GELADEN" #. MSG_TITLE_FINDA_DIDNT_TRIGGER c=20 #: ../../Firmware/mmu2/errors_list.h:118 ../../Firmware/mmu2/errors_list.h:156 msgid "FINDA DIDNT TRIGGER" -msgstr "" +msgstr "FINDA TRIGGERDE NIET" #. MSG_DESC_FINDA_DIDNT_GO_OFF c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:197 ../../Firmware/mmu2/errors_list.h:237 @@ -912,7 +911,7 @@ msgstr "Hoog verm." #: ../../Firmware/mmu2_progress_converter.cpp:29 #: ../../Firmware/mmu2_progress_converter.cpp:60 msgid "Homing" -msgstr "" +msgstr "Startpositie" #. MSG_WIZARD_XYZ_CAL c=20 r=8 #: ../../Firmware/ultralcd.cpp:4041 @@ -927,17 +926,17 @@ msgstr "Begin nu met z-kalibratie." #. MSG_TITLE_IDLER_CANNOT_HOME c=20 #: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 msgid "IDLER CANNOT HOME" -msgstr "" +msgstr "RIEMS. STARTPOS.FOUT" #. MSG_TITLE_IDLER_CANNOT_MOVE c=20 #: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 msgid "IDLER CANNOT MOVE" -msgstr "" +msgstr "RIEMSCH. BEWEGT NIET" #. MSG_TITLE_INVALID_TOOL c=20 #: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 msgid "INVALID TOOL" -msgstr "" +msgstr "ONGELDIG TOOL" #. MSG_ADDITIONAL_SHEETS c=20 r=9 #: ../../Firmware/ultralcd.cpp:4115 @@ -1055,7 +1054,7 @@ msgstr "Live Z aanpassen" #: ../../Firmware/messages.cpp:172 ../../Firmware/ultralcd.cpp:5098 #: ../../Firmware/ultralcd.cpp:5178 msgid "Load All" -msgstr "" +msgstr "Laad alle" #. MSG_LOAD_FILAMENT c=17 #: ../../Firmware/messages.cpp:56 ../../Firmware/ultralcd.cpp:5100 @@ -1067,7 +1066,7 @@ msgstr "Filament laden" #. MSG_LOAD_TO_EXTRUDER c=18 #: ../../Firmware/messages.cpp:57 ../../Firmware/ultralcd.cpp:5572 msgid "Load to extruder" -msgstr "" +msgstr "Laad naar extruder" #. MSG_LOAD_TO_NOZZLE c=18 #: ../../Firmware/ultralcd.cpp:5573 @@ -1101,12 +1100,12 @@ msgstr "Hard" #. MSG_TITLE_FW_UPDATE_NEEDED c=20 #: ../../Firmware/mmu2/errors_list.h:151 ../../Firmware/mmu2/errors_list.h:189 msgid "MMU FW UPDATE NEEDED" -msgstr "" +msgstr "MMU FW UPDATE NODIG" #. MSG_DESC_QUEUE_FULL c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:230 ../../Firmware/mmu2/errors_list.h:268 msgid "MMU Firmware internal error, please reset the MMU." -msgstr "" +msgstr "MMU Firmware interne fout, reset de MMU." #. MSG_MMU_MODE c=8 #: ../../Firmware/messages.cpp:138 ../../Firmware/ultralcd.cpp:4379 @@ -1117,12 +1116,12 @@ msgstr "MMU Mod" #. MSG_TITLE_MMU_NOT_RESPONDING c=20 #: ../../Firmware/mmu2/errors_list.h:146 ../../Firmware/mmu2/errors_list.h:184 msgid "MMU NOT RESPONDING" -msgstr "" +msgstr "MMU REAGEERT NIET" #. MSG_MMU_RESTORE_TEMP c=20 r=4 #: ../../Firmware/mmu2.cpp:598 msgid "MMU Retry: Restoring temperature..." -msgstr "" +msgstr "MMU Retry: Temperatuur herstellen..." #. MSG_MMU_FAILS c=15 #: ../../Firmware/messages.cpp:68 ../../Firmware/ultralcd.cpp:1187 @@ -1231,13 +1230,13 @@ msgstr "Model" #: ../../Firmware/mmu2/errors_list.h:261 ../../Firmware/mmu2/errors_list.h:262 #: ../../Firmware/mmu2/errors_list.h:263 msgid "More details online." -msgstr "" +msgstr "Meer details online." #. MSG_BTN_MORE c=5 #: ../../Firmware/mmu2/errors_list.h:287 #: ../../Firmware/mmu2_error_converter.cpp:153 msgid "More⏬" -msgstr "" +msgstr "Meer⏬" #. MSG_SELFTEST_MOTOR c=18 #: ../../Firmware/messages.cpp:95 ../../Firmware/ultralcd.cpp:6981 @@ -1269,7 +1268,7 @@ msgstr "As verplaatsen" #: ../../Firmware/mmu2_progress_converter.cpp:30 #: ../../Firmware/mmu2_progress_converter.cpp:61 msgid "Moving selector" -msgstr "" +msgstr "Bewege selector" #. MSG_NA c=3 #: ../../Firmware/menu.cpp:196 ../../Firmware/messages.cpp:128 @@ -1362,7 +1361,7 @@ msgstr "Tuit d." #: ../../Firmware/mmu2_progress_converter.cpp:8 #: ../../Firmware/mmu2_progress_converter.cpp:34 msgid "OK" -msgstr "" +msgstr "OK" #. MSG_OFF c=3 #: ../../Firmware/SpoolJoin.cpp:40 ../../Firmware/menu.cpp:467 @@ -1453,13 +1452,13 @@ msgstr "" #. MSG_TITLE_PULLEY_CANNOT_MOVE c=20 #: ../../Firmware/mmu2/errors_list.h:122 ../../Firmware/mmu2/errors_list.h:160 msgid "PULLEY CANNOT MOVE" -msgstr "" +msgstr "RIEMSCH. BEWEGT NIET" #. MSG_PROGRESS_PARK_SELECTOR c=20 #: ../../Firmware/mmu2_progress_converter.cpp:26 #: ../../Firmware/mmu2_progress_converter.cpp:57 msgid "Parking selector" -msgstr "" +msgstr "Parkere selector" #. MSG_PAUSE c=5 #: ../../Firmware/messages.cpp:154 ../../Firmware/ultralcd.cpp:4248 @@ -1476,7 +1475,7 @@ msgstr "Print pauzeren" #: ../../Firmware/mmu2_progress_converter.cpp:24 #: ../../Firmware/mmu2_progress_converter.cpp:55 msgid "Performing cut" -msgstr "" +msgstr "Voer cut uit" #. MSG_PAPER c=20 r=10 #: ../../Firmware/Marlin_main.cpp:3306 ../../Firmware/messages.cpp:72 @@ -1639,7 +1638,7 @@ msgstr "Opwarmen uitwerpen" #: ../../Firmware/mmu2_progress_converter.cpp:22 #: ../../Firmware/mmu2_progress_converter.cpp:53 msgid "Preparing blade" -msgstr "" +msgstr "Bereid mes voor" #. MSG_PRESS_KNOB c=20 #: ../../Firmware/ultralcd.cpp:1809 @@ -1709,18 +1708,19 @@ msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." -msgstr "" +msgstr "Pulley motor is vastgelopen. Controleer of de poelie kan bewegen en " +"controleer de bedrading." #. MSG_PROGRESS_PUSH_FILAMENT c=20 #: ../../Firmware/mmu2_progress_converter.cpp:23 #: ../../Firmware/mmu2_progress_converter.cpp:54 msgid "Pushing filament" -msgstr "" +msgstr "Duwe filament" #. MSG_TITLE_QUEUE_FULL c=20 #: ../../Firmware/mmu2/errors_list.h:150 ../../Firmware/mmu2/errors_list.h:188 msgid "QUEUE FULL" -msgstr "" +msgstr "QUEUE VOL" #. MSG_RPI_PORT c=13 #: ../../Firmware/messages.cpp:143 ../../Firmware/ultralcd.cpp:4805 @@ -1754,6 +1754,8 @@ msgid "" "Requested filament tool is not available on this hardware. Check the G-code " "for tool index out of range (T0-T4)." msgstr "" +"De gevraagde filament tool is niet beschikbaar op deze hardware. Controleer " +"de G-code voor filament index buiten bereik (T0-T4)." #. MSG_RESET c=14 #: ../../Firmware/messages.cpp:84 ../../Firmware/ultralcd.cpp:2754 @@ -1764,7 +1766,7 @@ msgstr "Reset" #. MSG_BTN_RESTART_MMU c=9 #: ../../Firmware/mmu2/errors_list.h:283 ../../Firmware/mmu2/errors_list.h:293 msgid "Reset MMU" -msgstr "" +msgstr "Reset MMU" #. MSG_CALIBRATE_BED_RESET c=18 #: ../../Firmware/ultralcd.cpp:4888 @@ -1786,18 +1788,18 @@ msgstr "Hervatten print" #: ../../Firmware/mmu2_progress_converter.cpp:28 #: ../../Firmware/mmu2_progress_converter.cpp:59 msgid "Retract from FINDA" -msgstr "" +msgstr "Intrekken van FINDA" #. MSG_BTN_RETRY c=5 #: ../../Firmware/mmu2/errors_list.h:281 ../../Firmware/mmu2/errors_list.h:291 msgid "Retry" -msgstr "" +msgstr "Retry" #. MSG_PROGRESS_RETURN_SELECTOR c=20 #: ../../Firmware/mmu2_progress_converter.cpp:25 #: ../../Firmware/mmu2_progress_converter.cpp:56 msgid "Returning selector" -msgstr "" +msgstr "Selctor terugrijden" #. MSG_RIGHT c=10 #: ../../Firmware/ultralcd.cpp:2495 @@ -1828,12 +1830,12 @@ msgstr "SD kaart" #. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 #: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 msgid "SELECTOR CANNOT HOME" -msgstr "" +msgstr "SELC. STARTPOS. FOUT" #. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 #: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 msgid "SELECTOR CANNOT MOVE" -msgstr "" +msgstr "SELECTOR BEWEG FOUT" #. MSG_STOPPED c=20 #: ../../Firmware/Marlin_main.cpp:9706 ../../Firmware/messages.cpp:112 @@ -1894,7 +1896,7 @@ msgstr "Selecteer de temperatuur die overeenkomt met uw materiaal." #: ../../Firmware/mmu2_progress_converter.cpp:21 #: ../../Firmware/mmu2_progress_converter.cpp:52 msgid "Selecting fil. slot" -msgstr "" +msgstr "Selectere fil. slot" #. MSG_SELFTEST_OK c=20 #: ../../Firmware/ultralcd.cpp:6522 @@ -2063,7 +2065,7 @@ msgstr "Staalplaten" #. MSG_BTN_STOP c=5 #: ../../Firmware/mmu2/errors_list.h:285 ../../Firmware/mmu2/errors_list.h:295 msgid "Stop" -msgstr "" +msgstr "Stop" #. MSG_STOP_PRINT c=18 #: ../../Firmware/messages.cpp:111 ../../Firmware/ultralcd.cpp:5537 @@ -2102,31 +2104,31 @@ msgstr "TM autotune mislukt" #: ../../Firmware/mmu2/errors_list.h:134 ../../Firmware/mmu2/errors_list.h:172 #: ../../Firmware/mmu2/errors_list.h:173 ../../Firmware/mmu2/errors_list.h:174 msgid "TMC DRIVER ERROR" -msgstr "" +msgstr "TMC FOUT" #. MSG_TITLE_TMC_DRIVER_RESET c=20 #: ../../Firmware/mmu2/errors_list.h:137 ../../Firmware/mmu2/errors_list.h:175 #: ../../Firmware/mmu2/errors_list.h:176 ../../Firmware/mmu2/errors_list.h:177 msgid "TMC DRIVER RESET" -msgstr "" +msgstr "TMC RESET" #. MSG_TITLE_TMC_DRIVER_SHORTED c=20 #: ../../Firmware/mmu2/errors_list.h:143 ../../Firmware/mmu2/errors_list.h:181 #: ../../Firmware/mmu2/errors_list.h:182 ../../Firmware/mmu2/errors_list.h:183 msgid "TMC DRIVER SHORTED" -msgstr "" +msgstr "TMC KORTSLUITING" #. MSG_TITLE_TMC_OVERHEAT_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:131 ../../Firmware/mmu2/errors_list.h:169 #: ../../Firmware/mmu2/errors_list.h:170 ../../Firmware/mmu2/errors_list.h:171 msgid "TMC OVERHEAT ERROR" -msgstr "" +msgstr "TMC OVERHITTINGSFOUT" #. MSG_TITLE_TMC_UNDERVOLTAGE_ERROR c=20 #: ../../Firmware/mmu2/errors_list.h:140 ../../Firmware/mmu2/errors_list.h:178 #: ../../Firmware/mmu2/errors_list.h:179 ../../Firmware/mmu2/errors_list.h:180 msgid "TMC UNDERVOLTAGE ERR" -msgstr "" +msgstr "TMC ONDERVOLT. FOUT" #. MSG_TEMP_MODEL_AUTOTUNE c=20 #: ../../Firmware/temperature.cpp:2882 @@ -2146,13 +2148,15 @@ msgstr "Temperaturen" #. MSG_TESTING_FILAMENT c=20 #: ../../Firmware/messages.cpp:59 ../../Firmware/mmu2.cpp:426 msgid "Testing filament" -msgstr "" +msgstr "Teste filament" #. MSG_DESC_IDLER_CANNOT_HOME c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:205 ../../Firmware/mmu2/errors_list.h:244 msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" +"Het riemschijf kan niet goed bewegen. Controleer of er iets de beweging" +" blokkeert." #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 #: ../../Firmware/mmu2/errors_list.h:231 ../../Firmware/mmu2/errors_list.h:269 @@ -2160,12 +2164,14 @@ msgid "" "The MMU unit reports its FW version incompatible with the printer's " "firmware. Make sure the MMU firmware is up to date." msgstr "" +"De MMU meldt dat zijn FW-versie niet compatibel is met de firmware van" +" de printer. Controleer of de MMU-firmware up-to-date is." #. MSG_DESC_SELECTOR_CANNOT_HOME c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:202 ../../Firmware/mmu2/errors_list.h:242 msgid "" "The Selector cannot home properly. Check for anything blocking its movement." -msgstr "" +msgstr "De selector kan niet startpositie finden. Controleer of er iets in de weg zit." #. MSG_WIZARD_V2_CAL_2 c=20 r=12 #: ../../Firmware/ultralcd.cpp:3940 @@ -2227,7 +2233,7 @@ msgstr "Fijnafstemming" #. MSG_TITLE_UNLOAD_MANUALLY c=20 #: ../../Firmware/mmu2/errors_list.h:153 ../../Firmware/mmu2/errors_list.h:191 msgid "UNLOAD MANUALLY" -msgstr "" +msgstr "ONTLAAD MANUEEL" #. MSG_DESC_UNLOAD_MANUALLY c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:233 ../../Firmware/mmu2/errors_list.h:271 @@ -2235,11 +2241,13 @@ msgid "" "Unexpected FINDA reading. Ensure no filament is under FINDA and the selector " "is free. Check FINDA connection." msgstr "" +"Onverwachte FINDA-aflezing. Zorg ervoor dat er geen filament onder FINDA zit" +" en dat de selecteur vrij is. Controleer de FINDA-verbinding." #. MSG_BTN_UNLOAD c=6 #: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:294 msgid "Unload" -msgstr "" +msgstr "Ontla." #. MSG_UNLOAD_FILAMENT c=16 #: ../../Firmware/messages.cpp:115 ../../Firmware/ultralcd.cpp:5574 @@ -2258,13 +2266,13 @@ msgstr "Uitwerpen filament" #: ../../Firmware/mmu2_progress_converter.cpp:11 #: ../../Firmware/mmu2_progress_converter.cpp:37 msgid "Unloading to FINDA" -msgstr "" +msgstr "Ontlade naar FINDA" #. MSG_PROGRESS_UNLOAD_PULLEY c=20 #: ../../Firmware/mmu2_progress_converter.cpp:12 #: ../../Firmware/mmu2_progress_converter.cpp:38 msgid "Unloading to pulley" -msgstr "" +msgstr "Ontlade n. riemschi." #. MSG_FIL_FAILED c=20 r=5 #: ../../Firmware/ultralcd.cpp:6265 @@ -2280,7 +2288,7 @@ msgstr "Spanning" #: ../../Firmware/mmu2/errors_list.h:128 ../../Firmware/mmu2/errors_list.h:166 #: ../../Firmware/mmu2/errors_list.h:167 ../../Firmware/mmu2/errors_list.h:168 msgid "WARNING TMC TOO HOT" -msgstr "" +msgstr "WAARSCH. TMC TE HEET" #. MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 #: ../../Firmware/ultralcd.cpp:3551 diff --git a/lang/po/Firmware_no.po b/lang/po/Firmware_no.po index 5de96085e..70a61db16 100644 --- a/lang/po/Firmware_no.po +++ b/lang/po/Firmware_no.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "Kalibrering" msgid "Calibration done" msgstr "Kalibrering ferdig" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_pl.po b/lang/po/Firmware_pl.po index 14ce91adb..252dc2cc7 100644 --- a/lang/po/Firmware_pl.po +++ b/lang/po/Firmware_pl.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Kalibracja" msgid "Calibration done" msgstr "Kalibracja OK" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_ro.po b/lang/po/Firmware_ro.po index 9f314244e..500989bb2 100644 --- a/lang/po/Firmware_ro.po +++ b/lang/po/Firmware_ro.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -265,6 +258,12 @@ msgstr "Calibrare" msgid "Calibration done" msgstr "Calibrare gata" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_sk.po b/lang/po/Firmware_sk.po index 829d63029..f0714d1be 100644 --- a/lang/po/Firmware_sk.po +++ b/lang/po/Firmware_sk.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -263,6 +256,12 @@ msgstr "Kalibracia" msgid "Calibration done" msgstr "Kalibracia OK" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_sl.po b/lang/po/Firmware_sl.po index 5aec8e0b7..56386235f 100644 --- a/lang/po/Firmware_sl.po +++ b/lang/po/Firmware_sl.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -257,6 +250,12 @@ msgstr "" msgid "Calibration done" msgstr "" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." diff --git a/lang/po/Firmware_sv.po b/lang/po/Firmware_sv.po index a7e746635..31a33ed62 100644 --- a/lang/po/Firmware_sv.po +++ b/lang/po/Firmware_sv.po @@ -15,13 +15,6 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#. MSG_DESC_CANNOT_MOVE c=20 -#. these errors have been disabled -#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 -#: ../../Firmware/mmu2/errors_list.h:245 -msgid " " -msgstr "" - #. MSG_IR_03_OR_OLDER c=18 #: ../../Firmware/Filament_sensor.cpp:287 #: ../../Firmware/Filament_sensor.cpp:362 ../../Firmware/messages.cpp:165 @@ -264,6 +257,12 @@ msgstr "Kalibrering" msgid "Calibration done" msgstr "Kalibraring utförd" +#. MSG_DESC_CANNOT_MOVE c=20 r=4 +#: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 +#: ../../Firmware/mmu2/errors_list.h:245 +msgid "Can't move Selector or Idler." +msgstr "" + #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 msgid "Cannot perform the action, filament is already loaded. Unload it first." From 82f29634c4c10cbb97668ecee5662db21bbf445b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Sep 2022 18:10:02 +0200 Subject: [PATCH 312/319] Forgot one Dutch translation --- lang/po/Firmware_nl.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 03a52fc42..4abc1d3b7 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -261,7 +261,7 @@ msgstr "Kalibratie klaar" #: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 #: ../../Firmware/mmu2/errors_list.h:245 msgid "Can't move Selector or Idler." -msgstr "" +msgstr "Kan selector of riemschijf niet bewegen." #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 From 28b0ef1acb2d1f6347dcee683b1f8787c82e6e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 17 Sep 2022 12:32:37 +0000 Subject: [PATCH 313/319] PFW-1369 Use same ramming sequence as default settings in Slicer --- Firmware/mmu2.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 9e23cc7d3..d246edb1c 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -57,17 +57,24 @@ struct E_Step { }; static constexpr E_Step ramming_sequence[] PROGMEM = { - { 1.0F, 1000.0F / 60.F}, - { 1.0F, 1500.0F / 60.F}, - { 2.0F, 2000.0F / 60.F}, - { 1.5F, 3000.0F / 60.F}, - { 2.5F, 4000.0F / 60.F}, - {-15.0F, 5000.0F / 60.F}, - {-14.0F, 1200.0F / 60.F}, - {-6.0F, 600.0F / 60.F}, - { 10.0F, 700.0F / 60.F}, - {-10.0F, 400.0F / 60.F}, - {-50.0F, 2000.0F / 60.F}, + { 0.2816F, 1339.0F / 60.F}, + { 0.3051F, 1451.0F / 60.F}, + { 0.3453F, 1642.0F / 60.F}, + { 0.3990F, 1897.0F / 60.F}, + { 0.4761F, 2264.0F / 60.F}, + { 0.5767F, 2742.0F / 60.F}, + { 0.5691F, 3220.0F / 60.F}, + { 0.1081F, 3220.0F / 60.F}, + { 0.7644F, 3635.0F / 60.F}, + { 0.8248F, 3921.0F / 60.F}, + { 0.8483F, 4033.0F / 60.F}, + { -15.0F, 6000.0F / 60.F}, + { -24.5F, 1200.0F / 60.F}, + { -7.0F, 600.0F / 60.F}, + { -3.5F, 360.0F / 60.F}, + { 20.0F, 454.0F / 60.F}, + { -20.0F, 303.0F / 60.F}, + { -35.0F, 2000.0F / 60.F}, }; static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { From 770fdcd83b6a0a7ad7b7cf73a9fef1cff3a74c02 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 19 Sep 2022 08:02:40 +0200 Subject: [PATCH 314/319] Fix typo, thanks to @gudnimg --- Firmware/mmu2_reporting.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 22088fa2c..37b316d4f 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -156,7 +156,7 @@ static uint8_t ReportErrorHookMonitor(uint8_t ei) { //! Three choices //! |>(left)>(mid)>(righ)| //! ---------------------- - //! Two choises + //! Two choices //! ---------------------- //! |>(left) >(mid) | //! ---------------------- From 0d00da636423c8a5a90f8d1ec8b94ac0742054c2 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 19 Sep 2022 08:20:31 +0200 Subject: [PATCH 315/319] Consistent use of Idler = Spannrol and Pulley = Riemschijf in Dutch Thanks to @vintagepc --- lang/po/Firmware_nl.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lang/po/Firmware_nl.po b/lang/po/Firmware_nl.po index 4abc1d3b7..2746f6cea 100644 --- a/lang/po/Firmware_nl.po +++ b/lang/po/Firmware_nl.po @@ -261,7 +261,7 @@ msgstr "Kalibratie klaar" #: ../../Firmware/mmu2/errors_list.h:203 ../../Firmware/mmu2/errors_list.h:243 #: ../../Firmware/mmu2/errors_list.h:245 msgid "Can't move Selector or Idler." -msgstr "Kan selector of riemschijf niet bewegen." +msgstr "Kan selector of spanrol niet bewegen." #. MSG_DESC_FILAMENT_ALREADY_LOADED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:228 ../../Firmware/mmu2/errors_list.h:266 @@ -436,7 +436,7 @@ msgstr "Motoren uit" #: ../../Firmware/mmu2_progress_converter.cpp:36 #: ../../Firmware/mmu2_progress_converter.cpp:44 msgid "Disengaging idler" -msgstr "Ontkoppel rondesel" +msgstr "Ontkoppel spanrol" #. MSG_BABYSTEP_Z_NOT_SET c=20 r=12 #: ../../Firmware/Marlin_main.cpp:1530 ../../Firmware/Marlin_main.cpp:3400 @@ -531,7 +531,7 @@ msgstr "Eindstops" #: ../../Firmware/mmu2_progress_converter.cpp:35 #: ../../Firmware/mmu2_progress_converter.cpp:45 msgid "Engaging idler" -msgstr "Koppeln rolspel" +msgstr "Koppel spanrol" #. MSG_EXTRUDER c=17 #: ../../Firmware/Marlin_main.cpp:3519 ../../Firmware/Tcodes.cpp:35 @@ -926,12 +926,12 @@ msgstr "Begin nu met z-kalibratie." #. MSG_TITLE_IDLER_CANNOT_HOME c=20 #: ../../Firmware/mmu2/errors_list.h:127 ../../Firmware/mmu2/errors_list.h:164 msgid "IDLER CANNOT HOME" -msgstr "RIEMS. STARTPOS.FOUT" +msgstr "SPANROL STARTPOSFOUT" #. MSG_TITLE_IDLER_CANNOT_MOVE c=20 #: ../../Firmware/mmu2/errors_list.h:126 ../../Firmware/mmu2/errors_list.h:165 msgid "IDLER CANNOT MOVE" -msgstr "RIEMSCH. BEWEGT NIET" +msgstr "SPANROL BEWEGT NIET" #. MSG_TITLE_INVALID_TOOL c=20 #: ../../Firmware/mmu2/errors_list.h:149 ../../Firmware/mmu2/errors_list.h:187 @@ -1540,7 +1540,7 @@ msgstr "Laad a.u.b. eerst filament." #. MSG_CHECK_IDLER c=20 r=5 #: ../../Firmware/Marlin_main.cpp:3581 msgid "Please open idler and remove filament manually." -msgstr "Open rondsel en verwijder filament handmatig." +msgstr "Open spanrol en verwijder filament handmatig." #. MSG_PLACE_STEEL_SHEET c=20 r=5 #: ../../Firmware/mesh_bed_calibration.cpp:2795 ../../Firmware/messages.cpp:74 @@ -1708,7 +1708,7 @@ msgstr "" #. MSG_DESC_PULLEY_STALLED c=20 r=8 #: ../../Firmware/mmu2/errors_list.h:200 ../../Firmware/mmu2/errors_list.h:240 msgid "Pulley motor stalled. Ensure the pulley can move and check the wiring." -msgstr "Pulley motor is vastgelopen. Controleer of de poelie kan bewegen en " +msgstr "Riemschijf motor is vastgelopen. Controleer of de poelie kan bewegen en " "controleer de bedrading." #. MSG_PROGRESS_PUSH_FILAMENT c=20 @@ -1830,7 +1830,7 @@ msgstr "SD kaart" #. MSG_TITLE_SELECTOR_CANNOT_HOME c=20 #: ../../Firmware/mmu2/errors_list.h:125 ../../Firmware/mmu2/errors_list.h:162 msgid "SELECTOR CANNOT HOME" -msgstr "SELC. STARTPOS. FOUT" +msgstr "SELECTOR STARTP_FOUT" #. MSG_TITLE_SELECTOR_CANNOT_MOVE c=20 #: ../../Firmware/mmu2/errors_list.h:124 ../../Firmware/mmu2/errors_list.h:163 @@ -2155,7 +2155,7 @@ msgstr "Teste filament" msgid "" "The Idler cannot home properly. Check for anything blocking its movement." msgstr "" -"Het riemschijf kan niet goed bewegen. Controleer of er iets de beweging" +"Het spanrol kan niet goed bewegen. Controleer of er iets de beweging" " blokkeert." #. MSG_DESC_FW_UPDATE_NEEDED c=20 r=9 From 6a470791d390debefb92dd6f328702166e3dc73d Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sat, 10 Sep 2022 19:14:28 +0200 Subject: [PATCH 316/319] Allow sending uint16_t values to registers --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d7dfcb280..048a083b7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8691,9 +8691,9 @@ Sigma_Exit: if( code_seen('A') ) { addr = uint8_t(strtol(strchr_pointer+1, NULL, 16)); } - uint8_t data = 0; + uint16_t data = 0; if( code_seen('X') ) { - data = code_value_uint8(); + data = code_value_short(); } if(addr){ MMU2::mmu2.WriteRegister(addr, data); From 76fb4610eaa3eb838af18b242de73c3b71d0fef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 18 Sep 2022 10:18:09 +0000 Subject: [PATCH 317/319] Optimisation: Remove duplicated code in cmdqueue_could_enqueue_back() Code is 28 lines shorter :) Change in memory: Flash: -42 bytes SRAM: 0 bytes --- Firmware/cmdqueue.cpp | 82 ++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 55 deletions(-) diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index 687f9cabc..c8f91d477 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -165,61 +165,33 @@ static bool cmdqueue_could_enqueue_back(size_t len_asked, bool atomic_update = f // Full buffer. return false; - if (serial_count > 0) { - // If there is some data stored starting at bufindw, len_asked is certainly smaller than - // the allocated data buffer. Try to reserve a new buffer and to move the already received - // serial data. - // How much memory to reserve for the commands pushed to the front? - // End of the queue, when pushing to the end. - size_t endw = bufindw + len_asked + (1 + CMDHDRSIZE); - if (bufindw < bufindr) - // Simple case. There is a contiguous space between the write buffer and the read buffer. - return endw + CMDBUFFER_RESERVE_FRONT <= bufindr; - // Otherwise the free space is split between the start and end. - if (// Could one fit to the end, including the reserve? - endw + CMDBUFFER_RESERVE_FRONT <= sizeof(cmdbuffer) || - // Could one fit to the end, and the reserve to the start? - (endw <= sizeof(cmdbuffer) && CMDBUFFER_RESERVE_FRONT <= bufindr)) - return true; - // Could one fit both to the start? - if (len_asked + (1 + CMDHDRSIZE) + CMDBUFFER_RESERVE_FRONT <= bufindr) { - // Mark the rest of the buffer as used. - memset(cmdbuffer+bufindw, 0, sizeof(cmdbuffer)-bufindw); - // and point to the start. - // Be careful! The bufindw needs to be changed atomically for the power panic & filament panic to work. - if (atomic_update) - cli(); - bufindw = 0; - if (atomic_update) - sei(); - return true; - } - } else { - // How much memory to reserve for the commands pushed to the front? - // End of the queue, when pushing to the end. - size_t endw = bufindw + len_asked + (1 + CMDHDRSIZE); - if (bufindw < bufindr) - // Simple case. There is a contiguous space between the write buffer and the read buffer. - return endw + CMDBUFFER_RESERVE_FRONT <= bufindr; - // Otherwise the free space is split between the start and end. - if (// Could one fit to the end, including the reserve? - endw + CMDBUFFER_RESERVE_FRONT <= sizeof(cmdbuffer) || - // Could one fit to the end, and the reserve to the start? - (endw <= sizeof(cmdbuffer) && CMDBUFFER_RESERVE_FRONT <= bufindr)) - return true; - // Could one fit both to the start? - if (len_asked + (1 + CMDHDRSIZE) + CMDBUFFER_RESERVE_FRONT <= bufindr) { - // Mark the rest of the buffer as used. - memset(cmdbuffer+bufindw, 0, sizeof(cmdbuffer)-bufindw); - // and point to the start. - // Be careful! The bufindw needs to be changed atomically for the power panic & filament panic to work. - if (atomic_update) - cli(); - bufindw = 0; - if (atomic_update) - sei(); - return true; - } + // If there is some data stored starting at bufindw, len_asked is certainly smaller than + // the allocated data buffer. Try to reserve a new buffer and to move the already received + // serial data. + // How much memory to reserve for the commands pushed to the front? + // End of the queue, when pushing to the end. + size_t endw = bufindw + len_asked + (1 + CMDHDRSIZE); + if (bufindw < bufindr) + // Simple case. There is a contiguous space between the write buffer and the read buffer. + return endw + CMDBUFFER_RESERVE_FRONT <= bufindr; + // Otherwise the free space is split between the start and end. + if (// Could one fit to the end, including the reserve? + endw + CMDBUFFER_RESERVE_FRONT <= sizeof(cmdbuffer) || + // Could one fit to the end, and the reserve to the start? + (endw <= sizeof(cmdbuffer) && CMDBUFFER_RESERVE_FRONT <= bufindr)) + return true; + // Could one fit both to the start? + if (len_asked + (1 + CMDHDRSIZE) + CMDBUFFER_RESERVE_FRONT <= bufindr) { + // Mark the rest of the buffer as used. + memset(cmdbuffer+bufindw, 0, sizeof(cmdbuffer)-bufindw); + // and point to the start. + // Be careful! The bufindw needs to be changed atomically for the power panic & filament panic to work. + if (atomic_update) + cli(); + bufindw = 0; + if (atomic_update) + sei(); + return true; } return false; } From c8a8484ca7973189f0df680334de7a79b06c37a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Mon, 19 Sep 2022 17:54:40 +0000 Subject: [PATCH 318/319] Remove atomic_update parameter Change in memory: Flash: +24 bytes SRAM: -0 byte --- Firmware/cmdqueue.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index c8f91d477..cc7277c90 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -1,3 +1,4 @@ +#include #include "cmdqueue.h" #include "cardreader.h" #include "ultralcd.h" @@ -155,7 +156,7 @@ static bool cmdqueue_could_enqueue_front(size_t len_asked) // len_asked does not contain the zero terminator size. // This function may update bufindw, therefore for the power panic to work, this function must be called // with the interrupts disabled! -static bool cmdqueue_could_enqueue_back(size_t len_asked, bool atomic_update = false) +static bool cmdqueue_could_enqueue_back(size_t len_asked) { // MAX_CMD_SIZE has to accommodate the zero terminator. if (len_asked >= MAX_CMD_SIZE) @@ -186,11 +187,7 @@ static bool cmdqueue_could_enqueue_back(size_t len_asked, bool atomic_update = f memset(cmdbuffer+bufindw, 0, sizeof(cmdbuffer)-bufindw); // and point to the start. // Be careful! The bufindw needs to be changed atomically for the power panic & filament panic to work. - if (atomic_update) - cli(); - bufindw = 0; - if (atomic_update) - sei(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { bufindw = 0; } return true; } return false; @@ -343,7 +340,7 @@ void repeatcommand_front() void get_command() { // Test and reserve space for the new command string. - if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE - 1, true)) + if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE - 1)) return; if (MYSERIAL.available() == RX_BUFFER_SIZE - 1) { //compare number of chars buffered in rx buffer with rx buffer size @@ -489,7 +486,7 @@ void get_command() serial_count = 0; //clear buffer // Don't call cmdqueue_could_enqueue_back if there are no characters waiting // in the queue, as this function will reserve the memory. - if (MYSERIAL.available() == 0 || ! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1, true)) + if (MYSERIAL.available() == 0 || ! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1)) return; } // end of "end of line" processing else { @@ -587,7 +584,7 @@ void get_command() if(card.eof()) break; // The following line will reserve buffer space if available. - if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1, true)) + if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1)) return; } else From eb7de5149b87b06d87605de9c60ba3e92211bfd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Mon, 19 Sep 2022 18:07:55 +0000 Subject: [PATCH 319/319] Don't inline the function Change in memory: Flash: -44 bytes SRAM: 0 bytes --- Firmware/cmdqueue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index cc7277c90..202b36d42 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -156,7 +156,7 @@ static bool cmdqueue_could_enqueue_front(size_t len_asked) // len_asked does not contain the zero terminator size. // This function may update bufindw, therefore for the power panic to work, this function must be called // with the interrupts disabled! -static bool cmdqueue_could_enqueue_back(size_t len_asked) +static bool __attribute__((noinline)) cmdqueue_could_enqueue_back(size_t len_asked) { // MAX_CMD_SIZE has to accommodate the zero terminator. if (len_asked >= MAX_CMD_SIZE)