aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-09-03 11:52:45 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-09-03 11:52:45 +0300
commita7fe3ddc7349fe00f0772f6aae32ca186495ff40 (patch)
tree3b0d4b6d936e43fb5b2c64272e97522754b3f4e5 /Software/Embedded_SW
parentcfb996898f8a35f992789fb7548117aebbfa84f7 (diff)
downloadTango-a7fe3ddc7349fe00f0772f6aae32ca186495ff40.tar.gz
Tango-a7fe3ddc7349fe00f0772f6aae32ca186495ff40.zip
Dispenser homing functions moved to IDS. valves external interface improved
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Connection.c5
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h36
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c3
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.h68
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c15
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c93
8 files changed, 154 insertions, 74 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c
index 0b539b276..b01750529 100644
--- a/Software/Embedded_SW/Embedded/Communication/Connection.c
+++ b/Software/Embedded_SW/Embedded/Communication/Connection.c
@@ -64,11 +64,11 @@ void ConnectionRequest(MessageContainer* requestContainer)
FPGA_ReadVersion(1, &Major, &Year, &Month, &Day);
usnprintf(FPGA2Version, 20, "%d.%d.%d.%d",Major,Year, Month, Day);
- DevInfo.fpga2version = FPGA1Version;
+ DevInfo.fpga2version = FPGA2Version;
FPGA_ReadVersion(2, &Major, &Year, &Month, &Day);
usnprintf(FPGA3Version, 20, "%d.%d.%d.%d",Major,Year, Month, Day);
- DevInfo.fpga3version = FPGA1Version;
+ DevInfo.fpga3version = FPGA3Version;
Read_HW_Version(BoardVersion, AssyVersion);
@@ -76,6 +76,7 @@ void ConnectionRequest(MessageContainer* requestContainer)
DevInfo.assemblyversion = AssyVersion;
+
responseContainer = createContainer(MESSAGE_TYPE__ConnectResponse, requestContainer->token, true, &response, &connect_response__pack, &connect_response__get_packed_size);
//-------------------------------------------------------------------------------------------
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
index ede5df6a4..bc740449e 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
@@ -1030,29 +1030,29 @@ typedef union
//F3_VALVE_OUT
typedef union
-{ //--------------------------//
- struct // A - Air //
- { // C - Cartridge //
- //Dry air Valves // L - Left //
+{ //--------------------------//
+ struct // A - Air //
+ { // C - Cartridge //
+ //Dry air Valves // L - Left //
bool VALVE_2W_MID_AIR_8 : 1; //0 MIDTANK2MANIF4_VALVE_2 // R - Right //
bool VALVE_2W_MID_AIR_4 : 1; //1 MIDTANK2MANIF4_VALVE_1 // F - Front //
- bool VALVE_2W_MID_AIR_7 : 1; //2 MIDTANK2MANIF3_VALVE_2 // B - Back //
- bool VALVE_2W_MID_AIR_3 : 1; //3 MIDTANK2MANIF3_VALVE_1 // M - Middle //
- bool VALVE_2W_MID_AIR_6 : 1; //4 MIDTANK2MANIF2_VALVE_2 // -------------------- //
- bool VALVE_2W_MID_AIR_2 : 1; //5 MIDTANK2MANIF2_VALVE_1 // A [7] A [8] //
- bool VALVE_2W_MID_AIR_5 : 1; //6 MIDTANK2MANIF1_VALVE_2 // C [7] C [8] //
+ bool VALVE_2W_MID_AIR_7 : 1; //2 MIDTANK2MANIF3_VALVE_2 // B - Back //
+ bool VALVE_2W_MID_AIR_3 : 1; //3 MIDTANK2MANIF3_VALVE_1 // M - Middle //
+ bool VALVE_2W_MID_AIR_6 : 1; //4 MIDTANK2MANIF2_VALVE_2 // -------------------- //
+ bool VALVE_2W_MID_AIR_2 : 1; //5 MIDTANK2MANIF2_VALVE_1 // A [7] A [8] //
+ bool VALVE_2W_MID_AIR_5 : 1; //6 MIDTANK2MANIF1_VALVE_2 // C [7] C [8] //
bool VALVE_2W_MID_AIR_1 : 1; //7 MIDTANK2MANIF1_VALVE_1 // //
- // A [5] A [6] //
- bool VALVE_2W_CART_MID_8 : 1; //8 CART2MIDTANK4_VALVE_2 // C [5] C [6] //
+ // A [5] A [6] //
+ bool VALVE_2W_CART_MID_8 : 1; //8 CART2MIDTANK4_VALVE_2 // C [5] C [6] //
bool VALVE_2W_CART_MID_4 : 1; //9 CART2MIDTANK4_VALVE_1 // //
- bool VALVE_2W_CART_MID_7 : 1; //10 CART2MIDTANK3_VALVE_2 // A [3] A [4] //
- bool VALVE_2W_CART_MID_3 : 1; //11 CART2MIDTANK3_VALVE_1 // C [3] C [4] //
- bool VALVE_2W_CART_MID_6 : 1; //12 CART2MIDTANK2_VALVE_2 // //
- bool VALVE_2W_CART_MID_2 : 1; //13 CART2MIDTANK2_VALVE_1 // A [1] A [2] //
- bool VALVE_2W_CART_MID_5 : 1; //14 CART2MIDTANK1_VALVE_2 // C [1] C [2] //
+ bool VALVE_2W_CART_MID_7 : 1; //10 CART2MIDTANK3_VALVE_2 // A [3] A [4] //
+ bool VALVE_2W_CART_MID_3 : 1; //11 CART2MIDTANK3_VALVE_1 // C [3] C [4] //
+ bool VALVE_2W_CART_MID_6 : 1; //12 CART2MIDTANK2_VALVE_2 // //
+ bool VALVE_2W_CART_MID_2 : 1; //13 CART2MIDTANK2_VALVE_1 // A [1] A [2] //
+ bool VALVE_2W_CART_MID_5 : 1; //14 CART2MIDTANK1_VALVE_2 // C [1] C [2] //
bool VALVE_2W_CART_MID_1 : 1; //15 CART2MIDTANK1_VALVE_1 // //
- }bits; // FRONT //
- unsigned short ushort; //--------------------------//
+ }bits; // FRONT //
+ unsigned short ushort; //--------------------------//
}VALVE_GPO_REG;
diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
index 66d6c457b..51446df69 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
@@ -24,6 +24,9 @@ VALVE_GPO_REG Valve_GPO_Reg;
F1_GPO_REG F1_GPO_Reg;
DISPENSER_VALVE_GPO_REG Dispenser_Valve_GPO_Reg;
+Valves_t IDS_Id_to_AirValve[MAX_IDS_UNITS] = {VALVE_2W_MID_AIR_1,VALVE_2W_MID_AIR_2,VALVE_2W_MID_AIR_3,VALVE_2W_MID_AIR_4,VALVE_2W_MID_AIR_5,VALVE_2W_MID_AIR_6,VALVE_2W_MID_AIR_7,VALVE_2W_MID_AIR_8};
+Valves_t IDS_Id_to_CartrideValve[MAX_IDS_UNITS] = {VALVE_2W_CART_MID_1,VALVE_2W_CART_MID_2,VALVE_2W_CART_MID_3,VALVE_2W_CART_MID_4,VALVE_2W_CART_MID_5,VALVE_2W_CART_MID_6,VALVE_2W_CART_MID_7,VALVE_2W_CART_MID_8};
+
typedef struct
{
//bool EnableDisable; //TODO - to check if needed
diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.h b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.h
index ec6de35e1..df20d05ff 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.h
@@ -8,7 +8,7 @@
#ifndef DRIVERS_VALVES_VALVE_H_
#define DRIVERS_VALVES_VALVE_H_
-
+#define MAX_IDS_UNITS 8
typedef enum
{
//Dispenser Valves
@@ -21,54 +21,28 @@ typedef enum
VALVE_DISPENSER_6,
VALVE_DISPENSER_7,
VALVE_DISPENSER_8,
-/* new
- //---------------------------------------------------------------------------//
- //Dry Air - Middle Tank // A - Air //
- VALVE_2W_MID_AIR_RB, //MIDTANK2MANIF4_VALVE_2 // C - Cartridge //
- VALVE_2W_MID_AIR_RMB, //MIDTANK2MANIF4_VALVE_1 // L - Left //
- VALVE_2W_MID_AIR_RMF, //MIDTANK2MANIF3_VALVE_2 // R - Right //
- VALVE_2W_MID_AIR_RF, //MIDTANK2MANIF3_VALVE_1 // F - Front //
- VALVE_2W_MID_AIR_LB, //MIDTANK2MANIF2_VALVE_2 // B - Back //
- VALVE_2W_MID_AIR_LMB, //MIDTANK2MANIF2_VALVE_1 // M - Middle //
- VALVE_2W_MID_AIR_LMF, //MIDTANK2MANIF1_VALVE_2 // -------------------- //
- VALVE_2W_MID_AIR_LF, //MIDTANK2MANIF1_VALVE_1 // A [LB] A [RB] //
- // C [LB] C [RB] //
- // //
- // A [LMB] A [RMB] //
- //Cartridge - Middle Tank // C [LMB] C [RMB] //
- VALVE_2W_CART_MID_RB, //CART2MIDTANK4_VALVE_2 // //
- VALVE_2W_CART_MID_RMB, //CART2MIDTANK4_VALVE_1 // A [LMF] A [RMF] //
- VALVE_2W_CART_MID_RMF, //CART2MIDTANK3_VALVE_2 // C [LMF] C [RMF] //
- VALVE_2W_CART_MID_RF, //CART2MIDTANK3_VALVE_1 // //
- VALVE_2W_CART_MID_LB, //CART2MIDTANK2_VALVE_2 // A [LF] A [RF] //
- VALVE_2W_CART_MID_LMB, //CART2MIDTANK2_VALVE_1 // C [LF] C [RF] //
- VALVE_2W_CART_MID_LMF, //CART2MIDTANK1_VALVE_2 // //
- VALVE_2W_CART_MID_LF, //CART2MIDTANK1_VALVE_1 // FRONT //
- //---------------------------------------------------------------------------//
-
-*/
//---------------------------------------------------------------------------//
//Dry Air - Middle Tank // A - Air //
- VALVE_2W_MID_AIR_8, //MIDTANK2MANIF4_VALVE_2 // C - Cartridge //
- VALVE_2W_MID_AIR_4, //MIDTANK2MANIF4_VALVE_1 // L - Left //
- VALVE_2W_MID_AIR_7, //MIDTANK2MANIF3_VALVE_2 // R - Right //
- VALVE_2W_MID_AIR_3, //MIDTANK2MANIF3_VALVE_1 // F - Front //
- VALVE_2W_MID_AIR_6, //MIDTANK2MANIF2_VALVE_2 // B - Back //
- VALVE_2W_MID_AIR_2, //MIDTANK2MANIF2_VALVE_1 // M - Middle //
- VALVE_2W_MID_AIR_5, //MIDTANK2MANIF1_VALVE_2 // -------------------- //
- VALVE_2W_MID_AIR_1, //MIDTANK2MANIF1_VALVE_1 // A [7] A [8] //
- // C [7] C [8] //
+ VALVE_2W_MID_AIR_8, //MIDTANK2MANIF4_VALVE_2 // C - Cartridge //
+ VALVE_2W_MID_AIR_4, //MIDTANK2MANIF4_VALVE_1 // L - Left //
+ VALVE_2W_MID_AIR_7, //MIDTANK2MANIF3_VALVE_2 // R - Right //
+ VALVE_2W_MID_AIR_3, //MIDTANK2MANIF3_VALVE_1 // F - Front //
+ VALVE_2W_MID_AIR_6, //MIDTANK2MANIF2_VALVE_2 // B - Back //
+ VALVE_2W_MID_AIR_2, //MIDTANK2MANIF2_VALVE_1 // M - Middle //
+ VALVE_2W_MID_AIR_5, //MIDTANK2MANIF1_VALVE_2 // -------------------- //
+ VALVE_2W_MID_AIR_1, //MIDTANK2MANIF1_VALVE_1 // A [7] A [8] //
+ // C [7] C [8] //
// //
- // A [5] A [6] //
- //Cartridge - Middle Tank // C [5] C [6] //
- VALVE_2W_CART_MID_8, //CART2MIDTANK4_VALVE_2 // //
- VALVE_2W_CART_MID_4, //CART2MIDTANK4_VALVE_1 // A [3] A [4] //
- VALVE_2W_CART_MID_7, //CART2MIDTANK3_VALVE_2 // C [3] C [4] //
- VALVE_2W_CART_MID_3, //CART2MIDTANK3_VALVE_1 // //
- VALVE_2W_CART_MID_6, //CART2MIDTANK2_VALVE_2 // A [1] A [2] //
- VALVE_2W_CART_MID_2, //CART2MIDTANK2_VALVE_1 // C [1] C [2] //
- VALVE_2W_CART_MID_5, //CART2MIDTANK1_VALVE_2 // //
- VALVE_2W_CART_MID_1, //CART2MIDTANK1_VALVE_1 // FRONT //
+ // A [5] A [6] //
+ //Cartridge - Middle Tank // C [5] C [6] //
+ VALVE_2W_CART_MID_8, //CART2MIDTANK4_VALVE_2 // //
+ VALVE_2W_CART_MID_4, //CART2MIDTANK4_VALVE_1 // A [3] A [4] //
+ VALVE_2W_CART_MID_7, //CART2MIDTANK3_VALVE_2 // C [3] C [4] //
+ VALVE_2W_CART_MID_3, //CART2MIDTANK3_VALVE_1 // //
+ VALVE_2W_CART_MID_6, //CART2MIDTANK2_VALVE_2 // A [1] A [2] //
+ VALVE_2W_CART_MID_2, //CART2MIDTANK2_VALVE_1 // C [1] C [2] //
+ VALVE_2W_CART_MID_5, //CART2MIDTANK1_VALVE_2 // //
+ VALVE_2W_CART_MID_1, //CART2MIDTANK1_VALVE_1 // FRONT //
//---------------------------------------------------------------------------//
// Waste Valves
@@ -78,6 +52,8 @@ typedef enum
NUM_OF_VALVES,
} Valves_t;
+extern Valves_t IDS_Id_to_AirValve[MAX_IDS_UNITS];
+extern Valves_t IDS_Id_to_CartrideValve[MAX_IDS_UNITS];
void Valve_Command(Valves_t Valve_Id);
void Valve_Set(Valves_t Valve_Id, bool Direction);
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 20466325a..261b9e049 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -104,14 +104,14 @@ AlarmHandlingItem AlarmItem[MAX_SYSTEM_ALARMS]={
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_UP_6,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__Dispenser6Empty,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_UP_7,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__Dispenser7Empty,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_UP_8,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__Dispenser8Empty,NULL},
-{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_1,false,true,DEBUG_LOG_CATEGORY__Warning,0,0,0,false,EVENT_TYPE__Dispenser1LowLevel,NULL},
+/*{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_1,false,true,DEBUG_LOG_CATEGORY__Warning,0,0,0,false,EVENT_TYPE__Dispenser1LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_2,false,true,DEBUG_LOG_CATEGORY__Warning,1,0,0,false,EVENT_TYPE__Dispenser2LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_3,false,true,DEBUG_LOG_CATEGORY__Warning,2,0,0,false,EVENT_TYPE__Dispenser3LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_4,false,true,DEBUG_LOG_CATEGORY__Warning,3,0,0,false,EVENT_TYPE__Dispenser4LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_5,false,true,DEBUG_LOG_CATEGORY__Warning,4,0,0,false,EVENT_TYPE__Dispenser5LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_6,false,true,DEBUG_LOG_CATEGORY__Warning,5,0,0,false,EVENT_TYPE__Dispenser6LowLevel,NULL},
{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_7,false,true,DEBUG_LOG_CATEGORY__Warning,6,0,0,false,EVENT_TYPE__Dispenser7LowLevel,NULL},
-{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_8,false,true,DEBUG_LOG_CATEGORY__Warning,7,0,0,false,EVENT_TYPE__Dispenser8LowLevel,NULL},
+{100,LimitSwitchAlarm,GPI_LS_DISPENSER_25_8,false,true,DEBUG_LOG_CATEGORY__Warning,7,0,0,false,EVENT_TYPE__Dispenser8LowLevel,NULL},*/
{100,TemperatureAlarm,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,250,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL},
{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP1,250,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL},
{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP2,80,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL},
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index dfd45ec3d..0583f6caa 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -179,11 +179,11 @@ uint32_t DispenserHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue)
MessageContainer responseContainer;
MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT;
- uint8_t DispenserId = deviceID-HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
+ //uint8_t DispenserId = deviceID-HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
//close dry air valve in the dispenser
- Valve_Set((Valves_t) (DispenserId+VALVE_2W_MID_AIR_8), Atm_MidTank_OFF);
- MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep);
+ //Valve_Set((Valves_t) (DispenserId+VALVE_2W_MID_AIR_8), Atm_MidTank_OFF);
+ //MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep);
responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size);
responseContainer.continuous = true;
@@ -223,7 +223,8 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer)
{
if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true))
{
- if ( Motor_Id_to_LS_Id[MotorId] != MAX_GPI)
+ IDS_HomeDispenser(request->index,speed,DispenserHomingRequestCallback);
+ /*if ( Motor_Id_to_LS_Id[MotorId] != MAX_GPI)
{
//open dispenser valve dispenser to midtank direction
Control3WayValvesWithCallback ((Valves_t) request->index, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
@@ -235,7 +236,7 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer)
MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Motor_Id_to_LS_Id[MotorId], DispenserHomingRequestCallback);
return OK;
- }
+ }*/
}
}
@@ -250,11 +251,13 @@ uint32_t DispenserAbortHomingRequestFunc(MessageContainer* requestContainer)
DispenserAbortHomingResponse response = DISPENSER_ABORT_HOMING_RESPONSE__INIT;
+ IDS_StopHomeDispenser(request->index);
+/*
TimerMotors_t MotorId = (request->index)+HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
MotorAbortMovetoLimitSwitch(MotorId);
//close dry air valve in the dispenser
Valve_Set((Valves_t) ((request->index)+VALVE_2W_MID_AIR_8), Atm_MidTank_OFF);
-
+*/
responseContainer = createContainer(MESSAGE_TYPE__DispenserAbortHomingResponse, requestContainer->token, false, &response, &dispenser_abort_homing_response__pack, &dispenser_abort_homing_response__get_packed_size);
responseContainer.continuous = false;
uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index ea5505642..75d86fdd7 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -21,6 +21,10 @@ uint32_t IDSEndState(void *JobDetails);
uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request);
+uint32_t IDS_HomeDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback);
+uint32_t IDS_StopHomeDispenser (uint32_t deviceID);
+
+
float CalculateDispenserPressure (int DispenserId);
float GetDispenserPressure(int DispenserId);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index e69de29bb..73d1aa2b1 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -0,0 +1,93 @@
+/************************************************************************************************************************
+ * Ids_maint.c
+ * Printing module is responsible for :
+ * operating the dispensers according to predefined dispensing rate from the UI
+ **************************************************************************************************************************/
+#include "include.h"
+#include "ids.h"
+#include "ids_ex.h"
+#include "../control/control.h"
+#include "../control/pidalgo.h"
+#include "../thread/thread.h"
+#include "PMR/Hardware/Hardwaremotor.pb-c.h"
+#include "PMR/Hardware/HardwareDispenser.pb-c.h"
+#include "StateMachines/Printing/printingSTM.h"
+
+#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+#include "drivers/Motors/Motor.h"
+#include "drivers/Valves/Valve.h"
+
+FPGA_GPI_ENUM Dispenser_Id_to_LS_Id[MAX_SYSTEM_DISPENSERS] = {
+ GPI_LS_DISPENSER_DOWN_1, //MOTO_DISPENSER_1 = 6,
+ GPI_LS_DISPENSER_DOWN_2, //MOTO_DISPENSER_2 = 7,
+ GPI_LS_DISPENSER_DOWN_3, //MOTO_DISPENSER_3 = 8,
+ GPI_LS_DISPENSER_DOWN_4, //MOTO_DISPENSER_4 = 9,
+ GPI_LS_DISPENSER_DOWN_5, //MOTO_DISPENSER_5 = 10,
+ GPI_LS_DISPENSER_DOWN_6, //MOTO_DISPENSER_6 = 11,
+ GPI_LS_DISPENSER_DOWN_7, //MOTO_DISPENSER_7 = 12,
+ GPI_LS_DISPENSER_DOWN_8, //MOTO_DISPENSER_8 = 13,
+};
+callback_fptr HomingRequestCallback[MAX_SYSTEM_DISPENSERS]={0,0,0,0,0,0,0,0};
+bool HomingActive[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
+
+uint32_t IDS_HomeDispenserCallback(uint32_t deviceID, uint32_t ReadValue)
+{
+ uint8_t DispenserId = deviceID-HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
+
+ //close dry air valve in the dispenser
+ Valve_Set((Valves_t) (IDS_Id_to_AirValve[deviceID]), Atm_MidTank_OFF);
+ MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep);
+ if (HomingRequestCallback[deviceID])
+ {
+ HomingRequestCallback[deviceID](deviceID,0);
+ HomingRequestCallback[deviceID] = NULL;
+ }
+ HomingActive[deviceID]= false;
+
+return OK;
+
+}
+
+uint32_t IDS_HomeDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback)
+{
+ assert(deviceID < MAX_SYSTEM_DISPENSERS);
+
+ if (HomingActive[deviceID] == true)
+ return ERROR;
+ else
+ HomingActive[deviceID] = true;
+
+ HomingRequestCallback[deviceID] = callback;
+
+ TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1 + deviceID;
+ if ( Dispenser_Id_to_LS_Id[MotorId] != MAX_GPI)
+ {
+ //open dispenser valve dispenser to midtank direction
+ Control3WayValvesWithCallback ((Valves_t)deviceID, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+ //Valve_Set((Valves_t) request->index, MidTank_Dispenser);
+ MotorSetMicroStep(deviceID, 1);
+ //open dry air valve in the dispenser
+ Valve_Set((Valves_t) (IDS_Id_to_AirValve[deviceID]), Atm_MidTank_ON);
+
+
+ MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Dispenser_Id_to_LS_Id[MotorId], IDS_HomeDispenserCallback);
+ return OK;
+ }
+}
+
+uint32_t IDS_StopHomeDispenser (uint32_t deviceID)
+{
+ assert(deviceID < MAX_SYSTEM_DISPENSERS);
+
+ if (HomingActive[deviceID] != true)
+ return ERROR;
+ else
+ HomingActive[deviceID] = false;
+
+ TimerMotors_t MotorId = (deviceID)+HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
+ MotorAbortMovetoLimitSwitch(MotorId);
+ //close dry air valve in the dispenser
+ Valve_Set((Valves_t) (IDS_Id_to_AirValve[deviceID]), Atm_MidTank_OFF);
+ MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep);
+ return OK;
+}