Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rf4199248340b66e66abbe99599d5d30ce980ea5f -r5a961b1f37a757333429adbdba95d7fc964aad1b --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f4199248340b66e66abbe99599d5d30ce980ea5f) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 5a961b1f37a757333429adbdba95d7fc964aad1b) @@ -413,18 +413,12 @@ currentTreatmentState = handleTreatmentRecircState(); break; - case TREATMENT_DIALYSIS_END_STATE: + case TREATMENT_END_STATE: currentTreatmentState = handleTreatmentEndState(); break; - case TREATMENT_END_STATE: - endAirTrapControl(); // TODO - move to appropriate place - requestNewOperationMode( MODE_POST ); - break; - default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_INVALID_STATE, currentTreatmentState ); - currentTreatmentState = TREATMENT_END_STATE; break; } @@ -545,7 +539,7 @@ stopDialysis(); transitionToTreatmentEnd(); SET_ALARM_WITH_1_U32_DATA( ALARM_ID_END_OF_DIALYSIS_TREATMENT_WARNING, presTreatmentTimeSecs ); - result = TREATMENT_DIALYSIS_END_STATE; + result = TREATMENT_END_STATE; } // Otherwise, execute state machine for treatment dialysis sub-mode else @@ -594,7 +588,7 @@ // If user requests treatment end, end treatment else if ( TRUE == endTreatmentAlarmResponseRequest ) { - result = TREATMENT_END_STATE; + requestNewOperationMode( MODE_POST ); } // Otherwise execute state machine for treatment stop sub-mode else @@ -639,7 +633,8 @@ } else if ( TRUE == endTreatmentRequest ) { - result = TREATMENT_END_STATE; + requestNewOperationMode( MODE_POST ); + result = TREATMENT_STOP_STATE; } return result; @@ -674,7 +669,8 @@ } else if ( TRUE == endTreatmentRequest ) { - result = TREATMENT_END_STATE; + requestNewOperationMode( MODE_POST ); + result = TREATMENT_STOP_STATE; } return result; @@ -690,7 +686,7 @@ *************************************************************************/ static TREATMENT_STATE_T handleTreatmentEndState( void ) { - TREATMENT_STATE_T result = TREATMENT_DIALYSIS_END_STATE; + TREATMENT_STATE_T result = TREATMENT_END_STATE; // Handle alarm user response signals - forward to treatment end sub-mode if ( TRUE == alarmStopSignalled ) @@ -721,7 +717,8 @@ } else if ( TRUE == endTreatmentRequest ) { - result = TREATMENT_END_STATE; + requestNewOperationMode( MODE_POST ); + result = TREATMENT_STOP_STATE; } return result; @@ -744,7 +741,7 @@ // Check if we are in an appropriate treatment state for settings adjustment if ( ( MODE_TREA == currMode ) && - ( currentTreatmentState > TREATMENT_START_STATE ) && ( currentTreatmentState < TREATMENT_DIALYSIS_END_STATE ) && + ( currentTreatmentState > TREATMENT_START_STATE ) && ( currentTreatmentState < TREATMENT_END_STATE ) && ( CALC_ELAPSED_TREAT_TIME_IN_MIN() < treatmentTime ) && ( treatmentTime >= MIN_TREATMENT_TIME_MINUTES ) ) { F32 uFVolume; @@ -784,7 +781,7 @@ rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } else if ( ( currentTreatmentState <= TREATMENT_START_STATE ) || - ( currentTreatmentState >= TREATMENT_DIALYSIS_END_STATE ) ) + ( currentTreatmentState >= TREATMENT_END_STATE ) ) { rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } @@ -831,7 +828,7 @@ // Check if we are in an appropriate treatment state for settings adjustment if ( ( MODE_TREA == currMode ) && - ( currentTreatmentState > TREATMENT_START_STATE ) && ( currentTreatmentState < TREATMENT_DIALYSIS_END_STATE ) && + ( currentTreatmentState > TREATMENT_START_STATE ) && ( currentTreatmentState < TREATMENT_END_STATE ) && ( uFVolume <= MAX_UF_VOLUME_ML ) && ( CALC_TREAT_TIME_REMAINING_IN_SECS() >= PREVENT_UF_VOL_CHANGE_IF_NEARLY_DONE_SEC ) ) { @@ -890,7 +887,7 @@ rejectReason = REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE; } else if ( ( currentTreatmentState <= TREATMENT_START_STATE ) || - ( currentTreatmentState >= TREATMENT_DIALYSIS_END_STATE ) ) + ( currentTreatmentState >= TREATMENT_END_STATE ) ) { rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } @@ -1139,7 +1136,7 @@ { stopDialysis(); elapsedTreatmentTimeInSecs = presTreatmentTimeSecs; - currentTreatmentState = TREATMENT_DIALYSIS_END_STATE; + currentTreatmentState = TREATMENT_END_STATE; } // Broadcast treatment time and state data at interval if ( ++treatmentTimeBroadcastTimerCtr >= TREATMENT_TIME_DATA_PUB_INTERVAL )