Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -8,10 +8,10 @@ * @file PressureSensor.c * * @author (last) Sean Nash -* @date (last) 09-Nov-2024 +* @date (last) 18-Nov-2024 * * @author (original) Sean Nash -* @date (original) 09-Nov-2024 +* @date (original) 18-Nov-2024 * ***************************************************************************/ @@ -33,37 +33,18 @@ #define ONE_BAR_TO_MILLI_BAR 1000 ///< 1 bar to milli-bar conversion. #define COUNTS_TO_MILLI_BAR 100 ///< Counts to milli-bar conversion. #define BAR_TO_MMHG ( 750.062F ) ///< Conversion factor for converting bar to mmHg. -#define PRES_SENSORS_READ_ERR_MAX_CNT 255 ///< Pressure sensor read and error max count value +#define PRES_SENSORS_READ_ERR_MAX_CNT 0xFF ///< Pressure sensor read and error max count value -/// Barometric sensor conversion coefficients -typedef struct -{ - U16 pressureSensitivity; ///< Barometric sensor pressure sensitivity constant. - U16 pressureOffset; ///< Barometric sensor pressure offset constant. - U16 pressureSensitivityTempCoeff; ///< Barometric sensor pressure sensitivity temperature coefficient. - U16 pressureOffsetTempCoeff; ///< Barometric sensor pressure offset temperature coefficient. -} BARO_SENSOR_CONSTS_T; - -static const U32 TWO_TO_POWER_OF_6 = ( 1 << 6 ); ///< 2^6. -static const U32 TWO_TO_POWER_OF_7 = ( 1 << 7 ); ///< 2^7. -static const U32 TWO_TO_POWER_OF_15 = ( 1 << 15 ); ///< 2^15. -static const U32 TWO_TO_POWER_OF_16 = ( 1 << 16 ); ///< 2^16. -static const U32 TWO_TO_POWER_OF_17 = ( 1 << 17 ); ///< 2^17. -static const U32 TWO_TO_POWER_OF_21 = ( 1 << 21 ); ///< 2^21. - // ********** private data ********** static OVERRIDE_F32_T currentPressureReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< Current pressure sensor pressure readings (overrideable). static OVERRIDE_F32_T currentPresTempReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< Current pressure sensor temperature readings (overrideable). static OVERRIDE_U32_T lastPressureReadCounter[ NUM_OF_PRESSURE_SENSORS ]; ///< Last pressure sensor read count (Overrideable). static OVERRIDE_U32_T lastPressureErrorCounter[ NUM_OF_PRESSURE_SENSORS ]; ///< Last pressure sensor error count (Overrideable). -static BARO_SENSOR_CONSTS_T baroConvConsts; ///< Barometric sensor conversion constants. // ********** private function prototypes ********** //static void checkPressureSensors( void ); -//static F32 convertBaroPressureReading2mmHg( U32 rawPressure ); -//static F32 calculateBaroPressure( U32 pressure ); /*********************************************************************//** * @brief @@ -100,12 +81,6 @@ lastPressureErrorCounter[ i ].override = OVERRIDE_RESET; } - //Initialize baro variable - baroConvConsts.pressureOffset = 0; - baroConvConsts.pressureOffsetTempCoeff = 0; - baroConvConsts.pressureSensitivity = 0; - baroConvConsts.pressureSensitivityTempCoeff = 0; - // Initialize the FPGA persistent alarms // initFPGAPersistentAlarm( FPGA_PERS_ERROR_HYDRAULICS_OUTLET_PRESSURE, ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT, // PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); @@ -138,94 +113,39 @@ *************************************************************************/ void readPressureSensors( void ) { -// // Update and convert raw pressures to mmHg -// currentPressureReadings[ PRESSURE_SENSOR_WATER_INLET_INPUT ].data = convertPressureReading2mmHg( getFPGAPRiRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_WATER_INLET_OUTPUT ].data = convertPressureReading2mmHg( getFPGAPRoRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_HYDRAULICS_OUTLET ].data = convertPressureReading2mmHg( getFPGAPnRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_BIBAG ].data = convertPressureReading2mmHg( getFPGAPCbRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_SPENT_DIALYSATE ].data = convertPressureReading2mmHg( getFPGAPDsRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_FRESH_DIALYSATE ].data = convertPressureReading2mmHg( getFPGAPDfRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_TRANSMEMBRANE ].data = convertPressureReading2mmHg( getFPGAPtmRawPressure() ); -// currentPressureReadings[ PRESSURE_SENSOR_BAROMETRIC ].data = convertBaroPressureReading2mmHg( getFPGABaroPressure() ); -// -// // Update and convert raw pressure sensor temperatures to deg C -// currentPresTempReadings[ PRESSURE_SENSOR_WATER_INLET_INPUT ].data = convertPressureTempReading2DegC( getFPGAPRiRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_WATER_INLET_OUTPUT ].data = convertPressureTempReading2DegC( getFPGAPRoRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_HYDRAULICS_OUTLET ].data = convertPressureTempReading2DegC( getFPGAPnRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_BIBAG ].data = convertPressureTempReading2DegC( getFPGAPCbRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_SPENT_DIALYSATE ].data = convertPressureTempReading2DegC( getFPGAPDsRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_FRESH_DIALYSATE ].data = convertPressureTempReading2DegC( getFPGAPDfRawTemperature() ); -// currentPresTempReadings[ PRESSURE_SENSOR_TRANSMEMBRANE ].data = convertPressureTempReading2DegC( getFPGAPtmRawTemperature() ); -// -// // Update read and error counters for each pressure sensor -// lastPressureReadCounter[ PRESSURE_SENSOR_WATER_INLET_INPUT ].data = (U32)getFPGAPRiReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_WATER_INLET_OUTPUT ].data = (U32)getFPGAPRoReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_HYDRAULICS_OUTLET ].data = (U32)getFPGAPnReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_BIBAG ].data = (U32)getFPGAPCbReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_SPENT_DIALYSATE ].data = (U32)getFPGAPDsReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_FRESH_DIALYSATE ].data = (U32)getFPGAPDfReadCount(); -// lastPressureReadCounter[ PRESSURE_SENSOR_TRANSMEMBRANE ].data = (U32)getFPGAPtmReadCount(); -// -// lastPressureErrorCounter[ PRESSURE_SENSOR_WATER_INLET_INPUT ].data = (U32)getFPGAPRiErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_WATER_INLET_OUTPUT ].data = (U32)getFPGAPRoErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_HYDRAULICS_OUTLET ].data = (U32)getFPGAPnErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_BIBAG ].data = (U32)getFPGAPCbErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_SPENT_DIALYSATE ].data = (U32)getFPGAPDsErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_FRESH_DIALYSATE ].data = (U32)getFPGAPDfErrorCount(); -// lastPressureErrorCounter[ PRESSURE_SENSOR_TRANSMEMBRANE ].data = (U32)getFPGAPtmErrorCount(); -// + // Update and convert raw pressures to mmHg + currentPressureReadings[ PRESSURE_SENSOR_WATER_INLET_PRE_REG ].data = convertPressureReading2mmHg( getFPGAPRiRawPressure() ); + currentPressureReadings[ PRESSURE_SENSOR_WATER_INLET_POST_REG ].data = convertPressureReading2mmHg( getFPGAPRoRawPressure() ); + currentPressureReadings[ PRESSURE_SENSOR_WATER_INLET_PRE_COND ].data = convertPressureReading2mmHg( getFPGAPC2oRawPressure() ); + currentPressureReadings[ PRESSURE_SENSOR_PRE_RO_FILTER ].data = convertPressureReading2mmHg( getFPGAPPoRawPressure() ); + currentPressureReadings[ PRESSURE_SENSOR_POST_RO_FILTER ].data = convertPressureReading2mmHg( getFPGAPMpRawPressure() ); + + // Update and convert raw pressure sensor temperatures to deg C + currentPresTempReadings[ PRESSURE_SENSOR_WATER_INLET_PRE_REG ].data = convertPressureTempReading2DegC( getFPGAPRiRawTemperature() ); + currentPresTempReadings[ PRESSURE_SENSOR_WATER_INLET_POST_REG ].data = convertPressureTempReading2DegC( getFPGAPRoRawTemperature() ); + currentPresTempReadings[ PRESSURE_SENSOR_WATER_INLET_PRE_COND ].data = convertPressureTempReading2DegC( getFPGAPC2oRawTemperature() ); + currentPresTempReadings[ PRESSURE_SENSOR_PRE_RO_FILTER ].data = convertPressureTempReading2DegC( getFPGAPPoRawTemperature() ); + currentPresTempReadings[ PRESSURE_SENSOR_POST_RO_FILTER ].data = convertPressureTempReading2DegC( getFPGAPMpRawTemperature() ); + + // Update read and error counters for each pressure sensor + lastPressureReadCounter[ PRESSURE_SENSOR_WATER_INLET_PRE_REG ].data = (U32)getFPGAPRiReadCount(); + lastPressureReadCounter[ PRESSURE_SENSOR_WATER_INLET_POST_REG ].data = (U32)getFPGAPRoReadCount(); + lastPressureReadCounter[ PRESSURE_SENSOR_WATER_INLET_PRE_COND ].data = (U32)getFPGAPC2oReadCount(); + lastPressureReadCounter[ PRESSURE_SENSOR_PRE_RO_FILTER ].data = (U32)getFPGAPPoReadCount(); + lastPressureReadCounter[ PRESSURE_SENSOR_POST_RO_FILTER ].data = (U32)getFPGAPMpReadCount(); + + lastPressureErrorCounter[ PRESSURE_SENSOR_WATER_INLET_PRE_REG ].data = (U32)getFPGAPRiErrorCount(); + lastPressureErrorCounter[ PRESSURE_SENSOR_WATER_INLET_POST_REG ].data = (U32)getFPGAPRoErrorCount(); + lastPressureErrorCounter[ PRESSURE_SENSOR_WATER_INLET_PRE_COND ].data = (U32)getFPGAPC2oErrorCount(); + lastPressureErrorCounter[ PRESSURE_SENSOR_PRE_RO_FILTER ].data = (U32)getFPGAPPoErrorCount(); + lastPressureErrorCounter[ PRESSURE_SENSOR_POST_RO_FILTER ].data = (U32)getFPGAPMpErrorCount(); + // // Monitor pressure sensor health // checkPressureSensors(); } /*********************************************************************//** * @brief - * The convertBaroPressureReading2mmHg function converts the raw pressure counts - * in to mmHg unit. - * @details \b Inputs: FPGA - * @details \b Outputs: baroConvConsts - * @param rawPressure the raw baro sensor reading from FPGA. - * @return the converted baro pressure (in mmHg). - *************************************************************************/ -//static F32 convertBaroPressureReading2mmHg( U32 rawPressure ) -//{ -// F32 baroPressure = 0.0F; -// -// baroConvConsts.pressureSensitivity = getFPGABaroPressureSensitivity(); -// baroConvConsts.pressureSensitivityTempCoeff = getFPGABaroTempCoeffOfPressSensitvity(); -// baroConvConsts.pressureOffset = getFPGABaroPressureOffset(); -// baroConvConsts.pressureOffsetTempCoeff = getFPGABaroTempCoeffOfPressOffset(); -// baroPressure = calculateBaroPressure( rawPressure ); -// -// return baroPressure; -//} - -/*********************************************************************//** - * @brief - * The calculateBaroPressure function performs the required calculations - * to compute the baro pressure readings. - * @details \b Inputs: baroConvConsts - * @details \b Outputs: none - * @param pressure the raw baro sensor reading from FPGA. - * @return converted baro pressure (in mmHg). - *************************************************************************/ -//static F32 calculateBaroPressure( U32 pressure ) -//{ -// S32 tempDiff = getBaroSensorTemperatureDiff(); -// S64 tempOffset = ( baroConvConsts.pressureOffsetTempCoeff * tempDiff ) / TWO_TO_POWER_OF_6; -// S64 presOffset = baroConvConsts.pressureOffset * TWO_TO_POWER_OF_17; -// S64 offset = presOffset + tempOffset; -// S64 tempSensitivity = ( baroConvConsts.pressureSensitivityTempCoeff * tempDiff ) / TWO_TO_POWER_OF_7; -// S64 presSensitivity = baroConvConsts.pressureSensitivity * TWO_TO_POWER_OF_16; -// S64 sensitivity = tempSensitivity + presSensitivity; -// S32 pres = (S32)( ( ( pressure * sensitivity ) / TWO_TO_POWER_OF_21 ) - offset ) / TWO_TO_POWER_OF_15; -// F32 presmmHg = ( (F32)pres / (F32)( COUNTS_TO_MILLI_BAR * ONE_BAR_TO_MILLI_BAR ) ) * BAR_TO_MMHG; -// -// return presmmHg; -//} - -/*********************************************************************//** - * @brief * The checkPressureSensors function checks the read and error counters for * each pressure sensor. * @details \b Alarm: ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT if the @@ -265,122 +185,122 @@ * @brief * The getPressure function gets the current pressure (in mmHg) for a given * pressure sensor. - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given pressure sensor is invalid. * @details \b Inputs: currentPressureReadings * @details \b Outputs: none * @param sensor ID of pressure sensor to get pressure reading for. * @return The current pressure (in mmHg) of the given pressure sensor. *************************************************************************/ -//F32 getPressure( PRESSURE_SENSORS_T sensor ) -//{ -// F32 result = 0.0F; -// -// if ( sensor < NUM_OF_PRESSURE_SENSORS ) -// { -// result = currentPressureReadings[ sensor ].data; -// if ( OVERRIDE_KEY == currentPressureReadings[ sensor ].override ) -// { -// result = currentPressureReadings[ sensor ].ovData; -// } -// } -// else -// { -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1, sensor ) -// } -// -// return result; -//} +F32 getPressure( PRESSURE_SENSORS_T sensor ) +{ + F32 result = 0.0F; + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = currentPressureReadings[ sensor ].data; + if ( OVERRIDE_KEY == currentPressureReadings[ sensor ].override ) + { + result = currentPressureReadings[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1, (U32)sensor ) + } + + return result; +} + /*********************************************************************//** * @brief * The getPressureSensorTemperature function gets the current pressure sensor * temperature (in deg C) for a given pressure sensor. - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given pressure sensor is invalid. * @details \b Inputs: currentPresTempReadings * @details \b Outputs: none * @param sensor ID of pressure sensor to get temperature reading for. * @return The current pressure sensor temperature (in deg C) of the given pressure sensor. *************************************************************************/ -//F32 getPressureSensorTemperature( PRESSURE_SENSORS_T sensor ) -//{ -// F32 result = 0.0F; -// -// if ( sensor < NUM_OF_PRESSURE_SENSORS ) -// { -// result = currentPresTempReadings[ sensor ].data; -// if ( OVERRIDE_KEY == currentPresTempReadings[ sensor ].override ) -// { -// result = currentPresTempReadings[ sensor ].ovData; -// } -// } -// else -// { -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2, sensor ) -// } -// -// return result; -//} +F32 getPressureSensorTemperature( PRESSURE_SENSORS_T sensor ) +{ + F32 result = 0.0F; + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = currentPresTempReadings[ sensor ].data; + if ( OVERRIDE_KEY == currentPresTempReadings[ sensor ].override ) + { + result = currentPresTempReadings[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2, sensor ) + } + + return result; +} + /*********************************************************************//** * @brief * The getPressureSensorReadCount function gets the current pressure sensor * read count for a given pressure sensor. - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. * @details \b Inputs: lastPressureReadCounter * @details \b Outputs: none * @param sensor ID of pressure sensor to get read count for. * @return The current pressure sensor read count of a given pressure sensor. *************************************************************************/ -//U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ) -//{ -// U32 result = 0; -// -// if ( sensor < NUM_OF_PRESSURE_SENSORS ) -// { -// result = lastPressureReadCounter[ sensor ].data; -// if ( OVERRIDE_KEY == lastPressureReadCounter[ sensor ].override ) -// { -// result = lastPressureReadCounter[ sensor ].ovData; -// } -// } -// else -// { -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3, sensor ) -// } -// -// return result; -//} +U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ) +{ + U32 result = 0; + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = lastPressureReadCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastPressureReadCounter[ sensor ].override ) + { + result = lastPressureReadCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3, sensor ) + } + + return result; +} + /*********************************************************************//** * @brief * The getPressureSensorErrorCount function gets the current pressure sensor * error count for a given pressure sensor. - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. * @details \b Inputs: lastPressureErrorCounter * @details \b Outputs: none * @param sensor ID of pressure sensor to get error count for. * @return The current pressure sensor error count of a given pressure sensor. *************************************************************************/ -//U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ) -//{ -// U32 result = 0; -// -// if ( sensor < NUM_OF_PRESSURE_SENSORS ) -// { -// result = lastPressureErrorCounter[ sensor ].data; -// if ( OVERRIDE_KEY == lastPressureErrorCounter[ sensor ].override ) -// { -// result = lastPressureErrorCounter[ sensor ].ovData; -// } -// } -// else -// { -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4, sensor ) -// } -// -// return result; -//} +U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ) +{ + U32 result = 0; + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = lastPressureErrorCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastPressureErrorCounter[ sensor ].override ) + { + result = lastPressureErrorCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4, sensor ) + } + + return result; +} + /************************************************************************* * TEST SUPPORT FUNCTIONS @@ -389,70 +309,70 @@ /*********************************************************************//** * @brief - * The testPressureSensorReadingsOverride function overrides the value of the - * specified pressure sensor with a given value. + * The testPressureSensorReadingsOverride function overrides the value of + * the specified pressure sensor with a given value. * @details \b Inputs: none * @details \b Outputs: currentPressureReadings[] * @param message Override message from Dialin which includes an sensor * ID and override value of the pressure sensor. * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testPressureSensorReadingsOverride( MESSAGE_T *message ) -//{ -// BOOL result = f32ArrayOverride( message, ¤tPressureReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); -// -// return result; -//} +BOOL testPressureSensorReadingsOverride( MESSAGE_T *message ) +{ + BOOL result = f32ArrayOverride( message, ¤tPressureReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); + + return result; +} /*********************************************************************//** * @brief - * The testPressureSensorTemperatureReadingsOverride function overrides the value of the - * specified pressure sensor temperature with a given value. + * The testPressureSensorTemperatureReadingsOverride function overrides the + * value of the specified pressure sensor temperature with a given value. * @details \b Inputs: none * @details \b Outputs: currentPresTempReadings[] * @param message Override message from Dialin which includes an sensor * ID and override value of the pressure sensor temperature. * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ) -//{ -// BOOL result = f32ArrayOverride( message, ¤tPresTempReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); -// -// return result; -//} +BOOL testPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ) +{ + BOOL result = f32ArrayOverride( message, ¤tPresTempReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); + return result; +} + /*********************************************************************//** * @brief - * The testPressureSensorReadCounterOverride function overrides the value of the - * specified pressure sensor read counter with a given value. + * The testPressureSensorReadCounterOverride function overrides the value + * of the specified pressure sensor read counter with a given value. * @details \b Inputs: none * @details \b Outputs: lastPressureReadCounter[] * @param message Override message from Dialin which includes an sensor * ID and override value of the pressure sensor read counter. * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testPressureSensorReadCounterOverride( MESSAGE_T *message ) -//{ -// BOOL result = u32ArrayOverride( message, &lastPressureReadCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); -// -// return result; -//} +BOOL testPressureSensorReadCounterOverride( MESSAGE_T *message ) +{ + BOOL result = u32ArrayOverride( message, &lastPressureReadCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); + return result; +} + /*********************************************************************//** * @brief - * The testPressureSensorErrorCounterOverride function overrides the value of the - * specified pressure sensor error counter with a given value. + * The testPressureSensorErrorCounterOverride function overrides the value + * of the specified pressure sensor error counter with a given value. * @details \b Inputs: none * @details \b Outputs: lastPressureErrorCounter[] * @param message Override message from Dialin which includes an sensor * ID and override value of the pressure sensor error counter. * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testPressureSensorErrorCounterOverride( MESSAGE_T *message ) -//{ -// BOOL result = u32ArrayOverride( message, &lastPressureErrorCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); -// -// return result; -//} +BOOL testPressureSensorErrorCounterOverride( MESSAGE_T *message ) +{ + BOOL result = u32ArrayOverride( message, &lastPressureErrorCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); + + return result; +} /**@}*/ Index: firmware/App/Drivers/PressureSensor.h =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -8,10 +8,10 @@ * @file PressureSensor.h * * @author (last) Sean Nash -* @date (last) 09-Nov-2024 +* @date (last) 18-Nov-2024 * * @author (original) Sean Nash -* @date (original) 09-Nov-2024 +* @date (original) 18-Nov-2024 * ***************************************************************************/ @@ -32,29 +32,31 @@ // ********** public definitions ********** -/// Enumeration of pressure sensors monitored by this module. +/// Enumeration of pressure sensors monitored by this unit. typedef enum PressureSensors { - PRESSURE_SENSOR_WATER_INLET_INPUT = 0, ///< Water Inlet pressure before regulator (PRi) - PRESSURE_SENSOR_FIRST = PRESSURE_SENSOR_WATER_INLET_INPUT, ///< First pressure to scan - PRESSURE_SENSOR_WATER_INLET_OUTPUT, ///< Water Inlet pressure after regulator (PRo) - PRESSURE_SENSOR_WATER_OUTLET, ///< Hydraulics outlet pressure (PHo/Pn) + PRESSURE_SENSOR_WATER_INLET_PRE_REG = 0, ///< Water inlet pressure before regulator (PRi) + PRESSURE_SENSOR_FIRST = PRESSURE_SENSOR_WATER_INLET_PRE_REG, ///< First pressure to scan + PRESSURE_SENSOR_WATER_INLET_POST_REG, ///< Water inlet pressure after regulator (PRo) + PRESSURE_SENSOR_WATER_INLET_PRE_COND, ///< Water inlet pressure before conductivity sensor (PC2o) + PRESSURE_SENSOR_PRE_RO_FILTER, ///< Pressure before RO filter (PPo) + PRESSURE_SENSOR_POST_RO_FILTER, ///< Pressure after RO filter (PMp) NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors } PRESSURE_SENSORS_T; // ********** public function prototypes ********** void initPressureSensor( void ); void readPressureSensors( void ); -//F32 getPressure( PRESSURE_SENSORS_T sensor ); -//F32 getPressureSensorTemperature( PRESSURE_SENSORS_T sensor ); -//U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ); -//U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ); -// -//BOOL testPressureSensorReadingsOverride( MESSAGE_T *message ); -//BOOL testPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ); -//BOOL testPressureSensorReadCounterOverride( MESSAGE_T *message ); -//BOOL testPressureSensorErrorCounterOverride( MESSAGE_T *message ); +F32 getPressure( PRESSURE_SENSORS_T sensor ); +F32 getPressureSensorTemperature( PRESSURE_SENSORS_T sensor ); +U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ); +U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ); + +BOOL testPressureSensorReadingsOverride( MESSAGE_T *message ); +BOOL testPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ); +BOOL testPressureSensorReadCounterOverride( MESSAGE_T *message ); +BOOL testPressureSensorErrorCounterOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -140,10 +140,10 @@ pressuresDataPublishInterval.ovInitData = 0; pressuresDataPublishInterval.override = OVERRIDE_RESET; - initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_LOW_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_HIGH_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_LOW_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_HIGH_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); +// initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_LOW_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); +// initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_HIGH_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); +// initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_LOW_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); +// initPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_HIGH_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); } /*********************************************************************//** @@ -309,7 +309,7 @@ * and publish pressure data. * @details \b Inputs: pressuresState * @details \b Outputs: pressuresState - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if invalid pressure state seen + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if invalid pressure state * @return none *************************************************************************/ void execPressureSensor( void ) @@ -326,13 +326,13 @@ break; default: -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, pressuresState ) -// pressuresState = PRESSURE_INIT_STATE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, pressuresState ) + pressuresState = PRESSURE_INIT_STATE; break; } // publish pressure/occlusion data on interval -// publishPressuresData(); + publishPressuresData(); } /*********************************************************************//** @@ -474,26 +474,36 @@ * @details \b Message \b Sent: MSG_ID_RO_PRESSURES_DATA to publish pressure data. * @return none *************************************************************************/ -//static void publishPressuresData( void ) -//{ -// // publish pressure/occlusion data on interval -// if ( ++pressuresDataPublicationTimerCounter >= getU32OverrideValue( &pressuresDataPublishInterval ) ) -// { -// PRESSURE_TEMP_DATA_T data; -// -// data.filteredWaterInletInputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_INPUT ); -// data.filteredWaterInletOutputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); -// data.filteredWaterOutletPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_OUTLET ); -// data.filteredWaterInletInputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_INPUT ); -// data.filteredWaterInletOutputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); -// data.filteredWaterOutletTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_OUTLET ); -// pressuresDataPublicationTimerCounter = 0; -// -// broadcastData( MSG_ID_RO_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); -// } -//} +static void publishPressuresData( void ) +{ + // publish pressure/occlusion data on interval + if ( ++pressuresDataPublicationTimerCounter >= getU32OverrideValue( &pressuresDataPublishInterval ) ) + { + PRESSURE_TEMP_DATA_T data; + + data.filteredWaterInletInputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_INPUT ); + data.filteredWaterInletOutputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); + data.filteredWaterOutletPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_OUTLET ); + data.filteredWaterInletInputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_INPUT ); + data.filteredWaterInletOutputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); + data.filteredWaterOutletTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_OUTLET ); + pressuresDataPublicationTimerCounter = 0; + broadcastData( MSG_ID_RO_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); + } +} +F32 PressurePRi; ///< Pressure before pressure regulator (M1 PRi) +F32 PressurePRo; ///< Pressure after pressure regulator (M3 PRo) +F32 PressurePC2o; ///< Pressure before inlet conductivity sensor (P8 PC2o) +F32 PressurePPo; ///< Pressure before RO filter (P13 PPo) +F32 PressurePMp; ///< Pressure after RO filter (P17 PMp) +F32 TempPRi; ///< Temperature before pressure regulator (M1 PRi) +F32 TempPRo; ///< Temperature after pressure regulator (M3 PRo) +F32 TempPC2o; ///< Temperature before inlet conductivity sensor (P8 PC2o) +F32 TempPPo; ///< Temperature before RO filter (P13 PPo) +F32 TempPMp; ///< Temperature after RO filter (P17 PMp) + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Monitors/Pressure.h =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -35,12 +35,16 @@ /// Pressure data struct. typedef struct { - F32 filteredWaterInletInputPressure; ///< Water Inlet Input pressure (P8 PC2o) - F32 filteredWaterInletOutputPressure; ///< Water Inlet Output pressure (P13 PPo) - F32 filteredWaterOutletPressure; ///< Water Outlet pressure (P17 PMp) - F32 filteredWaterInletInputTemp; ///< Water Inlet Input temperature - F32 filteredWaterInletOutputTemp; ///< Water Inlet Output temperature - F32 filteredWaterOutletTemp; ///< Water Outlet temperature + F32 PressurePRi; ///< Pressure before pressure regulator (M1 PRi) + F32 PressurePRo; ///< Pressure after pressure regulator (M3 PRo) + F32 PressurePC2o; ///< Pressure before inlet conductivity sensor (P8 PC2o) + F32 PressurePPo; ///< Pressure before RO filter (P13 PPo) + F32 PressurePMp; ///< Pressure after RO filter (P17 PMp) + F32 TempPRi; ///< Temperature before pressure regulator (M1 PRi) + F32 TempPRo; ///< Temperature after pressure regulator (M3 PRo) + F32 TempPC2o; ///< Temperature before inlet conductivity sensor (P8 PC2o) + F32 TempPPo; ///< Temperature before RO filter (P13 PPo) + F32 TempPMp; ///< Temperature after RO filter (P17 PMp) } PRESSURE_TEMP_DATA_T; // ********** public function prototypes ********** @@ -52,7 +56,7 @@ //F32 getFilteredPressure( PRESSURE_SENSORS_T sensor ); //F32 getFilteredPressureSensorTemperature( PRESSURE_SENSORS_T sensor ); // -//BOOL testPressureSensorDataPublishIntervalOverride( MESSAGE_T *message ); +BOOL testPressureSensorDataPublishIntervalOverride( MESSAGE_T *message ); //BOOL testPressureSensorFilteredReadingsOverride( MESSAGE_T *message ); //BOOL testPressureSensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rbf3ba65cafc8cbfb34e03d9fb2fc248069a8addb -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision bf3ba65cafc8cbfb34e03d9fb2fc248069a8addb) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -100,6 +100,11 @@ SW_FAULT_ID_RO_PUMP_INVALID_EXEC_STATE = 83, SW_FAULT_ID_RO_PUMP_INVALID_PUMP_ID1 = 84, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO = 85, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1 = 86, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2 = 87, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3 = 88, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4 = 89, + SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE = 90, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaRO.c =================================================================== diff -u -r0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Services/FpgaRO.c (.../FpgaRO.c) (revision 0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef) +++ firmware/App/Services/FpgaRO.c (.../FpgaRO.c) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -66,46 +66,46 @@ U16 temperaturePro; ///< Reg 272. PRo temperature data. U08 readCountPro; ///< Reg 274. PRo read counter. U08 errorCountPro; ///< Reg 275. PRo error counter. - S16 pressurePsi; ///< Reg 276. PSi pressure data. - U16 temperaturePsi; ///< Reg 278. PSi temperature data. - U08 readCountPsi; ///< Reg 280. PSi read counter. - U08 errorCountPsi; ///< Reg 281. PSi error counter. - S16 pressurePso; ///< Reg 282. PSo pressure data. - U16 temperaturePso; ///< Reg 284. PSo temperature data. - U08 readCountPso; ///< Reg 286. PSo read counter. - U08 errorCountPso; ///< Reg 287. PSo error counter. - S16 pressurePc1o; ///< Reg 288. PC1o pressure data. - U16 temperaturePc1o; ///< Reg 290. PC1o temperature data. - U08 readCountPc1o; ///< Reg 292. PC1o read counter. - U08 errorCountPc1o; ///< Reg 293. PC1o error counter. - S16 pressurePc2o; ///< Reg 294. PC2o pressure data. - U16 temperaturePc2o; ///< Reg 296. PC2o temperature data. - U08 readCountPc2o; ///< Reg 298. PC2o read counter. - U08 errorCountPc2o; ///< Reg 299. PC2o error counter. - S16 pressurePpo; ///< Reg 300. PPo pressure data. - U16 temperaturePpo; ///< Reg 302. PPo temperature data. - U08 readCountPpo; ///< Reg 304. PPo read counter. - U08 errorCountPpo; ///< Reg 305. PPo error counter. - S16 pressurePmp; ///< Reg 306. PMp pressure data. - U16 temperaturePmp; ///< Reg 308. PMp temperature data. - U08 readCountPmp; ///< Reg 310. PMp read counter. - U08 errorCountPmp; ///< Reg 311. PMp error counter. - S16 pressurePmc; ///< Reg 312. PMc pressure data. - U16 temperaturePmc; ///< Reg 314. PMc temperature data. - U08 readCountPmc; ///< Reg 316. PMc read counter. - U08 errorCountPmc; ///< Reg 317. PMc error counter. - S16 pressurePpi; ///< Reg 318. PPi pressure data. - U16 temperaturePpi; ///< Reg 320. PPi temperature data. - U08 readCountPpi; ///< Reg 322. PPi read counter. - U08 errorCountPpi; ///< Reg 323. PPi error counter. - S16 pressurePax1; ///< Reg 324. Pax1 pressure data. - U16 temperaturePax1; ///< Reg 326. Pax1 temperature data. - U08 readCountPax1; ///< Reg 328. Pax1 read counter. - U08 errorCountPax1; ///< Reg 329. Pax1 error counter. - S16 pressurePax2; ///< Reg 330. Pax2 pressure data. - U16 temperaturePax2; ///< Reg 332. Pax2 temperature data. - U08 readCountPax2; ///< Reg 334. Pax2 read counter. - U08 errorCountPax2; ///< Reg 335. Pax2 error counter. + S16 pressurePc2o; ///< Reg 276. PC2o pressure data. + U16 temperaturePc2o; ///< Reg 278. PC2o temperature data. + U08 readCountPc2o; ///< Reg 280. PC2o read counter. + U08 errorCountPc2o; ///< Reg 281. PC2o error counter. + S16 pressurePpo; ///< Reg 282. PPo pressure data. + U16 temperaturePpo; ///< Reg 284. PPo temperature data. + U08 readCountPpo; ///< Reg 286. PPo read counter. + U08 errorCountPpo; ///< Reg 287. PPo error counter. + S16 pressurePmp; ///< Reg 288. PMp pressure data. + U16 temperaturePmp; ///< Reg 290. PMp temperature data. + U08 readCountPmp; ///< Reg 292. PMp read counter. + U08 errorCountPmp; ///< Reg 293. PMp error counter. + S16 pressurePpi; ///< Reg 294. PPi pressure data. + U16 temperaturePpi; ///< Reg 296. PPi temperature data. + U08 readCountPpi; ///< Reg 298. PPi read counter. + U08 errorCountPpi; ///< Reg 299. PPi error counter. + S16 pressurePmc; ///< Reg 300. PMc pressure data. + U16 temperaturePmc; ///< Reg 302. PMc temperature data. + U08 readCountPmc; ///< Reg 304. PMc read counter. + U08 errorCountPmc; ///< Reg 305. PMc error counter. + S16 pressurePax1; ///< Reg 306. Pax1 pressure data. + U16 temperaturePax1; ///< Reg 308. Pax1 temperature data. + U08 readCountPax1; ///< Reg 310. Pax1 read counter. + U08 errorCountPax1; ///< Reg 311. Pax1 error counter. + S16 pressurePax2; ///< Reg 312. Pax2 pressure data. + U16 temperaturePax2; ///< Reg 314. Pax2 temperature data. + U08 readCountPax2; ///< Reg 316. Pax2 read counter. + U08 errorCountPax2; ///< Reg 317. Pax2 error counter. + S16 pressurePax3; ///< Reg 318. Pax3 pressure data. + U16 temperaturePax3; ///< Reg 320. Pax3 temperature data. + U08 readCountPax3; ///< Reg 322. Pax3 read counter. + U08 errorCountPax3; ///< Reg 323. Pax3 error counter. + U16 reserved1; ///< Reg 324. Reserved. + U16 reserved2; ///< Reg 326. Reserved. + U08 levelSwitch; ///< Reg 328. Level switch. + U08 reserved3; ///< Reg 329. Reserved. + U16 reserved4; ///< Reg 330. Reserved. + U16 reserved5; ///< Reg 332. Reserved. + U08 reserved6; ///< Reg 334. Reserved. + U08 reserved7; ///< Reg 335. Reserved. U32 conductSensor1; ///< Reg 336. Conductivity sensor 1. U16 conductSensor1Data; ///< Reg 340. Conductivity sensor 1 data. U16 conductSensor1Temp; ///< Reg 342. Conductivity sensor 1 temperature. @@ -418,4 +418,104 @@ return fpgaSensorReadings.roPumpTachCount; } +S16 getFPGAPRiRawPressure( void ) +{ + return fpgaSensorReadings.pressurePri; +} + +S16 getFPGAPRiRawTemperature( void ) +{ + return fpgaSensorReadings.temperaturePri; +} + +U08 getFPGAPRiReadCount( void ) +{ + return fpgaSensorReadings.readCountPri; +} + +U08 getFPGAPRiErrorCount( void ) +{ + return fpgaSensorReadings.errorCountPri; +} + +S16 getFPGAPRoRawPressure( void ) +{ + return fpgaSensorReadings.pressurePri; +} + +S16 getFPGAPRoRawTemperature( void ) +{ + return fpgaSensorReadings.temperaturePri; +} + +U08 getFPGAPRoReadCount( void ) +{ + return fpgaSensorReadings.readCountPri; +} + +U08 getFPGAPRoErrorCount( void ) +{ + return fpgaSensorReadings.errorCountPri; +} + +S16 getFPGAPC2oRawPressure( void ) +{ + return fpgaSensorReadings.pressurePri; +} + +S16 getFPGAPC2oRawTemperature( void ) +{ + return fpgaSensorReadings.temperaturePri; +} + +U08 getFPGAPC2oReadCount( void ) +{ + return fpgaSensorReadings.readCountPri; +} + +U08 getFPGAPC2oErrorCount( void ) +{ + return fpgaSensorReadings.errorCountPri; +} + +S16 getFPGAPPoRawPressure( void ) +{ + return fpgaSensorReadings.pressurePri; +} + +S16 getFPGAPPoRawTemperature( void ) +{ + return fpgaSensorReadings.temperaturePri; +} + +U08 getFPGAPPoReadCount( void ) +{ + return fpgaSensorReadings.readCountPri; +} + +U08 getFPGAPPoErrorCount( void ) +{ + return fpgaSensorReadings.errorCountPri; +} + +S16 getFPGAPMpRawPressure( void ) +{ + return fpgaSensorReadings.pressurePri; +} + +S16 getFPGAPMpRawTemperature( void ) +{ + return fpgaSensorReadings.temperaturePri; +} + +U08 getFPGAPMpReadCount( void ) +{ + return fpgaSensorReadings.readCountPri; +} + +U08 getFPGAPMpErrorCount( void ) +{ + return fpgaSensorReadings.errorCountPri; +} + /**@}*/ Index: firmware/App/Services/FpgaRO.h =================================================================== diff -u -r0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Services/FpgaRO.h (.../FpgaRO.h) (revision 0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef) +++ firmware/App/Services/FpgaRO.h (.../FpgaRO.h) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -48,6 +48,31 @@ U16 getROPumpPWMPct( void ); U16 getROPumpTachCount( void ); +S16 getFPGAPRiRawPressure( void ); +S16 getFPGAPRiRawTemperature( void ); +U08 getFPGAPRiReadCount( void ); +U08 getFPGAPRiErrorCount( void ); + +S16 getFPGAPRoRawPressure( void ); +S16 getFPGAPRoRawTemperature( void ); +U08 getFPGAPRoReadCount( void ); +U08 getFPGAPRoErrorCount( void ); + +S16 getFPGAPC2oRawPressure( void ); +S16 getFPGAPC2oRawTemperature( void ); +U08 getFPGAPC2oReadCount( void ); +U08 getFPGAPC2oErrorCount( void ); + +S16 getFPGAPPoRawPressure( void ); +S16 getFPGAPPoRawTemperature( void ); +U08 getFPGAPPoReadCount( void ); +U08 getFPGAPPoErrorCount( void ); + +S16 getFPGAPMpRawPressure( void ); +S16 getFPGAPMpRawTemperature( void ); +U08 getFPGAPMpReadCount( void ); +U08 getFPGAPMpErrorCount( void ); + /**@}*/ #endif Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -6,7 +6,8 @@ #include "Messaging.h" #include "OperationModes.h" #include "PAL.h" -#include "PressureSensor.h" +#include "Pressure.h" +//#include "PressureSensor.h" #include "ROPump.h" #include "SystemCommRO.h" #include "Utilities.h" @@ -60,7 +61,14 @@ MSG_ID_RO_VALVE_SENSED_STATE_OVERRIDE_REQUEST, MSG_ID_RO_BOOST_PUMP_SET_PWM_REQUEST, MSG_ID_RO_BOOST_PUMP_READ_PWM_OVERRIDE_REQUEST, - MSG_ID_RO_BOOST_PUMP_SPEED_OVERRIDE_REQUEST + MSG_ID_RO_BOOST_PUMP_SPEED_OVERRIDE_REQUEST, + MSG_ID_RO_BOOST_PUMPS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_RO_PRESSURE_OVERRIDE_REQUEST, + MSG_ID_RO_PRESSURE_TEMP_OVERRIDE_REQUEST, + MSG_ID_RO_PRESSURE_READ_COUNT_OVERRIDE_REQUEST, + MSG_ID_RO_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST, + MSG_ID_RO_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_RO_DEBUG_EVENT }; /// Message handling function table @@ -73,7 +81,14 @@ &testValveSensedStateOverride, &testSetBoostPumpPWM, &testBoostPumpPWMOverride, - &testBoostPumpRPMOverride + &testBoostPumpRPMOverride, + &testROPumpDataPublishIntervalOverride, + &testPressureSensorReadingsOverride, + &testPressureSensorTemperatureReadingsOverride, + &testPressureSensorReadCounterOverride, + &testPressureSensorErrorCounterOverride, + &testPressureSensorDataPublishIntervalOverride, + &handleUnhandledMsg }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) @@ -87,8 +102,9 @@ // ********** private function prototypes ********** -static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); +static MsgFuncPtr getMsgHandler( U16 msgID ); +static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); /*********************************************************************//** * @brief @@ -299,6 +315,19 @@ } } +/*********************************************************************//** + * @brief + * The handleUnhandledMsg function handles messages that are not handled (yet or ever). + * @details \b Inputs: none + * @details \b Outputs: none + * @param message Incoming message to not handle + * @return FALSE (indicating message not handled). + *************************************************************************/ +BOOL handleUnhandledMsg( MESSAGE_T *message ) +{ + return FALSE; // message not handled or handling for message not implemented yet +} + // *********************************************************************** // ***************** Message Sending Helper Functions ******************** // *********************************************************************** Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rd8cd7de2f84b26aafc153e2bb665a5058a040bf0 --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision d8cd7de2f84b26aafc153e2bb665a5058a040bf0) @@ -35,6 +35,7 @@ U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); BOOL sendACKMsg( MESSAGE_T *message ); void handleIncomingMessage( MESSAGE_T *message ); +BOOL handleUnhandledMsg( MESSAGE_T *message ); BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); BOOL broadcastAlarmCleared( U32 alarm );