aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-10-09 16:46:20 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-10-09 16:46:20 +0300
commit07276289ff121853256bb894bc3040c4f5bfb2b0 (patch)
tree369835914beffe3330a3f16150e8a6ce70f10b46 /Software/Embedded_SW/Embedded/Modules
parent67bfd778a15597bb213c94fa5c2f5495fafd7c66 (diff)
downloadTango-07276289ff121853256bb894bc3040c4f5bfb2b0.tar.gz
Tango-07276289ff121853256bb894bc3040c4f5bfb2b0.zip
ifs filling / waste emptying interface
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c51
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c51
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c55
8 files changed, 159 insertions, 5 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 120df71df..de45cacaa 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -36,6 +36,7 @@
#include "modules/thread/thread_ex.h"
#include "modules/heaters/heaters_ex.h"
#include "modules/ids/ids_ex.h"
+#include "modules/waste/waste_ex.h"
#include <PMR/Diagnostics/Event.pb-c.h>
#include <PMR/Diagnostics/EventType.pb-c.h>
#include <PMR/Diagnostics/StartEventsNotificationRequest.pb-c.h>
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index 9297d3bb8..b9bcc1624 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -27,7 +27,9 @@
#include "StateMachines/Initialization/InitSequence.h"
#include "Modules/General/MachineStatus.h"
+#include "Modules/AlarmHandling/AlarmHandling.h"
#include "Modules/Control/MillisecTask.h"
+#include "modules/waste/waste_ex.h"
#include "modules/ids/ids_ex.h"
MachineState StoredMachineStatus = MACHINE_STATE__PowerUp;
@@ -78,6 +80,7 @@ int MachineUpdateResponseFunc(void)
int1valid = false;
if((internaltemp2<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=internaltemp2))
int2valid = false;
+ MachineStatus.has_overalltemperature = true;
if ((int2valid == true)&&(int1valid == true))
{
usetemp = (max(internaltemp1,internaltemp2))/100;
@@ -89,17 +92,19 @@ int MachineUpdateResponseFunc(void)
}
else
{
- AlarmHandlingSetAlarm(EVENT_TYPE__TEMPERATURE_MEASUREMENT_ERROR, true);
+ //AlarmHandlingSetAlarm(EVENT_TYPE__TEMPERATURE_MEASUREMENT_ERROR, true);
temp_measure_alarm = true;
if ((int2valid == false)&&(int1valid == true))
usetemp = internaltemp1/100;
else if ((int2valid == false)&&(int1valid == false))
+ {
+ MachineStatus.has_overalltemperature = FALSE;
usetemp = 0;
+ }
else if ((int1valid == false)&&(int2valid == true))
usetemp = internaltemp2/100;
}
- MachineStatus.has_overalltemperature = true;
if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT)
@@ -133,7 +138,47 @@ int MachineUpdateResponseFunc(void)
}
else
return ERROR;
-
+ MachineStatus.has_middlecartridgestate = true;
+ switch (cartGetState(WasteCartridge_middle))
+ {
+ case CartridgeStateOUT:
+ MachineStatus.middlecartridgestate = WASTE_CARTRIDGE_STATE__CartAbsent;
+ break;
+ case CartridgeStateIN:
+ case CartridgeStateSELECTED:
+ MachineStatus.middlecartridgestate = WASTE_CARTRIDGE_STATE__CartEmpty;
+ break;
+ case CartridgeStateACTIVE:
+ MachineStatus.middlecartridgestate = WASTE_CARTRIDGE_STATE__CartFilling;
+ break;
+ case CartridgeStateFULL:
+ MachineStatus.middlecartridgestate = WASTE_CARTRIDGE_STATE__CartFull;
+ break;
+ default:
+ MachineStatus.middlecartridgestate = WASTE_CARTRIDGE_STATE__CartAbsent;
+ break;
+ }
+ MachineStatus.has_lowercartridgestate = true;
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartAbsent;
+ switch (cartGetState(WasteCartridge_lower))
+ {
+ case CartridgeStateOUT:
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartAbsent;
+ break;
+ case CartridgeStateIN:
+ case CartridgeStateSELECTED:
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartEmpty;
+ break;
+ case CartridgeStateACTIVE:
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartFilling;
+ break;
+ case CartridgeStateFULL:
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartFull;
+ break;
+ default:
+ MachineStatus.lowercartridgestate = WASTE_CARTRIDGE_STATE__CartAbsent;
+ break;
+ }
responseContainer = /*MachineUpdate*/createContainer(MESSAGE_TYPE__StartMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &start_machine_status_update_response__pack, &start_machine_status_update_response__get_packed_size);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 6d50eb926..e85694c48 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -47,6 +47,7 @@ double PressureSensorGetPressure(uint8_t SensorId);
int HeadBlowersGetRPM(uint8_t fanId);
double PressureSensorInit();
void HeadBlowersInit();
+uint32_t HeadBlowerPidRequestMessage(void* request, int BlowerId);
void HeadBlowersCfg();
void HeadBlowersControlLoop ();
uint32_t HeadBlowerCommandRequestMessage(int blowerId, float flow);
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index 747df1a61..abad051cb 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -11,10 +11,14 @@
#include <DataDef.h>
#include "PMR/Diagnostics/CartridgeSlot.pb-c.h"
#include "PMR/Diagnostics/CartridgeTagContent.pb-c.h"
+#include "PMR/Diagnostics/StartInkFillingRequest.pb-c.h"
+#include "PMR/Diagnostics/StartInkFillingResponse.pb-c.h"
+#include "PMR/Diagnostics/FillingAction.pb-c.h"
#include <Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h>
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"//#include "FPGA_GPIO.h" // use for FPGA IO
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "StateMachines/Initialization/PowerOffSequence.h"
+#include <Utilities/RfidTagHandling.h>
#include "include.h"
#include "Modules/IDS/ids_ex.h"
@@ -229,7 +233,54 @@ bool CartridgeValidationResponseFunc(MessageContainer* requestContainer)
}
return OK;
}
+char InkFillingToken[36+1] = {0};
+uint32_t InkFillingUpdate(POWER_OFF_STAGES_ENUM stage)
+{
+ uint32_t status = NOT_SUPPORTED;
+ MessageContainer responseContainer;
+
+ StartInkFillingResponse response = START_INK_FILLING_RESPONSE__INIT;
+ Cartridge Cartridge = CARTRIDGE__INIT;
+ response.action = FILLING_ACTION__None;
+ response.has_action = true;
+ response.cartridge = LoadCartridgeData(CART_1,&Cartridge);
+
+ response.cartridge = NULL;
+ response.has_progresspercentage = true;
+ response.progresspercentage = 0.0;
+ response.message = NULL;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StartInkFillingResponse, InkFillingToken, false, &response, &start_ink_filling_response__pack, &start_ink_filling_response__get_packed_size);
+ responseContainer.has_continuous = true;
+ responseContainer.continuous = true;
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ my_free(responseContainer.data.data);
+ //USBCDCD_sendData(container_buffer, container_size,10);
+
+ SendChars((char*)container_buffer, container_size);
+ //MessageContainer responseContainer;
+
+ return status;
+}
+
+uint32_t StartInkFillingRequestFunc(MessageContainer* requestContainer)
+{
+ uint32_t status = NOT_SUPPORTED;
+ //MessageContainer responseContainer;
+// MachineUpdateInitParams InitParams;
+
+ Report("StartInkFillingRequestFunc",__FILE__,__LINE__,(int)0,RpWarning,(int)0,0);
+ StartInkFillingRequest* request = start_ink_filling_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ ustrncpy (InkFillingToken, requestContainer->token,36);
+
+ InkFillingUpdate(POWER_OFF_INIT);
+ start_ink_filling_request__free_unpacked(request,NULL);
+ return status;
+// case MESSAGE_TYPE__StartWasteEmptyingRequest:
+
+}
void ResponseDemo(int MidtankId)
{
inkAuthenticationPass = true;
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h
index 0f95fb2e2..dec1544ec 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h
@@ -28,5 +28,6 @@ bool IFS_MidTankFilling(void);
MidTank_t IFS_MidTankIsActive(void);
bool IFS_CartridgeLowerPresent();
bool CartridgeValidationResponseFunc(MessageContainer* requestContainer);
+uint32_t StartInkFillingRequestFunc(MessageContainer* requestContainer);
#endif /* MODULES_IFS_IFS_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 6edc5b3f2..d0d2c1ef7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -16,7 +16,7 @@
#include "Modules/Control/control.h"
#include "Modules/General/process.h"
#include "Modules/control/pidalgo.h"
-
+#include "Modules/AlarmHandling/AlarmHandling.h"
#include "Modules/heaters/heaters_ex.h"
#include "Modules/General/buttons.h"
#include "StateMachines/Initialization/InitSequence.h"
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h
index 0a7534635..38e3236cc 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h
@@ -47,6 +47,8 @@ bool WHS_IsEmptying();
uint32_t Waste_CheckState(void);
uint32_t Waste_Prepare(void);
bool WHS_IsVocPpmOverAlarmLimit();
+uint32_t StartWasteEmptyingRequestFunc(MessageContainer* requestContainer);
+
extern bool ReadingVocEverySec;
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index 84609035a..6d338cbf7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
@@ -6,13 +6,17 @@
#include "drivers/Valves/Valve.h"
#include "Common/report/report.h"
#include "Modules/Waste/Waste_ex.h"
+#include "modules/heaters/heaters_ex.h"
#include <Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h>
#include "Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.h"
#include <Drivers/I2C_Communication/RFID_NFC/NFC_MainBaord.h>
#include "Drivers/I2C_Communication/RFID_NFC/NFC.h"
-//#include <Utilities/RfidTagHandling.h>
+#include <Utilities/RfidTagHandling.h>
#include <PMR/Diagnostics/EventType.pb-c.h>
+#include "PMR/Diagnostics/FillingAction.pb-c.h"
+#include "PMR/Diagnostics/StartWasteEmptyingRequest.pb-c.h"
+#include "PMR/Diagnostics/StartWasteEmptyingResponse.pb-c.h"
#include "Modules/AlarmHandling/AlarmHandling.h"
#include "StateMachines/Initialization/PowerOffSequence.h"
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
@@ -501,6 +505,53 @@ void Waste_StateMachine(void)
break;
}
}
+char WasteEmptyingToken[36+1] = {0};
+uint32_t WasteEmptyingUpdate(POWER_OFF_STAGES_ENUM stage)
+{
+ uint32_t status = NOT_SUPPORTED;
+ MessageContainer responseContainer;
+
+ StartWasteEmptyingResponse response = START_WASTE_EMPTYING_RESPONSE__INIT;
+ response.action = FILLING_ACTION__None;
+ response.has_action = true;
+ //response.cartridge = LoadCartridgeData(); response.cartridge = LoadCartridgeData();
+
+ response.cartridge = NULL;
+ response.has_progresspercentage = true;
+ response.progresspercentage = 0.0;
+ response.message = NULL;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StartWasteEmptyingResponse, WasteEmptyingToken, false, &response, &start_waste_emptying_response__pack, &start_waste_emptying_response__get_packed_size);
+ responseContainer.has_continuous = true;
+ responseContainer.continuous = true;
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ my_free(responseContainer.data.data);
+ //USBCDCD_sendData(container_buffer, container_size,10);
+
+ SendChars((char*)container_buffer, container_size);
+ //MessageContainer responseContainer;
+
+ return status;
+}
+
+uint32_t StartWasteEmptyingRequestFunc(MessageContainer* requestContainer)
+{
+ uint32_t status = NOT_SUPPORTED;
+ //MessageContainer responseContainer;
+
+// MachineUpdateInitParams InitParams;
+
+ Report("StartWasteEmptyingRequestFunc",__FILE__,__LINE__,(int)0,RpWarning,(int)0,0);
+ StartWasteEmptyingRequest* request = start_waste_emptying_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ ustrncpy (WasteEmptyingToken, requestContainer->token,36);
+
+ WasteEmptyingUpdate(POWER_OFF_INIT);
+ start_waste_emptying_request__free_unpacked(request,NULL);
+ return status;
+// case MESSAGE_TYPE__StartWasteEmptyingRequest:
+
+}
uint32_t Waste_CheckState(void)
{
//check if the waste is ready to run - waste level not above overflow level and no cartridge in the slots
@@ -572,6 +623,7 @@ uint32_t Waste_PrepareCallbak(uint32_t IfIndex, uint32_t ReadValue)
PrepareReady(Module_Waste,ModuleDone);
}
Report("Module waste prepare", __FILE__, __LINE__, headready, RpMessage, whsready, 0);
+ return OK;
}
uint32_t Waste_Prepare(void)
{
@@ -581,6 +633,7 @@ uint32_t Waste_Prepare(void)
//check that blowers are within 10% of designated flow: WHS, head blowers
WasteReadyControlId = AddControlCallback("Cartridge Cover Door", Waste_PrepareCallbak, eOneSecond, TemplateDataReadCBFunction, 0, 0, 0);
Report("Module waste prepare", __FILE__, __LINE__, Head_Type, RpMessage, WHS_Type, 0);
+ return OK;
}
bool WHS_IsVocPpmOverAlarmLimit()