aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-26 18:13:17 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-26 18:13:17 +0300
commitd7d99dc7d1fa11845c5d4df3bbff16fec33b406c (patch)
tree9cae8240e225014d35f661880aec17cca8c69486 /Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
parent77e72b9d16522648a350a95382309e9692434011 (diff)
downloadTango-d7d99dc7d1fa11845c5d4df3bbff16fec33b406c.tar.gz
Tango-d7d99dc7d1fa11845c5d4df3bbff16fec33b406c.zip
Version 1.4.0.2 improve winding (simplify). incorporate screw encoder reading. fix length/time problem between IDS and Thread.
Diffstat (limited to 'Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c')
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
index 46241c3a0..2aa260e9f 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
@@ -665,7 +665,7 @@ void PrintSTMMsgHandler(void * msg)
if (SegmentId >= n_segments)
{
if (dryerbufferlength == 0)
- EndState(CurrentJob, "Job Ended");
+ EndState(CurrentJob, "Job Ended");
else
DistanceToSpoolState(CurrentJob);
}
@@ -673,12 +673,34 @@ void PrintSTMMsgHandler(void * msg)
{
if (CurrentJob->uploadstrategy == JOB_UPLOAD_STRATEGY__JobDescriptionFile)
{
- if (Segment->base.descriptor->sizeof_message != 40)
- LOG_ERROR (Segment->base.descriptor->sizeof_message, "Segment size error. not freeing");
+ if ((Segment) && (Segment->base.descriptor->sizeof_message != 40))
+ LOG_ERROR(SegmentId, "Error releasing Segment");
else if (Segment)
- FreeSegmentFileData(Segment);
+ {
+ if (IDSCheckSegmentData(Segment, SegmentId) == OK)
+ {
+ FreeSegmentFileData(Segment);
+ }
+ else
+ {
+ JobEndReason = JOB_OTHER_ALARM;
+ if (dryerbufferlength == 0)
+ EndState(CurrentJob, "Job Ended");
+ else
+ DistanceToSpoolState(CurrentJob);
+ }
+
+ }
Segment = GetNextSegmentFromJobFile();
+ if (Segment == NULL)
+ {
+ JobEndReason = JOB_OTHER_ALARM;
+ if (dryerbufferlength == 0)
+ EndState(CurrentJob, "Job Ended");
+ else
+ DistanceToSpoolState(CurrentJob);
+ }
SSegment.length = Segment->length;
SSegment.has_length = Segment->has_length;
SSegment.n_brushstops = Segment->brushstopscount;