Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -rb8f298547eb578000b3ff3cf55732fda7a689ce0 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision b8f298547eb578000b3ff3cf55732fda7a689ce0) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 19ddae332910253204721af6204594467096f468) @@ -195,8 +195,8 @@ setFPGACPoProbeType( COND_CPO_SENSOR_PROBE_TYPE ); initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, MAX_CONDUCTIVITY_SENSOR_FAILURES, MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ); - initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_CLEAR_MS ); - initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_CLEAR_MS ); + initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_COND_SENSOR_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_DG_CPI_COND_SENSOR_INVALID_CHAR, COND_SENSORS_BAD_CHAR_TIME_OUT_MS, COND_SENSORS_BAD_CHAR_TIME_OUT_MS ); initPersistentAlarm( ALARM_ID_DG_CPO_COND_SENSOR_INVALID_CHAR, COND_SENSORS_BAD_CHAR_TIME_OUT_MS, COND_SENSORS_BAD_CHAR_TIME_OUT_MS ); Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rb8f298547eb578000b3ff3cf55732fda7a689ce0 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision b8f298547eb578000b3ff3cf55732fda7a689ce0) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 19ddae332910253204721af6204594467096f468) @@ -245,6 +245,18 @@ return result; } + +/*********************************************************************//** + * @brief + * The resetPressuresPOSTState function resets the pressures POST state. + * @details Inputs: none + * @details Outputs: pressuresSelfTestState + * @return none + *************************************************************************/ +void resetPressuresPOSTState( void ) +{ + pressuresSelfTestState = PRESSURE_SELF_TEST_STATE_START; +} /*********************************************************************//** * @brief Index: firmware/App/Controllers/Pressures.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/Pressures.h (.../Pressures.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Controllers/Pressures.h (.../Pressures.h) (revision 19ddae332910253204721af6204594467096f468) @@ -60,7 +60,8 @@ void execPressures( void ); SELF_TEST_STATUS_T execPressureSelfTest( void ); void checkInletWaterPressure( void ); -F32 getMeasuredDGPressure( U32 pressureID ); +F32 getMeasuredDGPressure( U32 pressureID ); +void resetPressuresPOSTState( void ); BOOL testSetPressuresDataPublishIntervalOverride( U32 value ); BOOL testResetPressuresDataPublishIntervalOverride( void ); Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rfcaca0915c314d04b9fa96c1960d32b63ab877db -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision fcaca0915c314d04b9fa96c1960d32b63ab877db) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 19ddae332910253204721af6204594467096f468) @@ -324,8 +324,8 @@ tempSensors[ TEMPSENSORS_BAROMETRIC_TEMP_SENSOR ].maxAllowedTemp = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; // Persistent alarms for inlet water high/low temperature - initPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_TEMP_OUT_OF_RANGE_CLEAR_MS ); - initPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_HIGH_RANGE, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_TEMP_OUT_OF_RANGE_CLEAR_MS ); + initPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, INLET_WATER_TEMP_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_HIGH_RANGE, INLET_WATER_TEMP_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_HIGH, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_LOW, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS, INLET_WATER_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); Index: firmware/App/Controllers/UVReactors.c =================================================================== diff -u -r53f4679556eacdd6a93dd358550b4ea7c7c34962 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision 53f4679556eacdd6a93dd358550b4ea7c7c34962) +++ firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision 19ddae332910253204721af6204594467096f468) @@ -79,8 +79,8 @@ // ********** private data ********** static UV_REACTOR_STATUS_T reactorsStatus[ NUM_OF_UV_REACTORS ]; ///< UV reactors status array. -static UV_REACTORS_SELF_TEST_STATE_T uvReactorsSelfTestStates = UV_REACTORS_SELF_TEST_OFF; ///< UV reactors self test state. -static SELF_TEST_STATUS_T uvReactorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< Valves self test result. +static UV_REACTORS_SELF_TEST_STATE_T uvReactorsSelfTestStates; ///< UV reactors self test state. +static SELF_TEST_STATUS_T uvReactorsSelfTestResult; ///< Valves self test result. static OVERRIDE_U32_T uvReactorsDataPublishInterval = { UV_REACTORS_DATA_PUB_INTERVAL, UV_REACTORS_DATA_PUB_INTERVAL, 0, 0 }; ///< UV reactors data publish interval. @@ -282,7 +282,7 @@ if ( reactor < NUM_OF_UV_REACTORS ) { reactorsStatus[ reactor ].switchState = TURN_OFF; - result = TRUE; + result = TRUE; } else { @@ -294,6 +294,19 @@ /*********************************************************************//** * @brief + * The resetUVReactorsPOSTState function resets the UV reactors POST state. + * @details Inputs: none + * @details Outputs: uvReactorsSelfTestStates, uvReactorsSelfTestResult + * @return none + *************************************************************************/ +void resetUVReactorsPOSTState( void ) +{ + uvReactorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; + uvReactorsSelfTestStates = UV_REACTORS_SELF_TEST_OFF; +} + +/*********************************************************************//** + * @brief * The handleUVReactorsSelfTestOff function handles the self test off state. * @details Inputs: selfTestElapsedTime * @details Outputs: selfTestElapsedTime Index: firmware/App/Controllers/UVReactors.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Controllers/UVReactors.h (.../UVReactors.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Controllers/UVReactors.h (.../UVReactors.h) (revision 19ddae332910253204721af6204594467096f468) @@ -75,6 +75,8 @@ BOOL turnOffUVReactor( UV_REACTORS_T reactor ); +void resetUVReactorsPOSTState( void ); + BOOL testSetReactorsDataPublishInterval( U32 value ); BOOL testResetReactorsDataPublishInterval( void ); Index: firmware/App/Drivers/SafetyShutdown.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision 19ddae332910253204721af6204594467096f468) @@ -176,6 +176,18 @@ return result; } +/*********************************************************************//** + * @brief + * The resetSafetyShutdownPOSTState function resets the safety shutdown POST state. + * @details Inputs: none + * @details Outputs: safetyShutdownSelfTestState + * @return none + *************************************************************************/ +void resetSafetyShutdownPOSTState( void ) +{ + safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_START; +} + /*********************************************************************//** * @brief * The testSetSafetyShutdownOverride function overrides the HD safety shutdown. Index: firmware/App/Drivers/SafetyShutdown.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision 19ddae332910253204721af6204594467096f468) @@ -41,6 +41,7 @@ void activateSafetyShutdown( void ); BOOL isSafetyShutdownActivated( void ); SELF_TEST_STATUS_T execSafetyShutdownTest( void ); +void resetSafetyShutdownPOSTState( void ); BOOL testSetSafetyShutdownOverride( U32 value ); BOOL testResetSafetyShutdownOverride( void ); Index: firmware/App/Modes/ModeChemicalDisinfectFlush.c =================================================================== diff -u -rfcaca0915c314d04b9fa96c1960d32b63ab877db -r19ddae332910253204721af6204594467096f468 --- firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision fcaca0915c314d04b9fa96c1960d32b63ab877db) +++ firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision 19ddae332910253204721af6204594467096f468) @@ -876,7 +876,13 @@ *************************************************************************/ static void failChemicalDisinfectFlush( void ) { - SET_ALARM_WITH_1_U32_DATA( alarmDetectedPendingTrigger, prevChemDisinfectFlushState ) + // In the cleaning modes the alarms are triggered but the mode is not transitioned to fault automatically + // so transition to fault mode is done here + if ( alarmDetectedPendingTrigger != ALARM_ID_NO_ALARM ) + { + SET_ALARM_WITH_1_U32_DATA( alarmDetectedPendingTrigger, prevChemDisinfectFlushState ) + } + requestNewOperationMode( DG_MODE_FAUL ); } /*********************************************************************//** Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 19ddae332910253204721af6204594467096f468) @@ -53,11 +53,11 @@ // ********** private data ********** -static DG_POST_STATE_T postState = DG_POST_STATE_START; ///< Currently active initialize & POST state. -static BOOL postCompleted = FALSE; ///< Flag indicating POST completed. -static BOOL postPassed = FALSE; ///< Flag indicating all POST tests passed. -static BOOL tempPOSTPassed = TRUE; ///< Temporary flag indicating all POST tests completed so far have passed. -static U32 startPOSTDelayCounter = 0; ///< Start POST delay counter. +static DG_POST_STATE_T postState; ///< Currently active initialize & POST state. +static BOOL postCompleted; ///< Flag indicating POST completed. +static BOOL postPassed; ///< Flag indicating all POST tests passed. +static BOOL tempPOSTPassed; ///< Temporary flag indicating all POST tests completed so far have passed. +static U32 startPOSTDelayCounter; ///< Start POST delay counter. // ********** private function prototypes ********** @@ -96,6 +96,14 @@ initInitAndPOSTMode(); setCPLDCleanLEDColor( CPLD_CLEAN_LED_OFF ); + resetRTCPOSTState(); + resetNVDataMgmtPOSTState(); + resetAccelPOSTState(); + resetPressuresPOSTState(); + resetUVReactorsPOSTState(); + resetWatchdogPOSTState(); + resetSafetyShutdownPOSTState(); + return postState; } Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 19ddae332910253204721af6204594467096f468) @@ -51,13 +51,13 @@ // ********** private data ********** static volatile BOOL modeRequest[ NUM_OF_DG_MODES - 1 ]; ///< Array of mode request flags. -static DG_OP_MODE_T lastMode = DG_MODE_INIT; ///< Last operation mode prior to current mode. -static DG_OP_MODE_T currentMode = DG_MODE_INIT; ///< The currently active mode. -static U32 currentSubMode = 0; ///< The currently active state of the active mode. +static DG_OP_MODE_T lastMode; ///< Last operation mode prior to current mode. +static DG_OP_MODE_T currentMode; ///< The currently active mode. +static U32 currentSubMode; ///< The currently active state of the active mode. /// DG operation mode data publish interval. static OVERRIDE_U32_T dgOpModePublishInterval = { BROADCAST_DG_OP_MODE_INTERVAL, BROADCAST_DG_OP_MODE_INTERVAL, 0, 0 }; static U32 dataPublishCounter; ///< Interval counter used to determine when to broadcast operation mode. Initialize to 11 to stagger broadcast. -static U32 priorSubMode = 0; ///< The prior submode state. +static U32 priorSubMode; ///< The prior submode state. /// This matrix determines legal transitions from one mode to another. static const DG_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_DG_MODES - 1 ][ NUM_OF_DG_MODES - 1 ] = @@ -66,8 +66,8 @@ /* FAUL */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* SERV */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* INIT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM, DG_MODE_CHFL, DG_MODE_HCOL }, - /* SOLO */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM, DG_MODE_CHFL, DG_MODE_HCOL }, + /* SOLO */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* GENE */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* FILL */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* DRAI */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, @@ -89,7 +89,8 @@ * @brief * The initOperationModes function initializes the operation modes module. * @details Inputs: none - * @details Outputs: Operation modes module initialized + * @details Outputs: modeRequest, lastMode, currentMode, currentSubMode, + * priorSubMode, dataPublishCounter * @return none *************************************************************************/ void initOperationModes( void ) @@ -99,13 +100,14 @@ // initialize mode requests to none pending for ( i = 0; i < ( NUM_OF_DG_MODES - 1 ); i++ ) { - modeRequest[i] = FALSE; + modeRequest[ i ] = FALSE; } // start in init mode - currentMode = DG_MODE_INIT; - currentSubMode = 0; - priorSubMode = 0; + lastMode = DG_MODE_INIT; + currentMode = DG_MODE_INIT; + currentSubMode = 0; + priorSubMode = 0; dataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; transitionToNewOperationMode( DG_MODE_INIT ); @@ -249,7 +251,7 @@ if ( newMode < DG_MODE_NLEG ) { // make request - modeRequest[newMode] = TRUE; + modeRequest[ newMode ] = TRUE; } else { // invalid mode requested Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 19ddae332910253204721af6204594467096f468) @@ -224,6 +224,18 @@ } return result; +} + +/*********************************************************************//** + * @brief + * The resetWatchdogPOSTState function resets the watchdog POST state. + * @details Inputs: none + * @details Outputs: watchdogSelfTestState + * @return none + *************************************************************************/ +void resetWatchdogPOSTState( void ) +{ + watchdogSelfTestState = WATCHDOG_SELF_TEST_STATE_START; } /*********************************************************************//** Index: firmware/App/Services/WatchdogMgmt.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r19ddae332910253204721af6204594467096f468 --- firmware/App/Services/WatchdogMgmt.h (.../WatchdogMgmt.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Services/WatchdogMgmt.h (.../WatchdogMgmt.h) (revision 19ddae332910253204721af6204594467096f468) @@ -46,6 +46,7 @@ void execWatchdogMgmt( void ); void checkInWithWatchdogMgmt( TASK_T task ); SELF_TEST_STATUS_T execWatchdogTest( void ); +void resetWatchdogPOSTState( void ); BOOL testSetWatchdogTaskCheckInOverride( U32 task, BOOL value ); BOOL testResetWatchdogTaskCheckInOverride( U32 task );