Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r2fff37fa585181917705645494549b5fd4a4d522 -r94a190522ce398399c7b93c59f788d7666ec0060 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 2fff37fa585181917705645494549b5fd4a4d522) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 94a190522ce398399c7b93c59f788d7666ec0060) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file ModeFault.c +* @file ModeFault.c * -* @author (last) Quang Nguyen -* @date (last) 24-Aug-2020 +* @author (last) Dara Navaei +* @date (last) 24-Oct-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -32,9 +32,11 @@ // ********** private definitions ********** +#define DELAY_VALVE_MS ( 1 * MS_PER_SECOND ) ///< Valve state change delay in ms. + // ********** private data ********** -static DG_FAULT_STATE_T faultState = DG_FAULT_STATE_START; ///< Currently active fault state. +static DG_FAULT_STATE_T faultState = DG_FAULT_STATE_START; ///< Currently active fault state. // ********** private function prototypes ********** @@ -55,18 +57,22 @@ * The transitionToFaultMode function prepares for transition to fault mode. * @details Inputs: none * @details Outputs: none - * @return none + * @return initial state *************************************************************************/ -void transitionToFaultMode( void ) +U32 transitionToFaultMode( void ) { deenergizeActuators(); + initFaultMode(); + // Publish POST failure status to UI if fault triggered in Init/POST mode if ( DG_MODE_INIT == getPreviousOperationMode() ) { // Broadcast final POST failed sendPOSTFinalResult( FALSE ); } + + return faultState; } /*********************************************************************//** @@ -120,25 +126,25 @@ 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( VRD1, VALVE_STATE_CLOSED ); - setValveState( VRD2, VALVE_STATE_CLOSED ); - setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); + 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 ); - requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1_ACID ); - requestConcentratePumpsOff( CONCENTRATEPUMPS_CP2_BICARB ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB ); signalROPumpHardStop(); signalDrainPumpHardStop(); - stopPrimaryHeater(); - stopTrimmerHeater(); + stopHeater( DG_PRIMARY_HEATER ); + stopHeater( DG_TRIMMER_HEATER ); } /**@}*/