Index: firmware/App/Modes/SampleWater.c =================================================================== diff -u -r16b79d9ec32acce57b5bb007fc19a5c891c7fff1 -r1277cbbe91938269ed25f77de56c49eefba43a56 --- firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision 16b79d9ec32acce57b5bb007fc19a5c891c7fff1) +++ 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 ); @@ -202,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 @@ -218,10 +245,7 @@ state = SAMPLE_WATER_STATE; } - if ( ( DG_MODE_STAN == dgOpMode ) && ( DG_STANDBY_MODE_STATE_IDLE == dgSubMode ) ) - { - activateAlarmNoData( ALARM_ID_DG_RESTARTED_FAULT ); - } + hasDGRestarted(); return state; } @@ -255,6 +279,8 @@ cmdDGSampleWater( SAMPLE_WATER_CMD_STOP ); } + hasDGRestarted(); + return state; }