Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r6b870cd0699bb3ee22b93981d51373a6c2d56162 -rb9fd6bfd063774f1295a1a84de74a257d7b29640 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 6b870cd0699bb3ee22b93981d51373a6c2d56162) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision b9fd6bfd063774f1295a1a84de74a257d7b29640) @@ -1113,19 +1113,20 @@ U32 elapsedTreatmentTimeInSecs; // Update treatment time stats and broadcast - end treatment if time - elapsedTreatmentTimeInSecs = treatmentTimeMS / MS_PER_SECOND; - if ( elapsedTreatmentTimeInSecs >= presTreatmentTimeSecs ) - { - stopDialysis(); - elapsedTreatmentTimeInSecs = presTreatmentTimeSecs; - currentTreatmentState = TREATMENT_END_STATE; - } + elapsedTreatmentTimeInSecs = CALC_ELAPSED_TREAT_TIME_IN_SECS(); // Broadcast treatment time data at interval if ( ++treatmentTimeBroadcastTimerCtr >= TREATMENT_TIME_DATA_PUB_INTERVAL ) { - U32 timeRemaining = presTreatmentTimeSecs - elapsedTreatmentTimeInSecs; + if ( elapsedTreatmentTimeInSecs < presTreatmentTimeSecs ) + { + U32 timeRemaining = presTreatmentTimeSecs - elapsedTreatmentTimeInSecs; - broadcastTreatmentTime( presTreatmentTimeSecs, elapsedTreatmentTimeInSecs, timeRemaining ); + broadcastTreatmentTime( presTreatmentTimeSecs, elapsedTreatmentTimeInSecs, timeRemaining ); + } + else // If treatment is completed, send zeroes to UI + { + broadcastTreatmentTime( 0, 0, 0 ); + } treatmentTimeBroadcastTimerCtr = 0; } // Broadcast treatment state data at interval