From 027afa7e01a5fd7d07102d96436bb4caed95e3ce Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 5 Dec 2018 11:48:37 +0200 Subject: valve actions in tech board --- .../Modules/Diagnostics/DiagnosticActions.c | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index 6d575e17b..3a7672bb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -16,6 +16,10 @@ #include #include +#include +#include +#include +#include #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/I2C_Communication/DAC/blower.h" @@ -190,6 +194,94 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) return OK; } +/******************************************************************************** + *Valve Setting + ********************************************************************************/ +uint32_t SetValveStateRequestFunc(MessageContainer* requestContainer) +{ + MessageContainer responseContainer; + uint8_t* container_buffer; + uint32_t status = OK; + uint32_t valve; + SetValveStateRequest* request = set_component_value_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + + + SetValveStateResponse response = SET_VALVE_STATE_RESPONSE__INIT; + + responseContainer = createContainer(MESSAGE_TYPE__SetValveStateResponse, requestContainer->token, true, &response, &set_valve_state_response__pack, &set_valve_state_response__get_packed_size); + container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); + + + if (request->valvetype <= VALVE_TYPE__DispenserValve8 ) //dispenser 3 way valves + { + valve = request->valvetype; + if (request->state == VALVE_STATE_CODE__MidTank) + { + Control3WayValvesWithCallback(request->valvetype,MidTank_Dispenser,NULL); + } + else if (request->state == VALVE_STATE_CODE__VGroove) + { + Control3WayValvesWithCallback(request->valvetype,Dispenser_Mixer,NULL); + } + else + status = ERROR; + } + else if (request->valvetype <= VALVE_TYPE__MidTankInkValve8 ) //midtank toward dispenser + { + valve = IDS_Id_to_CartrideValve[request->valvetype - VALVE_TYPE__MidTankInkValve1]; + if (request->state == VALVE_STATE_CODE__Open) + { + Valve_Set(valve,Cartridge_MidTank_ON); + } + else if (request->state == VALVE_STATE_CODE__Close) + { + Valve_Set(valve,Cartridge_MidTank_OFF); + } + else + status = ERROR; + + } + else if (request->valvetype <= VALVE_TYPE__MidTankAirValve8 )//midtank toward air + { + valve = IDS_Id_to_AirValve[request->valvetype - VALVE_TYPE__MidTankAirValve1]; + if (request->state == VALVE_STATE_CODE__Open) + { + Valve_Set(valve,Atm_MidTank_ON); + } + else if (request->state == VALVE_STATE_CODE__Close) + { + Valve_Set(valve,Atm_MidTank_OFF); + } + else + status = ERROR; + } + else if (request->valvetype <= VALVE_TYPE__CartridgeWasteValve ) //not supported + { + status = FAILED; + } + else if (request->valvetype <= VALVE_TYPE__CartridgeInkValve8 ) //cartridge - not supported yet + { + status = FAILED; + } + else + { + status = FAILED; + } + + if (status == FAILED) + { + status = ERROR; + responseContainer.has_error = true; + responseContainer.error = ERROR_CODE__GENERAL_ERROR; + } + size_t container_size = message_container__pack(&responseContainer, container_buffer); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); + set_valve_state_request__free_unpacked(request,NULL); + + return status; +} -- cgit v1.3.1