Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e -r62ac01125d9f150efa7de554e7c471dbc8ab6e7f --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 62ac01125d9f150efa7de554e7c471dbc8ab6e7f) @@ -554,17 +554,18 @@ /*********************************************************************//** * @brief - * The handleDrainDePrimeDGDialysateLinesState function waits for DG to complete - * reservoir switch. - * @details Inputs: - * @details Outputs: + * The handleDrainDePrimeDGDialysateLinesState function de-primes the return + * dialysate line so that it will not leak when user disconnects the line + * from the DG. + * @details Inputs: drainDGDePrimeActive + * @details Outputs: drainDGDePrimeActive * @return next state *************************************************************************/ static DRAIN_STATE_T handleDrainDePrimeDGDialysateLinesState( void ) { DRAIN_STATE_T state = DRAIN_DG_DEPRIME_STATE; - if ( ( DG_MODE_GENE == getDGOpMode() ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) + if ( ( ( DG_MODE_GENE == getDGOpMode() ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) || ( DG_MODE_FAUL == getDGOpMode() ) ) { if ( FALSE == drainDGDePrimeActive ) { @@ -581,7 +582,14 @@ { drainDGDePrimeActive = FALSE; signalDialInPumpHardStop( ); - state = DRAIN_RESERVOIR_SWITCH_STATE; + if ( getDGOpMode() != DG_MODE_FAUL ) + { + state = DRAIN_RESERVOIR_SWITCH_STATE; + } + else + { + state = DRAIN_RESERVOIR_COMPLETE_STATE; + } } }