Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rc62f5bfffa8e54b86c8e320bee344308b368f96d -r9e50725381de45b2a32044f73e32c2c3ba0cc27a --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c62f5bfffa8e54b86c8e320bee344308b368f96d) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 9e50725381de45b2a32044f73e32c2c3ba0cc27a) @@ -52,13 +52,23 @@ NUM_OF_NO_CART_SELF_TESTS_STATES ///< Number of no cartridge self-tests states. } NO_CART_SELF_TESTS_STATE_T; +/// Dry self-tests state machine. +typedef enum Dry_Self_Tests_state +{ + DRY_SELF_TESTS_START_STATE = 0, ///< Dry self-tests starting state. + DRY_SELF_TESTS_COMPLETE, ///< Dry self-test complete state. + NUM_OF_DRY_SELF_TESTS_STATES ///< Number of no cartridge self-tests states. +} DRY_SELF_TESTS_STATE_T; + // ********** private data ********** -static BOOL isNoCartSelfTestsResult; +static BOOL noCartSelfTestsResult; static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; - static U32 runPumpStartTime; +static BOOL drySelfTestsResult; +static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; + // ********** private function prototypes ********** /*********************************************************************//** @@ -82,17 +92,18 @@ *************************************************************************/ void transitionToNoCartSelfTests( void ) { - isNoCartSelfTestsResult = FALSE; + noCartSelfTestsResult = FALSE; currentNoCartSelfTestsState = NO_CART_SELF_TESTS_START_STATE; runPumpStartTime = 0; } /*********************************************************************//** * @brief - * The execSelfTests function executes the prime sub-mode state machine. - * @details Inputs: currentPrimeState - * @details Outputs: currentPrimeState + * The execNoCartSelfTests function executes the no cartridge self-tests + * state machine. + * @details Inputs: currentNoCartSelfTestsState + * @details Outputs: currentNoCartSelfTestsState, noCartSelfTestsResult * @return none *************************************************************************/ void execNoCartSelfTests( void ) @@ -178,7 +189,7 @@ break; case NO_CART_SELF_TESTS_COMPLETE: - isNoCartSelfTestsResult = TRUE; + noCartSelfTestsResult = TRUE; break; default: @@ -189,7 +200,7 @@ if ( SELF_TEST_STATUS_FAILED == result ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRETREATMENT_SELF_TEST_FAILURE, currentNoCartSelfTestsState ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRE_TREATMENT_SELF_TEST_FAILURE, currentNoCartSelfTestsState ); } } @@ -202,7 +213,67 @@ *************************************************************************/ BOOL isNoCartSelfTestsPassed( void ) { - return isNoCartSelfTestsResult; + return noCartSelfTestsResult; } +/*********************************************************************//** + * @brief + * The transitionToDrySelfTests function resets anything required before + * the start of dry self-tests. + * @details Inputs: none + * @details Outputs: Dry self-tests re-initialized. + * @return none + *************************************************************************/ +void transitionToDrySelfTests() +{ + drySelfTestsResult = FALSE; + currentDrySelfTestsState = DRY_SELF_TESTS_START_STATE; +} + +/*********************************************************************//** + * @brief + * The execDrySelfTests function executes the dry self-tests state machine. + * @details Inputs: currentDrySelfTestsState + * @details Outputs: currentDrySelfTestsState, drySelfTestsResult + * @return none + *************************************************************************/ +void execDrySelfTests( void ) +{ + SELF_TEST_STATUS_T result = SELF_TEST_STATUS_PASSED; + + // execute no cartridge self-tests state machine + switch ( currentDrySelfTestsState ) + { + case DRY_SELF_TESTS_START_STATE: + currentDrySelfTestsState = DRY_SELF_TESTS_COMPLETE; + break; + + case DRY_SELF_TESTS_COMPLETE: + drySelfTestsResult = TRUE; + break; + + default: + currentDrySelfTestsState = DRY_SELF_TESTS_START_STATE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_DRY_SELF_TEST_STATE, (U32)currentDrySelfTestsState ); + break; + } + + if ( SELF_TEST_STATUS_FAILED == result ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRE_TREATMENT_SELF_TEST_FAILURE, currentNoCartSelfTestsState ); + } +} + +/*********************************************************************//** + * @brief + * The isDrySelfTestsPassed function returns the status of dry self-tests. + * @details Inputs: none + * @details Outputs: none + * @return TRUE if dry self-tests passed, otherwise FALSE + *************************************************************************/ +BOOL isDrySelfTestsPassed( void ) +{ + return drySelfTestsResult; +} + /**@}*/