aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-12-05 11:48:37 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-12-05 11:48:37 +0200
commit027afa7e01a5fd7d07102d96436bb4caed95e3ce (patch)
tree1b40fe773f19bcae980ac49d0270a3e37b46b4cf /Software/Embedded_SW/Embedded/Modules
parent49abc5415f38bfd61a38d51b74a1594847bb49e7 (diff)
downloadTango-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.c92
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;
+}