aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorRonen Sberlo <ronen.s@twine-s.com>2020-11-17 10:31:13 +0200
committerRonen Sberlo <ronen.s@twine-s.com>2020-11-17 10:31:13 +0200
commit618d8e5006d19aad8cf57c4a3ffb7c8293292b90 (patch)
tree0dffcf6e40ab50680f1cb3bd74de38df3bf03f45 /Software/Embedded_SW
parente29b3fcf2531b0c50cf1707e552ba72baa060800 (diff)
downloadTango-618d8e5006d19aad8cf57c4a3ffb7c8293292b90.tar.gz
Tango-618d8e5006d19aad8cf57c4a3ffb7c8293292b90.zip
waste/ifs ppc status update
Diffstat (limited to 'Software/Embedded_SW')
-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.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c18
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c49
5 files changed, 55 insertions, 34 deletions
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..aa2520057 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;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index 329357ed4..9f7a342ba 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -284,7 +284,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 +305,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 +325,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 +356,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 +366,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 +376,9 @@ 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());
+ 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/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index 9c5fe9822..f0b148b83 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,10 @@ 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());
+ CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Emptying, WHS_GetCartridgeFillPercent());
#ifdef WHS_DEBUG
wasteLevel -= 100;
timeout_counter += 10;
@@ -517,7 +536,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: