diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-12-05 11:48:37 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-12-05 11:48:37 +0200 |
| commit | 027afa7e01a5fd7d07102d96436bb4caed95e3ce (patch) | |
| tree | 1b40fe773f19bcae980ac49d0270a3e37b46b4cf /Software/Embedded_SW/Embedded/Modules | |
| parent | 49abc5415f38bfd61a38d51b74a1594847bb49e7 (diff) | |
| download | Tango-027afa7e01a5fd7d07102d96436bb4caed95e3ce.tar.gz Tango-027afa7e01a5fd7d07102d96436bb4caed95e3ce.zip | |
valve actions in tech board
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c | 92 |
1 files changed, 92 insertions, 0 deletions
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 <PMR/Diagnostics/SetDigitalOutRequest.pb-c.h> #include <PMR/Diagnostics/SetDigitalOutResponse.pb-c.h> +#include <PMR/Diagnostics/SetValveStateRequest.pb-c.h> +#include <PMR/Diagnostics/SetValveStateResponse.pb-c.h> +#include <PMR/Diagnostics/ValveType.pb-c.h> +#include <PMR/Diagnostics/ValveStateCode.pb-c.h> #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; +} |
