Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r16b79d9ec32acce57b5bb007fc19a5c891c7fff1 -rcf94c3059b220c787cc8eabc691940967c1537e1 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 16b79d9ec32acce57b5bb007fc19a5c891c7fff1) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision cf94c3059b220c787cc8eabc691940967c1537e1) @@ -237,29 +237,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 != getAlarmNewTreatmentStatus() ) { - if ( TRUE == isDGCommunicating() ) - { - if ( ( DG_MODE_STAN == getDGOpMode() ) && ( DG_STANDBY_MODE_STATE_IDLE == getDGSubMode() ) ) - { - treatStartReqReceived = TRUE; - result = TRUE; - rejReason = REQUEST_REJECT_REASON_NONE; - } - else - { - rejReason = REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE; - } - } - 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; Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -rcf94c3059b220c787cc8eabc691940967c1537e1 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision cf94c3059b220c787cc8eabc691940967c1537e1) @@ -82,7 +82,9 @@ /// Alarm user recovery actions enabled flags. static BOOL alarmUserRecoveryActionEnabled[ NUMBER_OF_ALARM_USER_ACTIONS ]; -static U32 alarmAudioVolumeLevel = 3; //MIN_ALARM_VOLUME_ATTENUATION; ///< Set alarm audio volume attenuation level (0..4 - lower level = higher gain). +static U32 alarmAudioVolumeLevel = 3; //MIN_ALARM_VOLUME_ATTENUATION; ///< Set alarm audio volume attenuation level (0..4 - lower level = higher gain). + +static BOOL allowNewTreatment = TRUE; ///< Allow new treatment persistent flag. // ********** private function prototypes ********** @@ -149,7 +151,9 @@ alarmStatus.noEndTreatment = FALSE; alarmStatus.noNewTreatment = FALSE; alarmStatus.noDialRecirc = FALSE; - alarmStatus.usrACKRequired = FALSE; + alarmStatus.usrACKRequired = FALSE; + + allowNewTreatment = TRUE; } /*********************************************************************//** @@ -569,6 +573,19 @@ alarmAudioVolumeLevel = MAX_ALARM_VOLUME_LEVEL - volumeLevel; } } + +/*********************************************************************//** + * @brief +* The getAllowNewTreatmentStatus function gets the persistent allow new +* treatment status flag. +* @details Inputs: allowNewTreatment +* @details Outputs: none +* @return allowNewTreatment +*************************************************************************/ +BOOL getAllowNewTreatmentStatus( void ) +{ + return allowNewTreatment; +} /*********************************************************************//** * @brief @@ -928,6 +945,11 @@ noEndTreatment = TRUE; } + if ( TRUE == noNewTreatment ) + { + allowNewTreatment = FALSE; + } + // Set updated alarm flags alarmStatus.systemFault = systemFault; alarmStatus.stop = stop; Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r40e0116bbada6d1780bfa832a9c4684ba9fcfcc8 -rcf94c3059b220c787cc8eabc691940967c1537e1 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 40e0116bbada6d1780bfa832a9c4684ba9fcfcc8) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision cf94c3059b220c787cc8eabc691940967c1537e1) @@ -149,7 +149,9 @@ BOOL doesAlarmStatusIndicateStop( void ); ALARM_PRIORITY_T getCurrentAlarmStatePriority( void ); BOOL isAlarmRecoverable( ALARM_ID_T alarm ); -void setAlarmAudioVolume( U32 volumeLevel ); +void setAlarmAudioVolume( U32 volumeLevel ); + +BOOL getAllowNewTreatmentStatus( void ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID );