Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -35,7 +35,7 @@ #define PUMP_PRESSURE_ZERO 777 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors. #define PUMP_PRESSURE_PSIA_PER_COUNT 0.06434 ///< PSIA per ADC count conversion factor for pump in/out pressure sensors. -#define PUMP_PRESSURE_PSIA_TO_PSI_OFFSET 14.7 ///< Subtract this offset to convert PSIA to PSI. +#define PUMP_PRESSURE_PSIA_TO_PSI_OFFSET 14.7 ///< Subtract this offset to convert PSIA to PSI. TODO - use barometric sensor when available. #define PRESSURE_SAMPLES_TO_AVERAGE ( 200 / TASK_PRIORITY_INTERVAL ) ///< Averaging pressure data over the reporting interval. #define PRESSURE_AVERAGE_MULTIPLIER ( 1.0 / (F32)PRESSURE_SAMPLES_TO_AVERAGE ) ///< Optimization - multiplying is faster than dividing. Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r4d7d40a27130dc813d653f044cbb856b1b7d8481 -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 4d7d40a27130dc813d653f044cbb856b1b7d8481) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -131,29 +131,50 @@ { result = TRUE; } +#ifndef V_2_SYSTEM + if ( ( VRD1 == valveID ) || ( VRD2 == valveID ) ) + { + result = TRUE; + } +#endif break; case VALVE_STATE_CLOSED: if ( ( valveID == VPI ) || ( valveID == VBF ) || ( valveID == VSP ) ) { result = TRUE; } +#ifndef V_2_SYSTEM + if ( ( VRD1 == valveID ) || ( VRD2 == valveID ) ) + { + result = TRUE; + } +#endif break; - case VALVE_STATE_OPEN_C_TO_NO: - if ( valveID == VPD ) - { - result = TRUE; - } - break; - - case VALVE_STATE_DRAIN_C_TO_NC: - if ( valveID == VPD ) - { - result = TRUE; - } - break; - +#ifndef V_2_SYSTEM + case VALVE_STATE_OPEN_C_TO_NC: + if ( VPD == valveID ) + { + result = TRUE; + } + break; +#else + case VALVE_STATE_OPEN_C_TO_NO: + if ( VPD == valveID ) + { + result = TRUE; + } + break; + + case VALVE_STATE_DRAIN_C_TO_NC: + if ( VPD == valveID ) + { + result = TRUE; + } + break; +#endif + case VALVE_STATE_NOFILL_C_TO_NO: if ( valveID == VPO ) { @@ -173,6 +194,12 @@ { result = TRUE; } +#ifndef V_2_SYSTEM + if ( VPD == valveID ) + { + result = TRUE; + } +#endif break; case VALVE_STATE_RECIRC_C_TO_NC: @@ -282,13 +309,19 @@ vState = DEENERGIZED; break; +#ifdef V_2_SYSTEM case VALVE_STATE_OPEN_C_TO_NO: vState = DEENERGIZED; break; case VALVE_STATE_DRAIN_C_TO_NC: vState = ENERGIZED; break; +#else + case VALVE_STATE_OPEN_C_TO_NC: + vState = ENERGIZED; + break; +#endif case VALVE_STATE_NOFILL_C_TO_NO: vState = DEENERGIZED; Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r54f45c387430e440ab4607451fc84dea61f273f1 -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 54f45c387430e440ab4607451fc84dea61f273f1) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -30,43 +30,49 @@ // ********** public definitions ********** -/// Enumeration of available valve state names per valve type (from SA and DG SRS documents). -typedef enum ValveStateNames -{ - VALVE_STATE_OPEN = 0, ///< Open valve state, used only for VPi, VBf, and VSP - VALVE_STATE_CLOSED, ///< Closed valve state, used only for VPi, VBf, and VSP - VALVE_STATE_OPEN_C_TO_NO, ///< Open Common to Normally Open valve state, used only for VPd - VALVE_STATE_DRAIN_C_TO_NC, ///< Drain Common to Normally Closed valve state, used only for VPd - VALVE_STATE_NOFILL_C_TO_NO, ///< No Fill Common to Normally Open valve state, used only for VPo - VALVE_STATE_FILL_C_TO_NC, ///< Fill Common to Normally Closed valve state, used only for VPo - VALVE_STATE_DRAIN_C_TO_NO, ///< Drain Common to Normally Open valve state, used only for VDr and VRc - VALVE_STATE_RECIRC_C_TO_NC, ///< Recirculate Common to Normally Closed valve state, used only for VDr and VRc - VALVE_STATE_R1_C_TO_NO, ///< Reservoir 1 Common to Normally Open valve state, used only for VRo and VRi - VALVE_STATE_R1_C_TO_NC, ///< Reservoir 1 Common to Normally Closed valve state, used only for VRd and VRf - VALVE_STATE_R2_C_TO_NO, ///< Reservoir 2 Common to Normally Open valve state, used only for VRd and VRf - VALVE_STATE_R2_C_TO_NC, ///< Reservoir 2 Common to Normally Closed valve state, used only for VRo and VRi - NUM_OF_VALVE_STATES ///< number of valve states -} VALVE_STATE_NAMES_T; +/// Enumeration of available valve state names per valve type (from SA and DG SRS documents). +typedef enum ValveStateNames +{ + VALVE_STATE_OPEN = 0, ///< Open valve state, used only for VPi, VBf, VRD1, VRD2, and VSP + VALVE_STATE_CLOSED, ///< Closed valve state, used only for VPi, VBf, VRD1, VRD2, and VSP +#ifndef V_2_SYSTEM + VALVE_STATE_OPEN_C_TO_NC, ///< Open Common to Normally Closed valve state, used only for VPd +#else + VALVE_STATE_OPEN_C_TO_NO, ///< Open Common to Normally Open valve state, used only for VPd + VALVE_STATE_DRAIN_C_TO_NC, ///< Drain Common to Normally Closed valve state, used only for VPd +#endif + VALVE_STATE_NOFILL_C_TO_NO, ///< No Fill Common to Normally Open valve state, used only for VPo + VALVE_STATE_FILL_C_TO_NC, ///< Fill Common to Normally Closed valve state, used only for VPo + VALVE_STATE_DRAIN_C_TO_NO, ///< Drain Common to Normally Open valve state, used only for VDr and VRc. It is also used for VPd in V3 + VALVE_STATE_RECIRC_C_TO_NC, ///< Recirculate Common to Normally Closed valve state, used only for VDr and VRc + VALVE_STATE_R1_C_TO_NO, ///< Reservoir 1 Common to Normally Open valve state, used only for VRo and VRi + VALVE_STATE_R1_C_TO_NC, ///< Reservoir 1 Common to Normally Closed valve state, used only for VRd and VRf + VALVE_STATE_R2_C_TO_NO, ///< Reservoir 2 Common to Normally Open valve state, used only for VRd and VRf + VALVE_STATE_R2_C_TO_NC, ///< Reservoir 2 Common to Normally Closed valve state, used only for VRo and VRi + NUM_OF_VALVE_STATES ///< number of valve states +} VALVE_STATE_NAMES_T; + +/// Enumeration of valves. +typedef enum Valves +{ + VRF = 0, ///< Valve Reservoir Fill + VRI, ///< Valve Reservoir Inlet + VRD, ///< Valve Reservoir Drain + VRO, ///< Valve Reservoir Outlet + VPO, ///< Valve Pressure Outlet + VBF, ///< Valve Bypass Filter + VRC, ///< Valve Recirculate + VDR, ///< Valve Drain + VPI, ///< Valve Pressure Inlet + VSP, ///< Valve Sampling Port +#ifndef V_2_SYSTEM + VRD1, ///< Valve Reservoir 1 Drain + VRD2, ///< Valve Reservoir 2 Drain +#endif + VPD, ///< Valve Production Drain + NUM_OF_VALVES ///< Number of valves +} VALVES_T; -/// Enumeration of valves. -typedef enum Valves -{ - VRF = 0, ///< Valve Reservoir Fill - VRI, ///< Valve Reservoir Inlet - VRD, ///< Valve Reservoir Drain - VRO, ///< Valve Reservoir Outlet - VPO, ///< Valve Pressure Outlet - VBF, ///< Valve Bypass Filter - VRC, ///< Valve Recirculate - VDR, ///< Valve Drain - VPI, ///< Valve Pressure Inlet - VSP, ///< Valve Sampling Port - VR1, ///< Valve Reservoir 1 (spare for now including DG FPGA, as valve is of passive air relief type) - VR2, ///< Valve Reservoir 2 (spare for now including DG FPGA, as valve is of passive air relief type) - VPD, ///< Valve Production Drain - NUM_OF_VALVES ///< Number of valves -} VALVES_T; - // ********** public function prototypes ********** void initValves( void ); Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -71,6 +71,18 @@ // re-initialize each time we transition to drain mode initDrainMode(); +#ifndef V_2_SYSTEM + DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); + + if ( DG_RESERVOIR_1 == inactiveReservoir ) + { + setValveState( VRD1, VALVE_STATE_OPEN ); + } + else if ( DG_RESERVOIR_2 == inactiveReservoir ) + { + setValveState( VRD2, VALVE_STATE_OPEN ); + } +#endif // set initial actuator states setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setDrainPumpTargetRPM( TARGET_DRAIN_PUMP_RPM ); @@ -129,6 +141,17 @@ { setDrainPumpTargetRPM( 0 ); requestNewOperationMode( DG_MODE_CIRC ); + +#ifndef V_2_SYSTEM + if ( DG_RESERVOIR_1 == inactiveReservoir ) + { + setValveState( VRD1, VALVE_STATE_CLOSED ); + } + else if ( DG_RESERVOIR_2 == inactiveReservoir ) + { + setValveState( VRD2, VALVE_STATE_CLOSED ); + } +#endif } return result; Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r28b5f2e7f757647145a82a39aca0a5f3652c68a1 -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 28b5f2e7f757647145a82a39aca0a5f3652c68a1) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -420,8 +420,13 @@ setValveState( VPI, VALVE_STATE_CLOSED ); // Request a tare for reservoir 1 tareReservoir(); +#ifndef V_2_SYSTEM // Set the actuators to drain R1 + setValveState( VRD1, VALVE_STATE_OPEN ); +#else + // Set the actuators to drain R1 setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); rsrvrFillStableTimeCounter = 0; @@ -460,7 +465,12 @@ // Set the valves to flush the recirculation line setValveState( VPI, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); + setValveState( VRD1, VALVE_STATE_CLOSED ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); @@ -480,9 +490,17 @@ rsrvr2Status = DG_RESERVOIR_ABOVE_TARGET; // Request a tare for reservoir 2 tareReservoir(); +#ifndef V_2_SYSTEM + // Done with draining R1, close it + setValveState( VRD1, VALVE_STATE_CLOSED ); // Set the actuators to drain R2. // NOTE: Drain pump is already on and VDr is already on drain state + setValveState( VRD2, VALVE_STATE_OPEN ); +#else + // Set the actuators to drain R2. + // NOTE: Drain pump is already on and VDr is already on drain state setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif state = DG_HEAT_DISINFECT_STATE_DRAIN_R2; } @@ -521,13 +539,22 @@ { if ( TRUE == isThisLastDrain ) { +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); + setValveState( VRD2, VALVE_STATE_CLOSED ); +#else setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; state = DG_HEAT_DISINFECT_STATE_DRAIN_R1; } else { signalDrainPumpHardStop(); +#ifndef V_2_SYSTEM + // Done with draining R2, close it + setValveState( VRD2, VALVE_STATE_CLOSED ); +#endif setValveState( VPI, VALVE_STATE_OPEN ); stateTrialCounter = 0; stateTimer = getMSTimerCount(); @@ -567,7 +594,11 @@ if ( ( getTemperatureValue( TEMPSENSORS_INLET_PRIMARY_HEATER ) > MIN_INLET_TEMPERATURE_C ) && ( getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ) <= MAX_INLET_CONDUCTIVITY_US_PER_CM ) ) { +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setROPumpTargetFlowRate( RO_PUMP_TARGET_FLUSH_FILL_FLOW_RATE_LPM, MAX_RO_PUMP_FLUSH_FILL_PRESSURE_PSI ); stateTimer = getMSTimerCount(); stateTrialCounter = 0; @@ -702,7 +733,11 @@ setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); +#else setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); stateTimer = getMSTimerCount(); @@ -752,6 +787,10 @@ { // Done with draining R1 signalDrainPumpHardStop(); +#ifndef V_2_SYSTEM + // Close VRD1 + setValveState( VRD1, VALVE_STATE_CLOSED ); +#endif } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr1Status ) { @@ -777,10 +816,18 @@ // Set the valves to drain R2 and no fill setValveState( VPI, VALVE_STATE_CLOSED ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); +#ifndef V_2_SYSTEM + setValveState( VRD2, VALVE_STATE_OPEN ); +#else setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); // Start the timer for drain timeout stateTimer = getMSTimerCount(); @@ -824,7 +871,12 @@ } else if ( DG_RESERVOIR_REACHED_TARGET == rsrvr2Status ) { +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); + setValveState( VRD2, VALVE_STATE_CLOSED ); +#else setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif // Start the timer for drain timeout stateTimer = getMSTimerCount(); rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; @@ -866,12 +918,21 @@ // Prepare for filling the reservoirs and heating the water setValveState( VPI, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_CLOSED ); + setValveState( VRD2, VALVE_STATE_OPEN ); +#else setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif // Turn on the RO pump setROPumpTargetFlowRate( RO_PUMP_TARGET_FLUSH_FILL_FLOW_RATE_LPM, MAX_RO_PUMP_FLUSH_FILL_PRESSURE_PSI ); @@ -930,7 +991,11 @@ // Set the valves to drain R2 and no fill setValveState( VPI, VALVE_STATE_CLOSED ); setValveState( VBF, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); +#else setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NC ); +#endif setValveState( VDR, VALVE_STATE_RECIRC_C_TO_NC ); setValveState( VRC, VALVE_STATE_RECIRC_C_TO_NC ); @@ -998,7 +1063,12 @@ //TODO turn off CP1 and CP2 // Set the valves to transfer hot water from R1 to R2 and fill up R2. setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); + setValveState( VRD2, VALVE_STATE_CLOSED ); +#else setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); // Although there is fluid in both reservoirs, but they are set to empty @@ -1133,8 +1203,14 @@ // water does not enter the circulation path the membrane is cooling down setValveState( VPI, VALVE_STATE_CLOSED ); setValveState( VBF, VALVE_STATE_CLOSED ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRD1, VALVE_STATE_CLOSED ); +#else setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NC ); +#endif + stateTimer = getMSTimerCount(); state = DG_HEAT_DISINFECT_STATE_COOL_DOWN_RO_FILTER; } @@ -1196,6 +1272,9 @@ if ( ( TRUE == didTimeout( stateTimer, DRAIN_PUMP_START_TIME_IN_MIX_DRAIN_MS ) ) && ( isDrainPumpInMixDrainOn == FALSE ) ) { isDrainPumpInMixDrainOn = TRUE; +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); +#endif // Turn on the drain pump to drain the reservoirs in open loop mode setDrainPumpTargetRPM( DRAIN_PUMP_RPM_IN_MIX_DRAIN ); @@ -1208,8 +1287,15 @@ } else if ( DG_RESERVOIR_REACHED_TARGET == rsrvr1Status ) { +#ifndef V_2_SYSTEM + // Done with draining reservoir 1 + setValveState( VRD1, VALVE_STATE_CLOSED ); // Set the drain valve to reservoir 2 + setValveState( VRD2, VALVE_STATE_OPEN ); +#else + // Set the drain valve to reservoir 2 setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif rsrvr2Status = DG_RESERVOIR_ABOVE_TARGET; stateTimer = getMSTimerCount(); @@ -1218,7 +1304,7 @@ else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr1Status ) { prevHeatDisinfectState = state; - state = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; + state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; } } @@ -1250,7 +1336,13 @@ // Set the valves to fill up R1 and overflow to R2 setValveState( VPI, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); + // Done with draining reservoir 2 + setValveState( VRD2, VALVE_STATE_CLOSED ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); @@ -1268,7 +1360,7 @@ else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr2Status ) { prevHeatDisinfectState = state; - state = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; + state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; } return state; @@ -1301,7 +1393,11 @@ // Set the valves to rinse R2 to R1 and drain R1 setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_R1_C_TO_NC ); +#else setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); @@ -1350,6 +1446,9 @@ { // Done with draining R1 signalDrainPumpHardStop(); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_CLOSED ); +#endif } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr1Status ) { @@ -1374,10 +1473,18 @@ // De-energize all the valves and set the VDr to drain R2 setValveState( VPI, VALVE_STATE_CLOSED ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); +#ifndef V_2_SYSTEM + setValveState( VRD2, VALVE_STATE_OPEN ); +#else setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); @@ -1488,7 +1595,11 @@ { // The fluid is hot so this is a mix drain. Set the VPd to direct the cold inlet fluid to drain setValveState( VPI, VALVE_STATE_OPEN ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); +#else setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NC ); +#endif targetRPM = DRAIN_PUMP_RPM_IN_MIX_DRAIN; cancellationMode = CANCELLATION_MODE_HOT; @@ -1513,8 +1624,13 @@ if ( DG_RESERVOIR_REACHED_TARGET == rsrvr2Status ) { +#ifndef V_2_SYSTEM // Set the drain valve to reservoir 1 + setValveState( VRD1, VALVE_STATE_OPEN ); +#else + // Set the drain valve to reservoir 1 setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif } } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr2Status ) @@ -1580,7 +1696,11 @@ setValveState( VPI, VALVE_STATE_CLOSED ); setValveState( VBF, VALVE_STATE_CLOSED ); setValveState( VSP, VALVE_STATE_CLOSED ); - setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); +#endif setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); @@ -1758,7 +1878,7 @@ status = HEAT_DISINFECT_HEAT_UP_TIMEOUT; } } - else if ( isPartialDisinfectInProgress != TRUE && ThdTemp > HEAT_DISINFECT_START_TEMPERATURE_C ) + else if ( ( isPartialDisinfectInProgress != TRUE ) && ( ThdTemp > HEAT_DISINFECT_START_TEMPERATURE_C ) ) { // The temperature of the coldest spot is in range to start the disinfect timer heatDisinfectTimer = getMSTimerCount(); Index: firmware/App/Modes/ModeRecirculate.c =================================================================== diff -u -r4255fcb2a4958ceda5f8cf493f487e80a2884aed -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 4255fcb2a4958ceda5f8cf493f487e80a2884aed) +++ firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -85,6 +85,9 @@ // 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 ); +#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 ); Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -97,7 +97,12 @@ // set initial actuator states setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_CLOSED ); + setValveState( VRD2, VALVE_STATE_CLOSED ); +#else setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); @@ -181,7 +186,11 @@ flushFilterRequest = FALSE; filterFlushStartTime = getMSTimerCount(); setValveState( VPI, VALVE_STATE_OPEN ); - setValveState( VPD, VALVE_STATE_OPEN ); // TODO: VPD drain state is closed for V3 +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); +#else + setValveState( VPD, VALVE_STATE_OPEN ); // TODO: VPD drain state is closed for V3 +#endif state = DG_STANDBY_MODE_STATE_FLUSH_FILTER; } else if ( TRUE == pendingStartDGRequest ) @@ -246,7 +255,11 @@ if ( TRUE == endSampleWaterRequest ) { setValveState( VPI, VALVE_STATE_CLOSED ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); +#else setValveState( VPD, VALVE_STATE_CLOSED ); +#endif state = DG_STANDBY_MODE_STATE_IDLE; } @@ -269,7 +282,11 @@ if ( ( TRUE == stopSampleWaterRequest ) || ( TRUE == didTimeout( waterSampleStartTime, MAX_WATER_SAMPLE_TIME_MS ) ) ) { setValveState( VSP, VALVE_STATE_CLOSED ); +#ifndef V_2_SYSTEM + setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); +#else setValveState( VPD, VALVE_STATE_OPEN ); // TODO: VPD drain state is closed for V3 +#endif state = DG_STANDBY_MODE_STATE_FLUSH_FILTER_IDLE; } Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -r847478dd75aac2edfe27df454ac5a644b6f30040 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 847478dd75aac2edfe27df454ac5a644b6f30040) @@ -129,7 +129,11 @@ activeReservoir.data = (U32)resID; cmdResponse.rejected = FALSE; setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); - setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#ifndef V_2_SYSTEM + setValveState( VRD1, VALVE_STATE_OPEN ); +#else + setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); +#endif setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); break; @@ -138,7 +142,11 @@ activeReservoir.data = (U32)resID; cmdResponse.rejected = FALSE; setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); - setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#ifndef V_2_SYSTEM + setValveState( VRD2, VALVE_STATE_OPEN ); +#else + setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); +#endif setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); break;