Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r26ee1d67dca19aac1850077cbd41c05498cf059d -r051e0c243c0e6faa7a53287b16252d93044d87e0 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 26ee1d67dca19aac1850077cbd41c05498cf059d) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 051e0c243c0e6faa7a53287b16252d93044d87e0) @@ -19,6 +19,7 @@ #include "ModeFault.h" #include "Messaging.h" #include "Utilities.h" +#include "Valves.h" /** * @addtogroup DDFaultMode @@ -61,7 +62,7 @@ *************************************************************************/ U32 transitionToFaultMode( void ) { -// deenergizeActuators( PARK_CONC_PUMPS ); + //deenergizeActuators( PARK_CONC_PUMPS ); initFaultMode(); setCurrentSubState( NO_SUB_STATE ); @@ -72,18 +73,6 @@ //sendPOSTFinalResult( FALSE ); } - //setCPLDCleanLEDColor( CPLD_CLEAN_LED_OFF ); - - // Release RTC in case the RTC semaphore was not released prior to transitioning to fault mode. - // In fault mode, the non-volatile data mgmt POST might be run again so the RTC has to be available. Also, - // the RTC time is read every second which requires the semaphore. - releaseSemaphore( SEMAPHORE_RTC ); - -//#ifndef _RELEASE_ -// setHeatNelsonSupportMode( NELSON_NONE ); -// setChemNelsonSupportMode( NELSON_NONE ); -//#endif - return faultState; } @@ -150,28 +139,38 @@ *************************************************************************/ void deenergizeActuators( BOOL parkPumps ) { -// // Turn off the UV reactors -// turnOffUVReactor( INLET_UV_REACTOR ); -// turnOffUVReactor( OUTLET_UV_REACTOR ); -// -// // De-energize all the valves -// setValveStateDelayed( VPI, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); -// setValveStateDelayed( VBF, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); -// setValveStateDelayed( VSP, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); -// setValveStateDelayed( VPD, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VPO, VALVE_STATE_NOFILL_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VDR, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VRC, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VRO, VALVE_STATE_R1_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VRD1, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); -// setValveStateDelayed( VRD2, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); -// setValveStateDelayed( VRI, VALVE_STATE_R1_C_TO_NO, DELAY_VALVE_MS ); -// setValveStateDelayed( VRF, VALVE_STATE_R2_C_TO_NO, DELAY_VALVE_MS ); -// + U32 i; + + // De-energize all the hydraulics valves + // TODO : valve state name needs to be updated + setValveStateDelayed( VDR, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VTD, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VHB, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VRP, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VHO, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VDB1, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VP1, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VPT, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VDB2, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VDI, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VDO, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VP2, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VHI, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + + // De-energize Balancing chamber and Ultrafiltration valves + for ( i = FIRST_BC_VALVE; i <= LAST_BC_VALVE; i++ ) + { + setValveStateDelayed( (VALVES_T)i, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + } + + for ( i = FIRST_UF_VALVE; i <= FIRST_UF_VALVE; i++ ) + { + setValveStateDelayed( (VALVES_T)i, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + } + // requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, parkPumps ); // requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, parkPumps ); // signalROPumpHardStop(); -// signalDrainPumpHardStop(); // stopHeater( DD_PRIMARY_HEATER ); // stopHeater( DD_TRIMMER_HEATER ); }