Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r5ce7985577e93071cd4c361efe2342cdcd7004dd -r6e205c15482923d7effb9b1cb0a4c56eaddf0793 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 5ce7985577e93071cd4c361efe2342cdcd7004dd) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 6e205c15482923d7effb9b1cb0a4c56eaddf0793) @@ -84,7 +84,7 @@ static HD_STANDBY_STATE_T handleStandbyModeDGChemDisininfectInProgressState( void ); static BOOL isDGDisinfectValid( void ); -static BOOL haveHDDGServicesBeenExpired( void ); +static BOOL haveHDDGServicesBeenExpired( REQUEST_REJECT_REASON_CODE_T* rejReason ); static void publishDisinfectData( void ); /*********************************************************************//** @@ -288,9 +288,22 @@ rejReason = REQUEST_REJECT_REASON_BATTERY_IS_NOT_CHARGED; } +#ifndef _RELEASE_ + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SERVICE_AND_DISINFECT_CHECK ) != SW_CONFIG_ENABLE_VALUE ) +#endif + { + // This function checks both HD and DG service records and if any of them has failed, it fills the provided reject reason buffer + haveHDDGServicesBeenExpired( &rejReason ); + + if ( FALSE == isDGDisinfectValid() ) + { + rejReason = REQUEST_REJECT_REASON_DG_DISINFECT_HAS_BEEN_EXPIRED; + } + } + if ( REQUEST_REJECT_REASON_NONE == rejReason ) { - result = TRUE; + result = TRUE; treatStartReqReceived = TRUE; } @@ -557,25 +570,17 @@ { BOOL startTreatment = TRUE; -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SERVICE_AND_DISINFECT_CHECK ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - startTreatment = isDGDisinfectValid(); - startTreatment = haveHDDGServicesBeenExpired(); - } - - if ( TRUE == startTreatment ) - { - // Initialize treatment modes before starting a new treatment - initTreatParamsMode(); - initPreTreatmentMode(); - initTreatmentMode(); - initPostTreatmentMode(); - // Start treatment workflow with treatment parameters mode - requestNewOperationMode( MODE_TPAR ); - treatStartReqReceived = FALSE; - } + if ( TRUE == startTreatment ) + { + // Initialize treatment modes before starting a new treatment + initTreatParamsMode(); + initPreTreatmentMode(); + initTreatmentMode(); + initPostTreatmentMode(); + // Start treatment workflow with treatment parameters mode + requestNewOperationMode( MODE_TPAR ); + treatStartReqReceived = FALSE; + } } return state; @@ -861,8 +866,8 @@ ***********************************************************************/ static BOOL isDGDisinfectValid( void ) { - BOOL status = TRUE; DG_SERVICE_AND_USAGE_DATA_T data; + BOOL status = TRUE; getHDVersionDGServiceAndUsageData( &data ); @@ -878,13 +883,11 @@ if ( ( TRUE == hasChemDisBeenExpired ) && ( TRUE == hasHeatDisBeenExpired ) ) { status = FALSE; - activateAlarmNoData( ALARM_ID_DG_DISINFECT_HAS_BEEN_EXPIRED ); } } else { status = FALSE; - activateAlarmNoData( ALARM_ID_DG_DISINFECT_HAS_BEEN_EXPIRED ); } } @@ -897,9 +900,10 @@ * service time is still within the interval or not. * @details Inputs: none * @details Outputs: none + * @param rejReason pointer to the provided reject reason buffer to be send to UI * @return TRUE if the service time is still valid otherwise, FALSE ***********************************************************************/ -static BOOL haveHDDGServicesBeenExpired( void ) +static BOOL haveHDDGServicesBeenExpired( REQUEST_REJECT_REASON_CODE_T* rejReason ) { BOOL status = TRUE; DG_SERVICE_AND_USAGE_DATA_T dgData; @@ -917,13 +921,14 @@ if ( TRUE == hasDGSrvcBeenExpired ) { - status = FALSE; - activateAlarmNoData( ALARM_ID_DG_SERIVCE_TIME_INTERVAL_HAS_ELAPSED ); + status = FALSE; + *rejReason = REQUEST_REJECT_REASON_DG_SERVICE_IS_DUE; } + if ( TRUE == hasHDSrvcBeenExpied ) { - status = FALSE; - activateAlarmNoData( ALARM_ID_HD_SERVICE_TIME_INTERVAL_HAS_ELAPSED ); + status = FALSE; + *rejReason = REQUEST_REJECT_REASON_HD_SERVICE_IS_DUE; } }