Index: firmware/App/Modes/SalineBolus.c =================================================================== diff -u -r67d83621cb2eb8e38c4b716e130540bdb8d1d9e9 -r5ed6831faa470509f0946fff85fe8e33c9d32eab --- firmware/App/Modes/SalineBolus.c (.../SalineBolus.c) (revision 67d83621cb2eb8e38c4b716e130540bdb8d1d9e9) +++ firmware/App/Modes/SalineBolus.c (.../SalineBolus.c) (revision 5ed6831faa470509f0946fff85fe8e33c9d32eab) @@ -189,18 +189,21 @@ { rejReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } - else if ( ( ( currTreatSubMode != TREATMENT_DIALYSIS_STATE ) && ( currTreatSubMode != TREATMENT_STOP_STATE ) ) || - ( TREATMENT_STOP_RECOVER_BLOOD_DETECT_STATE == getCurrentTreatmentStopState() ) ) + else if ( ( currTreatSubMode != TREATMENT_DIALYSIS_STATE ) && ( currTreatSubMode != TREATMENT_STOP_STATE ) ) { rejReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } - else if ( TRUE == isAnyAlarmActive() ) + else if ( ( TREATMENT_STOP_STATE == currTreatSubMode ) && ( TREATMENT_STOP_RECOVER_BLOOD_DETECT_STATE == getCurrentTreatmentStopState() ) ) { - if ( ( TRUE == isBloodRecircBlocked() ) || ( TRUE == isDialysateRecircBlocked() ) ) - { - rejReason = REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_ALLOWED; - } + // If in treatment stop submode but also in blood recover the software cannot do saline bolus + rejReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } + else if ( ( TRUE == isAnyAlarmActive() ) && ( ( TRUE == isBloodRecircBlocked() ) || ( TRUE == isDialysateRecircBlocked() ) ) ) + { + // Any alarm can be active but blood recirculation and dialysate recirculation cannot be blocked in their properties in order + // to do saline bolus + rejReason = REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_ALLOWED; + } else if ( currentSalineBolusState != SALINE_BOLUS_STATE_IDLE ) { rejReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS;