Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -r5d82009d1baa2b52122065934481745bf4de223b -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 5d82009d1baa2b52122065934481745bf4de223b) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -121,7 +121,7 @@ if ( FALSE == isHDCommunicating() ) { - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } // execute current drain state @@ -164,7 +164,7 @@ DG_DRAIN_STATE_T result = DG_DRAIN_STATE_DRAIN; DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); - // if we have reached our target drain to volume (by weight) or cannot drain anymore, we are done draining - go back to re-circ mode + // if we have reached our target drain to volume (by weight) or cannot drain anymore, we are done draining - go back to generation idle mode if ( TRUE == hasTargetDrainVolumeBeenReached( inactiveReservoir, DRAIN_WEIGHT_UNCHANGE_TIMEOUT ) ) { setDrainPumpTargetRPM( 0 ); @@ -186,7 +186,7 @@ } else { - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } } @@ -210,7 +210,7 @@ { drainEmptyTareTimerCtr = 0; tareLoadCellsAtEmpty( inactiveReservoir ); - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); #ifndef V_2_SYSTEM setValveState( VRD1, VALVE_STATE_CLOSED ); Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r9779d54c908734795f7b03b0ba8c409fc3115437 -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9779d54c908734795f7b03b0ba8c409fc3115437) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -175,13 +175,13 @@ if ( TRUE == didTimeout( dialysateFillStartTime, DIALYSATE_FILL_TIME_OUT ) ) { activateAlarmNoData( ALARM_ID_DG_DIALYSATE_FILL_OUT_OF_TIME ); - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } - // Transition to re-circ mode when HD is not communicating + // Transition to generation idle mode when HD is not communicating if ( FALSE == isHDCommunicating() ) { - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } // Execute current Fill state @@ -253,7 +253,7 @@ if ( TRUE == didTimeout( waterQualityCheckStartTime, WATER_QUALITY_CHECK_TIME_OUT_MS ) ) { activateAlarmNoData( ALARM_ID_DG_BAD_INLET_WATER_QUALITY ); - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } return result; @@ -298,7 +298,7 @@ if ( TRUE == didTimeout( concentrateTestStartTime, CONCENTRATE_TEST_TIME_OUT_MS ) ) { SET_ALARM_WITH_1_F32_DATA( ALARM_ID_BICARB_CONDUCTIVITY_OUT_OF_RANGE, bicarbConductivity ); - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } return result; @@ -339,7 +339,7 @@ if ( TRUE == didTimeout( concentrateTestStartTime, CONCENTRATE_TEST_TIME_OUT_MS ) ) { SET_ALARM_WITH_1_F32_DATA( ALARM_ID_ACID_CONDUCTIVITY_OUT_OF_RANGE, acidConductivity ); - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } return result; @@ -446,7 +446,7 @@ activateAlarmNoData( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ); } - // if we've reached our target fill to volume (by weight), we're done filling - go back to re-circ mode + // if we've reached our target fill to volume (by weight), we're done filling - go back to generation idle mode if ( ( TRUE == hasTargetFillVolumeBeenReached( inactiveReservoir ) ) || ( ( integratedVolume_mL - reservoirBaseWeight ) >= MAX_RESERVOIR_VOLUME_ML ) ) { F32 const filledVolume_mL = getReservoirWeight( inactiveReservoir ) - reservoirBaseWeight; @@ -469,7 +469,7 @@ } #endif - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } return result; Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u --- firmware/App/Modes/ModeGenIdle.c (revision 0) +++ firmware/App/Modes/ModeGenIdle.c (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -0,0 +1,226 @@ + +/************************************************************************** +* +* Copyright (c) 2019-2020 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 ModeRecirculate.c +* +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2020 +* +* @author (original) Sean +* @date (original) 04-Apr-2020 +* +***************************************************************************/ + +#include "etpwm.h" + +#include "ConcentratePumps.h" +#include "ConductivitySensors.h" +#include "DrainPump.h" +#include "FPGA.h" +#include "Heaters.h" +#include "ModeGenIdle.h" +#include "OperationModes.h" +#include "Pressures.h" +#include "ROPump.h" +#include "SystemComm.h" +#include "TaskGeneral.h" +#include "TemperatureSensors.h" +#include "Timers.h" +#include "UVReactors.h" +#include "Valves.h" + +/** + * @addtogroup DGRecirculateMode + * @{ + */ + +// ********** private definitions ********** + +#define TARGET_RO_PRESSURE_PSI 130 ///< Target pressure for RO pump. +#define TARGET_RO_FLOW_RATE_L 0.3 ///< Target flow rate for RO pump. + +#define TARGET_FLUSH_LINES_RO_FLOW_RATE_L 0.6 ///< Target flow rate for RO pump. +#define FLUSH_LINES_VOLUME_L 0.01 ///< Water volume (in Liters) to flush when starting generation idle mode. + +// ********** private data ********** + +static DG_GEN_IDLE_MODE_STATE_T genIdleState; ///< Currently active generation idle state. +static F32 flushLinesVolumeL = 0.0; ///< Volume of water pumped by RO pump during flush lines state. + +// ********** private function prototypes ********** + +static DG_GEN_IDLE_MODE_STATE_T handleFlushLinesState( void ); +static DG_GEN_IDLE_MODE_STATE_T handleFlushWaterState( void ); + +/*********************************************************************//** + * @brief + * The initGenIdleMode function initializes the generation idle mode module. + * @details Inputs: none + * @details Outputs: Generation idle mode module initialized + * @return none + *************************************************************************/ +void initGenIdleMode( void ) +{ + genIdleState = DG_GEN_IDLE_MODE_STATE_START; + flushLinesVolumeL = 0.0; +} + +/*********************************************************************//** + * @brief + * The transitionToGenIdleMode function prepares for transition to generation idle mode. + * @details Inputs: none + * @details Outputs: Re-initialized generation idle mode + * @return none + *************************************************************************/ +void transitionToGenIdleMode( void ) +{ + // Re-initialize each time we transition to generation idle mode + initGenIdleMode(); + + // Set initial actuator states + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPI, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); + setValveState( VRD1, VALVE_STATE_CLOSED ); + setValveState( VRD2, VALVE_STATE_CLOSED ); +#endif + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + + signalDrainPumpHardStop(); + requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1_ACID ); + requestConcentratePumpsOff( CONCENTRATEPUMPS_CP2_BICARB ); + + // UV reactors on + turnOnUVReactor( INLET_UV_REACTOR ); + turnOnUVReactor( OUTLET_UV_REACTOR ); + + // NOTE: The target flow rate should be set prior to setting the start primary heater + // because the initial guess in the heaters driver needs the target flow to calculate + // the new PWMs for the main and small primary heaters + setROPumpTargetFlowRate( TARGET_FLUSH_LINES_RO_FLOW_RATE_L, TARGET_RO_PRESSURE_PSI ); + startPrimaryHeater(); +} + +/*********************************************************************//** + * @brief + * The execGenIdleMode function executes the generation idle mode state machine. + * @details Inputs: genIdleState + * @details Outputs: Check water quality, generation idle mode state machine executed + * @return current state + *************************************************************************/ +U32 execGenIdleMode( void ) +{ + // Check inlet water conductivity, temperature, pressure, and RO rejection ratio + checkInletWaterConductivity(); + checkInletWaterTemperature(); + checkInletPressure(); + checkRORejectionRatio(); + + // Transition to standby mode when HD is not communicating + if ( FALSE == isHDCommunicating() ) + { + requestNewOperationMode( DG_MODE_STAN ); + } + + // Execute current generation idle state + switch ( genIdleState ) + { + case DG_GEN_IDLE_MODE_STATE_START: + genIdleState = DG_GEN_IDLE_MODE_STATE_FLUSH_LINES; + break; + + case DG_GEN_IDLE_MODE_STATE_FLUSH_LINES: + genIdleState = handleFlushLinesState(); + break; + + case DG_GEN_IDLE_MODE_STATE_FLUSH_WATER: + genIdleState = handleFlushWaterState(); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_GEN_IDLE_MODE_INVALID_EXEC_STATE, genIdleState ) + genIdleState = DG_GEN_IDLE_MODE_STATE_START; + break; + } + + return (U32)genIdleState; +} + +/*********************************************************************//** + * @brief + * The handleFlushLinesState function executes the flush lines state of the + * generation idle mode state machine. + * @details Inputs: flushLinesVolumeL + * @details Outputs: Integrate volume of water moved through line + * @return the next state + *************************************************************************/ +static DG_GEN_IDLE_MODE_STATE_T handleFlushLinesState( void ) +{ + DG_GEN_IDLE_MODE_STATE_T result = DG_GEN_IDLE_MODE_STATE_FLUSH_LINES; + F32 waterFlowRate = getMeasuredROFlowRate(); + F32 waterVolume = ( ( waterFlowRate / SEC_PER_MIN ) / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); + + // Integrate volume of water moved through line + flushLinesVolumeL += waterVolume; + + // When enough water volume has flowed to flush the lines, transition to flush water state + if ( flushLinesVolumeL >= FLUSH_LINES_VOLUME_L ) + { + setROPumpTargetFlowRate( TARGET_RO_FLOW_RATE_L, TARGET_RO_PRESSURE_PSI ); + result = DG_GEN_IDLE_MODE_STATE_FLUSH_WATER; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The handleFlushWaterState function executes the flush water state + * of the generation idle mode state machine. + * @details Inputs: none + * @details Outputs: none + * @return the next state + *************************************************************************/ +static DG_GEN_IDLE_MODE_STATE_T handleFlushWaterState( void ) +{ + return DG_GEN_IDLE_MODE_STATE_FLUSH_WATER; +} + +/*********************************************************************//** + * @brief + * The requestDGStop function handles an HD request to stop (return to standby mode). + * @details Inputs: none + * @details Outputs: DG standby mode requested + * @return TRUE if request accepted, FALSE if not. + *************************************************************************/ +BOOL requestDGStop( void ) +{ + BOOL result = TRUE; + + requestNewOperationMode( DG_MODE_STAN ); + + return result; +} + +/*********************************************************************//** + * @brief + * The getCurrentGenIdleState function returns the current state of the + * generation idle mode. + * @details Inputs: recircState + * @details Outputs: none + * @return the current state of generation idle mode + *************************************************************************/ +DG_GEN_IDLE_MODE_STATE_T getCurrentGenIdleState( void ) +{ + return genIdleState; +} + +/**@}*/ Index: firmware/App/Modes/ModeGenIdle.h =================================================================== diff -u --- firmware/App/Modes/ModeGenIdle.h (revision 0) +++ firmware/App/Modes/ModeGenIdle.h (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -0,0 +1,46 @@ +/************************************************************************** +* +* Copyright (c) 2019-2020 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 ModeGenIdle.h +* +* @author (last) Quang Nguyen +* @date (last) 14-Sep-2020 +* +* @author (original) Sean +* @date (original) 04-Apr-2020 +* +***************************************************************************/ + +#ifndef __MODE_GEN_IDLE_H__ +#define __MODE_GEN_IDLE_H__ + +#include "DGCommon.h" +#include "DGDefs.h" + +/** + * @defgroup DGGenIdleMode DGgenIdleMode + * @brief Generation idle mode module. Manages generation idle mode functions via a state machine. + * + * @addtogroup DGGenIdleMode + * @{ + */ + +// ********** public definitions ********** + +// ********** public function prototypes ********** + +void initGenIdleMode( void ); // initialize this module +void transitionToGenIdleMode( void ); // prepares for transition to generation idle mode +U32 execGenIdleMode( void ); // execute the generation idle mode state machine (call from OperationModes) + +DG_GEN_IDLE_MODE_STATE_T getCurrentGenIdleState( void ); // get the current state of generation idle mode + +BOOL requestDGStop( void ); // HD requests DG stop (go back to standby mode) + +/**@}*/ + +#endif Fisheye: Tag 1c74566ff86f1df5e1929b8715d68715dc21a93b refers to a dead (removed) revision in file `firmware/App/Modes/ModeRecirculate.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1c74566ff86f1df5e1929b8715d68715dc21a93b refers to a dead (removed) revision in file `firmware/App/Modes/ModeRecirculate.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r5291bb3f717bb61085601eed512a1e1e57053e7f -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 5291bb3f717bb61085601eed512a1e1e57053e7f) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -51,7 +51,7 @@ static BOOL flushFilterRequest = FALSE; ///< Flag indicating HD has requested to flush filters static BOOL endSampleWaterRequest = FALSE; ///< Flag indicating HD has requested to end sample water -static BOOL pendingStartDGRequest = FALSE; ///< Flag indicating HD has requested DG start (go to re-circulate mode). +static BOOL pendingStartDGRequest = FALSE; ///< Flag indicating HD has requested DG start (go to generation idle mode). static U32 waterSampleStartTime = 0; ///< Time stamp for start of water sample state. static U32 filterFlushStartTime = 0; ///< Time stamp for start of filter flush state. static U32 filterFlushPublishTimerCounter = 0; ///< Filter flush data publish timer counter. @@ -176,7 +176,7 @@ else if ( TRUE == pendingStartDGRequest ) { pendingStartDGRequest = FALSE; - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); } return state; @@ -352,7 +352,7 @@ /*********************************************************************//** * @brief - * The requestDGStart function handles an HD request to start (go to re-circulate mode). + * The requestDGStart function handles an HD request to start (go to generation idle mode). * @details Inputs: standbyState * @details Outputs: pendingSampleWaterRequest * @return TRUE if request accepted, FALSE if not. Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r2fff37fa585181917705645494549b5fd4a4d522 -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 2fff37fa585181917705645494549b5fd4a4d522) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -38,7 +38,7 @@ U32 execStandbyMode( void ); // execute the standby mode state machine (call from OperationModes) void waterSampleCommandHandler( SAMPLE_WATER_CMD_T sampleWaterCmd ); -BOOL requestDGStart( void ); // HD requests DG start (go to re-circulate mode) +BOOL requestDGStart( void ); // HD requests DG start (go to generation idle mode) BOOL startDGFlush( void ); // HD start flush mode Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -22,9 +22,9 @@ #include "ModeFault.h" #include "ModeFill.h" #include "ModeFlush.h" +#include "ModeGenIdle.h" #include "ModeHeatDisinfect.h" #include "ModeInitPOST.h" -#include "ModeRecirculate.h" #include "ModeService.h" #include "ModeSolo.h" #include "ModeStandby.h" @@ -52,15 +52,15 @@ /// This matrix determines legal transitions from one mode to another. static const DG_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_DG_MODES - 1 ][ NUM_OF_DG_MODES - 1 ] = { -// from to-> FAULT SERVICE INIT STANBY STBY-SOLO RE-CIRC FILL DRAIN FLUSH HEAT DIS CHEM DIS +// from to-> FAULT SERVICE INIT STANBY STBY-SOLO GEN-IDLE FILL DRAIN FLUSH HEAT DIS CHEM DIS /* FAUL */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* SERV */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* INIT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM }, + /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM }, /* SOLO */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM /*DG_MODE_NLEG*/ }, // TODO for testing only - /* CIRC */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* FILL */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* DRAI */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* CIRC */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* FILL */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* DRAI */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* FLUS */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_NLEG, DG_MODE_NLEG }, /* HEAT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HEAT, DG_MODE_NLEG }, /* CHEM */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_CHEM } @@ -101,7 +101,7 @@ initInitAndPOSTMode(); initStandbyMode(); initSoloMode(); - initRecirculateMode(); + initGenIdleMode(); initFillMode(); initDrainMode(); initFlushMode(); @@ -163,8 +163,8 @@ currentSubMode = execSoloMode(); break; - case DG_MODE_CIRC: - currentSubMode = execRecirculateMode(); + case DG_MODE_GENE: + currentSubMode = execGenIdleMode(); break; case DG_MODE_FILL: @@ -311,8 +311,8 @@ case DG_MODE_SOLO: transitionToSoloMode(); break; - case DG_MODE_CIRC: - transitionToRecirculateMode(); + case DG_MODE_GENE: + transitionToGenIdleMode(); break; case DG_MODE_FILL: transitionToFillMode(); Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r8b0c842f94e3c94cecf62f0f913e429def8e5efa -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 8b0c842f94e3c94cecf62f0f913e429def8e5efa) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -107,7 +107,7 @@ SW_FAULT_ID_HEAT_DISINFECT_INVALID_EXEC_STATE, SW_FAULT_ID_INVALID_DG_RESERVOIR_SELECTED, SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE, - SW_FAULT_ID_RECIRC_MODE_INVALID_EXEC_STATE, + SW_FAULT_ID_GEN_IDLE_MODE_INVALID_EXEC_STATE, SW_FAULT_ID_DRAIN_MODE_INVALID_EXEC_STATE, // 80 SW_FAULT_ID_FILL_MODE_INVALID_EXEC_STATE, SW_FAULT_ID_SOLO_MODE_INVALID_EXEC_STATE, Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -rcbc9f2ba6d1769716ac81ae45283575467f07e2c -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision cbc9f2ba6d1769716ac81ae45283575467f07e2c) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -18,7 +18,7 @@ #include // for memcpy() #include "LoadCell.h" -#include "ModeRecirculate.h" +#include "ModeGenIdle.h" #include "OperationModes.h" #include "Reservoirs.h" #include "SystemCommMessages.h" @@ -121,8 +121,8 @@ cmdResponse.rejected = TRUE; cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - // switch reservoir command only valid in re-circulate mode - if ( DG_MODE_CIRC == getCurrentOperationMode() ) + // switch reservoir command only valid in generation idle mode + if ( DG_MODE_GENE == getCurrentOperationMode() ) { switch ( resID ) { @@ -179,8 +179,8 @@ cmdResponse.rejected = TRUE; cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - // valve setting command only valid in re-circulate mode - if ( DG_MODE_CIRC == getCurrentOperationMode() ) + // valve setting command only valid in generation idle mode + if ( DG_MODE_GENE == getCurrentOperationMode() ) { switch ( valveSettingID ) { @@ -226,9 +226,9 @@ cmdResponse.rejected = TRUE; cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - // fill command only valid in re-circulate mode - if ( ( DG_MODE_CIRC == getCurrentOperationMode() ) && - ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == getCurrentRecirculateState() ) ) + // fill command only valid in generation idle mode + if ( ( DG_MODE_GENE == getCurrentOperationMode() ) && + ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getCurrentGenIdleState() ) ) { // validate parameters if ( fillToVolMl < MAX_FILL_VOLUME_ML ) @@ -254,7 +254,7 @@ * @brief * The stopFillCmd function handles a stop fill command from the HD. * @details Inputs: none - * @details Outputs: move to re-circulate mode + * @details Outputs: move to generation idle mode * @return none *************************************************************************/ void stopFillCmd( void ) @@ -269,7 +269,7 @@ if ( DG_MODE_FILL == getCurrentOperationMode() ) { fillVolumeTargetMl.data = 0; - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); cmdResponse.rejected = FALSE; } else @@ -284,7 +284,7 @@ * @brief * The startDrainCmd function handles a drain command from the HD. * @details Inputs: none - * @details Outputs: Start draining in re-circulate mode + * @details Outputs: Start draining in generation idle mode * @param drainCmd drain command data record * @return none *************************************************************************/ @@ -296,8 +296,8 @@ cmdResponse.rejected = TRUE; cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - // drain command only valid in re-circulate mode - if ( DG_MODE_CIRC == getCurrentOperationMode() ) + // drain command only valid in generation idle mode + if ( DG_MODE_GENE == getCurrentOperationMode() ) { // validate parameters if ( drainCmd.targetVolume <= MAX_DRAIN_VOLUME_ML ) @@ -324,7 +324,7 @@ * @brief * The stopDrainCmd function handles a stop drain command from the HD. * @details Inputs: none - * @details Outputs: move to re-circulate mode + * @details Outputs: move to generation idle mode * @return none *************************************************************************/ void stopDrainCmd( void ) @@ -339,7 +339,7 @@ if ( DG_MODE_DRAI == getCurrentOperationMode() ) { drainVolumeTargetMl.data = 0; - requestNewOperationMode( DG_MODE_CIRC ); + requestNewOperationMode( DG_MODE_GENE ); cmdResponse.rejected = FALSE; } else Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r2fff37fa585181917705645494549b5fd4a4d522 -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 2fff37fa585181917705645494549b5fd4a4d522) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -27,8 +27,8 @@ #include "Heaters.h" #include "LoadCell.h" #include "ModeFlush.h" +#include "ModeGenIdle.h" #include "ModeStandby.h" -#include "ModeRecirculate.h" #include "MsgQueues.h" #include "NVDataMgmt.h" #include "OperationModes.h" @@ -1497,11 +1497,11 @@ memcpy( &startingTreatment, message->payload, sizeof( U32 ) ); - if ( DG_MODE_STAN == getCurrentOperationMode() && TRUE == startingTreatment ) + if ( ( DG_MODE_STAN == getCurrentOperationMode() ) && ( TRUE == startingTreatment ) ) { result = requestDGStart(); } - else if ( DG_MODE_CIRC == getCurrentOperationMode() && FALSE == startingTreatment ) + else if ( ( DG_MODE_GENE == getCurrentOperationMode() ) && ( FALSE == startingTreatment ) ) { result = requestDGStop(); } Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -r5adaa0ae1236d34fca1fc8def7fa107ec470115e -r1c74566ff86f1df5e1929b8715d68715dc21a93b --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 5adaa0ae1236d34fca1fc8def7fa107ec470115e) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 1c74566ff86f1df5e1929b8715d68715dc21a93b) @@ -167,7 +167,7 @@ } else { - activateAlarmNoData( ALARM_ID_WATCHDOG_POST_TEST_FAILED ); + activateAlarmNoData( ALARM_ID_DG_WATCHDOG_POST_TEST_FAILED ); watchdogSelfTestStatus = SELF_TEST_STATUS_FAILED; } watchdogSelfTestTimerCount = getMSTimerCount();