aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-08 21:56:07 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-08 21:56:07 +0200
commit8771de451ecc32d4f3328e6e177825cb5a1f6a6d (patch)
tree0a628dcd49d2e9302b8a3188b0acce8358d83ee7 /Software/Embedded_SW
parenteb160d2692e12bd5402c9686eb2850695fb999cc (diff)
parent5e0350325fc8082509731fb33753825aaf21e924 (diff)
downloadTango-8771de451ecc32d4f3328e6e177825cb5a1f6a6d.tar.gz
Tango-8771de451ecc32d4f3328e6e177825cb5a1f6a6d.zip
merge
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Container.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c50
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c2
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c9
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h1
7 files changed, 73 insertions, 2 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c
index 5bed0bcdc..b386ae20f 100644
--- a/Software/Embedded_SW/Embedded/Communication/Container.c
+++ b/Software/Embedded_SW/Embedded/Communication/Container.c
@@ -491,6 +491,9 @@ void receive_callback(char* buffer, size_t length)
case MESSAGE_TYPE__StopThreadLoadingRequest:
StopThreadLoadingFunc(requestContainer);
break;
+ case MESSAGE_TYPE__AttemptThreadJoggingRequest:
+ AttemptThreadJoggingFunc(requestContainer);
+ break;
case MESSAGE_TYPE__StubDispenserEEpromRequest:
StubDispenserEEpromRequestFunc(requestContainer);
break;
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 5b216d25c..c6cfbb1d1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -1246,6 +1246,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xB24) //Set loading arm cycles
+ {
+ REPORT_MSG(request->delay,"AttemptThreadJoggingFunc");
+ AttemptThreadJoggingFunc(NULL);
+ response.progress = 0xb24;
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xC3) //suspend I2C task
{
if (request->delay == 0)
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 63072e4d8..cdb726b5e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -49,6 +49,7 @@
#include "PMR/ThreadLoading/TryThreadLoadingResponse.pb-c.h"
#include "PMR/ThreadLoading/StopThreadLoadingRequest.pb-c.h"
#include "PMR/ThreadLoading/StopThreadLoadingResponse.pb-c.h"
+#include "PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h"
//#include <stdint.h>
//#include <stdbool.h>
@@ -1597,3 +1598,52 @@ uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer)
return OK;
}
+uint8_t attemptJogCounter = 0;
+#define ATTEMPT_JOG_TIMEOUT 18
+char AttemptJoggingToken[36+1] = {0};
+
+uint32_t AttemptThreadJoggingCallback(uint32_t index, uint32_t ReadValue)
+{
+ AttemptThreadJoggingResponse response = ATTEMPT_THREAD_JOGGING_RESPONSE__INIT;
+ MessageContainer responseContainer;
+
+ attemptJogCounter++;
+ Report("AttemptThreadJoggingCallback",__FILE__,attemptJogCounter,JobEndReason,RpWarning,(int)JobIsActive(),0);
+ if (attemptJogCounter<ATTEMPT_JOG_TIMEOUT)
+ {
+ if (JobIsActive() == true)//jog still preparing/running
+ return OK;
+ }
+ if (JobEndReason == JOB_OK)
+ ThreadAbortJoggingFunc();
+ else
+ {
+ responseContainer.has_error = true;
+ responseContainer.error = getJobError_to_ErrorCode(JobEndReason);
+ }
+ SafeRemoveControlCallback(LoadingControlId, AttemptThreadJoggingCallback );
+ LoadingControlId = 0xFF;
+
+ if (AttemptJoggingToken[0])
+ {
+ responseContainer = createContainer(MESSAGE_TYPE__AttemptThreadJoggingResponse, AttemptJoggingToken, true, &response, &attempt_thread_jogging_response__pack, &attempt_thread_jogging_response__get_packed_size);
+ responseContainer.continuous = false;
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ my_free(responseContainer.data.data);
+ SendChars((char*)container_buffer, container_size);
+ }
+ return OK;
+
+}
+uint32_t AttemptThreadJoggingFunc(MessageContainer* requestContainer)
+{
+ attemptJogCounter = 0;
+ if(requestContainer)
+ ustrncpy (AttemptJoggingToken, requestContainer->token,36);
+ Report("AttemptThreadJoggingFunc",__FILE__,__LINE__,0xFF,RpWarning,(int)ATTEMPT_JOG_TIMEOUT,0);
+ LoadingControlId = AddControlCallback("Load jog",AttemptThreadJoggingCallback, eOneSecond,TemplateDataReadCBFunction,0,0,0);
+ ThreadJoggingFunc(30);
+ return OK;
+}
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index a87406454..07ecf5d0b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -89,6 +89,8 @@ uint32_t StartThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t ContinueThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t TryThreadLoadingFunc(MessageContainer* requestContainer);
+uint32_t AttemptThreadJoggingFunc(MessageContainer* requestContainer);
+
void ThreadCheckArcHeadCovers(void);
uint32_t Thread_Load_End(void);
uint32_t ThreadLoadingRestartReport(void); //sending after a failure in the finalizing stage
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 0dca3537e..8d41f3b9a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -1093,9 +1093,9 @@ uint32_t ThreadPrepareState(void *JobDetails)
IntersegmentLength = JobTicket->intersegmentlength;
PrepareWaitCount = 0;
-#ifndef BTSR_NO_PULLER_TFU
status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__LeftDancer, windertension);
ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Winder",__FILE__,HARDWARE_DANCER_TYPE__LeftDancer,PrepareWaitCount,RpWarning,(int)windertension,0);
+#ifndef BTSR_NO_PULLER_TFU
status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__MiddleDancer, pullertension);
ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Puller",__FILE__,HARDWARE_DANCER_TYPE__MiddleDancer,PrepareWaitCount,RpWarning,(int)pullertension,0);
#endif
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index 155d84fdb..82601a162 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -184,6 +184,13 @@ bool JobIsActive(void)
return retcode;
}*/
+ErrorCode getJobError_to_ErrorCode(JobEndReasonEnum JobError)
+{
+ if (JobError<JOB_ERRORS_MAX)
+ return JobError_to_ErrorCode[JobError];
+ else
+ return ERROR_CODE__KEY_NOT_FOUND;
+}
//********************************************************************************************************************
bool GetHeatersPrepareWaiting(void)
{
@@ -1193,7 +1200,7 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
switch (JobEndReason)
{
case JOB_THREAD_BREAK:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
+ //AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
break;
case JOB_POOLER_DANCER_FAIL:
AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true);
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
index 9fdd7b85f..dde582749 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
@@ -106,6 +106,7 @@ typedef enum
JOB_ERRORS_MAX
}JobEndReasonEnum;
extern JobEndReasonEnum JobEndReason;
+ErrorCode getJobError_to_ErrorCode(JobEndReasonEnum JobError);
#define MAX_JOB_NAME_LEN 40
#define MAX_SEGMENT_NUM 30