Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rd325999b7b3ea03b7e294cb8a0b97df93812fbe9 -r08eb8944c4db804b373cf37a78a761b01f00e649 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision d325999b7b3ea03b7e294cb8a0b97df93812fbe9) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 08eb8944c4db804b373cf37a78a761b01f00e649) @@ -168,58 +168,67 @@ *************************************************************************/ void checkInletWaterPressure( void ) { + F32 pressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); + + if ( VALVE_STATE_OPEN == getValveStateName( VPI ) ) + { #ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_WATER_QUALITY_CHECK ) != SW_CONFIG_ENABLE_VALUE ) + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_WATER_QUALITY_CHECK ) != SW_CONFIG_ENABLE_VALUE ) #endif - { - DG_OP_MODE_T opMode = getCurrentOperationMode(); - F32 pressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); - BOOL isPressureTooLow = ( pressure < MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ? TRUE : FALSE ); - BOOL isPressureTooHigh = ( pressure > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? TRUE : FALSE ); - - switch( opMode ) { - case DG_MODE_GENE: - case DG_MODE_FILL: - case DG_MODE_DRAI: - case DG_MODE_STAN: - if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE ) ) - { - isPressureTooLow = ( pressure >= MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ? FALSE : TRUE ); - } + DG_OP_MODE_T opMode = getCurrentOperationMode(); + BOOL isPressureTooLow = ( pressure < MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ? TRUE : FALSE ); + BOOL isPressureTooHigh = ( pressure > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? TRUE : FALSE ); - // Per PRS 401 - checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE, isPressureTooLow, pressure, MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + switch( opMode ) + { + case DG_MODE_GENE: + case DG_MODE_FILL: + case DG_MODE_DRAI: + case DG_MODE_STAN: + if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE ) ) + { + isPressureTooLow = ( pressure >= MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ? FALSE : TRUE ); + } - if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE ) ) - { - isPressureTooHigh = ( pressure <= MIN_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? FALSE : TRUE ); - } + // Per PRS 401 + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE, isPressureTooLow, pressure, MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); - // Per PRS 841 - checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE, isPressureTooHigh, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); - break; + if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE ) ) + { + isPressureTooHigh = ( pressure <= MIN_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? FALSE : TRUE ); + } - case DG_MODE_FLUS: - case DG_MODE_HEAT: - case DG_MODE_HCOL: - case DG_MODE_CHEM: - case DG_MODE_CHFL: - case DG_MODE_ROPS: - if ( VALVE_STATE_OPEN == getValveStateName( VPI ) ) - { + // Per PRS 841 + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE, isPressureTooHigh, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); + break; + + case DG_MODE_FLUS: + case DG_MODE_HEAT: + case DG_MODE_HCOL: + case DG_MODE_CHEM: + case DG_MODE_CHFL: + case DG_MODE_ROPS: // TODO define the PRS checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH, isPressureTooHigh, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); // TODO define the PRS checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, isPressureTooLow, pressure, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); - } - break; + break; - default: - // NOTE: Do nothing for the rest of the modes - break; + default: + // NOTE: Do nothing for the rest of the modes + break; + } } } + else + { + // VPI is closed - clear all alarms + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, FALSE, pressure, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + } } /*********************************************************************//**