From 2ba24fe0d459297bf03bfe81ddffaa31d880edd9 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 3 Feb 2021 10:42:25 +0100
Subject: [PATCH 01/16] Add pause/resume to USB/host prints via LCD menu
Depending if SD or USB/host print the firmware sends
- SD print: `// action:paused` or `// action:resumed` are send to inform USB/Host
- USB/host print: `// action:pause` or `// action:resume` are send to trigger the USB/host to handle it
- USB/host must handle `// action:pause` and `// action:resume` correctly to work
- Tested with Octoprint
- It handles every thing correctly
- Any combination of Octoprint and/or LCD `pause` and `resume` working correctly
- Tested with Pronterface
- It pauses BUT doesn't send the printer in pause position, and so it is not possible to `resume` from LCD menu
- I guess some Macros can fix that.
- Repetier Host/Server documentation shows that it should work. Not tested.
Could save 56 bytes in first step and additional 38 bytes adding `MSG_PAUSE_PRINT` to messages.c/.h
Updated `lang_en*.txt`
@todo Polish translation is 19 characters long (it still fits) BUT should be corrected to 18 chars.
---
Firmware/messages.c | 3 ++
Firmware/messages.h | 3 ++
Firmware/ultralcd.cpp | 92 ++++++++++++++++++++++++++-----------------
lang/lang_en.txt | 2 +-
lang/lang_en_cz.txt | 2 +-
lang/lang_en_de.txt | 2 +-
lang/lang_en_es.txt | 2 +-
lang/lang_en_fr.txt | 2 +-
lang/lang_en_it.txt | 2 +-
lang/lang_en_pl.txt | 2 +-
10 files changed, 68 insertions(+), 44 deletions(-)
diff --git a/Firmware/messages.c b/Firmware/messages.c
index 0b1d58e04..950efcd3c 100644
--- a/Firmware/messages.c
+++ b/Firmware/messages.c
@@ -70,6 +70,7 @@ const char MSG_MMU_LOAD_FAILS[] PROGMEM_I1 = ISTR("MMU load fails"); ////c=14
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=10
+const char MSG_PAUSE_PRINT[] PROGMEM_I1 = ISTR("Pause print");////c=18
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
const char MSG_POWER_FAILURES[] PROGMEM_I1 = ISTR("Power failures"); ////c=14
@@ -188,7 +189,9 @@ const char MSG_ENDSTOP_OPEN[] PROGMEM_N1 = "open"; ////
const char MSG_POWERUP[] PROGMEM_N1 = "PowerUp"; ////
const char MSG_ERR_STOPPED[] PROGMEM_N1 = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; ////
const char MSG_ENDSTOP_HIT[] PROGMEM_N1 = "TRIGGERED"; ////
+const char MSG_OCTOPRINT_PAUSE[] PROGMEM_N1 = "// action:pause"; ////
const char MSG_OCTOPRINT_PAUSED[] PROGMEM_N1 = "// action:paused"; ////
+const char MSG_OCTOPRINT_RESUME[] PROGMEM_N1 = "// action:resume"; ////
const char MSG_OCTOPRINT_RESUMED[] PROGMEM_N1 = "// action:resumed"; ////
const char MSG_OCTOPRINT_CANCEL[] PROGMEM_N1 = "// action:cancel"; ////
const char MSG_FANCHECK_EXTRUDER[] PROGMEM_N1 = "Err: EXTR. FAN ERROR"; ////c=20
diff --git a/Firmware/messages.h b/Firmware/messages.h
index 0a05c58f5..c99a77d99 100644
--- a/Firmware/messages.h
+++ b/Firmware/messages.h
@@ -69,6 +69,7 @@ extern const char MSG_MMU_LOAD_FAILS[];
extern const char MSG_NO[];
extern const char MSG_NOZZLE[];
extern const char MSG_PAPER[];
+extern const char MSG_PAUSE_PRINT[];
extern const char MSG_PLACE_STEEL_SHEET[];
extern const char MSG_PLEASE_WAIT[];
extern const char MSG_POWER_FAILURES[];
@@ -188,7 +189,9 @@ extern const char MSG_ERR_STOPPED[];
extern const char MSG_ENDSTOP_HIT[];
extern const char MSG_EJECT_FILAMENT[];
extern const char MSG_CUT_FILAMENT[];
+extern const char MSG_OCTOPRINT_PAUSE[];
extern const char MSG_OCTOPRINT_PAUSED[];
+extern const char MSG_OCTOPRINT_RESUME[];
extern const char MSG_OCTOPRINT_RESUMED[];
extern const char MSG_OCTOPRINT_CANCEL[];
extern const char MSG_FANCHECK_EXTRUDER[];
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 0f6bc1fa3..94fa0da44 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -1539,6 +1539,12 @@ void lcd_pause_print()
}
}
+//! @brief Pause USB/host print, disable nozzle heater, move to park position
+void lcd_pause_usb_print()
+{
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE); //pause for octoprint
+}
+
float move_menu_scale;
static void lcd_move_menu_axis();
@@ -6497,6 +6503,12 @@ void lcd_resume_print()
SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUMED); //resume octoprint
}
+//! @brief Resume paused USB/host print
+void lcd_resume_usb_print()
+{
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUME); //resume octoprint
+}
+
static void change_sheet()
{
eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), selected_sheet);
@@ -6631,44 +6643,50 @@ static void lcd_main_menu()
MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT
}
-
- if(isPrintPaused && saved_printing_type == PRINTING_TYPE_USB)
+ if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused)
{
-#ifdef FANCHECK
- if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
-#else
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
-#endif
+ if (IS_SD_PRINTING)
+ {
+ MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
+ }
+ else if (is_usb_printing)
+ {
+ MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
+ }
}
-
-#ifdef SDSUPPORT
+ if(isPrintPaused)
+ {
+ #ifdef FANCHECK
+ if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+ {
+ if (is_usb_printing)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
+ }
+ else
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
+ }
+ }
+ #else
+ if (is_usb_printing)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
+ }
+ else
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
+ }
+ #endif //FANCHECK
+ }
+ if(IS_SD_PRINTING || is_usb_printing || isPrintPaused)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
+ }
+#ifdef SDSUPPORT //!@todo SDSUPPORT undefined creates several issues in source code
if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
{
- if (card.isFileOpen())
- {
- if (mesh_bed_leveling_flag == false && homing_flag == false) {
- if (card.sdprinting)
- {
- MENU_ITEM_FUNCTION_P(_i("Pause print"), lcd_pause_print);////MSG_PAUSE_PRINT
- }
- else if(isPrintPaused)
- {
- #ifdef FANCHECK
- if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
- #else
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
- #endif
-
- }
- MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
- }
- }
- else if (lcd_commands_type == LcdCommands::Layer1Cal && mesh_bed_leveling_flag == false && homing_flag == false) {
- //MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
- }
- else
+ if (!card.isFileOpen())
{
if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
{
@@ -6680,7 +6698,7 @@ static void lcd_main_menu()
}
#if SDCARDDETECT < 1
MENU_ITEM_GCODE_P(_i("Change SD card"), PSTR("M21")); // SD-card changed by user////MSG_CNG_SDCARD
-#endif
+#endif //SDCARDDETECT
}
} else
@@ -6689,9 +6707,9 @@ static void lcd_main_menu()
MENU_ITEM_SUBMENU_P(_i("No SD card"), lcd_sdcard_menu);////MSG_NO_CARD
#if SDCARDDETECT < 1
MENU_ITEM_GCODE_P(_i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface////MSG_INIT_SDCARD
-#endif
+#endif //SDCARDDETECT
}
-#endif
+#endif //SDSUPPORT
if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
{
diff --git a/lang/lang_en.txt b/lang/lang_en.txt
index bcb0a4444..d9f606ca4 100644
--- a/lang/lang_en.txt
+++ b/lang/lang_en.txt
@@ -544,7 +544,7 @@
#
"Nozzle FAN"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
#MSG_PID_RUNNING c=20 r=1
diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt
index 0b3d7b14f..f8cf4bd8a 100644
--- a/lang/lang_en_cz.txt
+++ b/lang/lang_en_cz.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"Vent. trysky"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Pozastavit tisk"
diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt
index 0a436a9ee..df13e1d18 100644
--- a/lang/lang_en_de.txt
+++ b/lang/lang_en_de.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"Duesevent."
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Druck pausieren"
diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt
index 2e29fa20a..30548327f 100644
--- a/lang/lang_en_es.txt
+++ b/lang/lang_en_es.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"Vent. capa"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Pausar impresion"
diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt
index cc0cbb95b..8cbf3a67a 100644
--- a/lang/lang_en_fr.txt
+++ b/lang/lang_en_fr.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"Vent. buse"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Pause de l'impr."
diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt
index 8cd939082..919c2e561 100644
--- a/lang/lang_en_it.txt
+++ b/lang/lang_en_it.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"Ventola estrusore"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Metti in pausa"
diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt
index 38d1421f7..31cb5a41a 100644
--- a/lang/lang_en_pl.txt
+++ b/lang/lang_en_pl.txt
@@ -726,7 +726,7 @@
"Nozzle FAN"
"WentHotend"
-#MSG_PAUSE_PRINT
+#MSG_PAUSE_PRINT c=18
"Pause print"
"Wstrzymanie wydruku"
From e5711ea84f8e590c8d3e490b3150318703698fb5 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 10 Feb 2021 11:03:23 +0100
Subject: [PATCH 02/16] Indentation to 4 spaces for tabs
---
Firmware/ultralcd.cpp | 275 +++++++++++++++++++++---------------------
1 file changed, 136 insertions(+), 139 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 94fa0da44..9d2e9d0d8 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6608,177 +6608,174 @@ static void lcd_sheet_menu()
static void lcd_main_menu()
{
- MENU_BEGIN();
+ MENU_BEGIN();
- // Majkl superawesome menu
+ // Majkl superawesome menu
- MENU_ITEM_BACK_P(_T(MSG_WATCH));
+ MENU_ITEM_BACK_P(_T(MSG_WATCH));
#ifdef RESUME_DEBUG
- if (!saved_printing)
- MENU_ITEM_FUNCTION_P(PSTR("tst - Save"), lcd_menu_test_save);
- else
- MENU_ITEM_FUNCTION_P(PSTR("tst - Restore"), lcd_menu_test_restore);
+ if (!saved_printing)
+ MENU_ITEM_FUNCTION_P(PSTR("tst - Save"), lcd_menu_test_save);
+ else
+ MENU_ITEM_FUNCTION_P(PSTR("tst - Restore"), lcd_menu_test_restore);
#endif //RESUME_DEBUG
#ifdef TMC2130_DEBUG
- MENU_ITEM_FUNCTION_P(PSTR("recover print"), recover_print);
- MENU_ITEM_FUNCTION_P(PSTR("power panic"), uvlo_);
+ MENU_ITEM_FUNCTION_P(PSTR("recover print"), recover_print);
+ MENU_ITEM_FUNCTION_P(PSTR("power panic"), uvlo_);
#endif //TMC2130_DEBUG
-
- if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_BABYSTEP_Z), lcd_babystep_z);//8
- }
- if (farm_mode)
- MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
-
- if ( moves_planned() || IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
- {
- MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
- } else
- {
- MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT
- }
-
- if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused)
- {
- if (IS_SD_PRINTING)
- {
- MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
- }
- else if (is_usb_printing)
- {
- MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
- }
- }
- if(isPrintPaused)
- {
- #ifdef FANCHECK
- if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
- {
- if (is_usb_printing)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
- }
- else
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
- }
- }
- #else
- if (is_usb_printing)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
- }
- else
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
- }
- #endif //FANCHECK
- }
- if(IS_SD_PRINTING || is_usb_printing || isPrintPaused)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
- }
-#ifdef SDSUPPORT //!@todo SDSUPPORT undefined creates several issues in source code
- if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
- {
- if (!card.isFileOpen())
- {
- if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
- //if (farm_mode) MENU_ITEM_SUBMENU_P(MSG_FARM_CARD_MENU, lcd_farm_sdcard_menu);
- /*else*/ {
- bMain=true; // flag ('fake parameter') for 'lcd_sdcard_menu()' function
- 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
-#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
-#if SDCARDDETECT < 1
- MENU_ITEM_GCODE_P(_i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface////MSG_INIT_SDCARD
-#endif //SDCARDDETECT
- }
-#endif //SDSUPPORT
-
- if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
- if (!farm_mode)
+ if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag)
{
- const int8_t sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
- const int8_t nextSheet = eeprom_next_initialized_sheet(sheet);
- if ((nextSheet >= 0) && (sheet != nextSheet)) // show menu only if we have 2 or more sheets initialized
+ MENU_ITEM_SUBMENU_P(_T(MSG_BABYSTEP_Z), lcd_babystep_z);//8
+ }
+
+ if (farm_mode)
+ MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
+
+ if ( moves_planned() || IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
+ {
+ MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
+ } else
+ {
+ MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT
+ }
+
+ if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused)
+ {
+ if (IS_SD_PRINTING)
{
- MENU_ITEM_FUNCTION_E(EEPROM_Sheets_base->s[sheet], eeprom_switch_to_next_sheet);
+ MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
+ }
+ else if (is_usb_printing)
+ {
+ MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
}
}
- }
+ if(isPrintPaused)
+ {
+#ifdef FANCHECK
+ if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+ {
+ if (is_usb_printing)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
+ }
+ else
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
+ }
+ }
+ #else
+ if (is_usb_printing)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
+ }
+ else
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
+ }
+ #endif //FANCHECK
+ }
+ if(IS_SD_PRINTING || is_usb_printing || isPrintPaused)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
+ }
+#ifdef SDSUPPORT //!@todo SDSUPPORT undefined creates several issues in source code
+ if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
+ {
+ if (!card.isFileOpen())
+ {
+ if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
+ {
+ //if (farm_mode) MENU_ITEM_SUBMENU_P(MSG_FARM_CARD_MENU, lcd_farm_sdcard_menu);
+ /*else*/{
+ bMain=true; // flag ('fake parameter') for 'lcd_sdcard_menu()' function
+ 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
+#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
+#if SDCARDDETECT < 1
+ MENU_ITEM_GCODE_P(_i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface////MSG_INIT_SDCARD
+#endif //SDCARDDETECT
+ }
+#endif //SDSUPPORT
+ if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
+ {
+ if (!farm_mode)
+ {
+ const int8_t sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
+ const int8_t nextSheet = eeprom_next_initialized_sheet(sheet);
+ if ((nextSheet >= 0) && (sheet != nextSheet)) // show menu only if we have 2 or more sheets initialized
+ {
+ MENU_ITEM_FUNCTION_E(EEPROM_Sheets_base->s[sheet], eeprom_switch_to_next_sheet);
+ }
+ }
+ }
- if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) )
- {
- if (mmu_enabled)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu);
- MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);
+ if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) )
+ {
+ if (mmu_enabled)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu);
+ MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);
//-// MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
//bFilamentFirstRun=true;
- MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
- MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu);
+ MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
+ MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu);
#ifdef MMU_HAS_CUTTER
- MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
+ MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
#endif //MMU_HAS_CUTTER
- }
- else
- {
+ }
+ else
+ {
#ifdef SNMM
- MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), fil_unload_menu);
- MENU_ITEM_SUBMENU_P(_i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20 r=1
+ MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), fil_unload_menu);
+ MENU_ITEM_SUBMENU_P(_i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20 r=1
#endif
#ifdef FILAMENT_SENSOR
- if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false))
- MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18
- else
+ if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false))
+ MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18
+ else
#endif //FILAMENT_SENSOR
- {
- bFilamentFirstRun=true;
- MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), lcd_LoadFilament);
- }
- bFilamentFirstRun=true;
- MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
- }
- MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
+ {
+ bFilamentFirstRun=true;
+ MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), lcd_LoadFilament);
+ }
+ bFilamentFirstRun=true;
+ MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
+ }
+ MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
+ }
+
+ if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
+ {
+ MENU_ITEM_SUBMENU_P(_i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS
+ }
- }
-
- if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
- MENU_ITEM_SUBMENU_P(_i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS
- }
-
#if defined(TMC2130) || defined(FILAMENT_SENSOR)
- MENU_ITEM_SUBMENU_P(_i("Fail stats"), lcd_menu_fails_stats);
+ MENU_ITEM_SUBMENU_P(_i("Fail stats"), lcd_menu_fails_stats);
#endif
- if (mmu_enabled) {
- MENU_ITEM_SUBMENU_P(_i("Fail stats MMU"), lcd_menu_fails_stats_mmu);
- }
- MENU_ITEM_SUBMENU_P(_i("Support"), lcd_support_menu);////MSG_SUPPORT
+ if (mmu_enabled) {
+ MENU_ITEM_SUBMENU_P(_i("Fail stats MMU"), lcd_menu_fails_stats_mmu);
+ }
+ MENU_ITEM_SUBMENU_P(_i("Support"), lcd_support_menu);////MSG_SUPPORT
#ifdef LCD_TEST
MENU_ITEM_SUBMENU_P(_i("W25x20CL init"), lcd_test_menu);////MSG_SUPPORT
#endif //LCD_TEST
- MENU_END();
+ MENU_END();
}
From 8bc46248f6e35ed61cce93719bf4683866dfb970 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 10 Feb 2021 11:09:29 +0100
Subject: [PATCH 03/16] avoid having the block body twice in the code. Thanks
to @DRracer
---
Firmware/ultralcd.cpp | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 9d2e9d0d8..4a257fd71 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6658,6 +6658,7 @@ static void lcd_main_menu()
{
#ifdef FANCHECK
if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+#endif //FANCHECK
{
if (is_usb_printing)
{
@@ -6668,16 +6669,6 @@ static void lcd_main_menu()
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
}
}
- #else
- if (is_usb_printing)
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
- }
- else
- {
- MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
- }
- #endif //FANCHECK
}
if(IS_SD_PRINTING || is_usb_printing || isPrintPaused)
{
From c07bcd172a8a8da0d63c2ad638f8a799d569299d Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 15 Feb 2021 18:34:08 +0100
Subject: [PATCH 04/16] Fix NO Stop print during MBL
---
Firmware/ultralcd.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 4a257fd71..8eed038a7 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6670,7 +6670,7 @@ static void lcd_main_menu()
}
}
}
- if(IS_SD_PRINTING || is_usb_printing || isPrintPaused)
+ if((IS_SD_PRINTING || is_usb_printing || isPrintPaused) && (custom_message_type != CustomMsg::MeshBedLeveling))
{
MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
}
From c2637d9430178537dfdceb6049f5958ceabb7e96 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 15 Feb 2021 18:35:04 +0100
Subject: [PATCH 05/16] Documentation Show Main Menu
---
Firmware/ultralcd.cpp | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 8eed038a7..0cb12f54e 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6605,6 +6605,44 @@ static void lcd_sheet_menu()
MENU_END();
}
+//! @brief Show Main Menu
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Info screen | allways
+//!
+//! | tst - Save | ifdef RESUME_DEBUG
+//! | tst - Restore | ifdef RESUME_DEBUG
+//!
+//! | recover print | TMC2130_DEBUG
+//! | power panic | TMC2130_DEBUG
+//!
+//! | Live adjust Z | printing + Z low
+//!
+//! | Change filament | farm mode
+//!
+//! | Tune | printing
+//! | Pause print | printing + not paused
+//! | Resume print | printing + paused
+//! | Stop print | printing
+//! | Preheat | not printing or paused
+//! | Print from SD | not printing or paused
+//!
+//! | Switch sheet | farm mode
+//!
+//! | AutoLoad filament | not printing + not mmu or paused
+//! | Load filament | not printing + mmu or paused
+//! | Load to nozzle | not printing + mmu or paused
+//! | Unload filament | not printing or paused
+//! | Eject filament | not printing + mmu or paused
+//! | Cut filament | not printing + mmu or paused + cut atctive
+//! | Settings | not printing or paused
+//! | Calibration | not printing
+//! | Statistics | not printing
+//! | Fail stats | allways
+//! | Fail stats MMU | mmu
+//! | Support | allways
+//! @endcode
static void lcd_main_menu()
{
From 59c2b7e79543f81089c32ca8db3aff0bb86b16bd Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 17 Feb 2021 07:42:12 +0100
Subject: [PATCH 06/16] Fix Fan error issues.
---
Firmware/Marlin_main.cpp | 32 ++++++++++++++++++++------------
Firmware/ultralcd.cpp | 32 ++++++++++++++++----------------
Firmware/ultralcd.h | 1 +
3 files changed, 37 insertions(+), 28 deletions(-)
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index 4e0511c19..da0cf7376 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -1857,7 +1857,7 @@ void loop()
}
#ifdef FANCHECK
- if (fan_check_error && isPrintPaused)
+ if (fan_check_error && isPrintPaused && !IS_SD_PRINTING)
{
KEEPALIVE_STATE(PAUSED_FOR_USER);
host_keepalive(); //prevent timeouts since usb processing is disabled until print is resumed. This is for a crude way of pausing a print on all hosts.
@@ -3763,12 +3763,14 @@ There are reasons why some G Codes aren't in numerical order.
void process_commands()
{
#ifdef FANCHECK
- if(fan_check_error == EFCE_DETECTED){
- fan_check_error = EFCE_REPORTED;
- // SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
- lcd_pause_print();
- cmdqueue_serial_disabled = true;
- }
+ if(fan_check_error == EFCE_DETECTED)
+ {
+ fan_check_error = EFCE_REPORTED;
+ if (is_usb_printing)
+ lcd_pause_usb_print();
+ else
+ lcd_pause_print();
+ }
#endif
if (!buflen) return; //empty command
@@ -8154,11 +8156,17 @@ Sigma_Exit:
/*!
### M602 - Resume print M602: Resume print
*/
- case 602: {
- if (isPrintPaused)
- lcd_resume_print();
- }
- break;
+ case 602:
+ {
+ if (isPrintPaused)
+ {
+ if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+ lcd_resume_print();
+ else
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //inform octoprint of pause
+ }
+ }
+ break;
/*!
### M603 - Stop print M603: Stop print
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 0cb12f54e..1fbeb83b7 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -1526,10 +1526,9 @@ void lcd_return_to_status()
eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
}
-//! @brief Pause print, disable nozzle heater, move to park position
+//! @brief Pause print, disable nozzle heater, move to park position, send host action "paused"
void lcd_pause_print()
{
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //pause for octoprint
stop_and_save_print_to_ram(0.0, -default_retraction);
lcd_return_to_status();
isPrintPaused = true;
@@ -1537,12 +1536,13 @@ void lcd_pause_print()
{
lcd_commands_type = LcdCommands::LongPause;
}
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
}
-//! @brief Pause USB/host print, disable nozzle heater, move to park position
+//! @brief Send host action "pause"
void lcd_pause_usb_print()
{
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE); //pause for octoprint
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE);
}
@@ -6482,7 +6482,7 @@ static bool fan_error_selftest()
return 0;
}
-//! @brief Resume paused print
+//! @brief Resume paused print, send host action "resumed"
//! @todo It is not good to call restore_print_from_ram_and_continue() from function called by lcd_update(),
//! as restore_print_from_ram_and_continue() calls lcd_update() internally.
void lcd_resume_print()
@@ -6490,23 +6490,23 @@ void lcd_resume_print()
lcd_return_to_status();
lcd_reset_alert_level(); //for fan speed error
if (fan_error_selftest()) return; //abort if error persists
- cmdqueue_serial_disabled = false;
+ cmdqueue_serial_disabled = false;
lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS));
st_synchronize();
lcd_setstatuspgm(_T(MSG_RESUMING_PRINT)); ////MSG_RESUMING_PRINT c=20
- isPrintPaused = false;
restore_print_from_ram_and_continue(default_retraction);
pause_time += (_millis() - start_pause_print); //accumulate time when print is paused for correct statistics calculation
refresh_cmd_timeout();
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUMED); //resume octoprint
+ isPrintPaused = false;
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUMED); //trigger octoprint to resume print
}
-//! @brief Resume paused USB/host print
+//! @brief Resume paused USB/host print, send host action "resume"
void lcd_resume_usb_print()
{
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUME); //resume octoprint
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUME); //resume octoprint
}
static void change_sheet()
@@ -6673,7 +6673,7 @@ static void lcd_main_menu()
if (farm_mode)
MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
- if ( moves_planned() || IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
+ if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused)
{
MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
} else
@@ -6683,14 +6683,14 @@ static void lcd_main_menu()
if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused)
{
- if (IS_SD_PRINTING)
- {
- MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
- }
- else if (is_usb_printing)
+ if (is_usb_printing)
{
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
}
+ else if (IS_SD_PRINTING)
+ {
+ MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
+ }
}
if(isPrintPaused)
{
diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h
index 62aed6dff..f262107da 100755
--- a/Firmware/ultralcd.h
+++ b/Firmware/ultralcd.h
@@ -44,6 +44,7 @@ void lcd_change_success();
void lcd_loading_color();
void lcd_sdcard_stop();
void lcd_pause_print();
+void lcd_pause_usb_print();
void lcd_resume_print();
void lcd_print_stop();
void prusa_statistics(int _message, uint8_t _col_nr = 0);
From afc15b42bba034ce22623c6bbf8b48f3086d2483 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 17 Feb 2021 08:13:32 +0100
Subject: [PATCH 07/16] Indentations
---
Firmware/Marlin_main.cpp | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index da0cf7376..2d456c767 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -8140,9 +8140,9 @@ Sigma_Exit:
/*!
### M25 - Pause SD print M25: Pause SD print
*/
- case 25:
- case 601:
- {
+ case 25:
+ case 601:
+ {
if (!isPrintPaused)
{
st_synchronize();
@@ -8150,11 +8150,11 @@ Sigma_Exit:
cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
lcd_pause_print();
}
- }
- break;
+ }
+ break;
/*!
- ### M602 - Resume print M602: Resume print
+ ### M602 - Resume print M602: Resume print
*/
case 602:
{
@@ -8171,10 +8171,10 @@ Sigma_Exit:
/*!
### M603 - Stop print M603: Stop print
*/
- case 603: {
- lcd_print_stop();
- }
- break;
+ case 603: {
+ lcd_print_stop();
+ }
+ break;
#ifdef PINDA_THERMISTOR
/*!
From c79bce010dd0e0951d177aef86b3acacab8b107d Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 17 Feb 2021 12:18:30 +0100
Subject: [PATCH 08/16] Don't show Settings during pause
---
Firmware/ultralcd.cpp | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 1fbeb83b7..ed113a27e 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6614,18 +6614,18 @@ static void lcd_sheet_menu()
//! | tst - Save | ifdef RESUME_DEBUG
//! | tst - Restore | ifdef RESUME_DEBUG
//!
-//! | recover print | TMC2130_DEBUG
-//! | power panic | TMC2130_DEBUG
+//! | recover print | ifdef TMC2130_DEBUG
+//! | power panic | ifdef TMC2130_DEBUG
//!
//! | Live adjust Z | printing + Z low
//!
//! | Change filament | farm mode
//!
-//! | Tune | printing
+//! | Tune | printing + paused
//! | Pause print | printing + not paused
//! | Resume print | printing + paused
-//! | Stop print | printing
-//! | Preheat | not printing or paused
+//! | Stop print | printing or paused + NOT MBL
+//! | Preheat | not printing + not paused
//! | Print from SD | not printing or paused
//!
//! | Switch sheet | farm mode
@@ -6673,7 +6673,7 @@ static void lcd_main_menu()
if (farm_mode)
MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
- if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused)
+ if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused )
{
MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
} else
@@ -6784,8 +6784,11 @@ static void lcd_main_menu()
bFilamentFirstRun=true;
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
}
- MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
- if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
+ if(!isPrintPaused)
+ {
+ MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
+ MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
+ }
}
if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
From 2b4cf8d56e964dce43164b41dab2e2fcac0685df Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Wed, 17 Feb 2021 13:52:31 +0100
Subject: [PATCH 09/16] Fix FANCHECK build error
---
Firmware/Marlin_main.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index 2d456c767..d7fc8f7d0 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -8160,9 +8160,11 @@ Sigma_Exit:
{
if (isPrintPaused)
{
+#ifdef FANCHECK
if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
lcd_resume_print();
else
+#endif //FANCHECK
SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //inform octoprint of pause
}
}
From c1d8e6660b9224d39ab0aaa00ad58d5be65e0970 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Thu, 18 Feb 2021 10:07:40 +0100
Subject: [PATCH 10/16] Indentations
---
Firmware/Marlin_main.cpp | 6 ++--
Firmware/ultralcd.cpp | 71 +++++++++++++---------------------------
2 files changed, 25 insertions(+), 52 deletions(-)
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index d7fc8f7d0..fd52a2027 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -1857,8 +1857,7 @@ void loop()
}
#ifdef FANCHECK
- if (fan_check_error && isPrintPaused && !IS_SD_PRINTING)
- {
+ if (fan_check_error && isPrintPaused && !IS_SD_PRINTING) {
KEEPALIVE_STATE(PAUSED_FOR_USER);
host_keepalive(); //prevent timeouts since usb processing is disabled until print is resumed. This is for a crude way of pausing a print on all hosts.
}
@@ -3763,8 +3762,7 @@ There are reasons why some G Codes aren't in numerical order.
void process_commands()
{
#ifdef FANCHECK
- if(fan_check_error == EFCE_DETECTED)
- {
+ if(fan_check_error == EFCE_DETECTED) {
fan_check_error = EFCE_REPORTED;
if (is_usb_printing)
lcd_pause_usb_print();
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index ed113a27e..bba881c7b 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -1532,8 +1532,7 @@ void lcd_pause_print()
stop_and_save_print_to_ram(0.0, -default_retraction);
lcd_return_to_status();
isPrintPaused = true;
- if (LcdCommands::Idle == lcd_commands_type)
- {
+ if (LcdCommands::Idle == lcd_commands_type) {
lcd_commands_type = LcdCommands::LongPause;
}
SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
@@ -1542,7 +1541,7 @@ void lcd_pause_print()
//! @brief Send host action "pause"
void lcd_pause_usb_print()
{
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE);
+ SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE);
}
@@ -6665,30 +6664,23 @@ static void lcd_main_menu()
MENU_ITEM_FUNCTION_P(PSTR("power panic"), uvlo_);
#endif //TMC2130_DEBUG
- if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag)
- {
+ if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag) {
MENU_ITEM_SUBMENU_P(_T(MSG_BABYSTEP_Z), lcd_babystep_z);//8
}
if (farm_mode)
MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
- if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused )
- {
+ if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused ) {
MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
- } else
- {
+ } else {
MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT
}
- if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused)
- {
- if (is_usb_printing)
- {
+ if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused) {
+ if (is_usb_printing) {
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
- }
- else if (IS_SD_PRINTING)
- {
+ } else if (IS_SD_PRINTING) {
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
}
}
@@ -6698,27 +6690,20 @@ static void lcd_main_menu()
if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
#endif //FANCHECK
{
- if (is_usb_printing)
- {
+ if (is_usb_printing) {
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
- }
- else
- {
+ } else {
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
}
}
}
- if((IS_SD_PRINTING || is_usb_printing || isPrintPaused) && (custom_message_type != CustomMsg::MeshBedLeveling))
- {
+ if((IS_SD_PRINTING || is_usb_printing || isPrintPaused) && (custom_message_type != CustomMsg::MeshBedLeveling)) {
MENU_ITEM_SUBMENU_P(_T(MSG_STOP_PRINT), lcd_sdcard_stop);
}
#ifdef SDSUPPORT //!@todo SDSUPPORT undefined creates several issues in source code
- if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
- {
- if (!card.isFileOpen())
- {
- if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
+ if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal) {
+ if (!card.isFileOpen()) {
+ if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
//if (farm_mode) MENU_ITEM_SUBMENU_P(MSG_FARM_CARD_MENU, lcd_farm_sdcard_menu);
/*else*/{
bMain=true; // flag ('fake parameter') for 'lcd_sdcard_menu()' function
@@ -6729,8 +6714,7 @@ static void lcd_main_menu()
MENU_ITEM_GCODE_P(_i("Change SD card"), PSTR("M21")); // SD-card changed by user////MSG_CNG_SDCARD
#endif //SDCARDDETECT
}
- } else
- {
+ } 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
#if SDCARDDETECT < 1
@@ -6739,23 +6723,18 @@ static void lcd_main_menu()
}
#endif //SDSUPPORT
- if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
- if (!farm_mode)
- {
+ if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
+ if (!farm_mode) {
const int8_t sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
const int8_t nextSheet = eeprom_next_initialized_sheet(sheet);
- if ((nextSheet >= 0) && (sheet != nextSheet)) // show menu only if we have 2 or more sheets initialized
- {
+ if ((nextSheet >= 0) && (sheet != nextSheet)) { // show menu only if we have 2 or more sheets initialized
MENU_ITEM_FUNCTION_E(EEPROM_Sheets_base->s[sheet], eeprom_switch_to_next_sheet);
}
}
}
- if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) )
- {
- if (mmu_enabled)
- {
+ if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) {
+ if (mmu_enabled) {
MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu);
MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);
//-// MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
@@ -6765,9 +6744,7 @@ static void lcd_main_menu()
#ifdef MMU_HAS_CUTTER
MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
#endif //MMU_HAS_CUTTER
- }
- else
- {
+ } else {
#ifdef SNMM
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), fil_unload_menu);
MENU_ITEM_SUBMENU_P(_i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20 r=1
@@ -6784,15 +6761,13 @@ static void lcd_main_menu()
bFilamentFirstRun=true;
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
}
- if(!isPrintPaused)
- {
+ if(!isPrintPaused) {
MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
}
}
- if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
- {
+ if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
MENU_ITEM_SUBMENU_P(_i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS
}
From 495dcee066966d9ce501917ebbd3c8d962cd14fc Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Thu, 18 Feb 2021 12:09:43 +0100
Subject: [PATCH 11/16] Show LCD Settings during pause
---
Firmware/ultralcd.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 5a96bfc96..32433a695 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6786,8 +6786,8 @@ static void lcd_main_menu()
bFilamentFirstRun=true;
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
}
+ MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
if(!isPrintPaused) {
- MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
}
}
From 9110ffd4aed47915a6198d71725ac26dc9fa1f99 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 22 Feb 2021 16:36:21 +0100
Subject: [PATCH 12/16] Revert `M602`
---
Firmware/Marlin_main.cpp | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index ee3dffde6..3beb63410 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -8136,14 +8136,7 @@ Sigma_Exit:
*/
case 602:
{
- if (isPrintPaused) {
-#ifdef FANCHECK
- if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
- lcd_resume_print();
- else
-#endif //FANCHECK
- SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //inform octoprint of pause
- }
+ if (isPrintPaused) lcd_resume_print();
}
break;
From 5894883324a0c51d21da32033b8d2ead41cc9582 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 22 Feb 2021 16:37:01 +0100
Subject: [PATCH 13/16] Fix USB/host FAN Error resume Show Settings during
Pause also for USB/host prints
---
Firmware/ultralcd.cpp | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 32433a695..43f32294e 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6514,8 +6514,11 @@ void lcd_resume_print()
{
lcd_return_to_status();
lcd_reset_alert_level(); //for fan speed error
- if (fan_error_selftest()) return; //abort if error persists
- cmdqueue_serial_disabled = false;
+ if (fan_error_selftest()) {
+ if (is_usb_printing) SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
+ return; //abort if error persists
+ }
+ cmdqueue_serial_disabled = false;
lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS));
st_synchronize();
custom_message_type = CustomMsg::Resuming;
@@ -6786,12 +6789,11 @@ static void lcd_main_menu()
bFilamentFirstRun=true;
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
}
- MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
- if(!isPrintPaused) {
- MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
- }
}
-
+ MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
+ if(!isPrintPaused && (!(IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)))) {
+ MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
+ }
if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
MENU_ITEM_SUBMENU_P(_i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS
}
From fd154e4b69a06e8752da5494a03030e9131170f4 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 22 Feb 2021 18:10:43 +0100
Subject: [PATCH 14/16] Again revert Settings
---
Firmware/ultralcd.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 43f32294e..f9c6199ce 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6789,11 +6789,10 @@ static void lcd_main_menu()
bFilamentFirstRun=true;
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
}
- }
MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
- if(!isPrintPaused && (!(IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)))) {
- MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
+ if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
}
+
if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
MENU_ITEM_SUBMENU_P(_i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS
}
From 30b60e44d2e431671e60b5ad156ae3ad1b052380 Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Mon, 22 Feb 2021 18:21:20 +0100
Subject: [PATCH 15/16] `|| isPrintPaused` is already in `PRINTER_ACTIVE`
---
Firmware/ultralcd.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index f9c6199ce..9960b0f7f 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6699,7 +6699,7 @@ static void lcd_main_menu()
if (farm_mode)
MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
- if ( moves_planned() || PRINTER_ACTIVE || isPrintPaused ) {
+ if ( moves_planned() || PRINTER_ACTIVE ) {
MENU_ITEM_SUBMENU_P(_i("Tune"), lcd_tune_menu);////MSG_TUNE
} else {
MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT
From 8d4176a5309eb27e39e272820598d968fc4abe9f Mon Sep 17 00:00:00 2001
From: 3d-gussner <3d.gussner@gmail.com>
Date: Tue, 23 Feb 2021 07:24:33 +0100
Subject: [PATCH 16/16] Add "Fan check [On|Off]" menu to tune User can
en/disable the fan check during print. This is very useful in case of false
positive fan errors to let the user to decide to finish print with "faulty"
fan.
---
Firmware/ultralcd.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 9960b0f7f..5e5bb0389 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -6973,10 +6973,8 @@ static void lcd_tune_menu()
SETTINGS_CUTTER;
- if(farm_mode)
- {
- MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
- }
+ MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
+
#ifdef TMC2130
if(!farm_mode)