diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-09 16:46:20 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-09 16:46:20 +0300 |
| commit | 07276289ff121853256bb894bc3040c4f5bfb2b0 (patch) | |
| tree | 369835914beffe3330a3f16150e8a6ce70f10b46 /Software/Embedded_SW/Embedded/Modules | |
| parent | 67bfd778a15597bb213c94fa5c2f5495fafd7c66 (diff) | |
| download | Tango-07276289ff121853256bb894bc3040c4f5bfb2b0.tar.gz Tango-07276289ff121853256bb894bc3040c4f5bfb2b0.zip | |
ifs filling / waste emptying interface
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
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() |
