aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-09-30 12:02:45 +0300
committerAvi Levkovich <avi@twine-s.com>2020-09-30 12:02:45 +0300
commit5ba1c2b05033d2ffddf394dd1ed7067eaff1c5bc (patch)
tree8f32c9ab05518429e3b6a52e78b82229f276397f /Software/Embedded_SW/Embedded/Modules
parentb2420e1b64c155020bd8b9355ea1135f6e4a9b36 (diff)
parent4748b626794f346d6c7989413fe76d609966cdf9 (diff)
downloadTango-5ba1c2b05033d2ffddf394dd1ed7067eaff1c5bc.tar.gz
Tango-5ba1c2b05033d2ffddf394dd1ed7067eaff1c5bc.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c65
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c86
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c52
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c21
10 files changed, 200 insertions, 49 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 78398119b..b5c24835a 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -835,7 +835,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
if (n_segments == 0)
{
ReportWithPackageFilter(AlarmFilter,"no segments in the job", __FILE__,__LINE__,0, DEBUG_LOG_CATEGORY__Warning, 222, 0);
- return JOB_OK;
+ return JOB_FILE_PROBLEM;
}
if (AlarmItem == NULL)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 284b2de6c..6d50eb926 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -50,3 +50,6 @@ void HeadBlowersInit();
void HeadBlowersCfg();
void HeadBlowersControlLoop ();
uint32_t HeadBlowerCommandRequestMessage(int blowerId, float flow);
+void HeadBlowersOff(int off);
+uint32_t HeadBlowersOffGet();
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index a6b7bff86..14bce9911 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -113,6 +113,7 @@ uint32_t SecondDryerHeaterMaxTempControl = 0xFF;
uint32_t DisasterControlId = 0xFF;
double PressureSensorV0[2] = {0.0, 0.0};
uint8_t HeadBlowersCloseLoopTime[2] = {2, 2};
+uint8_t HeadBlowersEnable = 1;
#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1
#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2
@@ -229,9 +230,13 @@ void initializeArrays(void)
HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = HEAD_PT100_ZONE_11_0X8A_0;
HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = HEAD_PT100_ZONE_12_0X8A_1;
*/
- HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1;//HEAD_PT100_ZONE_11_0X8A_0;
- HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0 ;//HEAD_PT100_ZONE_12_0X8A_1;
-
+#ifdef USE_TUNNEL_PT100
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_ZONE_11_0X8A_0; //HEAD_PT100_AIR_HEATER_2_0X8C_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_ZONE_12_0X8A_1; //HEAD_PT100_AIR_HEATER_1_0X8C_0;
+#else
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1; //notice HEAD_PT100_AIR_HEATER_2_0X8C_1 refer to HeadCoverHeater1
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0; //notice HEAD_PT100_AIR_HEATER_1_0X8C_0 refer to HeadCoverHeater2
+#endif
HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS;
HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1;
HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2;
@@ -400,12 +405,12 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu
{
if (InternalAlarmActive[index] == false)
{
- if(InternalOverHeatCounter[index]++ >=Overheat_Count_Limit)
+ ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature",__FILE__,index,readValue,RpWarning, InternalOverHeatCounter[index],0);
+ if(InternalOverHeatCounter[index]++ >=Overheat_Count_Limit*10)
{
InternalOverHeatCounter[index] = Overheat_Count_Limit;
InternalAlarmActive[index] = true;
- ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature, heater turned off",__FILE__,index,readValue,RpWarning, 0,0);
AlarmHandlingSetAlarm(InternalTempEventType[index], true);
if (JobIsActive())
{
@@ -424,11 +429,12 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu
{
if (InternalAlarmActive[index] == true)
{
+ ReportWithPackageFilter(HeatersFilter,"Internal Under the max temperature",__FILE__,index,readValue,RpWarning, InternalOverHeatCounter[index],0);
if(InternalOverHeatCounter[index]-- <= 0)
{
InternalOverHeatCounter[index] = 0;
- InternalAlarmActive[index] = true;
+ InternalAlarmActive[index] = false;
ReportWithPackageFilter(HeatersFilter,"Internal Under the max temperature, alarm turned off",__FILE__,index,readValue,RpWarning, 0,0);
AlarmHandlingSetAlarm(InternalTempEventType[index], false);
}
@@ -1098,6 +1104,8 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=HEATER_TYPE_MAX_HEATERS;
+ uint32_t BlowerPt100Read = 0;
+
if (IfIndex>>8 != IfTypeHeaters)
{
ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0);
@@ -1107,9 +1115,29 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
//int32_t readValue = MillisecGetTemperatures(HeaterId2PT100Id[index]);
if (HeaterControl[index].sensormaxvalue == 0)
return OK;
- if ((HeaterPreviousRead[index]) >= HeaterControl[index].sensormaxvalue)
+#ifndef USE_TUNNEL_PT100
+ if (Head_Type == HEAD_TYPE_ARC) {
+ if (index == HEATER_TYPE__HeadCoverHeater1) {
+ BlowerPt100Read = MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_2_0X8C_1);
+ }
+ if (index == HEATER_TYPE__HeadCoverHeater2) {
+ BlowerPt100Read = MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_1_0X8C_0);
+ }
+ }
+#else
+ if (Head_Type == HEAD_TYPE_ARC) {
+ if (index == HEATER_TYPE__HeadCoverHeater1) {
+ BlowerPt100Read = MillisecGetTemperatures(HEAD_PT100_ZONE_11_0X8A_0);
+ }
+ if (index == HEATER_TYPE__HeadCoverHeater2) {
+ BlowerPt100Read = MillisecGetTemperatures(HEAD_PT100_ZONE_12_0X8A_1);
+ }
+ }
+#endif
+
+ if ((HeaterPreviousRead[index] >= HeaterControl[index].sensormaxvalue) || (BlowerPt100Read > 25000))
{
- if(OverHeatCounter[index]++ >=Overheat_Count_Limit)
+ if(OverHeatCounter[index]++ >= Overheat_Count_Limit)
{
OverHeatCounter[index] = Overheat_Count_Limit;
//?????HeaterReady[index] = false;
@@ -1301,7 +1329,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
if ((HeaterMaxTempFlag[HEATER_TYPE__DryerSecondaryHeater] == false)&&(HeaterMaxTempFlag[HEATER_TYPE__DryerMainHeater] == false))
{
- ReportWithPackageFilter(HeatersFilter,"AC Activating",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
+ //ReportWithPackageFilter(HeatersFilter,"AC Activating",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
ActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
ActivateHeater(HEATER_TYPE__DryerMainHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,100);
@@ -2049,6 +2077,22 @@ bool HeadBlowerFlowControl(double Q_value, uint8_t blowerId)
return OK;
}
+void HeadBlowersOff(int off)
+{
+ if (off == 1)
+ HeadBlowersEnable = 0;
+ else
+ HeadBlowersEnable = 1;
+ ReportWithPackageFilter(HeatersFilter,"HeadBlowersOff",__FILE__,__LINE__,off,RpError, 0,0);
+ return;
+}
+
+uint32_t HeadBlowersOffGet()
+{
+ ReportWithPackageFilter(HeatersFilter,"HeadBlowersOffGet",__FILE__,__LINE__,HeadBlowersEnable,RpError, 0,0);
+ return HeadBlowersEnable;
+}
+
void HeadBlowersControlLoop ()
{
int blowerId;
@@ -2056,6 +2100,9 @@ void HeadBlowersControlLoop ()
if (GetMachineState() < MACHINE_STATE_WAIT_FOR_COOLER)
return; //do not start before controller is initialized and running
+ if (!HeadBlowersEnable) {
+ return;
+ }
for (blowerId = 0; blowerId <= 1; blowerId++) {
if (count[blowerId] == HeadBlowersCloseLoopTime[blowerId]) {
count[blowerId] = 0;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
index 256d25aa5..07cc5774d 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
@@ -28,6 +28,7 @@ typedef enum
CleaningStageActuatorDown,
CleaningStageDelay2,
}CleaningStageEnum;
+TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID;
/*
*Cleaning sequence:
@@ -51,42 +52,55 @@ int CleaningStageCounter = 8;//Tdelay1 - 1 to start with stage moving down
void Init_CleaningStageCounter()
{
- CleaningStageCounter = Tdelay1 - 1;
+ if(Head_Type == HEAD_TYPE_FLAT) {
+ CleaningStageCounter = Tdelay1 - 1;
+ } else {
+ CleaningStageCounter = 0;
+ }
+}
+
+uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1)
+{
+ CleaningStageCounter = 0;
+ return 0;
}
uint32_t IDS_Cleaning_Move_Actuators()
{
- if(Head_Type != HEAD_TYPE_FLAT)
+ if((Head_Type != HEAD_TYPE_FLAT) && (Head_Type != HEAD_TYPE_ARC))
return OK;
- if (CleaningStageCounter == 1)
- {
- Trigger_Head_Actuators_Stub(ACTIN, ENABLE, UP);
- //Trigger_Head_Actuators_Control(ACTIN, LOW,true);
- ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Move_ActuatorUp", __FILE__, __LINE__, 1, RpWarning, CleaningStageCounter, 0);
- }
- else if (CleaningStageCounter == Tup)
- {
- Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
- //Trigger_Head_Actuators_Disable();
- ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_Actuator", __FILE__, __LINE__, Tup, RpWarning, CleaningStageCounter, 0);
- }
- else if (CleaningStageCounter == Tdelay1)
- {
- Trigger_Head_Actuators_Stub(ACTIN, ENABLE, DOWN);
- //Trigger_Head_Actuators_Control(ACTIN, LOW,false);
- ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_MoveDown", __FILE__, __LINE__, Tdelay1, RpWarning, CleaningStageCounter, 0);
- }
- else if (CleaningStageCounter == Tdelay2)
- {
- CleaningStageCounter = 0;
- Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
- ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_delay", __FILE__, __LINE__, Tdelay2, RpWarning, CleaningStageCounter, 0);
+ if(Head_Type == HEAD_TYPE_FLAT) {
+ if (CleaningStageCounter == 1)
+ {
+ Trigger_Head_Actuators_Stub(ACTIN, ENABLE, UP);
+ //Trigger_Head_Actuators_Control(ACTIN, LOW,true);
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Move_ActuatorUp", __FILE__, __LINE__, 1, RpWarning, CleaningStageCounter, 0);
+ }
+ else if (CleaningStageCounter == Tup)
+ {
+ Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
+ //Trigger_Head_Actuators_Disable();
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_Actuator", __FILE__, __LINE__, Tup, RpWarning, CleaningStageCounter, 0);
+ }
+ else if (CleaningStageCounter == Tdelay1)
+ {
+ Trigger_Head_Actuators_Stub(ACTIN, ENABLE, DOWN);
+ //Trigger_Head_Actuators_Control(ACTIN, LOW,false);
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_MoveDown", __FILE__, __LINE__, Tdelay1, RpWarning, CleaningStageCounter, 0);
+ }
+ else if (CleaningStageCounter == Tdelay2)
+ {
+ CleaningStageCounter = 0;
+ Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_delay", __FILE__, __LINE__, Tdelay2, RpWarning, CleaningStageCounter, 0);
+ }
+ } else { //arc
+ if (CleaningStageCounter == 0) {
+ MotorSetSpeed(MotorId, 750);
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Motor_Run", __FILE__, __LINE__, 1, RpWarning, CleaningStageCounter, 0);
+ }
}
-
-
-
CleaningStageCounter++;
-
return OK;
}
/*uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed)
@@ -135,8 +149,18 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback)
uint32_t status = OK;
status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANER_DISPENSER,callback);
ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_Cleaning_Solution", __FILE__, __LINE__, CLEANER_DISPENSER, RpWarning, status, 0);
- HeadCard_Actuators_Relocate();
- Init_CleaningStageCounter();
+ if(Head_Type == HEAD_TYPE_FLAT)
+ {
+ HeadCard_Actuators_Relocate();
+ Init_CleaningStageCounter();
+ }
+ if(Head_Type == HEAD_TYPE_ARC)
+ {
+ MotorStop(MotorId,Hard_Hiz);
+ MotorMovetoLimitSwitch(MotorId,1-MotorsCfg[MotorId].directionthreadwize, 50, Motor_Id_to_LS_IdDown[MotorId], cleaningMotorCBFunction,30000);
+ }
+
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Motor_Homing", __FILE__, __LINE__, 1, RpWarning, CleaningStageCounter, 0);
CleaningStage = CleaningStageIdle;
ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Stop_Cleaning_Solution actuator relocate", __FILE__, __LINE__, CleaningStage, RpWarning, CleaningStageCounter, 0);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index 9973e4c7c..57d3ff5e2 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -117,5 +117,6 @@ void DispenserDataRequestFunc(MessageContainer* requestContainer);
void IDS_Start_Pid_Testing(int DispenserId);
void IDS_Stop_Pid_Testing(int DispenserId);
+uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1);
#endif /* MODULES_IDS_IDS_EX_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index d40f3c00b..d508c2ed2 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -348,6 +348,11 @@ JobDescriptionFileBrushStop *FirstBrushStop = NULL;
FreeSegmentFileData(Segment);
CloseJobFile();
}
+ else
+ {
+ ReportWithPackageFilter(IDSFilter,"Error Opening the file", __FILE__, __LINE__, Fresult, RpWarning, 0, 0);
+ return false;
+ }
//GeneralHwReady = true;
int ActiveDispensers = 0;
for (Dispenser_i = 0; Dispenser_i < MAX_DYE_DISPENSERS; Dispenser_i++)
@@ -529,7 +534,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
updatedSpeed = tempSpeed*0.98;
MotorSetSpeed(HW_Motor_Id, updatedSpeed);
CurrentDispenserSpeed[DispenserId] = updatedSpeed;
- ReportWithPackageFilter(IDSFilter,"IDS decrease speed",__FILE__,DispenserId,(int)updatedSpeed,RpWarning,(int)(pressure*100),0);
+ //ReportWithPackageFilter(IDSFilter,"IDS decrease speed",__FILE__,DispenserId,(int)updatedSpeed,RpWarning,(int)(pressure*100),0);
//return true; //ready
}
else if (pressure < RefMaxPressure*0.97)
@@ -539,7 +544,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
updatedSpeed = (tempSpeed * 1.02 < InitialDispenserSpeed) ? tempSpeed * 1.02 : InitialDispenserSpeed;
MotorSetSpeed(HW_Motor_Id, updatedSpeed);
CurrentDispenserSpeed[DispenserId] = updatedSpeed;
- ReportWithPackageFilter(IDSFilter,"IDS increase speed",__FILE__,DispenserId,(int)updatedSpeed,RpWarning,(int)(pressure*100),0);
+ //ReportWithPackageFilter(IDSFilter,"IDS increase speed",__FILE__,DispenserId,(int)updatedSpeed,RpWarning,(int)(pressure*100),0);
//return false; //not ready
}
if ((pressure>RefMaxPressure)&&(pressure<(RefMaxPressure+0.1)))
@@ -599,7 +604,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
if (AdjustDispenserSpeedToPressure(i,DispenserPreparePressure,pressure) == true)
NumofReadyDispensers++;
}
- ReportWithPackageFilter(IDSFilter,"IDS prepare",__FILE__,i,(int)DispenserTotalPrepareSteps[i],RpWarning,(int)(CurrentDispenserSpeed[i]*100),0);
+ //ReportWithPackageFilter(IDSFilter,"IDS prepare",__FILE__,i,(int)DispenserTotalPrepareSteps[i],RpWarning,(int)(CurrentDispenserSpeed[i]*100),0);
}
}
pressure = GetDispenserPressure(CLEANER_DISPENSER);
@@ -1312,7 +1317,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
/* wait for all dispensers to get to the required pressure
* move the presegment ready when all dispensers are ready.
*/
- REPORT_MSG(Segment->n_brushstops,"IDSPreSegmentState");
+ ReportWithPackageFilter(IDSFilter,"IDSPreSegmentState",__FILE__,__LINE__,(int)Segment->n_brushstops,RpError,(int)SegmentId,0);
if (JobBrushStopId>=Segment->n_brushstops)
{
ReportWithPackageFilter(IDSFilter,"Error JobBrushStopId",__FILE__,__LINE__,(int)Segment->n_brushstops,RpError,(int)0,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 5da52f590..f3624bb6b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -28,6 +28,7 @@
#include "drivers/FPGA/FPGA_SPI_Comm.h"
#include "Modules/IFS/ifs.h"
#include "Modules/IDS/ids_ex.h"
+#include "Modules/IDS/ids.h"
#include "Modules/Control/MillisecTask.h"
#include "modules/thread/thread_ex.h"
#include "modules/heaters/heaters_ex.h"
@@ -85,6 +86,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
uint8_t port = 0;
uint8_t pin = 0;
uint8_t value= 0;
+ uint32_t enable;
uint8_t ReadBackReg[1];
@@ -1142,6 +1144,56 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xB14)
+ {
+ LOG_ERROR(request->amount,"IDS_Cleaning_Move_Actuators");
+ Init_CleaningStageCounter();
+ IDS_Cleaning_Move_Actuators();
+
+ response.progress = 0xB14;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB15)
+ {
+ TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID;
+ LOG_ERROR(request->amount,"MotorMovetoLimitSwitch");
+ MotorStop(MotorId,Hard_Hiz);
+ MotorMovetoLimitSwitch(MotorId,1 - MotorsCfg[MotorId].directionthreadwize, 50, Motor_Id_to_LS_IdDown[MotorId], cleaningMotorCBFunction,30000);
+ ReportWithPackageFilter(IDSFilter,"IDS_Cleaning_Motor_Homing", __FILE__, __LINE__, 1, RpWarning, 0, 0);
+
+ response.progress = 0xB15;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB16)
+ {
+ LOG_ERROR(request->amount,"ThreadCheckArcHeadCovers");
+ ThreadCheckArcHeadCovers();
+ ReportWithPackageFilter(IDSFilter,"ThreadCheckArcHeadCovers", __FILE__, __LINE__, 1, RpWarning, 0, 0);
+
+ response.progress = 0xB16;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB17)
+ {
+ LOG_ERROR(request->delay,"HeadBlowersOff");
+ HeadBlowersOff(request->delay);
+
+ response.progress = 0xB17;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB18)
+ {
+ enable = HeadBlowersOffGet();
+ LOG_ERROR(enable, "HeadBlowersOffGet");
+
+ response.progress = 0xB18;
+ 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 554e4d1ef..d5c186893 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -1407,6 +1407,8 @@ uint32_t ThreadLoadingReport(void)
if (ThreadLoadingToken[0] == 0)
return OK;
+ if (LoadStages == THREAD_LOAD_INIT)
+ return OK;
if (MessageState == 0)
{
@@ -1485,7 +1487,7 @@ uint32_t ThreadLoadingRestartReport(void) //sending after a failure in the final
response.has_state = true;
response.state = THREAD_LOADING_STATE__ReadyForLoading;
response.errorreason = DefaultErrSrt;
- Report("ThreadLoadingReport",__FILE__,MessageState,response.state,RpWarning,(int)LoadStages,0);
+ Report("ThreadLoadingRestartReport",__FILE__,MessageState,response.state,RpWarning,(int)LoadStages,0);
//-------------------------------------------------------------------------------------------
responseContainer = createContainer(MESSAGE_TYPE__StartThreadLoadingResponse, ThreadLoadingToken, false, &response, &start_thread_loading_response__pack, &start_thread_loading_response__get_packed_size);
responseContainer.has_continuous = true;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index c3f181b52..5d69e2980 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -88,7 +88,7 @@ uint32_t StartThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t ContinueThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t TryThreadLoadingFunc(MessageContainer* requestContainer);
-
+void ThreadCheckArcHeadCovers(void);
uint32_t Thread_Load_End(void);
#endif
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index d7bfb1b6e..4f77104d4 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -1142,6 +1142,14 @@ uint32_t ThreadPrepareState(void *JobDetails)
}
}
}
+ if ((Head_Type == HEAD_TYPE_ARC) && (JoggingJobActive == false)) {
+ if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_ARC) != LIMIT) {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head arc is open!!!",__FILE__,__LINE__,0,RpError,LIMIT,0);
+ }
+ if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_TUNNEL_ARC) != LIMIT) {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head arc tunnel is open!!!",__FILE__,__LINE__,0,RpError,LIMIT,0);
+ }
+ }
// if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) == LIMIT)&&(JoggingJobActive == false))
if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) != LIMIT)&&(JoggingJobActive == false))
{
@@ -1616,8 +1624,17 @@ char Endstr[150];
return OK;
}
-
-
+void ThreadCheckArcHeadCovers(void)
+{
+ if ((Head_Type == HEAD_TYPE_ARC) && (JoggingJobActive == false)) {
+ if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_ARC) != LIMIT) {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head arc is open!!!",__FILE__,__LINE__,0,RpError,LIMIT,0);
+ }
+ if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_TUNNEL_ARC) != LIMIT) {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head arc tunnel is open!!!",__FILE__,__LINE__,0,RpError,LIMIT,0);
+ }
+ }
+}
//********************************************************************************************************************
void ThreadStartPrinting(void)