Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r4b22b45e775c0525bc1d76e83e265af91a59785e -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 4b22b45e775c0525bc1d76e83e265af91a59785e) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -31,9 +31,6 @@ #define START_DG_CMD TRUE ///< Parameter for DG start/stop command function. True = start. #define STOP_DG_CMD FALSE ///< Parameter for DG start/stop command function. False = stop. -#define DRAIN_RESERVOIR_TO_VOLUME_ML 200 //100 ///< Drain reservoir to this volume (in mL) during treatment. -#define FILL_RESERVOIR_TO_VOLUME_ML 1500 ///< Fill reservoir to this volume (in mL) during treatment. - #define RESERVOIR_SETTLE_TIME_MS 5000 ///< Time (in ms) allotted for reservoir to settle (after fill, before drain). /// States of the treatment reservoir management state machine. Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r2df21d2472a8d79d78af7e359518acf3614accc5 -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -31,6 +31,9 @@ // ********** public definitions ********** +#define DRAIN_RESERVOIR_TO_VOLUME_ML 200 //100 ///< Drain reservoir to this volume (in mL) during treatment. +#define FILL_RESERVOIR_TO_VOLUME_ML 1700 ///< Fill reservoir to this volume (in mL) during treatment. + /// Enumeration of DG reservoirs. typedef enum DG_Reservoirs { Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r7fa65a3aae9c4ef70a6e53f3e3bb20f0425bd681 -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 7fa65a3aae9c4ef70a6e53f3e3bb20f0425bd681) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -121,7 +121,7 @@ { if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { - cmdStartDGDrain( 200 ); + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML ); } } else if ( DG_MODE_DRAI == dgOpMode ) @@ -148,7 +148,7 @@ { if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { - cmdStartDGFill( 1700 ); // TODO - define this in pre-treatment mode when implemented. + cmdStartDGFill( FILL_RESERVOIR_TO_VOLUME_ML ); } } else if ( DG_MODE_FILL == dgOpMode ) Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r12ae81f766052993995d323456fa4c746cf4ee75 -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 12ae81f766052993995d323456fa4c746cf4ee75) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -708,19 +708,17 @@ U32 maxTime2 = MAX_DIALYSATE_VOLUME_ML / presDialysateFlowRate; U32 maxTime = MIN( maxTime1, maxTime2 ); // compute minimum UF volume - U32 minUFVol = (U32)(getUltrafiltrationVolumeCollected()); - // compute maximum UF volume (considering from adjustment of treatment duration or UF rate perspectives) - U32 maxUFVol1 = minUFVol + ( ( CALC_TREAT_TIME_REMAINING_IN_SECS() / SEC_PER_MIN ) * MAX_UF_RATE_ML_MIN ); - U32 maxUFVol2 = ( presUFRate > 0 ? minUFVol + (U32)( ( MAX_TREATMENT_TIME_MINUTES - CALC_ELAPSED_TREAT_TIME_IN_MIN() - 1 ) * presUFRate ) : MAX_UF_VOLUME_ML ); - U32 maxUFVol = MIN( maxUFVol1, maxUFVol2 ); + F32 minUFVol = getUltrafiltrationVolumeCollected() + presUFRate; + // compute maximum UF volume (considering from adjustment of UF rate perspective) + F32 maxUFVol = ( presUFRate > 0.0 ? minUFVol + ( (F32)( MAX_TREATMENT_TIME_MINUTES - CALC_ELAPSED_TREAT_TIME_IN_MIN() - 1 ) * presUFRate ) : (F32)MAX_UF_VOLUME_ML ); // compute minimum dialysate flow rate U32 minDialRate = MIN_DIAL_IN_FLOW_RATE; // compute maximum dialysate flow rate from max dialysate volume perspective U32 maxDialRate = MAX_DIALYSATE_VOLUME_ML / ( presTreatmentTimeSecs / SEC_PER_MIN ); // now ensure maximums do not exceed the literal maximums maxTime = MIN( maxTime, MAX_TREATMENT_TIME_MINUTES ); - maxUFVol = MIN( maxUFVol, MAX_UF_VOLUME_ML ); + maxUFVol = MIN( maxUFVol, (F32)MAX_UF_VOLUME_ML ); maxDialRate = MIN( maxDialRate, MAX_DIAL_IN_FLOW_RATE ); // send updated treatment parameter ranges to UI sendTreatmentParamsRangesToUI( minTime, maxTime, minUFVol, maxUFVol, minDialRate, maxDialRate ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r6e8917e48113a8798b26e489296a3f69509c0590 -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6e8917e48113a8798b26e489296a3f69509c0590) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -340,7 +340,6 @@ BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ) { BOOL result; - F32 volume_L = volume_mL / (F32)ML_PER_LITER; MESSAGE_T msg; U08 *payloadPtr = msg.payload; @@ -353,7 +352,7 @@ payloadPtr += sizeof( BOOL ); memcpy( payloadPtr, &reason, sizeof( U32) ); payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &volume_L, sizeof( F32 ) ); + memcpy( payloadPtr, &volume_mL, sizeof( F32 ) ); payloadPtr += sizeof( F32 ); memcpy( payloadPtr, &time_min, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); @@ -389,7 +388,6 @@ BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ) { BOOL result; - F32 volume_L = volume_mL / (F32)ML_PER_LITER; MESSAGE_T msg; U08 *payloadPtr = msg.payload; @@ -402,7 +400,7 @@ payloadPtr += sizeof( BOOL ); memcpy( payloadPtr, &reason, sizeof( U32) ); payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &volume_L, sizeof( F32 ) ); + memcpy( payloadPtr, &volume_mL, sizeof( F32 ) ); payloadPtr += sizeof( F32 ); memcpy( payloadPtr, &time_min, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); @@ -431,7 +429,6 @@ BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ) { BOOL result; - F32 volume_L = volume_mL / (F32)ML_PER_LITER; MESSAGE_T msg; U08 *payloadPtr = msg.payload; @@ -446,7 +443,7 @@ payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &time_min, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &volume_L, sizeof( F32 ) ); + memcpy( payloadPtr, &volume_mL, sizeof( F32 ) ); // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); @@ -508,7 +505,7 @@ * @param maxDialRate : Maximum dialysate flow rate (in mL/min). * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, U32 minUFVol, U32 maxUFVol, U32 minDialRate, U32 maxDialRate ) +BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ) { BOOL result; MESSAGE_T msg; @@ -517,16 +514,16 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_TREATMENT_PARAM_CHANGE_RANGES; - msg.hdr.payloadLen = sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ); + msg.hdr.payloadLen = sizeof( U32 ) + sizeof( U32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( U32 ) + sizeof( U32 ); memcpy( payloadPtr, &minTime, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &maxTime, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &minUFVol, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &maxUFVol, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &minUFVol, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &maxUFVol, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); memcpy( payloadPtr, &minDialRate, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &maxDialRate, sizeof( U32 ) ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r12ae81f766052993995d323456fa4c746cf4ee75 -r47a7da55aea88cd7a2b06870226122d0cc8be540 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 12ae81f766052993995d323456fa4c746cf4ee75) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) @@ -79,7 +79,7 @@ BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ); // MSG_ID_TREATMENT_PARAM_CHANGE_RANGES -BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, U32 minUFVol, U32 maxUFVol, U32 minDialRate, U32 maxDialRate ); +BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); // MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST void handleChangeBloodDialysateRateChangeRequest( MESSAGE_T *message );