Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r736cc5b56cc9c784ab1d8fc8687a73d190c35759 -rb4337dc5afaca148dd23c0c4021875563b565739 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 736cc5b56cc9c784ab1d8fc8687a73d190c35759) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision b4337dc5afaca148dd23c0c4021875563b565739) @@ -74,6 +74,8 @@ static U32 airPumpUpperLevelCtr = 0; ///< Timer count for air pump persistence. +static BOOL airTrapValveOpenAtStablePressureState = FALSE; ///< AirTrap valve open at every 15 minutes of pressure stable state, to clear any any accumulated bubbles + // ********** private function prototypes ********** static AIR_TRAP_STATE_T handleAirTrapManualControlState( void ); @@ -93,8 +95,9 @@ U32 i; resetAirTrap(); - airTrapDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - airPumpUpperLevelCtr = 0; + airTrapDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + airPumpUpperLevelCtr = 0; + airTrapValveOpenAtStablePressureState = TRUE; for ( i = 0; i < NUM_OF_AIR_TRAP_LEVEL_SENSORS; i++ ) { @@ -156,6 +159,19 @@ /*********************************************************************//** * @brief + * The signalAirTrapValveOpen function sets the flag to open up air trap valve. + * @details Inputs: airTrapValveOpenAtStablePressureState + * @details Outputs: airTrapValveOpenAtStablePressureState + * @return none + *************************************************************************/ +void signalAirTrapValveOpen( void ) +{ + // Open air trap valve + airTrapValveOpenAtStablePressureState = TRUE; +} + +/*********************************************************************//** + * @brief * The isAirTrapControlling function determines whether the air trap is * currently controlling. * @details Inputs: airTrapControllerState @@ -331,6 +347,21 @@ } } + //Open valve every 15 mins once during pressure stable state + else if ( TRUE == airTrapValveOpenAtStablePressureState ) + { + airTrapValveOpenAtStablePressureState = FALSE; + if ( AIR_PUMP_STATE_ON == getAirPumpState() ) + { + setAirPumpState( AIR_PUMP_STATE_OFF ); + } + + setValveAirTrap( STATE_OPEN ); + fillStartTime = getMSTimerCount(); + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_AIR_TRAP_FILL, STATE_CLOSED, 0 ); + result = AIR_TRAP_VALVE_OPEN_STATE; + } + //Turn on air pump if fluid reaches upper level. else if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) { @@ -392,8 +423,8 @@ pendingStopAirTrapController = FALSE; result = AIR_TRAP_MANUAL_CONTROL_STATE; } - // Transition to closed valve state when fluid detected at lower level - else if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) + // Transition to closed valve state when fluid detected at upper level + else if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) { setValveAirTrap( STATE_CLOSED ); result = AIR_TRAP_VALVE_CLOSED_STATE;