Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r1a36e9bd718b40ceaee21dd12eca2da353828e30 -r0bb3fe3f34c02bd19c36aff2b98876e46a2ad177 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 1a36e9bd718b40ceaee21dd12eca2da353828e30) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 0bb3fe3f34c02bd19c36aff2b98876e46a2ad177) @@ -18,6 +18,7 @@ #include "AirPump.h" #include "AirTrap.h" #include "AlarmMgmt.h" +#include "BloodFlow.h" #include "FPGA.h" #include "ModeTreatmentParams.h" #include "OperationModes.h" @@ -27,6 +28,7 @@ #include "TaskGeneral.h" #include "TaskPriority.h" #include "Timers.h" +#include "Valves.h" /** * @addtogroup AirTrap @@ -195,6 +197,26 @@ /*********************************************************************//** * @brief + * The isAirTrapFillInProgress function determines whether the air trap is + * currently filling. + * @details Inputs: airTrapControllerState + * @details Outputs: none + * @return TRUE if air trap is currently filling, FALSE if not. + *************************************************************************/ +BOOL isAirTrapFillInProgress( void ) +{ + BOOL result = FALSE; + + if ( AIR_TRAP_VALVE_OPEN_STATE == airTrapControllerState ) + { + result = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief * The execAirTrapMonitor function executes the air trap monitor. * @details Inputs: FPGA air trap levels GPIO pin levels, airTrapIllegalLevelSensorsCtr * @details Outputs: airTrapLevels[], airTrapIllegalLevelSensorsCtr @@ -390,7 +412,7 @@ } } - //Open valve once at start of treatment ( blood priming) + //Open valve once at start of treatment (blood priming) else if ( TRUE == airTrapValveOpenAtStartOfTreatement ) { airTrapValveOpenAtStartOfTreatement = FALSE; @@ -400,10 +422,12 @@ } setValveAirTrap( STATE_OPEN ); + signalBloodPumpHardStop(); + setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); fillStartTime = getMSTimerCount(); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_FILL, STATE_OPEN, 0 ); - result = AIR_TRAP_VALVE_OPEN_STATE; SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_STATE_CHANGE, (U32)AIR_TRAP_VALVE_CLOSED_STATE, (U32)result ) + result = AIR_TRAP_VALVE_OPEN_STATE; } // Turn air pump off after defined time or air detected at upper level @@ -438,10 +462,12 @@ } setValveAirTrap( STATE_OPEN ); + signalBloodPumpHardStop(); + setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); fillStartTime = getMSTimerCount(); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_FILL, STATE_OPEN, 0 ); - result = AIR_TRAP_VALVE_OPEN_STATE; SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_STATE_CHANGE, (U32)AIR_TRAP_VALVE_CLOSED_STATE, (U32)result ) + result = AIR_TRAP_VALVE_OPEN_STATE; } return result; @@ -478,6 +504,7 @@ result = AIR_TRAP_VALVE_CLOSED_STATE; SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_STATE_CHANGE, (U32)AIR_TRAP_VALVE_OPEN_STATE, (U32)result ) } + return result; }