✨ Optional HOST_STATUS_NOTIFICATIONS (#22833)
This commit is contained in:
		
				
					committed by
					
						 Scott Lahteine
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							973366e6aa
						
					
				
				
					commit
					b964d2fff0
				
			| @@ -3952,10 +3952,13 @@ | ||||
|  */ | ||||
| //#define HOST_ACTION_COMMANDS | ||||
| #if ENABLED(HOST_ACTION_COMMANDS) | ||||
|   //#define HOST_PAUSE_M76 | ||||
|   //#define HOST_PROMPT_SUPPORT | ||||
|   //#define HOST_START_MENU_ITEM      // Add a menu item that tells the host to start | ||||
|   //#define HOST_SHUTDOWN_MENU_ITEM   // Add a menu item that tells the host to shut down | ||||
|   //#define HOST_PAUSE_M76                // Tell the host to pause in response to M76 | ||||
|   //#define HOST_PROMPT_SUPPORT           // Initiate host prompts to get user feedback | ||||
|   #if ENABLED(HOST_PROMPT_SUPPORT) | ||||
|     //#define HOST_STATUS_NOTIFICATIONS   // Send some status messages to the host as notifications | ||||
|   #endif | ||||
|   //#define HOST_START_MENU_ITEM          // Add a menu item that tells the host to start | ||||
|   //#define HOST_SHUTDOWN_MENU_ITEM       // Add a menu item that tells the host to shut down | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -22,12 +22,20 @@ | ||||
|  | ||||
| #include "../gcode.h" | ||||
|  | ||||
| #if ENABLED(HOST_ACTION_COMMANDS) | ||||
|   #include "../../feature/host_actions.h" | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * M111: Set the debug level | ||||
|  */ | ||||
| void GcodeSuite::M111() { | ||||
|   if (parser.seenval('S')) marlin_debug_flags = parser.value_byte(); | ||||
|  | ||||
|   #if EITHER(HOST_ACTION_COMMANDS, HOST_PROMPT_SUPPORT) | ||||
|     if (parser.seenval('H')) hostui.flag.bits = parser.value_byte(); | ||||
|   #endif | ||||
|  | ||||
|   static PGMSTR(str_debug_1, STR_DEBUG_ECHO); | ||||
|   static PGMSTR(str_debug_2, STR_DEBUG_INFO); | ||||
|   static PGMSTR(str_debug_4, STR_DEBUG_ERRORS); | ||||
|   | ||||
| @@ -609,12 +609,6 @@ | ||||
|   #error "LCD_SCREEN_ROT_270 is now LCD_SCREEN_ROTATE with a value of 270." | ||||
| #endif | ||||
|  | ||||
| #if MB(DUE3DOM_MINI) && PIN_EXISTS(TEMP_2) && DISABLED(TEMP_SENSOR_BOARD) | ||||
|   #warning "Onboard temperature sensor for BOARD_DUE3DOM_MINI has moved from TEMP_SENSOR_2 (TEMP_2_PIN) to TEMP_SENSOR_BOARD (TEMP_BOARD_PIN)." | ||||
| #elif MB(BTT_SKR_E3_TURBO) && PIN_EXISTS(TEMP_2) && DISABLED(TEMP_SENSOR_BOARD) | ||||
|   #warning "Onboard temperature sensor for BOARD_BTT_SKR_E3_TURBO has moved from TEMP_SENSOR_2 (TEMP_2_PIN) to TEMP_SENSOR_BOARD (TEMP_BOARD_PIN)." | ||||
| #endif | ||||
|  | ||||
| constexpr float arm[] = AXIS_RELATIVE_MODES; | ||||
| static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements."); | ||||
|  | ||||
|   | ||||
| @@ -59,6 +59,12 @@ | ||||
|   #warning "Your Configuration provides no method to acquire user feedback!" | ||||
| #endif | ||||
|  | ||||
| #if MB(DUE3DOM_MINI) && PIN_EXISTS(TEMP_2) && DISABLED(TEMP_SENSOR_BOARD) | ||||
|   #warning "Onboard temperature sensor for BOARD_DUE3DOM_MINI has moved from TEMP_SENSOR_2 (TEMP_2_PIN) to TEMP_SENSOR_BOARD (TEMP_BOARD_PIN)." | ||||
| #elif MB(BTT_SKR_E3_TURBO) && PIN_EXISTS(TEMP_2) && DISABLED(TEMP_SENSOR_BOARD) | ||||
|   #warning "Onboard temperature sensor for BOARD_BTT_SKR_E3_TURBO has moved from TEMP_SENSOR_2 (TEMP_2_PIN) to TEMP_SENSOR_BOARD (TEMP_BOARD_PIN)." | ||||
| #endif | ||||
|  | ||||
| #ifndef NO_AUTO_ASSIGN_WARNING | ||||
|  | ||||
|   #if AUTO_ASSIGNED_X2_STEPPER | ||||
| @@ -541,6 +547,10 @@ | ||||
|   #warning "Creality 4.2.2 boards come with a variety of stepper drivers. Check the board label and set the correct *_DRIVER_TYPE! (C=HR4988, E=A4988, A=TMC2208, B=TMC2209, H=TMC2225)." | ||||
| #endif | ||||
|  | ||||
| #if PRINTCOUNTER_SYNC | ||||
|   #warning "To prevent step loss, motion will pause for PRINTCOUNTER auto-save." | ||||
| #endif | ||||
|  | ||||
| #if HOMING_Z_WITH_PROBE && IS_CARTESIAN && DISABLED(Z_SAFE_HOMING) | ||||
|   #error "Z_SAFE_HOMING is recommended when homing with a probe. Enable Z_SAFE_HOMING or comment out this line to continue." | ||||
| #endif | ||||
|   | ||||
| @@ -1363,7 +1363,7 @@ void MarlinUI::init() { | ||||
|   void MarlinUI::set_status(const char * const cstr, const bool persist) { | ||||
|     if (alert_level) return; | ||||
|  | ||||
|     TERN_(HOST_PROMPT_SUPPORT, hostui.notify(cstr)); | ||||
|     TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(cstr)); | ||||
|  | ||||
|     // Here we have a problem. The message is encoded in UTF8, so | ||||
|     // arbitrarily cutting it will be a problem. We MUST be sure | ||||
| @@ -1435,7 +1435,7 @@ void MarlinUI::init() { | ||||
|     if (level < alert_level) return; | ||||
|     alert_level = level; | ||||
|  | ||||
|     TERN_(HOST_PROMPT_SUPPORT, hostui.notify(fstr)); | ||||
|     TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(fstr)); | ||||
|  | ||||
|     // Since the message is encoded in UTF8 it must | ||||
|     // only be cut on a character boundary. | ||||
| @@ -1473,6 +1473,9 @@ void MarlinUI::init() { | ||||
|     va_start(args, FTOP(fmt)); | ||||
|     vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, FTOP(fmt), args); | ||||
|     va_end(args); | ||||
|  | ||||
|     TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(status_message)); | ||||
|  | ||||
|     finish_status(level > 0); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -43,7 +43,6 @@ Stopwatch print_job_timer;      // Global Print Job Timer instance | ||||
|  | ||||
| #if PRINTCOUNTER_SYNC | ||||
|   #include "../module/planner.h" | ||||
|   #warning "To prevent step loss, motion will pause for PRINTCOUNTER auto-save." | ||||
| #endif | ||||
|  | ||||
| // Service intervals | ||||
|   | ||||
| @@ -80,6 +80,10 @@ | ||||
|   #include "../lcd/e3v2/jyersui/dwin.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(HOST_PROMPT_SUPPORT) | ||||
|   #include "../feature/host_actions.h" | ||||
| #endif | ||||
|  | ||||
| #if HAS_SERVOS | ||||
|   #include "servo.h" | ||||
| #endif | ||||
| @@ -652,6 +656,10 @@ void MarlinSettings::postprocess() { | ||||
| #define DEBUG_OUT EITHER(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) | ||||
| #include "../core/debug_out.h" | ||||
|  | ||||
| #if BOTH(EEPROM_CHITCHAT, HOST_PROMPT_SUPPORT) | ||||
|   #define HOST_EEPROM_CHITCHAT 1 | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(EEPROM_SETTINGS) | ||||
|  | ||||
|   #define EEPROM_ASSERT(TST,ERR)  do{ if (!(TST)) { SERIAL_ERROR_MSG(ERR); eeprom_error = true; } }while(0) | ||||
| @@ -1554,7 +1562,10 @@ void MarlinSettings::postprocess() { | ||||
|         store_mesh(ubl.storage_slot); | ||||
|     #endif | ||||
|  | ||||
|     if (!eeprom_error) LCD_MESSAGE(MSG_SETTINGS_STORED); | ||||
|     if (!eeprom_error) { | ||||
|       LCD_MESSAGE(MSG_SETTINGS_STORED); | ||||
|       TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_SETTINGS_STORED))); | ||||
|     } | ||||
|  | ||||
|     TERN_(EXTENSIBLE_UI, ExtUI::onConfigurationStoreWritten(!eeprom_error)); | ||||
|  | ||||
| @@ -1578,6 +1589,7 @@ void MarlinSettings::postprocess() { | ||||
|       } | ||||
|       DEBUG_ECHO_MSG("EEPROM version mismatch (EEPROM=", stored_ver, " Marlin=" EEPROM_VERSION ")"); | ||||
|       TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_ERR_EEPROM_VERSION)); | ||||
|       TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_VERSION))); | ||||
|  | ||||
|       IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_version()); | ||||
|       eeprom_error = true; | ||||
| @@ -2468,12 +2480,14 @@ void MarlinSettings::postprocess() { | ||||
|         eeprom_error = true; | ||||
|         DEBUG_ERROR_MSG("EEPROM CRC mismatch - (stored) ", stored_crc, " != ", working_crc, " (calculated)!"); | ||||
|         TERN_(DWIN_CREALITY_LCD_ENHANCED, LCD_MESSAGE(MSG_ERR_EEPROM_CRC)); | ||||
|         TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_CRC))); | ||||
|         IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_crc()); | ||||
|       } | ||||
|       else if (!validating) { | ||||
|         DEBUG_ECHO_START(); | ||||
|         DEBUG_ECHO(version); | ||||
|         DEBUG_ECHOLNPGM(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET), " bytes; crc ", (uint32_t)working_crc, ")"); | ||||
|         TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(F("Stored settings retrieved"))); | ||||
|       } | ||||
|  | ||||
|       if (!validating && !eeprom_error) postprocess(); | ||||
| @@ -2783,7 +2797,6 @@ void MarlinSettings::reset() { | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   TERN_(EXTENSIBLE_UI, ExtUI::onFactoryReset()); | ||||
|   TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_SetDataDefaults()); | ||||
|   TERN_(DWIN_CREALITY_LCD_JYERSUI, CrealityDWIN.Reset_Settings()); | ||||
|  | ||||
| @@ -3142,7 +3155,11 @@ void MarlinSettings::reset() { | ||||
|  | ||||
|   postprocess(); | ||||
|  | ||||
|   DEBUG_ECHO_MSG("Hardcoded Default Settings Loaded"); | ||||
|   FSTR_P const hdsl = F("Hardcoded Default Settings Loaded"); | ||||
|   TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(hdsl)); | ||||
|   DEBUG_ECHO_START(); DEBUG_ECHOLNF(hdsl); | ||||
|  | ||||
|   TERN_(EXTENSIBLE_UI, ExtUI::onFactoryReset()); | ||||
| } | ||||
|  | ||||
| #if DISABLED(DISABLE_M503) | ||||
|   | ||||
| @@ -629,6 +629,7 @@ volatile bool Temperature::raw_temps_ready = false; | ||||
|       SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); | ||||
|       TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); | ||||
|       TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); | ||||
|       TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
| @@ -719,6 +720,7 @@ volatile bool Temperature::raw_temps_ready = false; | ||||
|         SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); | ||||
|         TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); | ||||
|         TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); | ||||
|         TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); | ||||
|         break; | ||||
|       } | ||||
|  | ||||
| @@ -756,12 +758,14 @@ volatile bool Temperature::raw_temps_ready = false; | ||||
|         TERN_(DWIN_CREALITY_LCD, DWIN_Popup_Temperature(0)); | ||||
|         TERN_(DWIN_CREALITY_LCD_ENHANCED, DWIN_PidTuning(PID_TUNING_TIMEOUT)); | ||||
|         TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT)); | ||||
|         TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TIMEOUT))); | ||||
|         SERIAL_ECHOLNPGM(STR_PID_TIMEOUT); | ||||
|         break; | ||||
|       } | ||||
|  | ||||
|       if (cycles > ncycles && cycles > 2) { | ||||
|         SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_FINISHED); | ||||
|         TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE))); | ||||
|  | ||||
|         #if EITHER(PIDTEMPBED, PIDTEMPCHAMBER) | ||||
|           FSTR_P const estring = GHV(F("chamber"), F("bed"), FPSTR(NUL_STR)); | ||||
|   | ||||
| @@ -115,7 +115,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ | ||||
|         FAN_MIN_PWM 50 FAN_KICKSTART_TIME 100 \ | ||||
|         XY_FREQUENCY_LIMIT 15 | ||||
| opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \ | ||||
|            BABYSTEPPING BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR \ | ||||
|            BABYSTEPPING BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY \ | ||||
|            REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER MENU_ADDAUTOSTART SDSUPPORT SDCARD_SORT_ALPHA \ | ||||
|            ENDSTOP_NOISE_THRESHOLD FAN_SOFT_PWM \ | ||||
|            FIX_MOUNTED_PROBE PROBING_ESTEPPERS_OFF PROBE_OFFSET_WIZARD \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user