diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-04-12 18:52:05 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-04-12 18:52:05 +0300 |
commit | 5f102e898c1664a81f30ed749638c7d394e0cc3d (patch) | |
tree | 0a08f5e827679349a8a126a85815a848a5a65003 /src/GCodes/GCodes2.cpp | |
parent | af5485032cbf0ceb2352076b2cbf5b7098f1fe2a (diff) |
Support P0 parameter on M24, M25 and M226
Diffstat (limited to 'src/GCodes/GCodes2.cpp')
-rw-r--r-- | src/GCodes/GCodes2.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/GCodes/GCodes2.cpp b/src/GCodes/GCodes2.cpp index 171ca24a..ad70b77d 100644 --- a/src/GCodes/GCodes2.cpp +++ b/src/GCodes/GCodes2.cpp @@ -950,7 +950,7 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeEx { pauseState = PauseState::resuming; gb.SetState(GCodeState::resuming1); - if (AllAxesAreHomed()) + if (AllAxesAreHomed() && (!gb.Seen('P') || gb.GetUIValue() != 0)) // P0 parameter skips running resume.g { DoFileMacro(gb, RESUME_G, true, SystemHelperMacroCode); } @@ -995,7 +995,10 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeEx { if (gb.IsDoingFileMacro()) { - pausePending = true; + if (deferredPauseCommandPending == nullptr) // filament change pause takes priority + { + deferredPauseCommandPending = (gb.Seen('P') && gb.GetUIValue() == 0) ? "M226 P0" : "M226"; + } } else { @@ -1013,7 +1016,7 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeEx { if (fileGCode->IsDoingFileMacro()) { - filamentChangePausePending = true; + deferredPauseCommandPending = "M600"; if (&gb != fileGCode) { return false; // wait for the current macro to finish @@ -1043,7 +1046,10 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeEx } else if (fileGCode->IsDoingFileMacro()) { - pausePending = true; + if (deferredPauseCommandPending == nullptr) // filament change pause takes priority + { + deferredPauseCommandPending = (gb.Seen('P') && gb.GetUIValue() == 0) ? "M226 P0" : "M226"; + } if (&gb != fileGCode) { return false; // wait for the current macro to finish |