Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r91aa11a47f3b3c744cbbfd9e9c1bd240263aa1bd -rab57180655892575252175a4310d97a1c8c46e74 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 91aa11a47f3b3c744cbbfd9e9c1bd240263aa1bd) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision ab57180655892575252175a4310d97a1c8c46e74) @@ -160,7 +160,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_STANDBY_INVALID_STATE, currentStandbyState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_STANDBY_INVALID_STATE, currentStandbyState ); currentStandbyState = STANDBY_START_STATE; break; } @@ -249,7 +249,7 @@ break; default: - // TODO - s/w fault + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_STANDBY_INVALID_STATE, currentStandbyState ); currentStandbyState = STANDBY_START_STATE; break; } @@ -347,22 +347,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;