Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -r5a36a768d11cc597a36b894c1fb3a5e5590130f1 -rd38ccb51f7ee97a6cba54b24c900df6d9c1b42e6 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 5a36a768d11cc597a36b894c1fb3a5e5590130f1) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision d38ccb51f7ee97a6cba54b24c900df6d9c1b42e6) @@ -39,7 +39,9 @@ #define PRESSURE_SAMPLES_TO_AVERAGE ( 200 / TASK_PRIORITY_INTERVAL ) ///< Averaging pressure data over the reporting interval. #define PRESSURE_AVERAGE_MULTIPLIER ( 1.0 / (F32)PRESSURE_SAMPLES_TO_AVERAGE ) ///< Optimization - multiplying is faster than dividing. - + +#define MIN_VALID_PRESSURE_RANGE 0.0 ///< Minimum valid range on pressure reading. +#define MAX_VALID_PRESSURE_RANGE 200.0 ///< Maximum valid range on pressure reading. #define MIN_INLET_WATER_PRESSURE 25 ///< Minimum water input pressure. #define INLET_WATER_PRESSURE_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error. #define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the pressures data is published on the CAN bus. @@ -155,9 +157,7 @@ *************************************************************************/ static PRESSURE_STATE_T handlePressuresInitState( void ) { - PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; - - return result; + return PRESSURE_CONTINUOUS_READ_STATE; } /*********************************************************************//** @@ -171,7 +171,9 @@ static PRESSURE_STATE_T handlePressuresContReadState( void ) { PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; - S32 measuredPressureReadingsRaw[ NUM_OF_PRESSURE_SENSORS ]; + S32 measuredPressureReadingsRaw[ NUM_OF_PRESSURE_SENSORS ]; + U32 sensorID; + F32 pressureReading; // get latest raw pressure readings measuredPressureReadingsRaw[ PRESSURE_SENSOR_RO_PUMP_INLET ] = (S32)getIntADCReading( INT_ADC_RO_PUMP_INLET_PRESSURE ) - PUMP_PRESSURE_ZERO; @@ -207,9 +209,16 @@ measuredPressureReadingsSum[ PRESSURE_SENSOR_DRAIN_PUMP_INLET ] = 0; measuredPressureReadingsSum[ PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ] = 0; } + + for ( sensorID = 0; sensorID < NUM_OF_PRESSURE_SENSORS; sensorID++ ) + { + pressureReading = getMeasuredDGPressure( sensorID ); + if ( ( pressureReading < MIN_VALID_PRESSURE_RANGE ) && ( pressureReading > MAX_VALID_PRESSURE_RANGE ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_PRESSURE_SENSOR_FAULT, sensorID, pressureReading ); + } + } - // TODO - any other checks - return result; }