Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r69656450319bfcfdeffdc8f11e88084d4ea38d7d -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 69656450319bfcfdeffdc8f11e88084d4ea38d7d) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -62,18 +62,29 @@ DRY_SELF_TESTS_AIR_TRAP_STATE, ///< Air trap fill level ultrasonic sensor dry self-tests state. DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE, ///< Occlusion sensors dry self-tests state. DRY_SELF_TESTS_COMPLETE, ///< Dry self-test complete state. - NUM_OF_DRY_SELF_TESTS_STATES ///< Number of no cartridge self-tests states. + NUM_OF_DRY_SELF_TESTS_STATES ///< Number of dry self-tests states. } DRY_SELF_TESTS_STATE_T; +/// Wet self-tests state machine. +typedef enum Wet_Self_Tests_state +{ + WET_SELF_TESTS_START_STATE = 0, ///< Wet self-tests starting state. + WET_SELF_TESTS_COMPLETE, ///< Wet self-test complete state. + NUM_OF_WET_SELF_TESTS_STATES ///< Number of wet self-tests states. +} WET_SELF_TESTS_STATE_T; + // ********** private data ********** -static BOOL noCartSelfTestsResult; -static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; -static U32 runPumpStartTime; +static BOOL noCartSelfTestsResult; ///< Result of no cartridge self-tests. +static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; ///< Current state of the no cartridge self-tests state machine. +static U32 runPumpStartTime; ///< Beginning time when pumps start running -static BOOL drySelfTestsResult; -static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; +static BOOL drySelfTestsResult; ///< Result of dry self-tests. +static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; ///< Current state of the dry self-tests state machine. +static BOOL wetSelfTestsResult; ///< Result of wet self-tests. +static WET_SELF_TESTS_STATE_T currentWetSelfTestsState; ///< Current state of the wet self-tests state machine. + // ********** private function prototypes ********** /*********************************************************************//** @@ -317,4 +328,57 @@ return drySelfTestsResult; } +/*********************************************************************//** + * @brief + * The transitionToWetSelfTests function resets anything required before + * the start of wet self-tests. + * @details Inputs: none + * @details Outputs: Wet self-tests re-initialized. + * @return none + *************************************************************************/ +void transitionToWetSelfTests() +{ + wetSelfTestsResult = FALSE; + currentWetSelfTestsState = WET_SELF_TESTS_START_STATE; +} + +/*********************************************************************//** + * @brief + * The execWetSelfTests function executes the wet self-tests state machine. + * @details Inputs: currentWetSelfTestsState + * @details Outputs: currentWetSelfTestsState, wetSelfTestsResult + * @return none + *************************************************************************/ +void execWetSelfTests( void ) +{ + // execute wet self-tests state machine + switch ( currentWetSelfTestsState ) + { + case WET_SELF_TESTS_START_STATE: + currentWetSelfTestsState = WET_SELF_TESTS_COMPLETE; + break; + + case WET_SELF_TESTS_COMPLETE: + wetSelfTestsResult = TRUE; + break; + + default: + currentWetSelfTestsState = WET_SELF_TESTS_COMPLETE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_WET_SELF_TEST_STATE, (U32)currentWetSelfTestsState ); + break; + } +} + +/*********************************************************************//** + * @brief + * The isDrySelfTestsPassed function returns the status of wet self-tests. + * @details Inputs: none + * @details Outputs: none + * @return TRUE if wet self-tests passed, otherwise FALSE + *************************************************************************/ +BOOL isWetSelfTestsPassed( void ) +{ + return wetSelfTestsResult; +} + /**@}*/