Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rcbb126cfd3a02c08436a66ffecb2bdf926263705 -r42fe309ff246de72d1ed42fba291e792630d1e12 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision cbb126cfd3a02c08436a66ffecb2bdf926263705) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 42fe309ff246de72d1ed42fba291e792630d1e12) @@ -591,27 +591,37 @@ cumulativeRinsebackVolume_mL.data += rinsebackVolumeSinceLast; rinsebackAdditionalTimerCtr++; - // Has additional rinseback completed or timed out? - if ( ( additionalRinsebackVolume_mL >= TARGET_ADDITIONAL_RINSEBACK_VOLUME_ML ) || - ( rinsebackAdditionalTimerCtr >= MAX_RINSEBACK_ADDITIONAL_TIME ) ) - { - setupForRinsebackStopOrPause(); - result = RINSEBACK_STOP_STATE; - } // Check for empty saline bag if ( TRUE == isSalineBagEmpty() ) { SET_ALARM_WITH_1_F32_DATA( ALARM_ID_EMPTY_SALINE_BAG, getMeasuredArterialPressure() ); - setupForRinsebackStopOrPause(); + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); result = RINSEBACK_STOP_STATE; } + // Has additional rinseback completed + else if ( additionalRinsebackVolume_mL >= TARGET_ADDITIONAL_RINSEBACK_VOLUME_ML ) + { + result = RINSEBACK_STOP_STATE; + } + // Has additional rinseback timed out? + else if ( rinsebackAdditionalTimerCtr >= MAX_RINSEBACK_ADDITIONAL_TIME ) + { + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); + result = RINSEBACK_STOP_STATE; + } // Has alarm requested stop? else if ( TRUE == doesAlarmStatusIndicateStop() ) { - setupForRinsebackStopOrPause(); + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); result = RINSEBACK_STOP_STATE; } + // Setup for rinseback stop state if additional rinseback completed or ending. + if ( RINSEBACK_STOP_STATE == result ) + { + setupForRinsebackStopOrPause(); + } + return result; }