Merge pull request #3599 from 3d-gussner/MK3_MMU2_messages
PFW-1339 - Update MMU2 translations
This commit is contained in:
commit
183e21aa0b
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -542,7 +542,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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -112,15 +112,15 @@ 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
|
||||
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
|
||||
|
|
@ -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
|
||||
|
|
@ -171,9 +169,10 @@ 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_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
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
@ -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[];
|
||||
|
|
@ -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[];
|
||||
|
|
@ -181,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[];
|
||||
|
|
|
|||
|
|
@ -429,7 +429,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();
|
||||
|
|
@ -602,7 +602,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();
|
||||
|
|
@ -673,7 +674,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;
|
||||
|
||||
|
|
@ -822,7 +823,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'
|
||||
|
|
@ -837,7 +838,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){
|
||||
|
|
@ -895,7 +896,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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -114,186 +114,186 @@ 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 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");
|
||||
// @@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");
|
||||
//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_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 = {
|
||||
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_FIL_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 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("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.");
|
||||
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.");
|
||||
//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 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=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 = {
|
||||
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
|
||||
_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
|
||||
// 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("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
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ const char * const PrusaErrorButtonTitle(uint8_t bi){
|
|||
}
|
||||
|
||||
const char * const PrusaErrorButtonMore(){
|
||||
return btnMore;
|
||||
return _R(MSG_BTN_MORE);
|
||||
}
|
||||
|
||||
struct ResetOnExit {
|
||||
|
|
|
|||
|
|
@ -4,65 +4,62 @@
|
|||
#include <avr/pgmspace.h>
|
||||
|
||||
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 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");
|
||||
//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,
|
||||
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,
|
||||
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){
|
||||
|
|
|
|||
|
|
@ -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 choices
|
||||
//! ----------------------
|
||||
//! |>(left) >(mid) |
|
||||
//! ----------------------
|
||||
//! @endcode
|
||||
//
|
||||
lcd_set_cursor(0, 3);
|
||||
lcd_print(current_selection == LCD_LEFT_BUTTON_CHOICE ? '>': ' ');
|
||||
if (two_choices == false)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1263,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()
|
||||
{
|
||||
|
|
@ -1284,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();
|
||||
}
|
||||
|
||||
|
|
@ -1347,7 +1318,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 +1396,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 +1426,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 +1451,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();
|
||||
|
|
@ -1846,7 +1813,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 +1853,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 +1925,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 +1985,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;
|
||||
|
|
@ -2375,7 +2342,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
|
||||
|
|
@ -4295,7 +4261,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5129,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();
|
||||
|
|
@ -5195,26 +5161,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(_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_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();
|
||||
}
|
||||
}
|
||||
|
|
@ -5578,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
|
||||
|
|
@ -5603,7 +5569,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);
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ enum class FilamentAction : uint_least8_t
|
|||
MmuUnLoad,
|
||||
MmuEject,
|
||||
MmuCut,
|
||||
MmuLoadBondtech,
|
||||
MmuLoadExtruder,
|
||||
Preheat,
|
||||
Lay1Cal,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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__":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# Mapping from LCD source encoding to unicode characters
|
||||
CUSTOM_CHARS = {
|
||||
'\x06': '⏬',
|
||||
'\x04': '🔃',
|
||||
'\xe4': 'µ',
|
||||
'\xdf': '°',
|
||||
|
|
|
|||
1530
lang/po/Firmware.pot
1530
lang/po/Firmware.pot
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -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]*
|
||||
|
|
|
|||
Loading…
Reference in New Issue