Power-off confirm / beep options (#22191)

This commit is contained in:
Cytown 2021-06-24 00:40:32 +08:00 committed by Scott Lahteine
parent ecb625a666
commit 9741be5966
6 changed files with 28 additions and 2 deletions

View file

@ -367,6 +367,8 @@
//#define PSU_NAME "Power Supply" //#define PSU_NAME "Power Supply"
#if ENABLED(PSU_CONTROL) #if ENABLED(PSU_CONTROL)
//#define PS_OFF_CONFIRM // Confirm dialog when power off
//#define PS_OFF_SOUND // Beep 1s when power off
#define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box #define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box
//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80 //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80

View file

@ -101,6 +101,10 @@ void GcodeSuite::M81() {
#endif #endif
#endif #endif
#if ENABLED(PS_OFF_SOUND)
BUZZ(1000, 659);
#endif
safe_delay(1000); // Wait 1 second before switching off safe_delay(1000); // Wait 1 second before switching off
#if HAS_SUICIDE #if HAS_SUICIDE

View file

@ -1498,6 +1498,13 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
TERN_(HAS_LCD_MENU, return_to_status()); TERN_(HAS_LCD_MENU, return_to_status());
} }
#if BOTH(PSU_CONTROL, PS_OFF_CONFIRM)
void MarlinUI::poweroff() {
queue.inject_P(PSTR("M81"));
goto_previous_screen();
}
#endif
void MarlinUI::flow_fault() { void MarlinUI::flow_fault() {
LCD_ALERTMESSAGEPGM(MSG_FLOWMETER_FAULT); LCD_ALERTMESSAGEPGM(MSG_FLOWMETER_FAULT);
TERN_(HAS_BUZZER, buzz(1000, 440)); TERN_(HAS_BUZZER, buzz(1000, 440));

View file

@ -359,6 +359,10 @@ public:
static void resume_print(); static void resume_print();
static void flow_fault(); static void flow_fault();
#if BOTH(PSU_CONTROL, PS_OFF_CONFIRM)
static void poweroff();
#endif
#if HAS_WIRED_LCD #if HAS_WIRED_LCD
static millis_t next_button_update_ms; static millis_t next_button_update_ms;

View file

@ -386,7 +386,15 @@ void menu_main() {
// //
#if ENABLED(PSU_CONTROL) #if ENABLED(PSU_CONTROL)
if (powersupply_on) if (powersupply_on)
#if ENABLED(PS_OFF_CONFIRM)
CONFIRM_ITEM(MSG_SWITCH_PS_OFF,
MSG_YES, MSG_NO,
ui.poweroff, ui.goto_previous_screen,
GET_TEXT(MSG_SWITCH_PS_OFF), (const char *)nullptr, PSTR("?")
);
#else
GCODES_ITEM(MSG_SWITCH_PS_OFF, PSTR("M81")); GCODES_ITEM(MSG_SWITCH_PS_OFF, PSTR("M81"));
#endif
else else
GCODES_ITEM(MSG_SWITCH_PS_ON, PSTR("M80")); GCODES_ITEM(MSG_SWITCH_PS_ON, PSTR("M80"));
#endif #endif

View file

@ -32,7 +32,8 @@ opt_enable USE_ZMAX_PLUG REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_P
SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \ SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \
BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \ BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \
FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \ FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE POWER_LOSS_RECOVER_ZHOME POWER_LOSS_ZHOME_POS \ PSU_CONTROL PS_OFF_CONFIRM PS_OFF_SOUND AUTO_POWER_CONTROL \
POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE POWER_LOSS_RECOVER_ZHOME POWER_LOSS_ZHOME_POS \
SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \ SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \
HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL
opt_add DEBUG_POWER_LOSS_RECOVERY opt_add DEBUG_POWER_LOSS_RECOVERY