Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r1275f9e92eb1ab0cd1b321c0c8eb940524e22117 -r909d4064e98d5684ee139534f0ac6cbc5f8774d5 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 1275f9e92eb1ab0cd1b321c0c8eb940524e22117) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 909d4064e98d5684ee139534f0ac6cbc5f8774d5) @@ -642,8 +642,8 @@ * @brief * The handleTreatmentBloodPrimeState function handles the blood prime state of * the Treatment Mode state machine. - * @details \b Inputs: presUFRate - * @details \b Outputs: none + * @details \b Inputs: presUFRate, bloodPrimeToDialysisRequest, recircAllowed + * @details \b Outputs: lastTreatmentTimeStamp, presUFRate, presUFVolumeMl, recircAllowed * @return next treatment mode state *************************************************************************/ static TREATMENT_STATE_T handleTreatmentBloodPrimeState( void ) @@ -665,9 +665,6 @@ // Handle signals from blood prime sub-mode if ( TRUE == bloodPrimeToDialysisRequest ) { - F32 rinsebackVolume_L = getDeliveredRinsebackVolume() / (F32)ML_PER_LITER; - F32 addToUFVolume = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) + rinsebackVolume_L; - lastTreatmentTimeStamp = getMSTimerCount(); // Kick dialysis sub-mode off setDialysisBloodPumpFlowRate( getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ) ); @@ -678,12 +675,17 @@ // sendTreatmentLogEventData( UF_START_RESUME_EVENT, 0.0, presUFRate ); // } - // Add only if rinseback is completed - if ( TRUE == getRinsebackIsCompleted() ) + // Came back from temp break? + if ( TRUE == recircAllowed ) { + F32 rinsebackVolume_L = getDeliveredRinsebackVolume() / (F32)ML_PER_LITER; + + presUFVolumeMl = ( getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) + rinsebackVolume_L ) * (F32)ML_PER_LITER; + presUFRateMlMin = presUFVolumeMl / (F32)( getTreatmentTimeRemainingSecs() / SEC_PER_MIN ); // Add rinseback volume to UF volume (fluid in circuit goes back to the patient when we resume treatment) - setTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME, addToUFVolume ); - setRinsebackIsCompleted( FALSE ); + setTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME, presUFVolumeMl ); + setDialysisDDParams( getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), presUFVolumeMl, presUFRateMlMin ); + recircAllowed = FALSE; } transitionToDialysis();