Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/bugfix-2.0.x' into pr/20507
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Dec 20, 2020
2 parents b74ea27 + 777c50a commit d4813b0
Show file tree
Hide file tree
Showing 42 changed files with 544 additions and 202 deletions.
40 changes: 39 additions & 1 deletion Marlin/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -1006,6 +1006,33 @@
// Feedrate (mm/min) for the "accurate" probe of each point
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)

/**
* Probe Activation Switch
* A switch indicating proper deployment, or an optical
* switch triggered when the carriage is near the bed.
*/
//#define PROBE_ACTIVATION_SWITCH
#if ENABLED(PROBE_ACTIVATION_SWITCH)
#define PROBE_ACTIVATION_SWITCH_STATE LOW // State indicating probe is active
//#define PROBE_ACTIVATION_SWITCH_PIN PC6 // Override default pin
#endif

/**
* Tare Probe (determine zero-point) prior to each probe.
* Useful for a strain gauge or piezo sensor that needs to factor out
* elements such as cables pulling on the carriage.
*/
//#define PROBE_TARE
#if ENABLED(PROBE_TARE)
#define PROBE_TARE_TIME 200 // (ms) Time to hold tare pin
#define PROBE_TARE_DELAY 200 // (ms) Delay after tare before
#define PROBE_TARE_STATE HIGH // State to write pin for tare
//#define PROBE_TARE_PIN PA5 // Override default pin
#if ENABLED(PROBE_ACTIVATION_SWITCH)
//#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active
#endif
#endif

/**
* Multiple Probing
*
Expand Down Expand Up @@ -1067,6 +1094,13 @@
//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing
//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors

// Require minimum nozzle and/or bed temperature for probing.
//#define PREHEAT_BEFORE_PROBING
#if ENABLED(PREHEAT_BEFORE_PROBING)
#define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define PROBING_BED_TEMP 50
#endif

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
// :{ 0:'Low', 1:'High' }
#define X_ENABLE_ON 0
Expand Down Expand Up @@ -1296,7 +1330,7 @@
*/
//#define PREHEAT_BEFORE_LEVELING
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#define LEVELING_NOZZLE_TEMP 120
#define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define LEVELING_BED_TEMP 50
#endif

Expand Down Expand Up @@ -1666,6 +1700,10 @@
// For a purge/clean station mounted on the X axis
//#define NOZZLE_CLEAN_NO_Y
// Require a minimum hotend temperature for cleaning
#define NOZZLE_CLEAN_MIN_TEMP 170
//#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe

// Explicit wipe G-code script applies to a G12 with no arguments.
//#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0"

Expand Down
32 changes: 16 additions & 16 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -2473,22 +2473,22 @@
* Set *_SERIAL_TX_PIN and *_SERIAL_RX_PIN to match for all drivers
* on the same serial port, either here or in your board's pins file.
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define Z4_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
#define E6_SLAVE_ADDRESS 0
#define E7_SLAVE_ADDRESS 0
//#define X_SLAVE_ADDRESS 0
//#define Y_SLAVE_ADDRESS 0
//#define Z_SLAVE_ADDRESS 0
//#define X2_SLAVE_ADDRESS 0
//#define Y2_SLAVE_ADDRESS 0
//#define Z2_SLAVE_ADDRESS 0
//#define Z3_SLAVE_ADDRESS 0
//#define Z4_SLAVE_ADDRESS 0
//#define E0_SLAVE_ADDRESS 0
//#define E1_SLAVE_ADDRESS 0
//#define E2_SLAVE_ADDRESS 0
//#define E3_SLAVE_ADDRESS 0
//#define E4_SLAVE_ADDRESS 0
//#define E5_SLAVE_ADDRESS 0
//#define E6_SLAVE_ADDRESS 0
//#define E7_SLAVE_ADDRESS 0

