Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r53d2eecfd8e4393f14ba3c24ca8d668619834a3a -r4068c609827d855903b352c399b204bbb17ae12f --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 53d2eecfd8e4393f14ba3c24ca8d668619834a3a) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 4068c609827d855903b352c399b204bbb17ae12f) @@ -46,7 +46,7 @@ /// TODO: Restore to 100 when DPi flow control is fixed. #define DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN 250 ///< Patient connection sub-mode dialysate inlet pump flow rate in mL/min. -#define PRE_TREATMENT_MIN_RESERVOIR_VOLUME_ML 400 ///< Fill reservoir to this volume minimum to prep volume during development. +#define PRE_TREATMENT_MIN_FILL_RESERVOIR_VOLUME_ML 125 ///< Fill reservoir to this volume minimum to prep volume during development. #define PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML 500 ///< Fill reservoir to this volume (in mL) to flush filter and lines. #define PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML 1200 ///< Fill reservoir one to this volume (in mL) during pre-treatment mode. #define PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML 600 ///< Fill reservoir two to this volume (in mL) during pre-treatment mode. @@ -97,7 +97,6 @@ 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 +924,6 @@ *************************************************************************/ static void execPreTreatmentReservoirMgmt( void ) { - // update the active reservoir. - activeReservoir = getDGActiveReservoir(); - // treatment reservoir mgmt. state machine switch ( currentReservoirMgmtState ) { @@ -1012,6 +1008,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 ) @@ -1087,6 +1084,7 @@ DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); U32 volume = 0; + DG_RESERVOIR_ID_T activeReservoir = getDGActiveReservoir(); if ( ( DG_MODE_GENE == dgOpMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) ) { @@ -1164,6 +1162,8 @@ 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 ) ) { @@ -1185,7 +1185,13 @@ if ( ( TRUE == reservoirStatus[ DG_RESERVOIR_1 ].flushComplete ) && ( TRUE == reservoirStatus[ DG_RESERVOIR_2 ].flushComplete ) ) { - reservoirStatus[ activeReservoir ].fillComplete = TRUE; // TODO - need to restore code that takes us to complete state when all fills done + reservoirStatus[ activeReservoir ].fillComplete = TRUE; + + if ( ( TRUE == reservoirStatus[ DG_RESERVOIR_1 ].fillComplete ) && + ( TRUE == reservoirStatus[ DG_RESERVOIR_2 ].fillComplete ) ) + { + state = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + } } else { @@ -1275,34 +1281,50 @@ { U32 volume = 0; - // Fill volumes after flushing - if ( TRUE == reservoirStatus[ inactiveRes ].flushComplete ) - { - if ( DG_RESERVOIR_1 == inactiveRes ) - { - volume = PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML; - } - // Reservoir 2 - else - { - volume = PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML; - } - } - // Flush fill volumes - else - { - volume = PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML; - } + // Fill volumes after flushing + if ( TRUE == reservoirStatus[ inactiveRes ].flushComplete ) + { + #ifndef _RELEASE_ + if ( ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRIMING ) ) || + ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_WET_SELF_TEST ) ) ) + { + if ( DG_RESERVOIR_1 == inactiveRes ) + { + volume = PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML; + } + // Reservoir 2 + else + { + volume = PRE_TREATMENT_MIN_FILL_RESERVOIR_VOLUME_ML; + } + } + else + #endif + { + if ( DG_RESERVOIR_1 == inactiveRes ) + { + volume = PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML; + } + // Reservoir 2 + else + { + volume = PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML; + } + } + } + // Flush fill volumes + else + { + volume = PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML; + } - return volume; + return volume; } - /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ - /*********************************************************************//** * @brief * The testSetPreTreatmentModePublishIntervalOverride function sets the override of the