Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r27f3db92495948d4c1192421c1b0c20338c4a034 -r7d229e65a33d587e2e5b03b4ce06e814012686e4 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 27f3db92495948d4c1192421c1b0c20338c4a034) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 7d229e65a33d587e2e5b03b4ce06e814012686e4) @@ -45,7 +45,6 @@ static void resetSignalFlags( void ); static HD_PRE_TREATMENT_MODE_STATE_T handleSelfTestNoCartState( void ); -static HD_PRE_TREATMENT_MODE_STATE_T handleInstallState( void ); static HD_PRE_TREATMENT_MODE_STATE_T handleSelfTestDryState( void ); static HD_PRE_TREATMENT_MODE_STATE_T handlePrimeState( void ); static HD_PRE_TREATMENT_MODE_STATE_T handleRecirculateState( void ); @@ -120,10 +119,6 @@ currentPreTreatmentState = handleSelfTestNoCartState(); break; - case HD_PRE_TREATMENT_CART_INSTALL_STATE: - currentPreTreatmentState = handleInstallState(); - break; - case HD_PRE_TREATMENT_SELF_TEST_DRY_STATE: currentPreTreatmentState = handleSelfTestDryState(); break; @@ -263,24 +258,6 @@ /*********************************************************************//** * @brief - * The handleInstallState function handles disposable installation. - * @details Inputs: none - * @details Outputs: transition to prime sub-mode when blood pump finished homing - * @return current state (sub-mode) - *************************************************************************/ -static HD_PRE_TREATMENT_MODE_STATE_T handleInstallState( void ) -{ - HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; - - // TODO: handle install verification and transition - transitionToDrySelfTests(); - state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; - - return state; -} - -/*********************************************************************//** - * @brief * The handleSelfTestDryState function performs dry self-test. * @details Inputs: none * @details Outputs: transition to prime state on user request Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r27f3db92495948d4c1192421c1b0c20338c4a034 -r7d229e65a33d587e2e5b03b4ce06e814012686e4 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 27f3db92495948d4c1192421c1b0c20338c4a034) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 7d229e65a33d587e2e5b03b4ce06e814012686e4) @@ -88,9 +88,6 @@ 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 U32 pressureSelfTestBloodPumpRunStartTime; ///< Pressure dry self-test blood pump runs start time. -static F32 previousNormalArterialPressure; ///< Holds the previous normal arterial pressure reading. -static F32 previousNormalVenousPressure; ///< Holds the previous normal venous pressure reading. static BOOL wetSelfTestsResult; ///< Result of wet self-tests. static WET_SELF_TESTS_STATE_T currentWetSelfTestsState; ///< Current state of the wet self-tests state machine. @@ -116,15 +113,6 @@ static NO_CART_SELF_TESTS_STATE_T handleNoCartSelfTestLeakDetectorsState( SELF_TEST_STATUS_T *result ); static NO_CART_SELF_TESTS_STATE_T handleNoCartSelfTestStoppedState( void ); -static void handleDrySelfTestsStopRequest( void ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestWaitForDoorCloseState( void ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestBubbleDetectorsState( void ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestAirTrapState( void ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsSetupState( void ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsState( SELF_TEST_STATUS_T *result ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsNormalState( SELF_TEST_STATUS_T *result ); -static DRY_SELF_TESTS_STATE_T handleDrySelfTestStoppedState( void ); - static void handleWetSelfTestsStopRequest( void ); static WET_SELF_TESTS_STATE_T handleWetSelfTestStartState( void ); static WET_SELF_TESTS_STATE_T handleWetSelfTestSetupState( void ); @@ -282,16 +270,6 @@ currentNoCartSelfTestsState = handleNoCartSelfTestLeakDetectorsState( &result ); break; - case NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE: - // TODO: Implement self tests - currentNoCartSelfTestsState = NO_CART_SELF_TESTS_DOOR_SWITCH_STATE; - break; - - case NO_CART_SELF_TESTS_DOOR_SWITCH_STATE: - // TODO: Implement self tests - currentNoCartSelfTestsState = NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE; - break; - case NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE: currentNoCartSelfTestsState = handleNoCartSelfTestHomeValvesAndPumpState(); break; @@ -343,25 +321,6 @@ /*********************************************************************//** * @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; - pressureSelfTestBloodPumpRunStartTime = 0; - previousNormalArterialPressure = 0.0; - previousNormalVenousPressure = 0.0; - - resetSelfTestsFlags(); -} - -/*********************************************************************//** - * @brief * The execDrySelfTests function executes the dry self-tests state machine. * @details Inputs: currentDrySelfTestsState * @details Outputs: currentDrySelfTestsState, drySelfTestsResult @@ -382,41 +341,13 @@ #endif break; - case DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE: - currentDrySelfTestsState = handleDrySelfTestWaitForDoorCloseState(); - break; - - case DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE: - currentDrySelfTestsState = handleDrySelfTestBubbleDetectorsState(); - break; - - case DRY_SELF_TESTS_AIR_TRAP_STATE: - currentDrySelfTestsState = handleDrySelfTestAirTrapState(); - break; - case DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE: if ( SELF_TEST_STATUS_PASSED == execPresOcclDryTest() ) { currentDrySelfTestsState = DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE; } break; - case DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE: - currentDrySelfTestsState = handleDrySelfTestPressureSensorsSetupState(); - break; - - case DRY_SELF_TESTS_PRESSURE_SENSORS_STATE: - currentDrySelfTestsState = handleDrySelfTestPressureSensorsState( &result ); - break; - - case DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE: - currentDrySelfTestsState = handleDrySelfTestPressureSensorsNormalState( &result ); - break; - - case DRY_SELF_TESTS_STOPPED_STATE: - currentDrySelfTestsState = handleDrySelfTestStoppedState(); - break; - case DRY_SELF_TESTS_COMPLETE_STATE: drySelfTestsResult = TRUE; break; @@ -427,9 +358,6 @@ break; } - // Transition to stopped state when alarm with stop property has been triggered - handleDrySelfTestsStopRequest(); - // Self-tests flags should be handled by now, reset if flags not handled with current state resetSelfTestsFlags(); @@ -709,203 +637,6 @@ /*********************************************************************//** * @brief - * The handleDrySelfTestsStopRequest function handles stop request from alarm - * and transition to stopped state. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static void handleDrySelfTestsStopRequest( void ) -{ - if ( TRUE == selfTestsStopRequested ) - { - setupForSelfTestsStop(); - - currentDrySelfTestsState = DRY_SELF_TESTS_STOPPED_STATE; - selfTestsStopRequested = FALSE; - } -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestWaitForDoorCloseState function verify no fluid is detected - * by bubble detectors. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestWaitForDoorCloseState( void ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; - - if ( STATE_CLOSED == getFPGADoorState() ) - { - state = DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE; - } - - return state; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestBubbleDetectorsState function verify no fluid is detected - * by bubble detectors. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestBubbleDetectorsState( void ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE; - - BOOL const isADADetectedAir = getFPGAArterialAirBubbleStatus(); - BOOL const isADVDetectedAir = getFPGAVenousAirBubbleStatus(); - - if ( ( TRUE == isADADetectedAir ) && ( TRUE == isADVDetectedAir ) ) - { - state = DRY_SELF_TESTS_AIR_TRAP_STATE; - } - else - { - activateAlarmNoData( ALARM_ID_INSTALL_NEW_CARTRIDGE ); - } - - return state; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestAirTrapState function verify no fluid is detected - * by air trap. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestAirTrapState( void ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_AIR_TRAP_STATE; - - if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) && - ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) ) - { - state = DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE; - } - else - { - activateAlarmNoData( ALARM_ID_INSTALL_NEW_CARTRIDGE ); - } - - return state; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestPressureSensorsSetupState function handles the setup - * for pressure sensors dry self-test. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsSetupState( void ) -{ - previousNormalArterialPressure = getMeasuredArterialPressure(); - previousNormalVenousPressure = getMeasuredVenousPressure(); - - setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); - setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); - setValvePosition( VBA, VALVE_POSITION_B_OPEN ); - setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); - setValveAirTrap( STATE_CLOSED ); - setBloodPumpTargetFlowRate( PUMP_SELF_TEST_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - pressureSelfTestBloodPumpRunStartTime = getMSTimerCount(); - - return DRY_SELF_TESTS_PRESSURE_SENSORS_STATE; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestPressureSensorsState function tests the readings of - * pressure sensors and verify they are in correct range. - * @details Inputs: none - * @details Outputs: none - * @param result self-test result - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsState( SELF_TEST_STATUS_T *result ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_STATE; - - F32 const arterialPressure = getMeasuredArterialPressure(); - F32 const venousPressure = getMeasuredVenousPressure(); - if ( ( TRUE == didTimeout( pressureSelfTestBloodPumpRunStartTime, BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ) ) || - ( ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG >= arterialPressure ) || ( VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG <= venousPressure ) ) - { - if ( ( arterialPressure < 0) && ( venousPressure > 0 ) ) - { - setValvePosition( VBV, VALVE_POSITION_B_OPEN ); - setValveAirTrap( STATE_CLOSED ); - state = DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE; - } - else - { - *result = SELF_TEST_STATUS_FAILED; - } - } - - return state; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestPressureSensorsNormalState function verify the readings of - * pressure sensors after returning to normal state. - * @details Inputs: none - * @details Outputs: none - * @param result self-test result - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsNormalState( SELF_TEST_STATUS_T *result ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE; - - F32 const arterialPressureDiff = fabs( getMeasuredArterialPressure() - previousNormalArterialPressure); - F32 const venousPressureDiff = fabs( getMeasuredVenousPressure() - previousNormalVenousPressure); - - if ( ( arterialPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) && ( venousPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) ) - { - state = DRY_SELF_TESTS_COMPLETE_STATE; - } - else - { - *result = SELF_TEST_STATUS_FAILED; - } - - return state; -} - -/*********************************************************************//** - * @brief - * The handleDrySelfTestStoppedState function handles the stopped dry self-tests - * operation. - * @details Inputs: none - * @details Outputs: none - * @return the next state of dry self-tests state machine - *************************************************************************/ -static DRY_SELF_TESTS_STATE_T handleDrySelfTestStoppedState( void ) -{ - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_STOPPED_STATE; - - if ( TRUE == selfTestsResumeRequested ) - { - selfTestsResumeRequested = FALSE; - state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; - } - - return state; -} - -/*********************************************************************//** - * @brief * The handleWetSelfTestsStopRequest function handles stop request from alarm * and transition to stopped state. * @details Inputs: none Index: firmware/App/Modes/SelfTests.h =================================================================== diff -u -r19fc8f015489be63932eed969d28329d123332e0 -r7d229e65a33d587e2e5b03b4ce06e814012686e4 --- firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision 19fc8f015489be63932eed969d28329d123332e0) +++ firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision 7d229e65a33d587e2e5b03b4ce06e814012686e4) @@ -41,7 +41,6 @@ void execNoCartSelfTests( void ); BOOL isNoCartSelfTestsPassed( void ); -void transitionToDrySelfTests(); void execDrySelfTests( void ); BOOL isDrySelfTestsPassed( void );