Skip to content

Commit

Permalink
🐛 Fix PLR pos/sdpos (MarlinFirmware#26365)
Browse files Browse the repository at this point in the history
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
  • Loading branch information
ThomasToka and thinkyhead authored Jan 12, 2024
1 parent 46f370a commit ab34971
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 10 deletions.
10 changes: 6 additions & 4 deletions Marlin/src/feature/powerloss.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,9 @@ void PrintJobRecovery::write() {
* Resume the saved print job
*/
void PrintJobRecovery::resume() {
const uint32_t resume_sdpos = info.sdpos; // Get here before the stepper ISR overwrites it
// Get these fields before any moves because stepper.cpp overwrites them
const xyze_pos_t resume_pos = info.current_position;
const uint32_t resume_sdpos = info.sdpos;

// Apply the dry-run flag if enabled
if (info.flag.dryrun) marlin_debug_flags |= MARLIN_DEBUG_DRYRUN;
Expand Down Expand Up @@ -400,7 +402,7 @@ void PrintJobRecovery::resume() {
#endif

// Interpret the saved Z according to flags
const float z_print = info.current_position.z,
const float z_print = resume_pos.z,
z_raised = z_print + info.zraise;

//
Expand Down Expand Up @@ -540,7 +542,7 @@ void PrintJobRecovery::resume() {

// Move back over to the saved XY
PROCESS_SUBCOMMANDS_NOW(TS(
F("G1F3000X"), p_float_t(info.current_position.x, 3), 'Y', p_float_t(info.current_position.y, 3)
F("G1F3000X"), p_float_t(resume_pos.x, 3), 'Y', p_float_t(resume_pos.y, 3)
));

// Move back down to the saved Z for printing
Expand All @@ -550,7 +552,7 @@ void PrintJobRecovery::resume() {
PROCESS_SUBCOMMANDS_NOW(TS(F("G1F"), info.feedrate));

// Restore E position with G92.9
PROCESS_SUBCOMMANDS_NOW(TS(F("G92.9E"), p_float_t(info.current_position.e, 3)));
PROCESS_SUBCOMMANDS_NOW(TS(F("G92.9E"), p_float_t(resume_pos.e, 3)));

TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat);
TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset);
Expand Down
1 change: 1 addition & 0 deletions Marlin/src/gcode/feature/powerloss/M1000.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ inline void plr_error(FSTR_P const prefix) {
* M1000: Resume from power-loss (undocumented)
* - With 'S' go to the Resume/Cancel menu
* ...unless the bed temperature is already above a configured minimum temperature.
* - With 'C' execute a cancel selection
* - With no parameters, run recovery commands
*/
void GcodeSuite::M1000() {
Expand Down
4 changes: 4 additions & 0 deletions Marlin/src/gcode/queue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ PGM_P GCodeQueue::injected_commands_P; // = nullptr
*/
char GCodeQueue::injected_commands[64]; // = { 0 }

/**
* Commit the accumulated G-code command to the ring buffer,
* also setting its origin info.
*/
void GCodeQueue::RingBuffer::commit_command(const bool skip_ok
OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind/*=-1*/)
) {
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/gcode/queue.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ class GCodeQueue {
void advance_pos(uint8_t &p, const int inc) { if (++p >= BUFSIZE) p = 0; length += inc; }

void commit_command(const bool skip_ok
OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t())
OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind=serial_index_t())
);

bool enqueue(const char *cmd, const bool skip_ok=true
OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t())
OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind=serial_index_t())
);

void ok_to_send();
Expand Down
8 changes: 4 additions & 4 deletions Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,10 +342,10 @@ void onSettingsLoaded(const bool success) {
// Called when power-loss state is detected
}
void onPowerLossResume() {
startprogress = 254;
show_status = true;
tpShowStatus = false;
no_reentry = false;
startprogress = 254;
show_status = true;
tpShowStatus = false;
no_reentry = false;
rts.sendData(ExchangePageBase + 76, ExchangepageAddr);
}
#endif
Expand Down

0 comments on commit ab34971

Please sign in to comment.