Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r3ee7155720dd102ca0dc22102246285728d6068d -r7b9f88168b56fecff1a4e1ccdbd494c1a1b28fff --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 3ee7155720dd102ca0dc22102246285728d6068d) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 7b9f88168b56fecff1a4e1ccdbd494c1a1b28fff) @@ -66,6 +66,7 @@ static U32 fillStartTime = 0; ///< Time stamp for start of air trap fill. +static U32 airTrapUpperLevelCtr = 0; ///< Timer count for upper level persistence. static U32 airTrapIllegalLevelSensorsCtr = 0; ///< Timer counter for illegal level sensor fault. // ********** private function prototypes ********** @@ -183,7 +184,7 @@ if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) && MODE_TREA == getCurrentOperationMode() ) { - if ( ++airTrapIllegalLevelSensorsCtr >= AIR_TRAP_UPPER_LEVEL_PERSISTENCE ) + if ( ++airTrapUpperLevelCtr >= AIR_TRAP_UPPER_LEVEL_PERSISTENCE ) { #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_ILLEGAL_AIR_TRAP_ALARM ) != SW_CONFIG_ENABLE_VALUE ) @@ -193,6 +194,13 @@ } } } + else + { + if ( airTrapUpperLevelCtr > 0 ) + { + airTrapUpperLevelCtr--; + } + } // Check level readings are valid if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) && Index: firmware/App/Modes/Prime.c =================================================================== diff -u -rb030ab45b224005353368b098ff7d30bc0bb8405 -r7b9f88168b56fecff1a4e1ccdbd494c1a1b28fff --- firmware/App/Modes/Prime.c (.../Prime.c) (revision b030ab45b224005353368b098ff7d30bc0bb8405) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 7b9f88168b56fecff1a4e1ccdbd494c1a1b28fff) @@ -514,18 +514,6 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PRIME_SALINE_PURGE_AIR_TIME_OUT, PURGE_AIR_TIME_OUT_COUNT ); } - if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) - { - if ( FALSE == primeFirstPurgePass ) - { - setBloodPumpTargetFlowRate( BLOOD_PUMP_FAST_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - } - else - { - setBloodPumpTargetFlowRate( BLOOD_PUMP_SLOW_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - } - } - if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) { setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); @@ -753,7 +741,7 @@ { state = HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE; } - + // TODO: Rework alarm and timeout logic here. PRIME_SALINE_DIALYZER_TIME_OUT_COUNT may not be reached. if ( TRUE == didTimeout( primeSalineDialyzerStartTime, PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ) ) { SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRIME_SALINE_DIALYZER_TIME_OUT, PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ); // Trigger HD prime saline dialyzer time out alarm.