/**
* Software enable
Expand Down
3 changes: 2 additions & 1 deletion Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@ bool PersistentStore::access_start() { eeprom_init(); return true; }
bool PersistentStore::access_finish() { return true; }

bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
size_t written = 0;
while (size--) {
uint8_t v = *value;
uint8_t * const p = (uint8_t * const)pos;
// EEPROM has only ~100,000 write cycles,
// so only write bytes that have changed!
if (v != eeprom_read_byte(p)) {
eeprom_write_byte(p, v);
if (size & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
if (++written & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
Expand Down
1 change: 1 addition & 0 deletions Marlin/src/core/language.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
#define STR_Z4_MIN "z4_min"
#define STR_Z4_MAX "z4_max"
#define STR_Z_PROBE "z_probe"
#define STR_PROBE_EN "probe_en"
#define STR_FILAMENT_RUNOUT_SENSOR "filament"
#define STR_PROBE_OFFSET "Probe Offset"
#define STR_SKEW_MIN "min_skew_factor: "
Expand Down
27 changes: 6 additions & 21 deletions Marlin/src/gcode/bedlevel/abl/G29.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,9 @@
#include "../../../module/probe.h"
#include "../../queue.h"

#if EITHER(PROBE_TEMP_COMPENSATION, PREHEAT_BEFORE_LEVELING)
#include "../../../module/temperature.h"
#endif

#if ENABLED(PROBE_TEMP_COMPENSATION)
#include "../../../feature/probe_temp_comp.h"
#include "../../../module/temperature.h"
#endif

#if HAS_DISPLAY
Expand Down Expand Up @@ -404,25 +401,13 @@ G29_TYPE GcodeSuite::G29() {
ExtUI::onMeshLevelingStart();
#endif

if (!faux) remember_feedrate_scaling_off();
if (!faux) {
remember_feedrate_scaling_off();

#if ENABLED(PREHEAT_BEFORE_LEVELING)
#ifndef LEVELING_NOZZLE_TEMP
#define LEVELING_NOZZLE_TEMP 0
#if ENABLED(PREHEAT_BEFORE_LEVELING)
if (!dryrun) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, LEVELING_BED_TEMP);
#endif
#ifndef LEVELING_BED_TEMP
#define LEVELING_BED_TEMP 0
#endif
if (!dryrun && !faux) {
constexpr uint16_t hotendPreheat = LEVELING_NOZZLE_TEMP, bedPreheat = LEVELING_BED_TEMP;
if (DEBUGGING(LEVELING))
DEBUG_ECHOLNPAIR("Preheating hotend (", hotendPreheat, ") and bed (", bedPreheat, ")");
if (hotendPreheat) thermalManager.setTargetHotend(hotendPreheat, 0);
if (bedPreheat) thermalManager.setTargetBed(bedPreheat);
if (hotendPreheat) thermalManager.wait_for_hotend(0);
if (bedPreheat) thermalManager.wait_for_bed_heating();
}
#endif
}

// Disable auto bed leveling during G29.
// Be formal so G29 can be done successively without G28.
Expand Down
1 change: 1 addition & 0 deletions Marlin/src/gcode/probe/M401_M402.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
*/
void GcodeSuite::M401() {
probe.deploy();
TERN_(PROBE_TARE, probe.tare());
report_current_position();
}

Expand Down
16 changes: 16 additions & 0 deletions Marlin/src/inc/Conditionals_LCD.h
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,22 @@
#define TOTAL_PROBING MULTIPLE_PROBING
#endif
#endif
#if ENABLED(PREHEAT_BEFORE_PROBING)
#ifndef PROBING_NOZZLE_TEMP
#define PROBING_NOZZLE_TEMP 0
#endif
#ifndef PROBING_BED_TEMP
#define PROBING_BED_TEMP 0
#endif
#endif
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#ifndef LEVELING_NOZZLE_TEMP
#define LEVELING_NOZZLE_TEMP 0
#endif
#ifndef LEVELING_BED_TEMP
#define LEVELING_BED_TEMP 0
#endif
#endif
#else
// Clear probe pin settings when no probe is selected
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
Expand Down
48 changes: 48 additions & 0 deletions Marlin/src/inc/Conditionals_post.h
Original file line number Diff line number Diff line change
Expand Up @@ -1647,6 +1647,54 @@
#ifndef E7_INTERPOLATE
#define E7_INTERPOLATE INTERPOLATE
#endif
#ifndef X_SLAVE_ADDRESS
#define X_SLAVE_ADDRESS 0
#endif
#ifndef Y_SLAVE_ADDRESS
#define Y_SLAVE_ADDRESS 0
#endif
#ifndef Z_SLAVE_ADDRESS
#define Z_SLAVE_ADDRESS 0
#endif
#ifndef X2_SLAVE_ADDRESS
#define X2_SLAVE_ADDRESS 0
#endif
#ifndef Y2_SLAVE_ADDRESS
#define Y2_SLAVE_ADDRESS 0
#endif
#ifndef Z2_SLAVE_ADDRESS
#define Z2_SLAVE_ADDRESS 0
#endif
#ifndef Z3_SLAVE_ADDRESS
#define Z3_SLAVE_ADDRESS 0
#endif
#ifndef Z4_SLAVE_ADDRESS
#define Z4_SLAVE_ADDRESS 0
#endif
#ifndef E0_SLAVE_ADDRESS
#define E0_SLAVE_ADDRESS 0
#endif
#ifndef E1_SLAVE_ADDRESS
#define E1_SLAVE_ADDRESS 0
#endif
#ifndef E2_SLAVE_ADDRESS
#define E2_SLAVE_ADDRESS 0
#endif
#ifndef E3_SLAVE_ADDRESS
#define E3_SLAVE_ADDRESS 0
#endif
#ifndef E4_SLAVE_ADDRESS
#define E4_SLAVE_ADDRESS 0
#endif
#ifndef E5_SLAVE_ADDRESS
#define E5_SLAVE_ADDRESS 0
#endif
#ifndef E6_SLAVE_ADDRESS
#define E6_SLAVE_ADDRESS 0
#endif
#ifndef E7_SLAVE_ADDRESS
#define E7_SLAVE_ADDRESS 0
#endif
#endif

