Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -rcc398b14ccf518f350b57fb5cb8728e5c908bd1e -r99b0c8f1ff9f9319f68e5043cd8c007e317a05c0 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision cc398b14ccf518f350b57fb5cb8728e5c908bd1e) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 99b0c8f1ff9f9319f68e5043cd8c007e317a05c0) @@ -7,16 +7,22 @@ * * @file ModeFault.c * -* @author (last) Sean Nash -* @date (last) 26-May-2020 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ -#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 @@ -34,9 +40,8 @@ /*********************************************************************//** * @brief * The initFaultMode function initializes the Fault Mode module. - * @details - * Inputs : none - * Outputs : Fault mode module initialized + * @details Inputs: none + * @details Outputs: Fault mode module initialized * @return none *************************************************************************/ void initFaultMode( void ) @@ -47,21 +52,25 @@ /*********************************************************************//** * @brief * The transitionToFaultMode function prepares for transition to fault mode. - * @details - * Inputs : none - * Outputs : none + * @details Inputs: none + * @details Outputs: none * @return none *************************************************************************/ 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 ); + } } /*********************************************************************//** * @brief * The execFaultMode function executes the fault mode state machine. - * @details - * Inputs : none - * Outputs : Fault mode state machine executed + * @details Inputs: none + * @details Outputs: Fault mode state machine executed * @return current state of fault mode *************************************************************************/ U32 execFaultMode( void ) @@ -84,14 +93,47 @@ /*********************************************************************//** * @brief * The getCurrentFaultState function returns the current state of the fault mode. - * @details - * Inputs : faultState - * Outputs : none + * @details Inputs: faultState + * @details Outputs: none * @return current state of fault mode *************************************************************************/ DG_FAULT_STATE_T getCurrentFaultState( void ) { 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(); +} + /**@}*/