✨ STATUS_MESSAGE_TIMEOUT_SEC (#23135)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
		
				
					committed by
					
						
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							0e693854d0
						
					
				
				
					commit
					c89d0114ac
				
			@@ -1352,6 +1352,9 @@
 | 
			
		||||
  // Scroll a longer status message into view
 | 
			
		||||
  //#define STATUS_MESSAGE_SCROLLING
 | 
			
		||||
 | 
			
		||||
  // Apply a timeout to low-priority status messages
 | 
			
		||||
  //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds)
 | 
			
		||||
 | 
			
		||||
  // On the Info Screen, display XY with one decimal place when possible
 | 
			
		||||
  //#define LCD_DECIMAL_SMALL_XY
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -587,6 +587,10 @@
 | 
			
		||||
  #define HAS_PRINT_PROGRESS 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if STATUS_MESSAGE_TIMEOUT_SEC > 0
 | 
			
		||||
  #define HAS_STATUS_MESSAGE_TIMEOUT 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ENABLED(SDSUPPORT) && SD_PROCEDURE_DEPTH
 | 
			
		||||
  #define HAS_MEDIA_SUBCALLS 1
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -574,6 +574,10 @@
 | 
			
		||||
  #warning "Contrast cannot be changed when LCD_CONTRAST_MIN >= LCD_CONTRAST_MAX."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if PROGRESS_MSG_EXPIRE > 0 && HAS_STATUS_MESSAGE_TIMEOUT
 | 
			
		||||
  #warning "It is recommended not to combine PROGRESS_MSG_EXPIRE with STATUS_MESSAGE_TIMEOUT_SEC."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * FYSETC backlighting
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
@@ -73,6 +73,9 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
 | 
			
		||||
  #endif
 | 
			
		||||
  char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1];
 | 
			
		||||
  uint8_t MarlinUI::alert_level; // = 0
 | 
			
		||||
  #if HAS_STATUS_MESSAGE_TIMEOUT
 | 
			
		||||
    millis_t MarlinUI::status_message_expire_ms; // = 0
 | 
			
		||||
  #endif
 | 
			
		||||
  statusResetFunc_t MarlinUI::status_reset_callback; // = nullptr
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -628,8 +631,17 @@ void MarlinUI::init() {
 | 
			
		||||
 | 
			
		||||
    #endif // BASIC_PROGRESS_BAR
 | 
			
		||||
 | 
			
		||||
    if (status_reset_callback && (*status_reset_callback)())
 | 
			
		||||
      reset_status();
 | 
			
		||||
    bool did_expire = status_reset_callback && (*status_reset_callback)();
 | 
			
		||||
 | 
			
		||||
    #if HAS_STATUS_MESSAGE_TIMEOUT
 | 
			
		||||
      #ifndef GOT_MS
 | 
			
		||||
        #define GOT_MS
 | 
			
		||||
        const millis_t ms = millis();
 | 
			
		||||
      #endif
 | 
			
		||||
      did_expire |= status_message_expire_ms && ELAPSED(ms, status_message_expire_ms);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    if (did_expire) reset_status();
 | 
			
		||||
 | 
			
		||||
    #if HAS_MARLINUI_MENU
 | 
			
		||||
      if (use_click()) {
 | 
			
		||||
@@ -1521,6 +1533,8 @@ void MarlinUI::init() {
 | 
			
		||||
 | 
			
		||||
    set_status_reset_fn();
 | 
			
		||||
 | 
			
		||||
    TERN_(HAS_STATUS_MESSAGE_TIMEOUT, status_message_expire_ms = persist ? 0 : millis() + (STATUS_MESSAGE_TIMEOUT_SEC) * 1000UL);
 | 
			
		||||
 | 
			
		||||
    #if HAS_WIRED_LCD
 | 
			
		||||
 | 
			
		||||
      #if BASIC_PROGRESS_BAR || BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
 | 
			
		||||
 
 | 
			
		||||
@@ -344,6 +344,10 @@ public:
 | 
			
		||||
    static char status_message[];
 | 
			
		||||
    static uint8_t alert_level; // Higher levels block lower levels
 | 
			
		||||
 | 
			
		||||
    #if HAS_STATUS_MESSAGE_TIMEOUT
 | 
			
		||||
      static millis_t status_message_expire_ms; // Reset some status messages after a timeout
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if ENABLED(STATUS_MESSAGE_SCROLLING)
 | 
			
		||||
      static uint8_t status_scroll_offset;
 | 
			
		||||
      static void advance_status_scroll();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user