Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2020-08-28 18:09:57 +0300
committerDavid Crocker <dcrocker@eschertech.com>2020-08-28 18:09:57 +0300
commit38fefc953bd895b3d844458851910d3b54505fab (patch)
treecdd5640bdd359228d44d6e9a0a2dd9dd84874e2b /src/GCodes/ObjectTracker.cpp
parentcb28705df0fbdba0d100bb2ffa65d29c14314dde (diff)
Confirm when an object is cancelled or resumed
Diffstat (limited to 'src/GCodes/ObjectTracker.cpp')
-rw-r--r--src/GCodes/ObjectTracker.cpp27
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