From 7d64de646aadb1b99a7b9df782daa16ff3e50549 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 21 Oct 2020 15:03:11 -0500 Subject: [PATCH] Add power-on/off G-code options (#19837) Co-authored-by: Chris --- Marlin/Configuration.h | 3 +++ Marlin/src/feature/power.cpp | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b5dfb43fa2..5ec41c596b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -335,6 +335,9 @@ //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80 //#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power + //#define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on) + //#define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off) + //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin #if ENABLED(AUTO_POWER_CONTROL) #define AUTO_POWER_FANS // Turn on PSU if fans need power diff --git a/Marlin/src/feature/power.cpp b/Marlin/src/feature/power.cpp index 5be554e5e4..9427f684e7 100644 --- a/Marlin/src/feature/power.cpp +++ b/Marlin/src/feature/power.cpp @@ -33,6 +33,10 @@ #include "../module/stepper/indirection.h" #include "../MarlinCore.h" +#if defined(PSU_POWERUP_GCODE) || defined(PSU_POWEROFF_GCODE) + #include "../gcode/gcode.h" +#endif + #if BOTH(USE_CONTROLLER_FAN, AUTO_POWER_CONTROLLERFAN) #include "controllerfan.h" #endif @@ -107,11 +111,19 @@ void Power::power_on() { safe_delay(PSU_POWERUP_DELAY); restore_stepper_drivers(); TERN_(HAS_TRINAMIC_CONFIG, safe_delay(PSU_POWERUP_DELAY)); + #ifdef PSU_POWERUP_GCODE + GcodeSuite::process_subcommands_now_P(PSTR(PSU_POWERUP_GCODE)); + #endif } } void Power::power_off() { - if (powersupply_on) PSU_PIN_OFF(); + if (powersupply_on) { + #ifdef PSU_POWEROFF_GCODE + GcodeSuite::process_subcommands_now_P(PSTR(PSU_POWEROFF_GCODE)); + #endif + PSU_PIN_OFF(); + } } #endif // AUTO_POWER_CONTROL