Index: firmware/App/Modes/SampleWater.c =================================================================== diff -u -rb8d74fc5b07d0e62d841b4c5a786b2be4e593c63 -r1277cbbe91938269ed25f77de56c49eefba43a56 --- firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision b8d74fc5b07d0e62d841b4c5a786b2be4e593c63) +++ firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision 1277cbbe91938269ed25f77de56c49eefba43a56) @@ -28,6 +28,9 @@ // ********** private definitions ********** +/// DG restarted alarm persistent interval +#define DG_RESTARTED_ALARM_PERSISTENT_INTERVAL ( ( 5 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) + // ********** private data ********** static BOOL sampleWaterStartRequested; ///< Flag indicates user has requested to start sample water. @@ -36,9 +39,11 @@ static SAMPLE_WATER_STATE_T currentSampleWaterState; ///< Current state of sample water sub-mode. static BOOL sampleWaterResult; ///< The result entered by user after testing water sample. +static U32 dgRestartedPersistentCount; ///< Persistent count for DG restarted alarm. // ********** private function prototypes ********** +static void hasDGRestarted( void ); static SAMPLE_WATER_STATE_T handleWaterSampleSetupState( void ); static SAMPLE_WATER_STATE_T handleWaterSampleState( void ); @@ -96,7 +101,7 @@ break; default: - // TODO: alarm + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_SAMPLE_WATER_INVALID_STATE, currentSampleWaterState ); break; } } @@ -124,9 +129,10 @@ { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_FAILED; -#ifndef SKIP_SAMPLE_WATER - if ( TRUE == sampleWaterResult ) +#ifdef SKIP_SAMPLE_WATER + sampleWaterResult = TRUE; #endif + if ( TRUE == sampleWaterResult ) { result = SELF_TEST_STATUS_PASSED; } @@ -201,6 +207,28 @@ /*********************************************************************//** * @brief + * The hasDGRestarted function checks if DG has restarted. + * @details Inputs: DG operation mode and operation sub-mode + * @details Outputs: alarm if DG restarted + * @return none + *************************************************************************/ +static void hasDGRestarted( void ) +{ + if ( ( DG_MODE_STAN == getDGOpMode() ) && ( DG_STANDBY_MODE_STATE_IDLE == getDGSubMode() ) ) + { + if ( dgRestartedPersistentCount++ >= DG_RESTARTED_ALARM_PERSISTENT_INTERVAL ) + { + activateAlarmNoData( ALARM_ID_DG_RESTARTED_FAULT ); + } + } + else + { + dgRestartedPersistentCount = 0; + } +} + +/*********************************************************************//** + * @brief * The handleWaterSampleSetupState function waits for filter flush period elapsed. * @details Inputs: flushTimerCounter * @details Outputs: none @@ -217,6 +245,8 @@ state = SAMPLE_WATER_STATE; } + hasDGRestarted(); + return state; } @@ -249,6 +279,8 @@ cmdDGSampleWater( SAMPLE_WATER_CMD_STOP ); } + hasDGRestarted(); + return state; }