Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r18ff3484c0eb42b22197d86312013196ab79584c -r9d20238b17f5c9089db526fd65c32c19927c6c0c --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 18ff3484c0eb42b22197d86312013196ab79584c) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 9d20238b17f5c9089db526fd65c32c19927c6c0c) @@ -92,12 +92,12 @@ static HD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current state of pre-treatment mode state machine. static BOOL fillReservoirOneStartRequested; ///< Flag indicates fill reservoir one has been requested. static U32 preTreatmentPublishTimerCounter; ///< Pre-treatment data broadcast timer counter used to schedule when to transmit data. + /// Interval (in task intervals) at which to publish pre-treatment mode data to CAN bus. static OVERRIDE_U32_T preTreatmentModePublishInterval = { PRE_TREATMENT_DATA_PUB_INTERVAL, PRE_TREATMENT_DATA_PUB_INTERVAL, PRE_TREATMENT_DATA_PUB_INTERVAL, 0 }; static U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T currentReservoirMgmtState; ///< Current pre-treatment reservoir management state. -static DG_RESERVOIR_ID_T activeReservoir = DG_RESERVOIR_2; static PRE_TREATMENT_RESERVOIR_VAR_T reservoirStatus[ NUM_OF_DG_RESERVOIRS ]; ///< Detailed state of each reservoir. #ifndef _RELEASE_ @@ -925,9 +925,6 @@ *************************************************************************/ static void execPreTreatmentReservoirMgmt( void ) { - // update the active reservoir. - activeReservoir = getDGActiveReservoir(); - // treatment reservoir mgmt. state machine switch ( currentReservoirMgmtState ) { @@ -1012,6 +1009,7 @@ PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); + DG_RESERVOIR_ID_T activeReservoir = getDGActiveReservoir(); // If DG has not started yet, start DG if ( DG_MODE_STAN == dgOpMode ) @@ -1109,7 +1107,7 @@ // Start tracking flush cycles, flushComplete => don't drain again. if ( FALSE == reservoirStatus[ inactiveReservoir ].flushComplete ) { - if (0 < reservoirStatus[ inactiveReservoir ].flushCount) + if ( reservoirStatus[ inactiveReservoir ].flushCount > 0 ) { reservoirStatus[ inactiveReservoir ].flushCount -= 1; } @@ -1119,7 +1117,7 @@ } } - volume = getPreTreatmentFillVolume( activeReservoir ); + volume = getPreTreatmentFillVolume( inactiveReservoir ); cmdStartDGFill( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM ); state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; } @@ -1178,21 +1176,34 @@ PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE; DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); + DG_RESERVOIR_ID_T inactiveReservoir = getDGInactiveReservoir(); + DG_RESERVOIR_ID_T activeReservoir = getDGActiveReservoir(); if ( ( DG_MODE_GENE == dgOpMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) ) { - state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; - if ( ( TRUE == reservoirStatus[ DG_RESERVOIR_1 ].flushComplete ) && ( TRUE == reservoirStatus[ DG_RESERVOIR_2 ].flushComplete ) ) { - reservoirStatus[ activeReservoir ].fillComplete = TRUE; + if( FALSE == reservoirStatus[ DG_RESERVOIR_1 ].fillComplete ) + { + reservoirStatus[ DG_RESERVOIR_1 ].fillComplete = TRUE; + state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; + } + else + { + if ( FALSE == reservoirStatus[ DG_RESERVOIR_2 ].fillComplete ) + { + reservoirStatus[ DG_RESERVOIR_2 ].fillComplete = TRUE; + state = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + } + } } else { DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; - rsrvrCmd.reservoirID = activeReservoir; + rsrvrCmd.reservoirID = inactiveReservoir; rsrvrCmd.useLastTrimmerHeaterDC = FALSE; cmdSetDGActiveReservoir( &rsrvrCmd ); }