Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r5a961b1f37a757333429adbdba95d7fc964aad1b -ra51419e487a62eac8bce5f5e2a6c366b11e9e11e --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 5a961b1f37a757333429adbdba95d7fc964aad1b) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a51419e487a62eac8bce5f5e2a6c366b11e9e11e) @@ -383,9 +383,6 @@ activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); } - // clear signal flags from sub-modes before calling sub-mode executives - resetSignalFlags(); - // Treatment mode state machine switch ( currentTreatmentState ) { @@ -424,6 +421,8 @@ // Alarm response request flags should be handled at this point, reset in case not handled in current state resetAlarmSignalFlags(); + // clear signal flags from sub-modes before calling sub-mode executives + resetSignalFlags(); // Broadcast treatment data broadcastTreatmentTimeAndState(); @@ -478,24 +477,24 @@ setRinsebackIsCompleted( FALSE ); + // Handle alarm signals if ( TRUE == alarmStopSignalled ) { transitionToTreatmentStop(); result = TREATMENT_STOP_STATE; } else { + execBloodPrime(); + + // Handle signals from blood prime sub-mode if ( TRUE == bloodPrimeToDialysisRequest ) { // Kick dialysis sub-mode off setDialysisParams( presBloodFlowRate, presDialysateFlowRate, presMaxUFVolumeML, presUFRate ); transitionToDialysis(); result = TREATMENT_DIALYSIS_STATE; } - else - { - execBloodPrime(); - } } return result;