aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c97
1 files changed, 83 insertions, 14 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index b9a28fe57..5efc3798e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -67,6 +67,7 @@ double PoolerLengthCalculationMultiplier;
double TempPoolerTotalProcessedLength = 0.0;
double TempTotalProcessedLength = 0.0;
+bool InitialProcess = false;
bool PrepareState = false;
// job parameters
bool EnableLubrication = false;
@@ -148,10 +149,12 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
double length = 0.0;
int index = MAX_THREAD_MOTORS_NUM;
- // if (ThreadControlActive == false)
- // return OK;
- // if (PrepareState == true)
- // return OK;
+#ifndef FEEDER_LENGTH_CALCULATION
+ if (ThreadControlActive == false)
+ return OK;
+ if (PrepareState == true)
+ return OK;
+#endif
if (IfIndex>>8 != IfTypeThread)
{
LOG_ERROR (IfIndex, "Wrong Interface type");
@@ -194,13 +197,14 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}
}
+ TotalProcessedLength += (length/100);
+ TempTotalProcessedLength = TotalProcessedLength;
+#ifdef FEEDER_LENGTH_CALCULATION
CurrentProcessedLength+=length;
- static int pooler_counter = 0;
- pooler_counter++;
- TotalProcessedLength+= (length/100);
- TempTotalProcessedLength = TotalProcessedLength;
- if (pooler_counter%10 == 0)
+ static int feeder_counter = 0;
+ feeder_counter++;
+ if (feeder_counter%10 == 0)
{
if (PrepareState == true)
{
@@ -225,18 +229,22 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
ProcessedLengthFuncPtr();
}
-return OK;
+#endif
+
+ return OK;
}
uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
- uint32_t positionDiff = 0;
+ uint32_t positionDiff = 0,prevprev;
double length = 0.0;
int index = MAX_THREAD_MOTORS_NUM;
+#ifdef FEEDER_LENGTH_CALCULATION
if (ThreadControlActive == false)
return OK;
if (PrepareState == true)
return OK;
+#endif
if (IfIndex>>8 != IfTypeThread)
{
LOG_ERROR (IfIndex, "Wrong Interface type");
@@ -258,13 +266,56 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
PoolerPreviousPosition = PoolerCurrentPosition;
Poolerinitialpos = 0;
}
+ prevprev = PreviousPosition;
positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition);
//positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep;
PoolerPreviousPosition = PoolerCurrentPosition;
length = (double)(positionDiff)*PoolerLengthCalculationMultiplier;
- PoolerTotalProcessedLength+= (length/100);
- TempPoolerTotalProcessedLength = PoolerTotalProcessedLength;
+ //if (InitialProcess == false)
+ {
+ PoolerTotalProcessedLength+= (length/100);
+ TempPoolerTotalProcessedLength = PoolerTotalProcessedLength;
+ }
+ if (length > 1000)
+ {
+ usnprintf(Lenstr, 100, "pooler length huge: length %d, diff 0x%x, pos 0x%x prev 0x%x",(int)length*100,(int)positionDiff,PreviousPosition,prevprev);
+ SendJobProgress(0.0,0,false, Lenstr);
+ Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0);
+ length = 0;
+
+ }
+#ifndef FEEDER_LENGTH_CALCULATION
+ CurrentProcessedLength+=length;
+
+ static int puller_counter = 0;
+ puller_counter++;
+ if (puller_counter%10 == 0)
+ {
+ if (PrepareState == true)
+ {
+ //later - add temperatures
+ TemperatureListString(Lenstr);
+
+ SendJobProgress(0.0,0,false, Lenstr);
+ }
+ else
+ {
+ SendJobProgress(PoolerTotalProcessedLength,0,false, NULL);
+ }
+
+ }
+ if ((CurrentProcessedLength>=CurrentRequestedLength )&&(CurrentRequestedLength > 0.0))
+ {
+ usnprintf(Lenstr, 100, "Total processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength);
+ SendJobProgress(0.0,0,false, Lenstr);
+ Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0);
+ // segment/intersegment/distance to spool finished
+ if (ProcessedLengthFuncPtr)
+ ProcessedLengthFuncPtr();
+
+ }
+#endif
return OK;
}
@@ -632,7 +683,6 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
ThreadPreSegmentState(request,0);
return OK;
}
-bool InitialProcess = false;
//********************************************************************************************************************
uint32_t ThreadPrepareState(void *JobDetails)
@@ -780,6 +830,12 @@ void SetOriginMotorSpeed(float process_speed)
MotorSpeedSamples[Motor_i][i] = motor_speed;
}
}
+void ThreadPreSegmentEnded(void)
+{
+ InitialProcess = false;
+ REPORT_MSG (0,"First ThreadPreSegmentEnded");
+ PreSegmentReady(Module_Thread,ModuleDone);
+}
//********************************************************************************************************************
uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId)
@@ -834,6 +890,14 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId)
PreSegmentState = true;
DTSState = false;
}
+ /*else if (InitialProcess==true)
+ {
+ ThreadUpdateProcessLength (dryerbufferlength,(void *)ThreadPreSegmentEnded);
+ REPORT_MSG (dryerbufferlength," ThreadPreSegmentState DTS length (sample)");
+ SegmentState = false;
+ PreSegmentState = true;
+ DTSState = false;
+ }*/
else
{
ThreadUpdateProcessLength (0,(void *)NULL);
@@ -893,7 +957,12 @@ uint32_t ThreadDistanceToSpoolState(void )
{
seglength = dryerbufferlength;
REPORT_MSG (seglength,"ThreadDistanceToSpoolState");
+//#ifdef FEEDER_LENGTH_CALCULATION
ThreadUpdateProcessLength (seglength,(void *)ThreadDistanceToSpoolEnded);
+/*#else
+ ThreadUpdateProcessLength (0,(void *)NULL); //move DTS to job start
+ DistanceToSpoolReady(Module_Thread,ModuleDone);
+#endif*/
SegmentState = false;
PreSegmentState = false;
DTSState = true;