Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Marlin/src/MarlinCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ void startOrResumeJob() {
thermalManager.zero_fan_speeds();
wait_for_heatup = false;
#if ENABLED(POWER_LOSS_RECOVERY)
card.removeJobRecoveryFile();
recovery.purge();
#endif
#ifdef EVENT_GCODE_SD_STOP
queue.inject_P(PSTR(EVENT_GCODE_SD_STOP));
Expand Down
8 changes: 5 additions & 3 deletions Marlin/src/feature/power_loss_recovery.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,14 +148,16 @@ class PrintJobRecovery {
static void enable(const bool onoff);
static void changed();

static void check();
static void resume();

static inline bool exists() { return card.jobRecoverFileExists(); }
static inline void open(const bool read) { card.openJobRecoveryFile(read); }
static inline void close() { file.close(); }

static void check();
static void resume();
static void purge();

static inline void cancel() { purge(); card.autostart_index = 0; }

static void load();
static void save(const bool force=
#if ENABLED(SAVE_EACH_CMD_MODE)
Expand Down
14 changes: 14 additions & 0 deletions Marlin/src/gcode/feature/powerloss/M1000.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ inline void plr_error(PGM_P const prefix) {
#endif
}

#if HAS_LCD_MENU
void lcd_power_loss_recovery_cancel();
#endif

/**
* M1000: Resume from power-loss (undocumented)
* - With 'S' go to the Resume/Cancel menu
Expand All @@ -64,6 +68,16 @@ void GcodeSuite::M1000() {
SERIAL_ECHO_MSG("Resume requires LCD.");
#endif
}
else if (parser.seen('C')) {
#if HAS_LCD_MENU
lcd_power_loss_recovery_cancel();
#else
recovery.cancel();
#endif
#if ENABLED(EXTENSIBLE_UI)
ExtUI::onPrintTimerStopped();
#endif
}
else
recovery.resume();
}
Expand Down
4 changes: 4 additions & 0 deletions Marlin/src/gcode/sdcard/M24_M25.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ void GcodeSuite::M24() {
*/
void GcodeSuite::M25() {

#if ENABLED(POWER_LOSS_RECOVERY)
if (recovery.enabled) recovery.save(true, false);
#endif

// Set initial pause flag to prevent more commands from landing in the queue while we try to pause
#if ENABLED(SDSUPPORT)
if (IS_SD_PRINTING()) card.pauseSDPrint();
Expand Down
5 changes: 3 additions & 2 deletions Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -702,18 +702,19 @@ void DGUSScreenVariableHandler::HandleMotorLockUnlock(DGUS_VP_Variable &var, voi
}

#if ENABLED(POWER_LOSS_RECOVERY)

void DGUSScreenVariableHandler::HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr) {
uint16_t value = swap16(*(uint16_t*)val_ptr);
if (value) {
queue.inject_P(PSTR("M1000"));
ScreenHandler.GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION);
}
else {
card.removeJobRecoveryFile();
card.autostart_index = 0;
recovery.cancel();
ScreenHandler.GotoScreen(DGUSLCD_SCREEN_STATUS);
}
}

#endif

void DGUSScreenVariableHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) {
Expand Down
3 changes: 1 addition & 2 deletions Marlin/src/lcd/menu/menu_job_recovery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ static void lcd_power_loss_recovery_resume() {
}

void lcd_power_loss_recovery_cancel() {
card.removeJobRecoveryFile();
card.autostart_index = 0;
recovery.cancel();
ui.return_to_status();
}

Expand Down
8 changes: 0 additions & 8 deletions Marlin/src/lcd/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,6 @@ MarlinUI ui;
#include "../module/planner.h"
#include "../module/motion.h"

#if ENABLED(POWER_LOSS_RECOVERY)
#include "../feature/power_loss_recovery.h"
#endif

#if ENABLED(AUTO_BED_LEVELING_UBL)
#include "../feature/bedlevel/bedlevel.h"
#endif
Expand Down Expand Up @@ -1519,10 +1515,6 @@ void MarlinUI::update() {
synchronize(GET_TEXT(MSG_PAUSE_PRINT));
#endif

#if ENABLED(POWER_LOSS_RECOVERY)
if (recovery.enabled) recovery.save(true, false);
#endif

#if ENABLED(HOST_PROMPT_SUPPORT)
host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume"));
#endif
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/sd/cardreader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ void CardReader::printingHasFinished() {
stopSDPrint();

#if ENABLED(POWER_LOSS_RECOVERY)
removeJobRecoveryFile();
recovery.purge();
#endif

#if ENABLED(SD_FINISHED_STEPPERRELEASE) && defined(SD_FINISHED_RELEASECOMMAND)
Expand Down
2 changes: 1 addition & 1 deletion platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32>

#
# Geeetech GTM32 (STM32F103VET6)
#
#
[env:STM32F103VE_GTM32]
platform = ststm32
board = genericSTM32F103VE
Expand Down