Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r47a7da55aea88cd7a2b06870226122d0cc8be540 -rf861c4c5ab64f429e0b8b9cc456e2ed14e472f2b --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 47a7da55aea88cd7a2b06870226122d0cc8be540) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f861c4c5ab64f429e0b8b9cc456e2ed14e472f2b) @@ -429,6 +429,8 @@ } // send response to request sendChangeTreatmentDurationResponse( result, rejectReason, presTreatmentTimeSecs / SEC_PER_MIN, presMaxUFVolumeML ); + // send new ranges for settings + broadcastTreatmentSettingsRanges(); return result; } @@ -479,28 +481,34 @@ // start t/o timer - user must confirm UF changes within 1 minute from now pendingParamChangesTimer = getMSTimerCount(); - // verify UF rate change would be valid (this should be as UI is getting regular UF volume range updates) + // verify UF rate change would be valid (leave zero if not valid - UI will disable option) if ( uFRate <= (F32)MAX_UF_RATE_ML_MIN ) { result = TRUE; pendingUFVolumeChange = uFVolume; pendingUFRateChange = uFRate; rateDiff = ( uFRate - presUFRate ); - - // verify treatment duration change would be valid (leave zero if not valid - UI will disable option) - if ( ( trtTime <= MAX_TREATMENT_TIME_MINUTES ) && ( trtTime >= MIN_TREATMENT_TIME_MINUTES ) && - ( dialVolume <= MAX_DIALYSATE_VOLUME_ML ) ) - { - pendingTreatmentTimeChange = trtTime; - timeDiff = trtTime - ( (U32)( (F32)presTreatmentTimeSecs / (F32)SEC_PER_MIN ) + 1 ); - } - else - { - pendingTreatmentTimeChange = 0; - } } else { + pendingUFRateChange = 0.0; + } + // verify treatment duration change would be valid (leave zero if not valid - UI will disable option) + if ( ( trtTime <= MAX_TREATMENT_TIME_MINUTES ) && ( trtTime >= MIN_TREATMENT_TIME_MINUTES ) && + ( dialVolume <= MAX_DIALYSATE_VOLUME_ML ) ) + { + result = TRUE; + pendingUFVolumeChange = uFVolume; + pendingTreatmentTimeChange = trtTime; + timeDiff = trtTime - ( (U32)( (F32)presTreatmentTimeSecs / (F32)SEC_PER_MIN ) + 1 ); + } + else + { + pendingTreatmentTimeChange = 0; + } + // if neither option works, reject for UF rate + if ( FALSE == result ) + { rejectReason = REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE; } } @@ -589,6 +597,8 @@ } // respond to UF settings change confirmation sendChangeUFSettingsOptionResponse( result, rejectReason, presMaxUFVolumeML, presTreatmentTimeSecs / SEC_PER_MIN, presUFRate ); + // send new ranges for settings + broadcastTreatmentSettingsRanges(); return result; } @@ -647,6 +657,8 @@ rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } sendChangeBloodDialysateRateChangeResponse( result, (U32)rejectReason, presBloodFlowRate, presDialysateFlowRate ); + // send new ranges for settings + broadcastTreatmentSettingsRanges(); return result; }