Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r9302e1bd2413cbf99e80ac51aac38502d94801d9 -rf88ce1aa5a00106b6ba51a625fe4c1d8f0408cfd --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 9302e1bd2413cbf99e80ac51aac38502d94801d9) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f88ce1aa5a00106b6ba51a625fe4c1d8f0408cfd) @@ -290,12 +290,22 @@ U32 newTime = getMSTimerCount(); U32 msSinceLast = calcTimeBetween( lastTreatmentTimeStamp, newTime ); - // update treatment time - treatmentTimeMS += msSinceLast; + // update treatment time (unless delivering a saline bolus) + if ( getDialysisState() != DIALYSIS_SALINE_BOLUS_STATE ) + { + treatmentTimeMS += msSinceLast; + } lastTreatmentTimeStamp = newTime; - // execute state machine for treatment dialysis sub-mode - execDialysis(); + if ( CALC_ELAPSED_TREAT_TIME_IN_SECS() >= presTreatmentTimeSecs ) + { + result = TREATMENT_END_STATE; + } + else + { + // execute state machine for treatment dialysis sub-mode + execDialysis(); + } // TODO - test code - remove later if ( getOffButtonState() == BUTTON_STATE_PRESSED ) @@ -685,7 +695,7 @@ U32 timeRemaining = presTreatmentTimeSecs - elapsedTreatmentTimeInSecs; DIALYSIS_STATE_T dialysisState = getDialysisState(); UF_STATE_T uFState = getUltrafiltrationState(); - BOOL salineBolusInProgress = ( dialysisState == DIALYSIS_SOLUTION_INFUSION_STATE ? TRUE : FALSE ); + BOOL salineBolusInProgress = ( dialysisState == DIALYSIS_SALINE_BOLUS_STATE ? TRUE : FALSE ); broadcastTreatmentTime( presTreatmentTimeSecs, elapsedTreatmentTimeInSecs, timeRemaining ); broadcastTreatmentState( currentTreatmentState, uFState, salineBolusInProgress );