Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r9e50725381de45b2a32044f73e32c2c3ba0cc27a -rd8b6a463f9e65c8ac145cf634d5d6641fb3bbd89 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 9e50725381de45b2a32044f73e32c2c3ba0cc27a) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision d8b6a463f9e65c8ac145cf634d5d6641fb3bbd89) @@ -18,6 +18,7 @@ #include "BloodFlow.h" #include "DialInFlow.h" #include "DialOutFlow.h" +#include "FPGA.h" #include "PresOccl.h" #include "SelfTests.h" #include "Timers.h" @@ -56,6 +57,8 @@ typedef enum Dry_Self_Tests_state { DRY_SELF_TESTS_START_STATE = 0, ///< Dry self-tests starting state. + DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE, ///< Bubble detectors 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. } DRY_SELF_TESTS_STATE_T; @@ -241,10 +244,30 @@ { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_PASSED; - // execute no cartridge self-tests state machine + // execute dry self-tests state machine switch ( currentDrySelfTestsState ) { case DRY_SELF_TESTS_START_STATE: + currentDrySelfTestsState = DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE; + break; + + case DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE: + { + BOOL const isADADetectedAir = getFPGAArterialAirBubbleStatus(); + BOOL const isADVDetectedAir = getFPGAVenousAirBubbleStatus(); + + if ( ( TRUE == isADADetectedAir ) && ( TRUE == isADADetectedAir ) ) + { + currentDrySelfTestsState = DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE; + } + else + { + activateAlarmNoData( ALARM_ID_INSTALL_NEW_CARTRIDGE ); + } + } + break; + + case DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE: currentDrySelfTestsState = DRY_SELF_TESTS_COMPLETE; break;