Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r5069769a675a529142dfd5f9fb2491380cec8b83 -r332b21aa10060e7cec0284b9851ff1d86813a2b4 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 5069769a675a529142dfd5f9fb2491380cec8b83) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 332b21aa10060e7cec0284b9851ff1d86813a2b4) @@ -1459,19 +1459,18 @@ { ISOLATED_UF_DATA_PAYLOAD_T data; U32 durationInMinutes = getIsolatedUFDurationMin(); - U32 durationSec = durationInMinutes * SEC_PER_MIN; - U32 elapsedSec = getIsolatedUFSessionElapsedTimeSec(); - F32 volumeGoalMl = getIsolatedUFSetVolumeMl(); + U32 durationSec = durationInMinutes * SEC_PER_MIN; + U32 elapsedSec = getIsolatedUFSessionElapsedTimeSec(); + F32 volumeGoalMl = getIsolatedUFSetVolumeMl(); - data.mDuration = durationInMinutes; - data.mElapsedTime = elapsedSec; - data.mRemainingTime = ( durationSec > elapsedSec ) ? ( durationSec - elapsedSec ) : 0U; - data.mSetVolume = volumeGoalMl; - data.mVolumeDelivered = getIsolatedUFVolumeDrawn() * (F32)ML_PER_LITER; - data.mRate = getIsolatedUFRateMlMin(); + data.mDuration = durationSec; + data.mElapsedTime = elapsedSec; + data.mRemainingTime = ( durationSec > elapsedSec ) ? ( durationSec - elapsedSec ) : 0U; + data.mSetVolume = volumeGoalMl / (F32)ML_PER_LITER; + data.mVolumeDelivered = getIsolatedUFVolumeDrawn(); + data.mRate = ( getIsolatedUFRateMlMin() * (F32)MIN_PER_HOUR ) / (F32)ML_PER_LITER; - sendMessage( MSG_ID_TD_ISOLATED_UF_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08 *)(&data), sizeof( ISOLATED_UF_DATA_PAYLOAD_T ) ); - + sendMessage( MSG_ID_TD_ISOLATED_UF_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08 *)(&data),sizeof( ISOLATED_UF_DATA_PAYLOAD_T ) ); isolatedUFBroadcastTimerCtr = 0; } } Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -r5069769a675a529142dfd5f9fb2491380cec8b83 -r332b21aa10060e7cec0284b9851ff1d86813a2b4 --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 5069769a675a529142dfd5f9fb2491380cec8b83) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 332b21aa10060e7cec0284b9851ff1d86813a2b4) @@ -88,12 +88,12 @@ /// Payload record structure for isolated UF data broadcast messages. typedef struct { - U32 mDuration; ///< Isolated UF duration in minutes. + U32 mDuration; ///< Isolated UF duration in seconds. U32 mElapsedTime; ///< Isolated UF elapsed time in seconds. U32 mRemainingTime; ///< ISO UF remaining time in seconds - F32 mSetVolume; ///< Isolated UF set volume in mL. - F32 mVolumeDelivered; ///< Isolated UF volume delivered in mL. - F32 mRate; ///< Isolated UF rate in mL/min. + F32 mSetVolume; ///< Isolated UF set volume in L. + F32 mVolumeDelivered; ///< Isolated UF volume delivered in L. + F32 mRate; ///< Isolated UF rate in L/hr. } ISOLATED_UF_DATA_PAYLOAD_T; /// Payload record structure for the in-line pressure limits change response. 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;