ソースを参照

Make M117 custom message persistant if print is paused

If M117 is called before M601 then we would like the custom message to
be visible on the LCD screen until the print is resumed.

Change in memory: +10 bytes of flash

Fixes #3316
Guðni Már Gilbert 2 年 前
コミット
c77b768fdd
3 ファイル変更13 行追加6 行削除
  1. 1 1
      Firmware/Marlin_main.cpp
  2. 10 4
      Firmware/ultralcd.cpp
  3. 2 1
      Firmware/ultralcd.h

+ 1 - 1
Firmware/Marlin_main.cpp

@@ -4272,7 +4272,7 @@ void process_commands()
         if (starpos != NULL)
             *(starpos) = '\0';
         lcd_setstatus(strchr_pointer + 5);
-        custom_message_type = CustomMsg::MsgUpdate;
+        custom_message_type = CustomMsg::M117;
     }
 
     /*!

+ 10 - 4
Firmware/ultralcd.cpp

@@ -676,6 +676,9 @@ void lcdui_print_status_line(void)
         case CustomMsg::Resuming: //Resuming
             lcd_puts_at_P(0, 3, _T(MSG_RESUMING_PRINT));
             break;
+        case CustomMsg::M117:
+            lcd_print(lcd_status_message);
+            break;
         }
     }
 
@@ -875,10 +878,13 @@ void lcd_commands()
 	{
 		if (!blocks_queued() && !homing_flag)
 		{
-			lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20
-            lcd_commands_type = LcdCommands::Idle;
-            lcd_commands_step = 0;
-            long_pause();
+			if (custom_message_type != CustomMsg::M117)
+			{
+				lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20
+			}
+			lcd_commands_type = LcdCommands::Idle;
+			lcd_commands_step = 0;
+			long_pause();
 		}
 	}
 

+ 2 - 1
Firmware/ultralcd.h

@@ -122,7 +122,8 @@ enum class CustomMsg : uint_least8_t
     TempCompPreheat, //!< Temperature compensation preheat
     M0Wait,          //!< M0/M1 Wait command working even from SD
     MsgUpdate,       //!< Short message even while printing from SD
-    Resuming,       //!< Resuming message
+    Resuming,        //!< Resuming message
+    M117,            //!< M117 Custom Message to be displayed
 };
 
 extern CustomMsg custom_message_type;