aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-18 16:25:27 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-18 16:25:27 +0200
commita9d18c495bfb4232b61bf4b45f1ba3c626cdb61b (patch)
tree78510475f28954dbc3348f36f815f0898fda8f21 /Software/Embedded_SW/Embedded/Modules
parent2d453e76dbc75ed10c7e953f735d9aedcbfd3529 (diff)
parentba0d5e816582df76b450e43621e93010cd74bf63 (diff)
downloadTango-a9d18c495bfb4232b61bf4b45f1ba3c626cdb61b.tar.gz
Tango-a9d18c495bfb4232b61bf4b45f1ba3c626cdb61b.zip
merge
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c32
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c50
10 files changed, 99 insertions, 52 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 5c24b2338..eceb92d63 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -1040,6 +1040,18 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
if (FoundReason == JOB_OK)
{
FoundReason = Winder_Check_Cone();
+ if (FoundReason!=JOB_OK)
+ {
+ for (Alarm_i = 0;Alarm_i<NumOfSystemAlarms;Alarm_i++)
+ {
+ if (AlarmItem[Alarm_i].EventType == EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST)
+ {
+ AlarmId = Alarm_i;
+ ReportWithPackageFilter(AlarmFilter,"cone not in place - preventing job", __FILE__,AlarmId,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ break;
+ }
+ }
+ }
}
if (FoundReason != JOB_OK)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index cfd4db0e6..4122955b3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -548,20 +548,12 @@ void CopyTemperaturesToMonitor(void)
#warning machine to machine test
DiagnosticsMonitor.headzone4temperature =
HeaterTemperature[HEATER_TYPE__HeaterZone4];
- DiagnosticsMonitor.headzone6temperature =
- HeaterTemperature[HEATER_TYPE__HeaterZone6];
- DiagnosticsMonitor.headzone8temperature =
- HeaterTemperature[HEATER_TYPE__HeaterZone8];
DiagnosticsMonitor.headzone9temperature =
HeaterTemperature[HEATER_TYPE__HeaterZone9];
DiagnosticsMonitor.headzone10temperature =
HeaterTemperature[HEATER_TYPE__HeaterZone10];
DiagnosticsMonitor.n_headzone4temperature =
HeaterCounterIndex[HEATER_TYPE__HeaterZone4];
- DiagnosticsMonitor.n_headzone6temperature =
- HeaterCounterIndex[HEATER_TYPE__HeaterZone6];
- DiagnosticsMonitor.n_headzone8temperature =
- HeaterCounterIndex[HEATER_TYPE__HeaterZone8];
DiagnosticsMonitor.n_headzone9temperature =
HeaterCounterIndex[HEATER_TYPE__HeaterZone9];
DiagnosticsMonitor.n_headzone10temperature =
@@ -1013,8 +1005,6 @@ void DiagnosticOneSecCollection(void)
DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone12, MillisecGetTemperatures(HEAD_PT100_ZONE_12_0X8A_1));
#warning MACHINE TO MACHINE TEST
DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone4, MillisecGetTemperatures(HEAD_PT100_ZONE_4_0X82_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone6, MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone8, MillisecGetTemperatures(HEAD_PT100_ZONE_8_0X86_1));
DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone9, MillisecGetTemperatures(HEAD_PT100_ZONE_9_0X88_0));
DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone10, MillisecGetTemperatures(HEAD_PT100_ZONE_10_0X88_1));
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index 4c248e94b..bf68b64f0 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -245,7 +245,7 @@ return OK;
* */
char WasteEmptyingToken[36+1] = {0};
-uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State, double percentage)
+uint32_t CartridgeStateUpdate(CartridgeSlot Slot, int32_t index, CartridgeState State, double percentage)
{
if (WasteEmptyingToken[0] == 0)
return ERROR;
@@ -271,6 +271,9 @@ uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State, double pe
CartData.has_slot = true;
CartData.slot = Slot;
+ CartData.has_index = true;
+ CartData.index = index;
+
/*
struct _CartridgeStatus
{
@@ -327,9 +330,9 @@ uint32_t StartInkFillingStatusRequestFunc(MessageContainer* requestContainer)
StartInkFillingStatusRequest* request = start_ink_filling_status_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
ustrncpy (WasteEmptyingToken, requestContainer->token,36);
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink,CARTRIDGE_STATE__None,0);
- CartridgeStateUpdate(CARTRIDGE_SLOT__WasteMiddle,CARTRIDGE_STATE__None,0);
- CartridgeStateUpdate(CARTRIDGE_SLOT__WasteLower,CARTRIDGE_STATE__None,0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink,0, CARTRIDGE_STATE__None,0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__WasteMiddle, 0, CARTRIDGE_STATE__None,0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__WasteLower, 1, CARTRIDGE_STATE__None,0);
start_ink_filling_status_request__free_unpacked(request,NULL);
return status;
// case MESSAGE_TYPE__StartWasteEmptyingRequest:
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h
index ed3ec205d..a9539e0fa 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h
@@ -19,7 +19,7 @@ void SetMachineStatus (MachineState State);
int MachineUpdateResponseFunc(void);
uint32_t StartInkFillingStatusRequestFunc(MessageContainer* requestContainer);
-uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State, double percentage);
+uint32_t CartridgeStateUpdate(CartridgeSlot Slot, int32_t index, CartridgeState State, double percentage);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
index 5be5f1232..5134e97aa 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
@@ -53,7 +53,7 @@
#define PRESSURE_SENSOR_CP 0.269
#define PRESSURE_SENSOR_B 0.45
#define V0_DEFAULT_VALUE 1050
-#define FAN_MIN_RPM_THRESHOLD 3200
+#define FAN_MIN_RPM_THRESHOLD 4000
extern uint16_t Head_Fan_Tach[2];
extern uint8_t Head_Fan_PWM_Command[2];
@@ -354,13 +354,12 @@ void HeadBlowersCfg()
uint32_t PressureSensorInit(int blowerId)
{
- uint32_t V0;
+ uint32_t rpm, V0 = 0;
- if (HeadBlowersGetRPM(blowerId) < FAN_MIN_RPM_THRESHOLD) {
+ rpm = HeadBlowersGetRPM(blowerId);
+ if (rpm < FAN_MIN_RPM_THRESHOLD) {
V0 = MillisecGetTemperatures(BlowerIdToSensorId[blowerId]);
V0 /= 10;
- } else {
- V0 = V0_DEFAULT_VALUE;
}
return V0;
}
@@ -412,6 +411,7 @@ uint32_t HeadBlowerCommandRequestMessage(int blowerId, float flow)
ReportWithPackageFilter(HeatersFilter,"flow not in range",__FILE__, flow, blowerId,RpError, 0,0);
return ERROR;
}
+ ReportWithPackageFilter(HeatersFilter,"HeadBlower configured",__FILE__,blowerId,(int)(flow*100),RpError, PressureSensorV0[blowerId],0);
headBlowersFlow[blowerId] = flow;
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 3a2bbc347..b1b81b3f1 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -634,7 +634,9 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
if (NumofReadyDispensers>=NumOfActiveDispensers)
{
pressureReady = true;
- ReportWithPackageFilter(IDSFilter,"pressureReady = true;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
+ usnprintf(IdMessage, 80,"setting pressureReady = true %d K %d,C %d,M %d,Y %d,TI %d",(int)TargetNumberOfStepsPreRun,DispenserTotalPrepareSteps[0],DispenserTotalPrepareSteps[1],
+ DispenserTotalPrepareSteps[2],DispenserTotalPrepareSteps[3],DispenserTotalPrepareSteps[4]);
+ ReportWithPackageFilter(IDSFilter,IdMessage,__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
if (pressureReady == true)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index 329357ed4..469e82aa8 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -157,9 +157,20 @@ bool CartridgeInkFull()
int GetCartridgeFillPercent()
{
double MidTank_Pressure = 0;
-
+#ifdef IFS_DEBUG
+ static int percent = 0;
+ if (midTankState == MidTankStateFilling) {
+ if (percent < 100) {
+ percent += 1;
+ }
+ } else {
+ percent = 0;
+ }
+ return percent;
+#else
MidTank_Pressure = Read_MidTank_Pressure_Sensor(midTankCartColor);
return (((MidTank_Pressure - midTankCapacity)* 100) / CARTRIDGE_CAPATICY);
+#endif
}
bool midTankCart_door()
@@ -284,7 +295,6 @@ void midTankStateMachine(void)
break;
}
//check RFID - check cartridge OK
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Inserted, 0);
// send request for validation to ppc
inkAuthenticationPass = 2; //not defined
@@ -306,17 +316,18 @@ void midTankStateMachine(void)
Report("MidTank Cartridge authentication wait...", __FILE__, __LINE__, authenticationTimeOutCounter, RpMessage, 0, 0);
if (authenticationTimeOutCounter > 60) {
midTankState = MidTankStateIdle;
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Error, 0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Error, 0);
}
break;
}
if (inkAuthenticationPass == false) {
Report("MidTank Cartridge authentication fail", __FILE__, __LINE__, 0, RpMessage, 0, 0);
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Error, 0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Error, 0);
midTankState = MidTankStateIdle;
break;
}
// Cartridge status received from user - assume cartridge is full
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Inserted, 0);
midTankCapacity = Get_MidTank_Pressure_Sensor(midTankCartColor);
if ((midTankCapacity > MidTankEmptyLimit)&&(midTankCartColor!=MIDTANK_8))//enable lubricant filling in two stages
@@ -325,13 +336,13 @@ void midTankStateMachine(void)
cart1.color = fastBILNK;
Report("Mid-tank not empty", __FILE__, __LINE__, midTankCapacity, RpMessage, MidTankEmptyLimit, 0);
midTankState = MidTankStateIdle;
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Error, 0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Error, 0);
break;
}
Report("Mid-tank filling in process", __FILE__,__LINE__,(int)(MidTankEmptyLimit*1000), RpMessage, (int)(midTankCapacity*1000), 0);
Pannel_Leds(CART_1, MODE_ON);
cart1.color = BLINK;
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Filling, 0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Filling, 0);
if (midTankCartColor == MIDTANK_8)
{
@@ -356,7 +367,7 @@ void midTankStateMachine(void)
Report("Cartridge extracted during filling!!!", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
Report("Mid-tank # filling fail", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
midTankState = MidTankStateIdle;
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Absent, GetCartridgeFillPercent());
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Absent, GetCartridgeFillPercent());
}
// if time out or emptying done - idle
if (midTankTimeoutCounter++ > CartridgeInkTimeout) {
@@ -366,7 +377,7 @@ void midTankStateMachine(void)
MidTankValvesAction(Cartridge_MidTank_OFF);
Report("Mid-tank # filling fail", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
Report("Call customer support", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Error, GetCartridgeFillPercent());
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Error, GetCartridgeFillPercent());
midTankState = MidTankStateIdle;
} else if (CartridgeInkFull()) {
midTankTimeoutCounter = 0;
@@ -376,9 +387,10 @@ void midTankStateMachine(void)
Report("Mid-tank # filling done", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
midTankState = MidTankStateIdle;
// RFID change status - inkEmpty
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__FillingCompleted, 100.0);
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__FillingCompleted, 100.0);
}
- CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, CARTRIDGE_STATE__Filling, GetCartridgeFillPercent());
+ if (midTankState == MidTankStateFilling)
+ CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__Filling, GetCartridgeFillPercent());
break;
default:
Report("wrong state", __FILE__, __LINE__, midTankState, RpMessage, 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 0ce6474cc..284a43e41 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -1246,7 +1246,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
- if(request->amount == 0xB24) //Set loading arm cycles
+ if(request->amount == 0xB24) //AttemptThreadJoggingFunc
{
REPORT_MSG(request->delay,"AttemptThreadJoggingFunc");
AttemptThreadJoggingFunc(NULL);
@@ -1254,7 +1254,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
- if(request->amount == 0xB25) //Set loading arm cycles
+ if(request->amount == 0xB25) //Change jog speed
{
REPORT_MSG(request->delay,"Change jog speed");
if (request->delay<100)
@@ -1263,6 +1263,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xB26) //Change sublimation time
+ {
+ REPORT_MSG(request->delay,"Change sublimation time");
+ setSublimationBlowTime(request->delay);
+ response.progress = JogSpeed;
+ 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/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 8d41f3b9a..5fee72dc7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -1338,22 +1338,22 @@ uint32_t UpdatePidDuringRun(HardwarePidControl *request)
return ERROR;
- if (request->derivativetime == true)
+ if (request->has_derivativetime == true)
{
MotorControlConfig[Motor_i].m_params.Kd = request->derivativetime;
ReportWithPackageFilter(ThreadFilter,"UpdatePidDuringRun Kd",__FILE__,Motor_i,(int)(request->derivativetime),RpWarning,0,0);
}
- if (request->proportionalgain == true)
+ if (request->has_proportionalgain == true)
{
MotorControlConfig[Motor_i].m_params.Kp = request->proportionalgain;
ReportWithPackageFilter(ThreadFilter,"UpdatePidDuringRun Kp",__FILE__,Motor_i,(int)(request->proportionalgain),RpWarning,0,0);
}
- if (request->integraltime == true)
+ if (request->has_integraltime == true)
{
MotorControlConfig[Motor_i].m_params.Ki = request->integraltime;
ReportWithPackageFilter(ThreadFilter,"UpdatePidDuringRun Ki",__FILE__,Motor_i,(int)(request->integraltime),RpWarning,0,0);
}
- if (request->epsilon == true)
+ if (request->has_epsilon == true)
{
MotorControlConfig[Motor_i].m_params.epsilon = request->epsilon;
ReportWithPackageFilter(ThreadFilter,"UpdatePidDuringRun epsilon",__FILE__,Motor_i,(int)(request->epsilon*10000),RpWarning,0,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index 9c5fe9822..c1b54b4d6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
@@ -42,6 +42,7 @@ uint32_t Cartridge_Cover_Control;
button *CartLed[MaxWasteCartridges] = {0, &cart2, &cart3};
WasteTankStateEnum WasteTankState = WasteTankStateIdle;
+extern char WasteEmptyingToken[36+1];
int init = 1;
bool setWasteValve (WasteCartridgeEnum WasteCartridge);
@@ -165,7 +166,7 @@ WasteCartridgeEnum cartGetActiveCart()
{
uint32_t CartId;
- for (CartId = 0; CartId < MaxWasteCartridges; CartId++) {
+ for (CartId = WasteCartridge_middle; CartId < MaxWasteCartridges; CartId++) {
if (CartState[CartId] == CartridgeStateACTIVE)
return CartId;
}
@@ -223,10 +224,13 @@ bool setWasteValve (WasteCartridgeEnum WasteCartridge)
bool RdWasteTankEmptySensor()
{
//double WasteLevel = 0.0;
-
+#ifndef WHS_DEBUG
if (WHS_Type == WHS_TYPE_UNKNOWN) {
return WHS_GPI_WCONTAINER_WARN();
- } else { //new WHS
+ }
+ else
+#endif
+ { //new WHS
//WasteLevel = GetWHSWasteTankLevelMiliLiter();
if (wasteLevel < wasteLevelEmpty)
return 1; //Empty
@@ -237,10 +241,13 @@ bool RdWasteTankEmptySensor()
bool RdWasteTankFullSensor()
{
//double WasteLevel = 0.0;
-
+#ifndef WHS_DEBUG
if (WHS_Type == WHS_TYPE_UNKNOWN) {
return WHS_GPI_WCONTAINER_FULL();
- } else { //new WHS
+ }
+ else
+#endif
+ { //new WHS
//WasteLevel = GetWHSWasteTankLevelMiliLiter();
if (wasteLevel >= wasteLevelFull)
return 1; //full
@@ -251,10 +258,13 @@ bool RdWasteTankFullSensor()
bool RdWasteTankOverFlowSensor()
{
//double WasteLevel = 0.0;
-
+#ifndef WHS_DEBUG
if (WHS_Type == WHS_TYPE_UNKNOWN) {
return WHS_GPI_WASTE_OVERFULL();
- } else {//new WHS
+ }
+ else
+#endif
+ {//new WHS
//WasteLevel = GetWHSWasteTankLevelMiliLiter();
if (wasteLevel > wasteLevelOverflow)
return 1; //overflow
@@ -348,13 +358,14 @@ uint32_t Waste_DoorOpenDuringEmptying(uint32_t IfIndex, uint32_t ReadValue)
void Waste_StateMachine_OneSecond_Call(void)
{
static WasteTankStateEnum prev_state = 0;
- static int prev_wasteLevel = 0;
+ static int cart, prev_wasteLevel = 0;
+ static int insertUpdate[3] = {0, 0, 0};
//call cartridge state
if ((Is_Cartridge_Present(CART_2) != cartGetPresence(WasteCartridge_middle)) || (init)) {
if (Is_Cartridge_Present(CART_2)) {
cartCART_INSERTED(WasteCartridge_middle);
- CartridgeStateUpdate(CARTRIDGE_SLOT__WasteMiddle, CARTRIDGE_STATE__Inserted, 0);
+ insertUpdate[CARTRIDGE_SLOT__WasteMiddle-1] = 1;
} else {
cartCART_EXTRACTED(WasteCartridge_middle);
}
@@ -362,12 +373,20 @@ void Waste_StateMachine_OneSecond_Call(void)
if ((Is_Cartridge_Present(CART_3) != cartGetPresence(WasteCartridge_lower)) || (init)) {
if (Is_Cartridge_Present(CART_3)) {
cartCART_INSERTED(WasteCartridge_lower);
- CartridgeStateUpdate(CARTRIDGE_SLOT__WasteLower, CARTRIDGE_STATE__Inserted, 0);
+ insertUpdate[CARTRIDGE_SLOT__WasteLower-1] = 1;
} else {
cartCART_EXTRACTED(WasteCartridge_lower);
}
}
+ //update ppc
+ for (cart = WasteCartridge_middle; cart <= WasteCartridge_lower; cart++) {
+ if ((insertUpdate[cart]) && (WasteEmptyingToken[0])) {
+ CartridgeStateUpdate(cart, cart-1, CARTRIDGE_STATE__Inserted, 0);
+ insertUpdate[cart] = 0;
+ }
+ }
+
//call door state
cartCart_door();
@@ -467,7 +486,7 @@ void Waste_StateMachine(void)
//start emptying
// RFID change status - set wasteFilling
WasteTankState = WasteTankStateEmptying;
- CartridgeStateUpdate(activeCart, CARTRIDGE_STATE__Emptying, 0);
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Emptying, 0);
break;
case WasteTankStateEmptying:
// if time out or emptying done - idle
@@ -478,7 +497,7 @@ void Waste_StateMachine(void)
WasteTankState = WasteTankStateIdle;
usnprintf(str, 100, "WasteTankStateEmptying Timeout. time:%d:%d volume:%d", timeout_counter/60, timeout_counter%60, WHS_GetCartridgeFill());
Report(str, __FILE__, __LINE__, 0, RpMessage, 0, 0);
- CartridgeStateUpdate(activeCart, CARTRIDGE_STATE__Error, WHS_GetCartridgeFillPercent());
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Error, WHS_GetCartridgeFillPercent());
AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, true);
RemoveControlCallback(Cartridge_Cover_Control, Waste_DoorOpenDuringEmptying);
timeout_counter = 0;
@@ -493,10 +512,11 @@ void Waste_StateMachine(void)
AlarmHandlingSetAlarm( EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL, true);
usnprintf(str, 100, "WasteTankStateEmptying done. time:%d:%d volume:%d", timeout_counter/60, timeout_counter%60, WHS_GetCartridgeFill());
Report(str, __FILE__, __LINE__, 0, RpMessage, 0, 0);
- CartridgeStateUpdate(activeCart, CARTRIDGE_STATE__EmptyingCompleted, WHS_GetCartridgeFillPercent());
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__EmptyingCompleted, WHS_GetCartridgeFillPercent());
timeout_counter = 0;
}
- CartridgeStateUpdate(activeCart, CARTRIDGE_STATE__Emptying, WHS_GetCartridgeFillPercent());
+ if (WasteTankState == WasteTankStateEmptying)
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Emptying, WHS_GetCartridgeFillPercent());
#ifdef WHS_DEBUG
wasteLevel -= 100;
timeout_counter += 10;
@@ -517,7 +537,7 @@ void Waste_StateMachine(void)
AlarmHandlingSetAlarm( EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL, true);
Report("WasteTankStatePaused done", __FILE__, __LINE__, 0, RpMessage, 0, 0);
timeout_counter = 0;
- CartridgeStateUpdate(activeCart, CARTRIDGE_STATE__Error, WHS_GetCartridgeFillPercent());
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Error, WHS_GetCartridgeFillPercent());
}
break;
default: