Skip to content

Commit

Permalink
Fix PLR cancel with ExtUI (#16556)
Browse files Browse the repository at this point in the history
  • Loading branch information
InsanityAutomation authored and thinkyhead committed Jan 14, 2020
1 parent 1457e40 commit ffd8b59
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 18 deletions.
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

0 comments on commit ffd8b59

Please sign in to comment.