aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-17 14:39:41 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-17 14:39:41 +0200
commit0d836ced3dbe4a31916064bdf89fe1c8283c011f (patch)
tree6f7b0545148fd8e52ed49e1bfd6e473a690899a0 /Software/Embedded_SW
parente29b3fcf2531b0c50cf1707e552ba72baa060800 (diff)
downloadTango-0d836ced3dbe4a31916064bdf89fe1c8283c011f.tar.gz
Tango-0d836ced3dbe4a31916064bdf89fe1c8283c011f.zip
Version 1.5.2(1): fix some bugs. improve / fix Update Pid during run, and cartridge state
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c9
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Main.c36
-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/Thread/Thread_init.c7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c49
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c1
11 files changed, 105 insertions, 47 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
index 76c2fe9f2..77efa1cfd 100644
--- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
+++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
@@ -653,7 +653,7 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
GetFilesRequest* request = get_files_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
GetFilesResponse response = GET_FILES_RESPONSE__INIT;
-
+ //struct tm RTC_time;
#define MAX_NUM_OF_FILES 20
DIR dir;
FILINFO* fno[MAX_NUM_OF_FILES];
@@ -727,6 +727,13 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
else
usnprintf(&FullPath[i], 50, "%s%s%s", request->path,"/", fno[i]->fname);
Data[i].fullpath = &FullPath[i][0];
+ /*RTC_time.tm_year=(fno[i]->fdate>>9)+1980;//populate the time struct (FAT start==1980, RTC.year==0)
+ RTC_time.tm_mon=(fno[i]->fdate>>5)&0x000F;
+ RTC_time.tm_mday=fno[i]->fdate&0x001F;
+ RTC_time.tm_hour=(fno[i]->ftime>>11)&0x001F;
+ RTC_time.tm_min=(fno[i]->ftime>>5)&0x003F;
+ RTC_time.tm_sec=(fno[i]->ftime<<1)&0x003E;*/
+
}
response.n_items = NumOfFiles;
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
index fd6889185..d0193f970 100644
--- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
+++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
@@ -20,7 +20,7 @@ typedef struct
} TangoVersion_t;
-TangoVersion_t _gTangoVersion = {1,5,2,0};
+TangoVersion_t _gTangoVersion = {1,5,2,1};
#define BUILD_DATE __DATE__
char Dat[50] = BUILD_DATE;
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index c1d83abb3..ed1ecbefa 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -182,8 +182,8 @@ Void errHook(Error_Block *eb)
System_printf("assertion violation: ");
f_write(LogFileHandle,"\r\nassertion violation: ",22,&Bytes );
}
+ CloseLogFile();
}
- CloseLogFile();
#ifdef WATCHDOG
@@ -222,6 +222,7 @@ void Init_EVB()
int main(void)
{
+ FRESULT Fresult = FR_OK;
// Enable interrupts to the processor.
//
ROM_IntMasterDisable();
@@ -255,6 +256,39 @@ int main(void)
LOG_ERROR (iFResult, "Error during init Flash File System");
assert(iFResult);
}
+ Fresult = f_mkdir("0://SysInfo");
+ if ((Fresult != FR_OK)&&(Fresult != FR_EXIST))
+ {
+#ifdef WATCHDOG
+ ROM_WatchdogResetDisable(WATCHDOG0_BASE);
+ uint32_t timeout = 0xFFFFFFFFU;
+ ROM_WatchdogReloadSet(WATCHDOG0_BASE, timeout);
+#endif
+ STATUS_GREEN_LED_ON;
+ ACTIVITY_GREEN_LED_ON;
+ COMM_GREEN_LED_ON;
+
+ STATUS_RED_LED_ON;
+ ACTIVITY_RED_LED_ON;
+ COMM_RED_LED_ON;
+ //FFS error
+ Report("FFS error - rebuilding", __FILE__,__LINE__,Fresult, RpMessage,0, 0);
+ FRESULT iFResult = Init_Flash_File_System(true);// true
+ Fresult = f_mkdir("0://SysInfo");
+
+ ACTIVITY_GREEN_LED_OFF;
+ COMM_GREEN_LED_OFF;
+
+ STATUS_RED_LED_OFF;
+ ACTIVITY_RED_LED_OFF;
+ COMM_RED_LED_OFF;
+#ifdef WATCHDOG
+ ROM_WatchdogResetEnable(WATCHDOG0_BASE);
+ timeout = 120000000*3;
+ ROM_WatchdogReloadSet(WATCHDOG0_BASE, timeout);
+#endif
+ }
+
OpenLogFile();
Data = MCU_E2PromEmbeddedVersionRead();
memcpy (&Version,&Data,4);
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/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
index 626bcde7c..8d798b402 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
@@ -217,12 +217,7 @@ uint32_t StoreDancerConfigMessage(int DancerId)
status |= MCU_E2PromProgram(DancerAddress[Dancer_i],DancersCfg[Dancer_i].zeropoint);
- Report("~~~~~~Store eeprom 0",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg[1].zeropoint,RpWarning,(int)DancersCfg[2].zeropoint,0);
-#ifdef FOUR_WINDERS
- status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_3,DancersCfg[HARDWARE_DANCER_3].zeropoint);
- status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_4,DancersCfg[HARDWARE_DANCER_4].zeropoint);
- Report("~~~~~~Store eeprom 1",__FILE__,__LINE__,(int)DancersCfg[HARDWARE_DANCER_3].zeropoint,RpWarning,(int)DancersCfg[HARDWARE_DANCER_4].zeropoint,0);
-#endif
+ Report("~~~~~~Store eeprom",__FILE__,__LINE__,Dancer_i,RpWarning,(int)DancersCfg[Dancer_i].zeropoint,0);
/*
response_buffer = my_malloc(hardware_configuration__get_packed_size(&DancerConfig));
if (response_buffer)
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..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:
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index 98326a1da..5d97a0003 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -917,6 +917,7 @@ uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage)
{
RemoveControlCallback(PowerUpLoadControlId, PowerUpUpdateCallBackFunction);
PowerUpLoadControlId = 0xFF;
+ PowerUpStopReporting();
}
}
return status;