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 Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -r6b870cd0699bb3ee22b93981d51373a6c2d56162 -rb9fd6bfd063774f1295a1a84de74a257d7b29640 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 6b870cd0699bb3ee22b93981d51373a6c2d56162) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision b9fd6bfd063774f1295a1a84de74a257d7b29640) @@ -846,7 +846,7 @@ { BOOL result = FALSE; - if ( RINSEBACK_STOP_STATE == rinsebackState ) + if ( RINSEBACK_STOP_STATE == rinsebackState ) // TODO - must not be done w/ treatment { result = TRUE; recircRequested = TRUE; @@ -873,7 +873,7 @@ { BOOL result = FALSE; - if ( ( RINSEBACK_STOP_INIT_STATE == rinsebackState ) || ( RINSEBACK_STOP_STATE == rinsebackState ) ) + if ( ( RINSEBACK_STOP_INIT_STATE == rinsebackState ) || ( RINSEBACK_STOP_STATE == rinsebackState ) ) // TODO - must not be done w/ treatment { result = TRUE; backToTreatmentRequested = TRUE; Index: firmware/App/Modes/TreatmentEnd.c =================================================================== diff -u -r6b870cd0699bb3ee22b93981d51373a6c2d56162 -rb9fd6bfd063774f1295a1a84de74a257d7b29640 --- firmware/App/Modes/TreatmentEnd.c (.../TreatmentEnd.c) (revision 6b870cd0699bb3ee22b93981d51373a6c2d56162) +++ firmware/App/Modes/TreatmentEnd.c (.../TreatmentEnd.c) (revision b9fd6bfd063774f1295a1a84de74a257d7b29640) @@ -107,6 +107,8 @@ *************************************************************************/ void transitionToTreatmentEnd( void ) { + initTreatmentEnd(); + // Set valves setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE );