Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rf0c52f6adff7b61132953890a74f1c462b31eedf -r60193b56d5b3a67801644008b9db8ee8e3916c31 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision f0c52f6adff7b61132953890a74f1c462b31eedf) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 60193b56d5b3a67801644008b9db8ee8e3916c31) @@ -112,7 +112,7 @@ #ifndef RUN_WITHOUT_DG if ( TRUE == stop ) { - activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); // TODO - remove alarm? Nothing to stop here. + //activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); // TODO - remove alarm? Nothing to stop here. } // State machine to get DG to prep a reservoir so we can start a treatment @@ -322,22 +322,34 @@ BOOL signalUserInitiateTreatment( void ) { BOOL result = FALSE; - REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; - if ( ( MODE_STAN == getCurrentOperationMode() ) && ( STANDBY_WAIT_FOR_TREATMENT_STATE == currentStandbyState ) ) + if ( TRUE == getNoNewTreatmentStatus() ) { - if ( TRUE == isDGCommunicating() ) - { - treatStartReqReceived = TRUE; - result = TRUE; - rejReason = REQUEST_REJECT_REASON_NONE; - } - else - { - rejReason = REQUEST_REJECT_REASON_DG_COMM_LOST; - } + rejReason = REQUEST_REJECT_REASON_NO_NEW_TREATMENT_ALARM_TRIGGERED; } + if ( ( MODE_STAN != getCurrentOperationMode() ) || ( STANDBY_WAIT_FOR_TREATMENT_STATE != currentStandbyState ) ) + { + rejReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + } + + if ( TRUE != isDGCommunicating() ) + { + rejReason = REQUEST_REJECT_REASON_DG_COMM_LOST; + } + + if ( ( DG_MODE_STAN != getDGOpMode() ) || ( DG_STANDBY_MODE_STATE_IDLE != getDGSubMode() ) ) + { + rejReason = REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE; + } + + if ( REQUEST_REJECT_REASON_NONE == rejReason ) + { + result = TRUE; + treatStartReqReceived = TRUE; + } + sendInitiateTreatmentResponseMsg( result, rejReason ); return result;