diff options
author | David Crocker <dcrocker@eschertech.com> | 2020-08-28 18:09:57 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2020-08-28 18:09:57 +0300 |
commit | 38fefc953bd895b3d844458851910d3b54505fab (patch) | |
tree | cdd5640bdd359228d44d6e9a0a2dd9dd84874e2b /src/GCodes/ObjectTracker.cpp | |
parent | cb28705df0fbdba0d100bb2ffa65d29c14314dde (diff) |
Confirm when an object is cancelled or resumed
Diffstat (limited to 'src/GCodes/ObjectTracker.cpp')
-rw-r--r-- | src/GCodes/ObjectTracker.cpp | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/GCodes/ObjectTracker.cpp b/src/GCodes/ObjectTracker.cpp index ec0917b1..c4f45551 100644 --- a/src/GCodes/ObjectTracker.cpp +++ b/src/GCodes/ObjectTracker.cpp @@ -148,19 +148,21 @@ GCodeResult ObjectTracker::HandleM486(GCodeBuffer &gb, const StringRef &reply, O ChangeToObject(gb, num); } - if (gb.Seen('P')) + const bool seenC = gb.Seen('C'); + if (seenC || gb.Seen('P')) { // Cancel an object seen = true; - const int objectToCancel = gb.GetIValue(); - if (objectToCancel >= 0 && objectToCancel < (int)objectsCancelled.MaxBits()) + const int objectToCancel = (seenC) ? currentObjectNumber : gb.GetIValue(); + if (objectToCancel >= 0 && objectToCancel < (int)objectsCancelled.MaxBits() && !objectsCancelled.IsBitSet(objectToCancel)) { objectsCancelled.SetBit(objectToCancel); - if (objectToCancel == currentObjectNumber && !currentObjectCancelled) + if (objectToCancel == currentObjectNumber) { StopPrinting(gb); } reprap.JobUpdated(); + reply.printf("Object %d cancelled", objectToCancel); } } @@ -169,29 +171,18 @@ GCodeResult ObjectTracker::HandleM486(GCodeBuffer &gb, const StringRef &reply, O // Resume an object seen = true; const int objectToResume = gb.GetIValue(); - if (objectToResume >= 0 && objectToResume < (int)objectsCancelled.MaxBits()) + if (objectToResume >= 0 && objectToResume < (int)objectsCancelled.MaxBits() && objectsCancelled.IsBitSet(objectToResume)) { objectsCancelled.ClearBit(objectToResume); - if (objectToResume == currentObjectNumber && currentObjectCancelled) + if (objectToResume == currentObjectNumber) { ResumePrinting(gb); } reprap.JobUpdated(); + reply.printf("Object %d resumed", objectToResume); } } - if (gb.Seen('C') && currentObjectNumber >= 0 && currentObjectNumber < (int)objectsCancelled.MaxBits()) - { - // Cancel current object - seen = true; - objectsCancelled.SetBit(currentObjectNumber); - if (!currentObjectCancelled) - { - StopPrinting(gb); - } - reprap.JobUpdated(); - } - if (!seen) { #if TRACK_OBJECT_NAMES |