#if (HAS_E_DRIVER(TMC2660) \
Expand Down
12 changes: 12 additions & 0 deletions Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -1409,6 +1409,14 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#error "Z_SAFE_HOMING is recommended when homing with a probe. Enable it or comment out this line to continue."
#endif

#if ENABLED(PROBE_ACTIVATION_SWITCH)
#ifndef PROBE_ACTIVATION_SWITCH_STATE
#error "PROBE_ACTIVATION_SWITCH_STATE is required for PROBE_ACTIVATION_SWITCH."
#elif !PIN_EXISTS(PROBE_ACTIVATION_SWITCH)
#error "A PROBE_ACTIVATION_SWITCH_PIN is required for PROBE_ACTIVATION_SWITCH."
#endif
#endif

#else

/**
Expand Down Expand Up @@ -1514,6 +1522,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#endif
#endif

#if BOTH(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING)
#error "Disable PREHEAT_BEFORE_LEVELING when using PREHEAT_BEFORE_PROBING."
#endif

/**
* Homing
*/
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/inc/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2020-12-19"
#define STRING_DISTRIBUTION_DATE "2020-12-20"
#endif

/**
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_cz.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,8 @@ namespace Language_cz {
PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Zahřát vlastní");
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Zchladit");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Ovládání laseru");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Vypnout laser");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Zapnout laser");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Výkon laseru");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Vřeteno ovládání");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Vřeteno vyp");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Vřeteno zap");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Vřeteno výkon");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Vřeteno opačně");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Zapnout napájení");
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_de.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,8 @@ namespace Language_de {
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Abkühlen");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Frequenz");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Laser");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Laser aus");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Laser an");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Laserleistung");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Spindel-Steuerung");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Spindel aus");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Spindel an");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Spindelleistung");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Spindelrichtung");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Netzteil ein");
Expand Down
14 changes: 6 additions & 8 deletions Marlin/src/lcd/language/language_en.h
Original file line number Diff line number Diff line change
Expand Up @@ -682,14 +682,12 @@ namespace Language_en {

PROGMEM Language_Str MSG_SOUND = _UxGT("Sound");

#if ENABLED(TOUCH_SCREEN_CALIBRATION)
PROGMEM Language_Str MSG_TOP_LEFT = _UxGT("Top Left");
PROGMEM Language_Str MSG_BOTTOM_LEFT = _UxGT("Bottom Left");
PROGMEM Language_Str MSG_TOP_RIGHT = _UxGT("Top Right");
PROGMEM Language_Str MSG_BOTTOM_RIGHT = _UxGT("Bottom Right");
PROGMEM Language_Str MSG_CALIBRATION_COMPLETED = _UxGT("Calibration Completed");
PROGMEM Language_Str MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed");
#endif
PROGMEM Language_Str MSG_TOP_LEFT = _UxGT("Top Left");
PROGMEM Language_Str MSG_BOTTOM_LEFT = _UxGT("Bottom Left");
PROGMEM Language_Str MSG_TOP_RIGHT = _UxGT("Top Right");
PROGMEM Language_Str MSG_BOTTOM_RIGHT = _UxGT("Bottom Right");
PROGMEM Language_Str MSG_CALIBRATION_COMPLETED = _UxGT("Calibration Completed");
PROGMEM Language_Str MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed");
}

#if FAN_COUNT == 1
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_es.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,8 @@ namespace Language_es {
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Enfriar");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Control Láser");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Apagar Láser");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Encender Láser");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Potencia Láser");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Control Mandrino");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Apagar Mandrino");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Encender Mandrino");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Potencia Mandrino");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Invertir giro");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Encender Fuente");
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,8 @@ namespace Language_gl {
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Arrefriar");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Control Láser");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Láser Apagado");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Láser Aceso");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Potencia Láser");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Control Fuso");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Fuso Apagado");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Fuso Aceso");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Potencia Fuso");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Inverter xiro");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Acender");
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_hu.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,8 @@ namespace Language_hu {
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Visszahütés");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Frekvencia");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Lézer Vezérlés");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Lézer Ki");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Lézer Be");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Lézer Teljesítmény");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Orsó Vezérlés");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Orsó Ki");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Orsó Be");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Orsó Teljesítmény");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Orsó Hátra");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Bekapcsolás");
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/language/language_it.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,8 @@ namespace Language_it {
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Raffredda");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Frequenza");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Controllo laser");
PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Laser Off");
PROGMEM Language_Str MSG_LASER_ON = _UxGT("Laser On");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Potenza laser");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Controllo mandrino");
PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Mandrino Off");
PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Mandrino On");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Potenza mandrino");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Inverti mandrino");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Accendi aliment.");
Expand Down
Loading

0 comments on commit d4813b0

Please sign in to comment.