aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/StateMachines
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
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')
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c38
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c30
2 files changed, 47 insertions, 21 deletions
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index 7269354f9..7ad887925 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -782,23 +782,6 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
{
responseContainer.has_error = true;
responseContainer.error = JobError_to_ErrorCode[JobEndReason];
- switch (JobEndReason)
- {
- case JOB_THREAD_BREAK:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
- break;
- case JOB_POOLER_DANCER_FAIL:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true);
- break;
- case JOB_FEEDER_DANCER_FAIL:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,true);
- break;
- case JOB_WINDER_DANCER_FAIL:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,true);
- break;
- default:
- break;
- }
}
if (JobAbortedByUser == true)
{
@@ -827,6 +810,26 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
CurrentRequest = NULL;
}
JobStopReporting();
+ if(JobEndReason != JOB_OK)
+ {
+ switch (JobEndReason)
+ {
+ case JOB_THREAD_BREAK:
+ AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
+ break;
+ case JOB_POOLER_DANCER_FAIL:
+ AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true);
+ break;
+ case JOB_FEEDER_DANCER_FAIL:
+ AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,true);
+ break;
+ case JOB_WINDER_DANCER_FAIL:
+ AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,true);
+ break;
+ default:
+ break;
+ }
+ }
JobMessageStruc JobMessage;
JobMessage.messageId = PrintingResultsOk;
@@ -841,6 +844,7 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
}
void JobStopReporting(void)
{
+ LOG_ERROR(0,"JobStopReporting");
JobToken[0] = 0;
}
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;