Index: firmware/App/Controllers/AirTrap.h =================================================================== diff -u -re5d1d67106a93a6cd1b5692b586625d715732e2f -r42fe309ff246de72d1ed42fba291e792630d1e12 --- firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) +++ firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision 42fe309ff246de72d1ed42fba291e792630d1e12) @@ -58,7 +58,7 @@ void startAirTrapControl( void ); void endAirTrapControl( void ); -BOOL isAirTrapControlling( void ); +BOOL isAirTrapControlling( void ); AIR_TRAP_LEVELS_T getAirTrapLevel( AIR_TRAP_LEVEL_SENSORS_T sensor ); Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r1c628bfd5d6414b74b8cbd083f66839888a8236b -r42fe309ff246de72d1ed42fba291e792630d1e12 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 1c628bfd5d6414b74b8cbd083f66839888a8236b) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 42fe309ff246de72d1ed42fba291e792630d1e12) @@ -24,7 +24,8 @@ #include "SystemCommMessages.h" #include "TaskGeneral.h" #include "Temperatures.h" -#include "Timers.h" +#include "Timers.h" +#include "Valves.h" /** * @addtogroup PressureOcclusion @@ -579,9 +580,13 @@ F32 venHighLimit = (F32)getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT ); #ifndef DISABLE_PRESSURE_CHECKS - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_VENOUS_PRESSURE_LOW, venPres < venLowLimit ) ) + // Cannot monitor for low venous pressure while venting air trap + if ( STATE_OPEN == getValveAirTrapStatus() ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_VENOUS_PRESSURE_LOW, venPres, venLowLimit ); + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_VENOUS_PRESSURE_LOW, venPres < venLowLimit ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_VENOUS_PRESSURE_LOW, venPres, venLowLimit ); + } } if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_VENOUS_PRESSURE_LOW, venPres < venLowLimit ) ) Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rcbb126cfd3a02c08436a66ffecb2bdf926263705 -r42fe309ff246de72d1ed42fba291e792630d1e12 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision cbb126cfd3a02c08436a66ffecb2bdf926263705) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 42fe309ff246de72d1ed42fba291e792630d1e12) @@ -591,27 +591,37 @@ cumulativeRinsebackVolume_mL.data += rinsebackVolumeSinceLast; rinsebackAdditionalTimerCtr++; - // Has additional rinseback completed or timed out? - if ( ( additionalRinsebackVolume_mL >= TARGET_ADDITIONAL_RINSEBACK_VOLUME_ML ) || - ( rinsebackAdditionalTimerCtr >= MAX_RINSEBACK_ADDITIONAL_TIME ) ) - { - setupForRinsebackStopOrPause(); - result = RINSEBACK_STOP_STATE; - } // Check for empty saline bag if ( TRUE == isSalineBagEmpty() ) { SET_ALARM_WITH_1_F32_DATA( ALARM_ID_EMPTY_SALINE_BAG, getMeasuredArterialPressure() ); - setupForRinsebackStopOrPause(); + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); result = RINSEBACK_STOP_STATE; } + // Has additional rinseback completed + else if ( additionalRinsebackVolume_mL >= TARGET_ADDITIONAL_RINSEBACK_VOLUME_ML ) + { + result = RINSEBACK_STOP_STATE; + } + // Has additional rinseback timed out? + else if ( rinsebackAdditionalTimerCtr >= MAX_RINSEBACK_ADDITIONAL_TIME ) + { + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); + result = RINSEBACK_STOP_STATE; + } // Has alarm requested stop? else if ( TRUE == doesAlarmStatusIndicateStop() ) { - setupForRinsebackStopOrPause(); + targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); result = RINSEBACK_STOP_STATE; } + // Setup for rinseback stop state if additional rinseback completed or ending. + if ( RINSEBACK_STOP_STATE == result ) + { + setupForRinsebackStopOrPause(); + } + return result; }