Added a test for a broken PINDA cable during G80.

Added a ------ separator in the menu showing the Toshiba FlashAir IP address.
This commit is contained in:
bubnikv 2016-07-26 11:35:39 +02:00
parent 018c1b1fad
commit 7355589119
8 changed files with 818 additions and 1856 deletions

View File

@ -5,7 +5,7 @@
#include "Configuration_prusa.h"
// Firmware version
#define FW_version "3.0.5"
#define FW_version "3.0.6-rc2"
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
#define FW_PRUSA3D_MAGIC_LEN 10

View File

@ -2387,6 +2387,10 @@ void process_commands()
kill_message = MSG_BED_LEVELING_FAILED_POINT_LOW;
break;
}
if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) {
kill_message = MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED;
break;
}
if (has_z && fabs(z0 - current_position[Z_AXIS]) > Z_CALIBRATION_THRESHOLD) {
kill_message = MSG_BED_LEVELING_FAILED_POINT_HIGH;
break;

View File

@ -10,6 +10,7 @@ sub parselang
{
my ($filename) = @_;
open(my $fh, '<:encoding(UTF-8)', $filename)
# open(my $fh, '<', $filename)
or die "Could not open file '$filename' $!";
# Create a new hash reference.
my $out = {};
@ -32,6 +33,69 @@ sub parselang
return $out;
}
sub pgm_is_whitespace
{
my ($c) = @_;
if (! defined($c)) {
print "pgm_is_whitespace: undefined\n";
exit(1);
}
return $c == ord(' ') || $c == ord('\t') || $c == ord('\r') || $c == ord('\n');
}
sub pgm_is_interpunction
{
my ($c) = @_;
return $c == ord('.') || $c == ord(',') || $c == ord(';') || $c == ord('?') || $c == ord('!');
}
sub break_text_fullscreen
{
my $lines = [];
my ($text_str) = @_;
if (! defined($text_str) || length($text_str) < 2) {
return $lines;
}
$text_str =~ s/^"//;
$text_str =~ s/([^\\])"/$1/;
$text_str =~ s/\\"/"/;
my @msg = unpack("W*", $text_str);
#my @msg = split("", $text_str);
my $len = $#msg + 1;
my $i = 0;
LINE:
while ($i < $len) {
while ($i < $len && pgm_is_whitespace($msg[$i])) {
$i += 1;
}
if ($i == $len) {
# End of the message.
last LINE;
}
my $msgend2 = $i + ((20 > $len) ? $len : 20);
my $msgend = $msgend2;
if ($msgend < $len && ! pgm_is_whitespace($msg[$msgend]) && ! pgm_is_interpunction($msg[$msgend])) {
# Splitting a word. Find the start of the current word.
while ($msgend > $i && ! pgm_is_whitespace($msg[$msgend - 1])) {
$msgend -= 1;
}
if ($msgend == $i) {
# Found a single long word, which cannot be split. Just cut it.
$msgend = $msgend2;
}
}
my $outstr = substr($text_str, $i, $msgend - $i);
$i = $msgend;
$outstr =~ s/~/ /g;
#print "Output string: $outstr \n";
push @$lines, $outstr;
}
return $lines;
}
my %texts;
my $num_languages = 0;
foreach my $lang (@langs) {
@ -50,7 +114,7 @@ foreach my $lang (@langs) {
my $strings = $texts{$key};
if (scalar(@$strings) != $num_languages) {
# die "Symbol $key undefined in $lang."
print "Symbol $key undefined in $lang. Using the english variant.\n";
print "Symbol $key undefined in language \"$lang\". Using the english variant.\n";
push @$strings, ${$strings}[0];
}
}
@ -77,10 +141,17 @@ END
;
foreach my $key (sort(keys %texts)) {
print $fh "extern const char* const ${key}_LANG_TABLE[LANG_NUM];\n";
print $fh "#define $key LANG_TABLE_SELECT(${key}_LANG_TABLE)\n";
print $fh "#define ${key}_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, LANG)\n"
if ($key eq "MSG_LANGUAGE_NAME" || $key eq "MSG_LANGUAGE_SELECT");
my $strings = $texts{$key};
if (@{$strings} == grep { $_ eq ${$strings}[0] } @{$strings}) {
# All strings are English.
print $fh "extern const char* const ${key}_LANG_TABLE[1];\n";
print $fh "#define $key LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, 0)\n";
} else {
print $fh "extern const char* const ${key}_LANG_TABLE[LANG_NUM];\n";
print $fh "#define $key LANG_TABLE_SELECT(${key}_LANG_TABLE)\n";
print $fh "#define ${key}_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, LANG)\n"
if ($key eq "MSG_LANGUAGE_NAME" || $key eq "MSG_LANGUAGE_SELECT");
}
}
print $fh <<END
@ -110,16 +181,31 @@ extern unsigned char lang_selected;
END
;
foreach my $key (sort(keys %texts)) {
my @keys = sort(keys %texts);
foreach my $key (@keys) {
my $strings = $texts{$key};
for (my $i = 0; $i <= $#{$strings}; $i ++) {
my $suffix = uc($langs[$i]);
print $fh "const char ${key}_${suffix}[] PROGMEM = ${$strings}[$i];\n";
if (@{$strings} == grep { $_ eq ${$strings}[0] } @{$strings}) {
# Shrink the array to a single value.
$strings = [${$strings}[0]];
}
print $fh "const char * const ${key}_LANG_TABLE[LANG_NUM] PROGMEM = {\n";
for (my $i = 0; $i <= $#{$strings}; $i ++) {
my $suffix = uc($langs[$i]);
print $fh "\t${key}_${suffix}";
if ($i == 0 || ${$strings}[$i] ne ${$strings}[0]) {
print $fh "const char ${key}_${suffix}[] PROGMEM = ${$strings}[$i];\n";
}
}
my $langnum = $#{$strings}+1;
if ($langnum == $#langs+1) {
$langnum = "LANG_NUM";
}
print $fh "const char * const ${key}_LANG_TABLE[$langnum] PROGMEM = {\n";
for (my $i = 0; $i <= $#{$strings}; $i ++) {
my $suffix = uc($langs[$i]);
if ($i == 0 || ${$strings}[$i] ne ${$strings}[0]) {
print $fh "\t${key}_${suffix}";
} else {
print $fh "\t${key}_EN";
}
print $fh ',' if $i < $#{$strings};
print $fh "\n";
}
@ -151,3 +237,22 @@ END
;
print ".cpp created.\nDone!\n";
for my $lang (0 .. $#langs) {
print "Language: $langs[$lang]\n";
foreach my $key (@keys) {
my $strings = $texts{$key};
my $message = ${$strings}[$lang];
if ($lang == 0 || ${$strings}[0] ne $message) {
# If the language is not English, don't show the non-translated message.
my $lines = break_text_fullscreen($message);
my $nlines = @{$lines};
if ($nlines > 1) {
print "Multi-line message: $message. Breaking to $nlines lines:\n";
print "\t$_\n" foreach (@{$lines});
}
}
}
}
sub break_text_fullscreen

File diff suppressed because it is too large Load Diff

View File

@ -8,36 +8,36 @@ extern unsigned char lang_selected;
#define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG))))
#define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected)
extern const char* const MSG_ACC_LANG_TABLE[LANG_NUM];
#define MSG_ACC LANG_TABLE_SELECT(MSG_ACC_LANG_TABLE)
extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT(MSG_ACTIVE_EXTRUDER_LANG_TABLE)
extern const char* const MSG_ACC_LANG_TABLE[1];
#define MSG_ACC LANG_TABLE_SELECT_EXPLICIT(MSG_ACC_LANG_TABLE, 0)
extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1];
#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM];
#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE)
extern const char* const MSG_AMAX_LANG_TABLE[LANG_NUM];
#define MSG_AMAX LANG_TABLE_SELECT(MSG_AMAX_LANG_TABLE)
extern const char* const MSG_AUTHOR_LANG_TABLE[LANG_NUM];
#define MSG_AUTHOR LANG_TABLE_SELECT(MSG_AUTHOR_LANG_TABLE)
extern const char* const MSG_AUTORETRACT_LANG_TABLE[LANG_NUM];
#define MSG_AUTORETRACT LANG_TABLE_SELECT(MSG_AUTORETRACT_LANG_TABLE)
extern const char* const MSG_AUTOSTART_LANG_TABLE[LANG_NUM];
#define MSG_AUTOSTART LANG_TABLE_SELECT(MSG_AUTOSTART_LANG_TABLE)
extern const char* const MSG_AUTOTEMP_LANG_TABLE[LANG_NUM];
#define MSG_AUTOTEMP LANG_TABLE_SELECT(MSG_AUTOTEMP_LANG_TABLE)
extern const char* const MSG_AMAX_LANG_TABLE[1];
#define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0)
extern const char* const MSG_AUTHOR_LANG_TABLE[1];
#define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0)
extern const char* const MSG_AUTORETRACT_LANG_TABLE[1];
#define MSG_AUTORETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_AUTORETRACT_LANG_TABLE, 0)
extern const char* const MSG_AUTOSTART_LANG_TABLE[1];
#define MSG_AUTOSTART LANG_TABLE_SELECT_EXPLICIT(MSG_AUTOSTART_LANG_TABLE, 0)
extern const char* const MSG_AUTOTEMP_LANG_TABLE[1];
#define MSG_AUTOTEMP LANG_TABLE_SELECT_EXPLICIT(MSG_AUTOTEMP_LANG_TABLE, 0)
extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM];
#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE)
extern const char* const MSG_A_RETRACT_LANG_TABLE[LANG_NUM];
#define MSG_A_RETRACT LANG_TABLE_SELECT(MSG_A_RETRACT_LANG_TABLE)
extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT(MSG_BABYSTEPPING_X_LANG_TABLE)
extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT(MSG_BABYSTEPPING_Y_LANG_TABLE)
extern const char* const MSG_A_RETRACT_LANG_TABLE[1];
#define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0)
extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1];
#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_X_LANG_TABLE, 0)
extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[1];
#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Y_LANG_TABLE, 0)
extern const char* const MSG_BABYSTEPPING_Z_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEPPING_Z LANG_TABLE_SELECT(MSG_BABYSTEPPING_Z_LANG_TABLE)
extern const char* const MSG_BABYSTEP_X_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEP_X LANG_TABLE_SELECT(MSG_BABYSTEP_X_LANG_TABLE)
extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEP_Y LANG_TABLE_SELECT(MSG_BABYSTEP_Y_LANG_TABLE)
extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1];
#define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0)
extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1];
#define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0)
extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM];
#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE)
extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM];
@ -52,6 +52,8 @@ extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]
#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE)
extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM];
#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE)
extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM];
#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM];
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM];
@ -60,8 +62,8 @@ extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LA
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM];
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM];
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[1];
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE, 0)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM];
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM];
@ -74,10 +76,10 @@ extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LA
#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE)
extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM];
#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE)
extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[LANG_NUM];
#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT(MSG_BEGIN_FILE_LIST_LANG_TABLE)
extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[LANG_NUM];
#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT(MSG_BROWNOUT_RESET_LANG_TABLE)
extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1];
#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0)
extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1];
#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0)
extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM];
#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE)
extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM];
@ -90,96 +92,96 @@ extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE)
extern const char* const MSG_CNG_SDCARD_LANG_TABLE[LANG_NUM];
#define MSG_CNG_SDCARD LANG_TABLE_SELECT(MSG_CNG_SDCARD_LANG_TABLE)
extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[LANG_NUM];
#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT(MSG_CONFIGURATION_VER_LANG_TABLE)
extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1];
#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0)
extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM];
#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE)
extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM];
#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE)
extern const char* const MSG_CONTRAST_LANG_TABLE[LANG_NUM];
#define MSG_CONTRAST LANG_TABLE_SELECT(MSG_CONTRAST_LANG_TABLE)
extern const char* const MSG_CONTRAST_LANG_TABLE[1];
#define MSG_CONTRAST LANG_TABLE_SELECT_EXPLICIT(MSG_CONTRAST_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL LANG_TABLE_SELECT(MSG_CONTROL_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACTF_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACTF LANG_TABLE_SELECT(MSG_CONTROL_RETRACTF_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_RECOVER_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT_RECOVER LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_RECOVER_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_RECOVERF_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT_RECOVERF LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_RECOVERF_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_RECOVER_SWAP_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT_RECOVER_SWAP LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_RECOVER_SWAP_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_SWAP_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT_SWAP LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_SWAP_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_ZLIFT_LANG_TABLE[LANG_NUM];
#define MSG_CONTROL_RETRACT_ZLIFT LANG_TABLE_SELECT(MSG_CONTROL_RETRACT_ZLIFT_LANG_TABLE)
extern const char* const MSG_CONTROL_RETRACT_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACTF_LANG_TABLE[1];
#define MSG_CONTROL_RETRACTF LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACTF_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACT_RECOVER_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT_RECOVER LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_RECOVER_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACT_RECOVERF_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT_RECOVERF LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_RECOVERF_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACT_RECOVER_SWAP_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT_RECOVER_SWAP LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_RECOVER_SWAP_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACT_SWAP_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT_SWAP LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_SWAP_LANG_TABLE, 0)
extern const char* const MSG_CONTROL_RETRACT_ZLIFT_LANG_TABLE[1];
#define MSG_CONTROL_RETRACT_ZLIFT LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_RETRACT_ZLIFT_LANG_TABLE, 0)
extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM];
#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE)
extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM];
#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE)
extern const char* const MSG_COUNT_X_LANG_TABLE[LANG_NUM];
#define MSG_COUNT_X LANG_TABLE_SELECT(MSG_COUNT_X_LANG_TABLE)
extern const char* const MSG_COUNT_X_LANG_TABLE[1];
#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0)
extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM];
#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE)
extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM];
#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE)
extern const char* const MSG_E_LANG_TABLE[LANG_NUM];
#define MSG_E LANG_TABLE_SELECT(MSG_E_LANG_TABLE)
extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[LANG_NUM];
#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT(MSG_ENDSTOPS_HIT_LANG_TABLE)
extern const char* const MSG_ENDSTOP_ABORT_LANG_TABLE[LANG_NUM];
#define MSG_ENDSTOP_ABORT LANG_TABLE_SELECT(MSG_ENDSTOP_ABORT_LANG_TABLE)
extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[LANG_NUM];
#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT(MSG_ENDSTOP_HIT_LANG_TABLE)
extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[LANG_NUM];
#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT(MSG_ENDSTOP_OPEN_LANG_TABLE)
extern const char* const MSG_END_FILE_LIST_LANG_TABLE[LANG_NUM];
#define MSG_END_FILE_LIST LANG_TABLE_SELECT(MSG_END_FILE_LIST_LANG_TABLE)
extern const char* const MSG_E_LANG_TABLE[1];
#define MSG_E LANG_TABLE_SELECT_EXPLICIT(MSG_E_LANG_TABLE, 0)
extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1];
#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0)
extern const char* const MSG_ENDSTOP_ABORT_LANG_TABLE[1];
#define MSG_ENDSTOP_ABORT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_ABORT_LANG_TABLE, 0)
extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1];
#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_HIT_LANG_TABLE, 0)
extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1];
#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0)
extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1];
#define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0)
extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM];
#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE)
extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[LANG_NUM];
#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE)
extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[LANG_NUM];
#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE)
extern const char* const MSG_ERR_KILLED_LANG_TABLE[LANG_NUM];
#define MSG_ERR_KILLED LANG_TABLE_SELECT(MSG_ERR_KILLED_LANG_TABLE)
extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[LANG_NUM];
#define MSG_ERR_LINE_NO LANG_TABLE_SELECT(MSG_ERR_LINE_NO_LANG_TABLE)
extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[LANG_NUM];
#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE)
extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[LANG_NUM];
#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT(MSG_ERR_NO_CHECKSUM_LANG_TABLE)
extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[LANG_NUM];
#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE)
extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[LANG_NUM];
#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT(MSG_ERR_NO_THERMISTORS_LANG_TABLE)
extern const char* const MSG_ERR_STOPPED_LANG_TABLE[LANG_NUM];
#define MSG_ERR_STOPPED LANG_TABLE_SELECT(MSG_ERR_STOPPED_LANG_TABLE)
extern const char* const MSG_ESTEPS_LANG_TABLE[LANG_NUM];
#define MSG_ESTEPS LANG_TABLE_SELECT(MSG_ESTEPS_LANG_TABLE)
extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[LANG_NUM];
#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT(MSG_EXTERNAL_RESET_LANG_TABLE)
extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1];
#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0)
extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1];
#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE, 0)
extern const char* const MSG_ERR_KILLED_LANG_TABLE[1];
#define MSG_ERR_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_KILLED_LANG_TABLE, 0)
extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[1];
#define MSG_ERR_LINE_NO LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LINE_NO_LANG_TABLE, 0)
extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1];
#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE, 0)
extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1];
#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_CHECKSUM_LANG_TABLE, 0)
extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1];
#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE, 0)
extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1];
#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_THERMISTORS_LANG_TABLE, 0)
extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1];
#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0)
extern const char* const MSG_ESTEPS_LANG_TABLE[1];
#define MSG_ESTEPS LANG_TABLE_SELECT_EXPLICIT(MSG_ESTEPS_LANG_TABLE, 0)
extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1];
#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0)
extern const char* const MSG_EXTRUDE_LANG_TABLE[LANG_NUM];
#define MSG_EXTRUDE LANG_TABLE_SELECT(MSG_EXTRUDE_LANG_TABLE)
extern const char* const MSG_Enqueing_LANG_TABLE[LANG_NUM];
#define MSG_Enqueing LANG_TABLE_SELECT(MSG_Enqueing_LANG_TABLE)
extern const char* const MSG_FACTOR_LANG_TABLE[LANG_NUM];
#define MSG_FACTOR LANG_TABLE_SELECT(MSG_FACTOR_LANG_TABLE)
extern const char* const MSG_Enqueing_LANG_TABLE[1];
#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0)
extern const char* const MSG_FACTOR_LANG_TABLE[1];
#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0)
extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM];
#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE)
extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_0_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_SIZE_EXTRUDER_0 LANG_TABLE_SELECT(MSG_FILAMENT_SIZE_EXTRUDER_0_LANG_TABLE)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_1_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_SIZE_EXTRUDER_1 LANG_TABLE_SELECT(MSG_FILAMENT_SIZE_EXTRUDER_1_LANG_TABLE)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_2_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_SIZE_EXTRUDER_2 LANG_TABLE_SELECT(MSG_FILAMENT_SIZE_EXTRUDER_2_LANG_TABLE)
extern const char* const MSG_FILE_PRINTED_LANG_TABLE[LANG_NUM];
#define MSG_FILE_PRINTED LANG_TABLE_SELECT(MSG_FILE_PRINTED_LANG_TABLE)
extern const char* const MSG_FILE_SAVED_LANG_TABLE[LANG_NUM];
#define MSG_FILE_SAVED LANG_TABLE_SELECT(MSG_FILE_SAVED_LANG_TABLE)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_0_LANG_TABLE[1];
#define MSG_FILAMENT_SIZE_EXTRUDER_0 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_SIZE_EXTRUDER_0_LANG_TABLE, 0)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_1_LANG_TABLE[1];
#define MSG_FILAMENT_SIZE_EXTRUDER_1 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_SIZE_EXTRUDER_1_LANG_TABLE, 0)
extern const char* const MSG_FILAMENT_SIZE_EXTRUDER_2_LANG_TABLE[1];
#define MSG_FILAMENT_SIZE_EXTRUDER_2 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_SIZE_EXTRUDER_2_LANG_TABLE, 0)
extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1];
#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0)
extern const char* const MSG_FILE_SAVED_LANG_TABLE[1];
#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0)
extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM];
#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE)
extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM];
@ -194,8 +196,8 @@ extern const char* const MSG_FLOW1_LANG_TABLE[LANG_NUM];
#define MSG_FLOW1 LANG_TABLE_SELECT(MSG_FLOW1_LANG_TABLE)
extern const char* const MSG_FLOW2_LANG_TABLE[LANG_NUM];
#define MSG_FLOW2 LANG_TABLE_SELECT(MSG_FLOW2_LANG_TABLE)
extern const char* const MSG_FREE_MEMORY_LANG_TABLE[LANG_NUM];
#define MSG_FREE_MEMORY LANG_TABLE_SELECT(MSG_FREE_MEMORY_LANG_TABLE)
extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1];
#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0)
extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM];
#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE)
extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM];
@ -206,8 +208,8 @@ extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM];
#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE)
extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM];
#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE)
extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[LANG_NUM];
#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT(MSG_HOTEND_OFFSET_LANG_TABLE)
extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1];
#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0)
extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM];
#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE)
extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM];
@ -218,8 +220,8 @@ extern const char* const MSG_INIT_SDCARD_LANG_TABLE[LANG_NUM];
#define MSG_INIT_SDCARD LANG_TABLE_SELECT(MSG_INIT_SDCARD_LANG_TABLE)
extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE)
extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM];
#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE)
extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM];
@ -236,28 +238,28 @@ extern const char* const MSG_LOAD_EPROM_LANG_TABLE[LANG_NUM];
#define MSG_LOAD_EPROM LANG_TABLE_SELECT(MSG_LOAD_EPROM_LANG_TABLE)
extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE)
extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M115_REPORT_LANG_TABLE[LANG_NUM];
#define MSG_M115_REPORT LANG_TABLE_SELECT(MSG_M115_REPORT_LANG_TABLE)
extern const char* const MSG_M119_REPORT_LANG_TABLE[LANG_NUM];
#define MSG_M119_REPORT LANG_TABLE_SELECT(MSG_M119_REPORT_LANG_TABLE)
extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM];
#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE)
extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M115_REPORT_LANG_TABLE[1];
#define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0)
extern const char* const MSG_M119_REPORT_LANG_TABLE[1];
#define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0)
extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM];
#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE)
extern const char* const MSG_MAX_LANG_TABLE[LANG_NUM];
#define MSG_MAX LANG_TABLE_SELECT(MSG_MAX_LANG_TABLE)
extern const char* const MSG_MIN_LANG_TABLE[LANG_NUM];
#define MSG_MIN LANG_TABLE_SELECT(MSG_MIN_LANG_TABLE)
extern const char* const MSG_MAX_LANG_TABLE[1];
#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0)
extern const char* const MSG_MIN_LANG_TABLE[1];
#define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0)
extern const char* const MSG_MOTION_LANG_TABLE[LANG_NUM];
#define MSG_MOTION LANG_TABLE_SELECT(MSG_MOTION_LANG_TABLE)
extern const char* const MSG_MOVE_01MM_LANG_TABLE[LANG_NUM];
@ -272,10 +274,10 @@ extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM];
#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE)
extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM];
#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE)
extern const char* const MSG_MOVE_E1_LANG_TABLE[LANG_NUM];
#define MSG_MOVE_E1 LANG_TABLE_SELECT(MSG_MOVE_E1_LANG_TABLE)
extern const char* const MSG_MOVE_E2_LANG_TABLE[LANG_NUM];
#define MSG_MOVE_E2 LANG_TABLE_SELECT(MSG_MOVE_E2_LANG_TABLE)
extern const char* const MSG_MOVE_E1_LANG_TABLE[1];
#define MSG_MOVE_E1 LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_E1_LANG_TABLE, 0)
extern const char* const MSG_MOVE_E2_LANG_TABLE[1];
#define MSG_MOVE_E2 LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_E2_LANG_TABLE, 0)
extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM];
#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE)
extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM];
@ -302,32 +304,32 @@ extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM];
#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE)
extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM];
#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE)
extern const char* const MSG_OFF_LANG_TABLE[LANG_NUM];
#define MSG_OFF LANG_TABLE_SELECT(MSG_OFF_LANG_TABLE)
extern const char* const MSG_OK_LANG_TABLE[LANG_NUM];
#define MSG_OK LANG_TABLE_SELECT(MSG_OK_LANG_TABLE)
extern const char* const MSG_ON_LANG_TABLE[LANG_NUM];
#define MSG_ON LANG_TABLE_SELECT(MSG_ON_LANG_TABLE)
extern const char* const MSG_OFF_LANG_TABLE[1];
#define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0)
extern const char* const MSG_OK_LANG_TABLE[1];
#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0)
extern const char* const MSG_ON_LANG_TABLE[1];
#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0)
extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM];
#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE)
extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM];
#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE)
extern const char* const MSG_PID_C_LANG_TABLE[LANG_NUM];
#define MSG_PID_C LANG_TABLE_SELECT(MSG_PID_C_LANG_TABLE)
extern const char* const MSG_PID_D_LANG_TABLE[LANG_NUM];
#define MSG_PID_D LANG_TABLE_SELECT(MSG_PID_D_LANG_TABLE)
extern const char* const MSG_PID_I_LANG_TABLE[LANG_NUM];
#define MSG_PID_I LANG_TABLE_SELECT(MSG_PID_I_LANG_TABLE)
extern const char* const MSG_PID_P_LANG_TABLE[LANG_NUM];
#define MSG_PID_P LANG_TABLE_SELECT(MSG_PID_P_LANG_TABLE)
extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[LANG_NUM];
#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE)
extern const char* const MSG_PID_C_LANG_TABLE[1];
#define MSG_PID_C LANG_TABLE_SELECT_EXPLICIT(MSG_PID_C_LANG_TABLE, 0)
extern const char* const MSG_PID_D_LANG_TABLE[1];
#define MSG_PID_D LANG_TABLE_SELECT_EXPLICIT(MSG_PID_D_LANG_TABLE, 0)
extern const char* const MSG_PID_I_LANG_TABLE[1];
#define MSG_PID_I LANG_TABLE_SELECT_EXPLICIT(MSG_PID_I_LANG_TABLE, 0)
extern const char* const MSG_PID_P_LANG_TABLE[1];
#define MSG_PID_P LANG_TABLE_SELECT_EXPLICIT(MSG_PID_P_LANG_TABLE, 0)
extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1];
#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0)
extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM];
#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE)
extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[LANG_NUM];
#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT(MSG_POSITION_UNKNOWN_LANG_TABLE)
extern const char* const MSG_POWERUP_LANG_TABLE[LANG_NUM];
#define MSG_POWERUP LANG_TABLE_SELECT(MSG_POWERUP_LANG_TABLE)
extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1];
#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0)
extern const char* const MSG_POWERUP_LANG_TABLE[1];
#define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0)
extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM];
#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE)
extern const char* const MSG_PREHEAT_ABS_LANG_TABLE[LANG_NUM];
@ -374,54 +376,54 @@ extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM];
#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE)
extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM];
#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE)
extern const char* const MSG_RECTRACT_LANG_TABLE[LANG_NUM];
#define MSG_RECTRACT LANG_TABLE_SELECT(MSG_RECTRACT_LANG_TABLE)
extern const char* const MSG_RECTRACT_LANG_TABLE[1];
#define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0)
extern const char* const MSG_REFRESH_LANG_TABLE[LANG_NUM];
#define MSG_REFRESH LANG_TABLE_SELECT(MSG_REFRESH_LANG_TABLE)
extern const char* const MSG_RESEND_LANG_TABLE[LANG_NUM];
#define MSG_RESEND LANG_TABLE_SELECT(MSG_RESEND_LANG_TABLE)
extern const char* const MSG_RESEND_LANG_TABLE[1];
#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0)
extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[LANG_NUM];
#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT(MSG_RESTORE_FAILSAFE_LANG_TABLE)
extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM];
#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE)
extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM];
#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE)
extern const char* const MSG_RETRACT_LANG_TABLE[LANG_NUM];
#define MSG_RETRACT LANG_TABLE_SELECT(MSG_RETRACT_LANG_TABLE)
extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[LANG_NUM];
#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE)
extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[LANG_NUM];
#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE)
extern const char* const MSG_SD_CARD_OK_LANG_TABLE[LANG_NUM];
#define MSG_SD_CARD_OK LANG_TABLE_SELECT(MSG_SD_CARD_OK_LANG_TABLE)
extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[LANG_NUM];
#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE)
extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[LANG_NUM];
#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT(MSG_SD_FILE_OPENED_LANG_TABLE)
extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[LANG_NUM];
#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT(MSG_SD_FILE_SELECTED_LANG_TABLE)
extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[LANG_NUM];
#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT(MSG_SD_INIT_FAIL_LANG_TABLE)
extern const char* const MSG_RETRACT_LANG_TABLE[1];
#define MSG_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RETRACT_LANG_TABLE, 0)
extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1];
#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0)
extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1];
#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE, 0)
extern const char* const MSG_SD_CARD_OK_LANG_TABLE[1];
#define MSG_SD_CARD_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CARD_OK_LANG_TABLE, 0)
extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1];
#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE, 0)
extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[1];
#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_OPENED_LANG_TABLE, 0)
extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1];
#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0)
extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1];
#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0)
extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM];
#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE)
extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[LANG_NUM];
#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT(MSG_SD_NOT_PRINTING_LANG_TABLE)
extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[LANG_NUM];
#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT(MSG_SD_OPENROOT_FAIL_LANG_TABLE)
extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[LANG_NUM];
#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE)
extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[LANG_NUM];
#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT(MSG_SD_PRINTING_BYTE_LANG_TABLE)
extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1];
#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0)
extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1];
#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPENROOT_FAIL_LANG_TABLE, 0)
extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1];
#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0)
extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1];
#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0)
extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM];
#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE)
extern const char* const MSG_SD_SIZE_LANG_TABLE[LANG_NUM];
#define MSG_SD_SIZE LANG_TABLE_SELECT(MSG_SD_SIZE_LANG_TABLE)
extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[LANG_NUM];
#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE)
extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[LANG_NUM];
#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT(MSG_SD_WORKDIR_FAIL_LANG_TABLE)
extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[LANG_NUM];
#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT(MSG_SD_WRITE_TO_FILE_LANG_TABLE)
extern const char* const MSG_SD_SIZE_LANG_TABLE[1];
#define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0)
extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1];
#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE, 0)
extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1];
#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0)
extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1];
#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0)
extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE)
extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM];
@ -464,8 +466,8 @@ extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE)
extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE)
extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[LANG_NUM];
#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE)
extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1];
#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0)
extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM];
#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE)
extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[LANG_NUM];
@ -478,8 +480,8 @@ extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM];
#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE)
extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM];
#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE)
extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[LANG_NUM];
#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT(MSG_SOFTWARE_RESET_LANG_TABLE)
extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1];
#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0)
extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM];
#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE)
extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM];
@ -492,14 +494,14 @@ extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE)
extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM];
#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE)
extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[LANG_NUM];
#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT(MSG_STEPPER_TOO_HIGH_LANG_TABLE)
extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1];
#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0)
extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM];
#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE)
extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM];
#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE)
extern const char* const MSG_STORE_EPROM_LANG_TABLE[LANG_NUM];
#define MSG_STORE_EPROM LANG_TABLE_SELECT(MSG_STORE_EPROM_LANG_TABLE)
extern const char* const MSG_STORE_EPROM_LANG_TABLE[1];
#define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0)
extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM];
#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE)
extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM];
@ -512,64 +514,64 @@ extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM];
#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE)
extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM];
#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE)
extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[LANG_NUM];
#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT(MSG_UNKNOWN_COMMAND_LANG_TABLE)
extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1];
#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0)
extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE)
extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM];
#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE)
extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM];
#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE)
extern const char* const MSG_VE_JERK_LANG_TABLE[LANG_NUM];
#define MSG_VE_JERK LANG_TABLE_SELECT(MSG_VE_JERK_LANG_TABLE)
extern const char* const MSG_VMAX_LANG_TABLE[LANG_NUM];
#define MSG_VMAX LANG_TABLE_SELECT(MSG_VMAX_LANG_TABLE)
extern const char* const MSG_VMIN_LANG_TABLE[LANG_NUM];
#define MSG_VMIN LANG_TABLE_SELECT(MSG_VMIN_LANG_TABLE)
extern const char* const MSG_VOLUMETRIC_LANG_TABLE[LANG_NUM];
#define MSG_VOLUMETRIC LANG_TABLE_SELECT(MSG_VOLUMETRIC_LANG_TABLE)
extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[LANG_NUM];
#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE)
extern const char* const MSG_VTRAV_MIN_LANG_TABLE[LANG_NUM];
#define MSG_VTRAV_MIN LANG_TABLE_SELECT(MSG_VTRAV_MIN_LANG_TABLE)
extern const char* const MSG_VXY_JERK_LANG_TABLE[LANG_NUM];
#define MSG_VXY_JERK LANG_TABLE_SELECT(MSG_VXY_JERK_LANG_TABLE)
extern const char* const MSG_VZ_JERK_LANG_TABLE[LANG_NUM];
#define MSG_VZ_JERK LANG_TABLE_SELECT(MSG_VZ_JERK_LANG_TABLE)
extern const char* const MSG_VE_JERK_LANG_TABLE[1];
#define MSG_VE_JERK LANG_TABLE_SELECT_EXPLICIT(MSG_VE_JERK_LANG_TABLE, 0)
extern const char* const MSG_VMAX_LANG_TABLE[1];
#define MSG_VMAX LANG_TABLE_SELECT_EXPLICIT(MSG_VMAX_LANG_TABLE, 0)
extern const char* const MSG_VMIN_LANG_TABLE[1];
#define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0)
extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1];
#define MSG_VOLUMETRIC LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_LANG_TABLE, 0)
extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1];
#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0)
extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1];
#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0)
extern const char* const MSG_VXY_JERK_LANG_TABLE[1];
#define MSG_VXY_JERK LANG_TABLE_SELECT_EXPLICIT(MSG_VXY_JERK_LANG_TABLE, 0)
extern const char* const MSG_VZ_JERK_LANG_TABLE[1];
#define MSG_VZ_JERK LANG_TABLE_SELECT_EXPLICIT(MSG_VZ_JERK_LANG_TABLE, 0)
extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM];
#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE)
extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[LANG_NUM];
#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT(MSG_WATCHDOG_RESET_LANG_TABLE)
extern const char* const MSG_X_LANG_TABLE[LANG_NUM];
#define MSG_X LANG_TABLE_SELECT(MSG_X_LANG_TABLE)
extern const char* const MSG_XSTEPS_LANG_TABLE[LANG_NUM];
#define MSG_XSTEPS LANG_TABLE_SELECT(MSG_XSTEPS_LANG_TABLE)
extern const char* const MSG_X_MAX_LANG_TABLE[LANG_NUM];
#define MSG_X_MAX LANG_TABLE_SELECT(MSG_X_MAX_LANG_TABLE)
extern const char* const MSG_X_MIN_LANG_TABLE[LANG_NUM];
#define MSG_X_MIN LANG_TABLE_SELECT(MSG_X_MIN_LANG_TABLE)
extern const char* const MSG_Y_LANG_TABLE[LANG_NUM];
#define MSG_Y LANG_TABLE_SELECT(MSG_Y_LANG_TABLE)
extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1];
#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0)
extern const char* const MSG_X_LANG_TABLE[1];
#define MSG_X LANG_TABLE_SELECT_EXPLICIT(MSG_X_LANG_TABLE, 0)
extern const char* const MSG_XSTEPS_LANG_TABLE[1];
#define MSG_XSTEPS LANG_TABLE_SELECT_EXPLICIT(MSG_XSTEPS_LANG_TABLE, 0)
extern const char* const MSG_X_MAX_LANG_TABLE[1];
#define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0)
extern const char* const MSG_X_MIN_LANG_TABLE[1];
#define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0)
extern const char* const MSG_Y_LANG_TABLE[1];
#define MSG_Y LANG_TABLE_SELECT_EXPLICIT(MSG_Y_LANG_TABLE, 0)
extern const char* const MSG_YES_LANG_TABLE[LANG_NUM];
#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE)
extern const char* const MSG_YSTEPS_LANG_TABLE[LANG_NUM];
#define MSG_YSTEPS LANG_TABLE_SELECT(MSG_YSTEPS_LANG_TABLE)
extern const char* const MSG_Y_MAX_LANG_TABLE[LANG_NUM];
#define MSG_Y_MAX LANG_TABLE_SELECT(MSG_Y_MAX_LANG_TABLE)
extern const char* const MSG_Y_MIN_LANG_TABLE[LANG_NUM];
#define MSG_Y_MIN LANG_TABLE_SELECT(MSG_Y_MIN_LANG_TABLE)
extern const char* const MSG_Z_LANG_TABLE[LANG_NUM];
#define MSG_Z LANG_TABLE_SELECT(MSG_Z_LANG_TABLE)
extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[LANG_NUM];
#define MSG_ZPROBE_OUT LANG_TABLE_SELECT(MSG_ZPROBE_OUT_LANG_TABLE)
extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[LANG_NUM];
#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT(MSG_ZPROBE_ZOFFSET_LANG_TABLE)
extern const char* const MSG_ZSTEPS_LANG_TABLE[LANG_NUM];
#define MSG_ZSTEPS LANG_TABLE_SELECT(MSG_ZSTEPS_LANG_TABLE)
extern const char* const MSG_Z_MAX_LANG_TABLE[LANG_NUM];
#define MSG_Z_MAX LANG_TABLE_SELECT(MSG_Z_MAX_LANG_TABLE)
extern const char* const MSG_Z_MIN_LANG_TABLE[LANG_NUM];
#define MSG_Z_MIN LANG_TABLE_SELECT(MSG_Z_MIN_LANG_TABLE)
extern const char* const MSG_YSTEPS_LANG_TABLE[1];
#define MSG_YSTEPS LANG_TABLE_SELECT_EXPLICIT(MSG_YSTEPS_LANG_TABLE, 0)
extern const char* const MSG_Y_MAX_LANG_TABLE[1];
#define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0)
extern const char* const MSG_Y_MIN_LANG_TABLE[1];
#define MSG_Y_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MIN_LANG_TABLE, 0)
extern const char* const MSG_Z_LANG_TABLE[1];
#define MSG_Z LANG_TABLE_SELECT_EXPLICIT(MSG_Z_LANG_TABLE, 0)
extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[1];
#define MSG_ZPROBE_OUT LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_OUT_LANG_TABLE, 0)
extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1];
#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_ZOFFSET_LANG_TABLE, 0)
extern const char* const MSG_ZSTEPS_LANG_TABLE[1];
#define MSG_ZSTEPS LANG_TABLE_SELECT_EXPLICIT(MSG_ZSTEPS_LANG_TABLE, 0)
extern const char* const MSG_Z_MAX_LANG_TABLE[1];
#define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0)
extern const char* const MSG_Z_MIN_LANG_TABLE[1];
#define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0)
extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM];
#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE)

View File

@ -307,6 +307,7 @@
#define MSG_BED_LEVELING_FAILED_POINT_LOW "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
#define MSG_BED_LEVELING_FAILED_POINT_HIGH "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."
#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."
#define MSG_NEW_FIRMWARE_AVAILABLE "Vysla nova verze firmware:"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosim aktualizujte."

View File

@ -300,6 +300,7 @@
#define MSG_BED_LEVELING_FAILED_POINT_LOW "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
#define MSG_BED_LEVELING_FAILED_POINT_HIGH "Bed leveling failed. Sensor triggered too high. Waiting for reset."
#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
#define MSG_NEW_FIRMWARE_AVAILABLE "New firmware version available:"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Please upgrade."

View File

@ -755,6 +755,7 @@ static void lcd_support_menu()
uint8_t ip[4];
bool hasIP = card.ToshibaFlashAir_GetIP(ip);
if (hasIP) {
MENU_ITEM(back, PSTR("------------"), lcd_main_menu);
MENU_ITEM(back, PSTR("FlashAir IP Addr:"), lcd_main_menu);
char buf[30];
sprintf_P(buf, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);