Index: firmware/App/Services/TxParams.c =================================================================== diff -u -r52787cd53986cfd0abb7e674bf096898e5070f9a -r332b21aa10060e7cec0284b9851ff1d86813a2b4 --- firmware/App/Services/TxParams.c (.../TxParams.c) (revision 52787cd53986cfd0abb7e674bf096898e5070f9a) +++ firmware/App/Services/TxParams.c (.../TxParams.c) (revision 332b21aa10060e7cec0284b9851ff1d86813a2b4) @@ -941,6 +941,7 @@ static REQUEST_REJECT_REASON_CODE_T validateIsolatedUFDuration( U32 durationMin ) { REQUEST_REJECT_REASON_CODE_T reason = REQUEST_REJECT_REASON_NONE; + TREATMENT_STATE_T treatmentState = getTreatmentState(); U32 prescribedDurationMin = getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); U32 maxTreatmentDurationMin = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_TREATMENT_DURATION ); U32 cumulativeIsoUFTimeMin = getCumulativeIsolatedUFTimeMin(); @@ -950,7 +951,7 @@ { reason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } - else if ( ( TREATMENT_DIALYSIS_STATE != getTreatmentState() ) && + else if ( ( TREATMENT_DIALYSIS_STATE != treatmentState ) && ( TREATMENT_ISO_UF_STATE != treatmentState ) && ( FALSE == isPostTreatmentIsolatedUFRequest() ) ) { reason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; @@ -1163,7 +1164,11 @@ if ( TRUE == activeUpdated ) { - signalStartIsolatedUF( ( TRUE == isPostTreatmentIsolatedUFRequest() ? FALSE : TRUE ) ); + if ( TREATMENT_ISO_UF_STATE != getTreatmentState() ) + { + signalStartIsolatedUF( ( TRUE == isPostTreatmentIsolatedUFRequest() ? FALSE : TRUE ) ); + } + accepted = TRUE; resetIsolatedUFSettingsPending(); } @@ -1193,7 +1198,7 @@ } response.mAccepted = (U32)accepted; - response.mReason = (U32)reason; + response.mReason = (U32)reason; sendMessage( MSG_ID_TD_ISOLATED_UF_CONFIRM_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( ISOLATED_UF_CONFIRM_RESPONSE_PAYLOAD_T ) ); return accepted;