Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rad1296a077cec6ed95674cc1267a750aaf8213c4 -r4205dc894c6df0d84072778fcd80dcaed93f75fa --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision ad1296a077cec6ed95674cc1267a750aaf8213c4) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 4205dc894c6df0d84072778fcd80dcaed93f75fa) @@ -72,7 +72,7 @@ static BOOL treatmentCompleted; ///< Flag indicates whether the treatment has completed. static U32 presTreatmentTimeSecs; ///< Prescribed treatment time (in seconds). -static F32 presUFVolumeMl; ///< Prescribed ultrafiltration volume (in L). +static F32 presUFVolumeMl; ///< Prescribed ultrafiltration volume (in Ml). static F32 presUFRateMlMin; ///< Prescribed ultrafiltration rate (in mL/Min). static U32 treatmentTimeMS; ///< Elapsed treatment time (in ms). @@ -929,13 +929,13 @@ * @details \b Outputs: presTreatmentTimeSecs, presUFVolumeL, presUFRateLHr. * @return none *************************************************************************/ -void updateTreatmentBroadcastData( void ) +void updateTreatmentBroadcastData( F32 ufRateLhr ) { presTreatmentTimeSecs = getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ) * SEC_PER_MIN; - presUFVolumeL = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); + presUFVolumeMl = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); - presUFRateLHr = presUFVolumeL / ( (F32)getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ) / (F32)MIN_PER_HOUR ); + presUFRateMlMin = ( ufRateLhr * (F32)ML_PER_LITER ) / (F32)MIN_PER_HOUR; } /*********************************************************************//** @@ -1159,7 +1159,7 @@ presUFRateLHr = presUFVolumeL / ( (F32)getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ) / (F32)MIN_PER_HOUR ); data.setUFVolumeL = presUFVolumeL; - data.tgtUFRateLHr = presUFRateLHr; + data.tgtUFRateLHr = ( presUFRateMlMin * (F32)MIN_PER_HOUR ) / (F32)ML_PER_LITER; data.ufVolumeDeliveredL = getUltrafiltrationVolumeDrawn(); data.ufState = (U32)getDialysisState(); Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -r1e8f1e33b885d6b5d64efa37525fa4ea6720b4d5 -r4205dc894c6df0d84072778fcd80dcaed93f75fa --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 1e8f1e33b885d6b5d64efa37525fa4ea6720b4d5) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 4205dc894c6df0d84072778fcd80dcaed93f75fa) @@ -113,7 +113,7 @@ void signalBloodPrimeToDialysis( void ); // Blood prime sub-mode is signaling to move on to dialysis sub-mode void broadcastTreatmentTimeAndState( void ); // Broadcast the times and states of this treatment -void updateTreatmentBroadcastData( void ); // Update treatment broadcast data from current treatment parameters +void updateTreatmentBroadcastData( F32 ufRateLhr ); // Update treatment broadcast data from current treatment parameters TREATMENT_STATE_T getTreatmentState( void ); // Determine the current treatment sub-mode (state) BOOL isTreatmentCompleted( void ); // Determine whether the treatment has completed Index: firmware/App/Monitors/Pressures.c =================================================================== diff -u -r1e8f1e33b885d6b5d64efa37525fa4ea6720b4d5 -r4205dc894c6df0d84072778fcd80dcaed93f75fa --- firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision 1e8f1e33b885d6b5d64efa37525fa4ea6720b4d5) +++ firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision 4205dc894c6df0d84072778fcd80dcaed93f75fa) @@ -509,7 +509,9 @@ currentVenousMinLimit = MAX( currentVenousMinLimit, VENOUS_PRESSURE_LIMIT_MIN_MMHG ); currentVenousMaxLimit = stableVenousPressure + venMaxOffset; currentVenousMaxLimit = MIN( currentVenousMaxLimit, VENOUS_PRESSURE_LIMIT_MAX_MMHG ); + currentTmpMinLimit = stableTmpPressure - tmpOffset; currentTmpMinLimit = MAX( currentTmpMinLimit, TMP_PRESSURE_LIMIT_MIN_MMHG ); + currentTmpMaxLimit = stableTmpPressure + tmpOffset; currentTmpMaxLimit = MIN( currentTmpMaxLimit, TMP_PRESSURE_LIMIT_MAX_MMHG ); } else Index: firmware/App/Services/TxParams.c =================================================================== diff -u -rad1296a077cec6ed95674cc1267a750aaf8213c4 -r4205dc894c6df0d84072778fcd80dcaed93f75fa --- firmware/App/Services/TxParams.c (.../TxParams.c) (revision ad1296a077cec6ed95674cc1267a750aaf8213c4) +++ firmware/App/Services/TxParams.c (.../TxParams.c) (revision 4205dc894c6df0d84072778fcd80dcaed93f75fa) @@ -2204,7 +2204,7 @@ { setTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION, validatedTreatmentDuration_min ); setTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION, validatedHeparinDeliveryDuration_min ); - updateTreatmentBroadcastData(); + updateTreatmentBroadcastData( validatedUFRateLhr ); setDialysisDDParams( getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), presUFVolumeMl, validatedUFRateMlMin ); response.accepted = TRUE; @@ -2264,7 +2264,8 @@ ( fabs( request.ufRate - validatedUFRateLhr ) <= 0.01F ) ) { setTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME, validatedUFVolumeGoalL ); - updateTreatmentBroadcastData(); + updateTreatmentBroadcastData( validatedUFRateLhr ); + setDialysisDDParams( getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), validatedUFVolumeGoalMl, validatedUFRateMlMin ); response.accepted = TRUE;