Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r91d34f09aba75c8a7da63577ec5775938c2d6e77 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 91d34f09aba75c8a7da63577ec5775938c2d6e77) @@ -345,6 +345,12 @@ { pendingStopAirTrapController = FALSE; result = AIR_TRAP_MANUAL_CONTROL_STATE; + + if ( AIR_PUMP_STATE_ON == getAirPumpState() ) + { + setAirPumpState( AIR_PUMP_STATE_OFF ); + airPumpUpperLevelCtr = 0; + } } //Turn on air pump if fluid reaches upper level. @@ -357,11 +363,13 @@ if ( AIR_PUMP_STATE_OFF == getAirPumpState() ) { setAirPumpState( AIR_PUMP_STATE_ON ); + airPumpUpperLevelCtr = 0; } } } - else if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) ) + else if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) && + ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) ) { #ifndef _RELEASE_ @@ -372,18 +380,17 @@ { airPumpUpperLevelCtr++; // Turn air pump off once we detect air at upper level and exceed persistence - // But first, open the air valve. if ( airPumpUpperLevelCtr >= AIR_PUMP_UPPER_LEVEL_PERSISTENCE ) { setAirPumpState( AIR_PUMP_STATE_OFF ); - airPumpUpperLevelCtr = 0; } } } } // Transition to open valve state when air detected at lower level - else if ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) + else if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) && + ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) ) { #ifndef _RELEASE_ if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) @@ -392,9 +399,9 @@ if ( AIR_PUMP_STATE_ON == getAirPumpState() ) { setAirPumpState( AIR_PUMP_STATE_OFF ); - airPumpUpperLevelCtr = 0; } } + setValveAirTrap( STATE_OPEN ); fillStartTime = getMSTimerCount(); result = AIR_TRAP_VALVE_OPEN_STATE;