Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r4d7d40a27130dc813d653f044cbb856b1b7d8481 -r99b0c8f1ff9f9319f68e5043cd8c007e317a05c0 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 4d7d40a27130dc813d653f044cbb856b1b7d8481) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 99b0c8f1ff9f9319f68e5043cd8c007e317a05c0) @@ -15,8 +15,14 @@ * ***************************************************************************/ -#include "OperationModes.h" +#include "DrainPump.h" +#include "Heaters.h" #include "ModeFault.h" +#include "OperationModes.h" +#include "ROPump.h" +#include "SystemCommMessages.h" +#include "UVReactors.h" +#include "Valves.h" /** * @addtogroup DGFaultMode @@ -52,6 +58,12 @@ *************************************************************************/ void transitionToFaultMode( void ) { + // Publish POST failure status to UI if fault triggered in Init/POST mode + if ( DG_MODE_INIT == getPreviousOperationMode() ) + { + // Broadcast final POST failed + sendPOSTFinalResult( FALSE ); + } } /*********************************************************************//** @@ -90,4 +102,38 @@ return faultState; } +/*********************************************************************//** + * @brief + * The deenergizeActuators function sets all the actuators to reset and + * de-energized state. + * @details Inputs: none + * @details Outputs: none + * @return none + *************************************************************************/ +void deenergizeActuators( void ) +{ + // Turn off the UV reactors + turnOffUVReactor( INLET_UV_REACTOR ); + turnOffUVReactor( OUTLET_UV_REACTOR ); + + // De-energize all the valves + setValveState( VPI, VALVE_STATE_CLOSED ); + setValveState( VBF, VALVE_STATE_CLOSED ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); + + //TODO add the composition pumps + signalROPumpHardStop(); + signalDrainPumpHardStop(); + stopPrimaryHeater(); + stopTrimmerHeater(); +} + /**@}*/