Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 -rd52b27c2797b07f6aba2e05c8ba24156b820fdbc --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision d52b27c2797b07f6aba2e05c8ba24156b820fdbc) @@ -69,6 +69,8 @@ typedef enum Wet_Self_Tests_state { WET_SELF_TESTS_START_STATE = 0, ///< Wet self-tests starting state. + WET_SELF_TESTS_BUBBLE_DETECTOR_STATE, ///< Bubble detectors wet self-tests state. + WET_SELF_TESTS_START_100_ML_DISPLACEMENT_STATE, ///< Fill reservoir 1 with 100 mL of dialysate from reservoir 2 start 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; @@ -351,10 +353,32 @@ *************************************************************************/ void execWetSelfTests( void ) { + SELF_TEST_STATUS_T result = SELF_TEST_STATUS_PASSED; + // execute wet self-tests state machine switch ( currentWetSelfTestsState ) { case WET_SELF_TESTS_START_STATE: + currentWetSelfTestsState = WET_SELF_TESTS_BUBBLE_DETECTOR_STATE; + break; + + case WET_SELF_TESTS_BUBBLE_DETECTOR_STATE: + { + BOOL const isADADetectedAir = getFPGAArterialAirBubbleStatus(); + BOOL const isADVDetectedAir = getFPGAVenousAirBubbleStatus(); + + if ( ( FALSE == isADADetectedAir ) && ( FALSE == isADADetectedAir ) ) + { + currentWetSelfTestsState = WET_SELF_TESTS_START_100_ML_DISPLACEMENT_STATE; + } + else + { + result = SELF_TEST_STATUS_FAILED; + } + } + break; + + case WET_SELF_TESTS_START_100_ML_DISPLACEMENT_STATE: currentWetSelfTestsState = WET_SELF_TESTS_COMPLETE; break; @@ -367,6 +391,11 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_WET_SELF_TEST_STATE, (U32)currentWetSelfTestsState ); break; } + + if ( SELF_TEST_STATUS_FAILED == result ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRE_TREATMENT_SELF_TEST_FAILURE, currentWetSelfTestsState ); + } } /*********************************************************************//**