Index: firmware/App/Modes/SampleWater.c =================================================================== diff -u -rb8d74fc5b07d0e62d841b4c5a786b2be4e593c63 -r37a9fd8f15e413db5337371a7d1a1cb65567af7c --- firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision b8d74fc5b07d0e62d841b4c5a786b2be4e593c63) +++ firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision 37a9fd8f15e413db5337371a7d1a1cb65567af7c) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file SampleWater.c +* @file SampleWater.c * -* @author (last) Quang Nguyen -* @date (last) 19-Feb-2021 +* @author (last) Darren Cox +* @date (last) 10-Mar-2022 * -* @author (original) Quang Nguyen -* @date (original) 19-Feb-2021 +* @author (original) Quang Nguyen +* @date (original) 19-Feb-2021 * ***************************************************************************/ @@ -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,12 @@ { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_FAILED; -#ifndef SKIP_SAMPLE_WATER + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_SAMPLE_WATER ) ) + { + sampleWaterResult = TRUE; + } + if ( TRUE == sampleWaterResult ) -#endif { result = SELF_TEST_STATUS_PASSED; } @@ -201,6 +209,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 +247,8 @@ state = SAMPLE_WATER_STATE; } + hasDGRestarted(); + return state; } @@ -249,6 +281,8 @@ cmdDGSampleWater( SAMPLE_WATER_CMD_STOP ); } + hasDGRestarted(); + return state; }