Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r438b848d9190fd4212a7ed1b949fabf5cab78659 -red4f6eb9692ea0f5f9cb7acae1cf119932fb2d72 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 438b848d9190fd4212a7ed1b949fabf5cab78659) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision ed4f6eb9692ea0f5f9cb7acae1cf119932fb2d72) @@ -81,7 +81,7 @@ static U32 setBloodFlowRate; ///< Currently set blood flow rate (from prescription). static U32 setDialysateFlowRate; ///< Currently set dialysate flow rate (from prescription). -static F32 maxUFVolumeML; ///< Currently set total ultrafiltration volume for treatment (from prescription). +static F32 setUFVolumeML; ///< Currently set total ultrafiltration volume for treatment (from prescription). static F32 setUFRate; ///< Currently set ultrafiltration rate (from prescription). static U32 salineBolusBroadcastTimerCtr; ///< Saline bolus data broadcast timer counter used to schedule when to transmit data. @@ -142,7 +142,7 @@ setBloodFlowRate = 0; setDialysateFlowRate = 0; - maxUFVolumeML = 0.0; + setUFVolumeML = 0.0; setUFRate = 0.0; salineBolusBroadcastTimerCtr = 0; @@ -307,7 +307,7 @@ { setBloodFlowRate = bPFlow; setDialysateFlowRate = dPFlow; - maxUFVolumeML = maxUFVol; + setUFVolumeML = maxUFVol; setUFRate = uFRate; // Make rate changes in real time if currently performing dialysis. @@ -806,7 +806,7 @@ updateReservoirUFTime(); // If we have reached target UF volume, UF is complete - set UF rate to zero for remainder of treatment - if ( refUFVolume >= maxUFVolumeML ) + if ( refUFVolume >= setUFVolumeML ) // TODO - is this something we want to do or should we just let UF continue? { setUFRate = 0.0; } @@ -1061,11 +1061,10 @@ /*********************************************************************//** * @brief - * The updateUFVolumes function updates the ultrafiltration volumes based on - * set UF rate, latest UF elapsed time, and the latest load cell weight for the - * currently used reservoir. Updated UF volumes are then sent to the dialysate - * outlet pump controller. - * @details Inputs: setUFRate, uFTimeMS, load cell weight + * The updateUFVolumes function updates the measured ultrafiltration volume based on + * the latest load cell weight for the currently used reservoir. Updated UF volumes + * are then sent to the dialysate outlet pump controller. + * @details Inputs: measUFVolumeFromPriorReservoirs, resStartVolume[], load cell weight * @details Outputs: refUFVolume, measUFVolume * @return none *************************************************************************/ Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -re5d6674fbf4b6ddd8057385babac0a085ce18f42 -red4f6eb9692ea0f5f9cb7acae1cf119932fb2d72 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision e5d6674fbf4b6ddd8057385babac0a085ce18f42) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision ed4f6eb9692ea0f5f9cb7acae1cf119932fb2d72) @@ -1077,7 +1077,7 @@ pendingParamChangesTimer = getMSTimerCount(); // Verify UF rate change would be valid (leave zero if not valid - UI will disable option) - if ( uFRate <= (F32)MAX_UF_RATE_ML_MIN ) + if ( ( uFRate <= (F32)MAX_UF_RATE_ML_MIN ) && ( uFRate >= MIN_UF_RATE_ML_MIN ) ) { result = TRUE; pendingUFVolumeChange = uFVolume; Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rb156b12139fea40401c94b512503a2ceced69e22 -red4f6eb9692ea0f5f9cb7acae1cf119932fb2d72 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision b156b12139fea40401c94b512503a2ceced69e22) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision ed4f6eb9692ea0f5f9cb7acae1cf119932fb2d72) @@ -433,7 +433,7 @@ { F32 uFRate = uFVolumeMl / (F32)treatmentDuration; - if ( uFRate > MAX_UF_RATE_ML_MIN ) + if ( ( uFRate > MAX_UF_RATE_ML_MIN ) || ( uFRate < MIN_UF_RATE_ML_MIN ) ) { accepted = FALSE; rejReason = REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE; Index: firmware/App/Modes/ModeTreatmentParams.h =================================================================== diff -u -r0a4dcd288d4347b85baaa0b07da568b6add5eac7 -red4f6eb9692ea0f5f9cb7acae1cf119932fb2d72 --- firmware/App/Modes/ModeTreatmentParams.h (.../ModeTreatmentParams.h) (revision 0a4dcd288d4347b85baaa0b07da568b6add5eac7) +++ firmware/App/Modes/ModeTreatmentParams.h (.../ModeTreatmentParams.h) (revision ed4f6eb9692ea0f5f9cb7acae1cf119932fb2d72) @@ -34,6 +34,7 @@ #define MIN_PRESSURE_ALARM_LIMIT_DELTA_MMHG ( 30 ) ///< Minimum pressure alarm limit delta (in mmHg) #define MAX_UF_RATE_ML_MIN ( 2500.01F / (F32)MIN_PER_HOUR ) ///< Maximum ultrafiltration rate (in mL/min). Added small decimal to prevent float round off issues. +#define MIN_UF_RATE_ML_MIN ( 100.0F / (F32)MIN_PER_HOUR ) ///< Minimum ultrafiltration rate (in mL/min). #define MAX_UF_VOLUME_ML ( 8 * ML_PER_LITER ) ///< Maximum ultrafiltration volume (in mL). /// Record structure for a treatment parameters payload.