Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r66b5d24b111859a597259a2118f59a90da76e7f1 -r65824878503f019bf9db443c867e27df8de27c51 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 66b5d24b111859a597259a2118f59a90da76e7f1) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 65824878503f019bf9db443c867e27df8de27c51) @@ -52,9 +52,7 @@ 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. +//static BARO_SENSOR_CONSTS_T baroConvConsts; ///< Barometric sensor conversion constants. static const U32 TWO_TO_POWER_OF_6 = ( 1 << 6 ); ///< 2^6. static const U32 TWO_TO_POWER_OF_7 = ( 1 << 7 ); ///< 2^7. @@ -66,8 +64,8 @@ // ********** private function prototypes ********** static void checkPressureSensors( void ); -static F32 convertBaroPressureReading2mmHg( U32 rawPressure ); -static F32 calculateBaroPressure( U32 pressure ); +//static F32 convertBaroPressureReading2mmHg( U32 rawPressure ); +//static F32 calculateBaroPressure( U32 pressure ); /*********************************************************************//** * @brief @@ -78,53 +76,27 @@ *************************************************************************/ void initPressureSensor( void ) { - U32 i; + U32 sensor; // Initialize override structures for each pressure sensor - for ( i = (U32)PRESSURE_SENSOR_FIRST; i < (U32)NUM_OF_PRESSURE_SENSORS; i++ ) + for ( sensor = (U32)FIRST_DD_PRESSURE_SENSOR; sensor < (U32)NUM_OF_PRESSURE_SENSORS; sensor++ ) { - currentPressureReadings[ i ].data = 0.0F; - currentPressureReadings[ i ].ovData = 0.0F; - currentPressureReadings[ i ].ovInitData = 0.0F; - currentPressureReadings[ i ].override = OVERRIDE_RESET; + currentPressureReadings[ sensor ].data = 0.0F; + currentPressureReadings[ sensor ].ovData = 0.0F; + currentPressureReadings[ sensor ].ovInitData = 0.0F; + currentPressureReadings[ sensor ].override = OVERRIDE_RESET; - currentPresTempReadings[ i ].data = 0.0F; - currentPresTempReadings[ i ].ovData = 0.0F; - currentPresTempReadings[ i ].ovInitData = 0.0F; - currentPresTempReadings[ i ].override = OVERRIDE_RESET; - - lastPressureReadCounter[ i ].data = 0; - lastPressureReadCounter[ i ].ovData = 0; - lastPressureReadCounter[ i ].ovInitData = 0; - lastPressureReadCounter[ i ].override = OVERRIDE_RESET; - - lastPressureErrorCounter[ i ].data = 0; - lastPressureErrorCounter[ i ].ovData = 0; - lastPressureErrorCounter[ i ].ovInitData = 0; - lastPressureErrorCounter[ i ].override = OVERRIDE_RESET; + currentPresTempReadings[ sensor ].data = 0.0F; + currentPresTempReadings[ sensor ].ovData = 0.0F; + currentPresTempReadings[ sensor ].ovInitData = 0.0F; + currentPresTempReadings[ sensor ].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 ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_BIBAG_PRESSURE, ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_SPENT_DIALYSATE_PRESSURE, ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_FRESH_DIALYSATE_PRESSURE, ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_TRANSMEMBRANE_PRESSURE, ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_WATER_INLET_INPUT_PRESSURE, ALARM_ID_DD_WATER_INLET_INPUT_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); - initFPGAPersistentAlarm( FPGA_PERS_ERROR_WATER_INLET_OUTPUT_PRESSURE, ALARM_ID_DD_WATER_INLET_OUTPUT_PRES_TIMEOUT_FAULT, - PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); +// baroConvConsts.pressureOffset = 0; +// baroConvConsts.pressureOffsetTempCoeff = 0; +// baroConvConsts.pressureSensitivity = 0; +// baroConvConsts.pressureSensitivityTempCoeff = 0; } /*********************************************************************//** @@ -148,138 +120,93 @@ if ( getTestConfigStatus( TEST_CONFIG_BETA_HW ) != TRUE ) { presMinPSI = PRES_MIN_PSI_ALPHA; - //currentPressureReadings[ M1_PRES ].data = convertPressureReading( getFPGAM1PresRawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); - //currentPressureReadings[ M3_PRES ].data = convertPressureReading( getFPGAM3PresRawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); currentPressureReadings[ D9_PRES ].data = convertPressureReading( getFPGAD9PresRawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); } else { - //currentPressureReadings[ M1_PRES ].data = convertPressureReading( getFPGAM1PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); - //currentPressureReadings[ M3_PRES ].data = convertPressureReading( getFPGAM3PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); currentPressureReadings[ D9_PRES ].data = convertPressureReading( getFPGAD9PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); } currentPressureReadings[ D66_PRES ].data = convertPressureReading( getFPGAD66PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); currentPressureReadings[ D51_PRES ].data = convertPressureReading( getFPGAD51PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); currentPressureReadings[ D18_PRES ].data = convertPressureReading( getFPGAD18PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); currentPressureReadings[ D41_PRES ].data = convertPressureReading( getFPGAD41PresRawPressure(), presMinPSI, LOW_PRES_MAX_PSI ); - currentPressureReadings[ BARO_PRES ].data = convertBaroPressureReading2mmHg( getFPGABaroPressure() ); +// currentPressureReadings[ BARO_PRES ].data = convertBaroPressureReading2mmHg( getFPGABaroPressure() ); + currentPressureReadings[ M1_PRES ].data = convertPressureReading( getFPGAM1RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ M3_PRES ].data = convertPressureReading( getFPGAM3RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ P8_PRES ].data = convertPressureReading( getFPGAP8RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ P13_PRES ].data = convertPressureReading( getFPGAP13RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ P17_PRES ].data = convertPressureReading( getFPGAP17RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ X1_PRES ].data = convertPressureReading( getFPGAX1RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ X2_PRES ].data = convertPressureReading( getFPGAX2RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ X3_PRES ].data = convertPressureReading( getFPGAX3RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); + currentPressureReadings[ X4_PRES ].data = convertPressureReading( getFPGAX4RawPressure(), presMinPSI, HIGH_PRES_MAX_PSI ); // Update and convert raw pressure sensor temperatures to deg C - currentPresTempReadings[ M1_PRES ].data = convertPressureTempReading2DegC( getFPGAM1PresRawTemperature() ); - currentPresTempReadings[ M3_PRES ].data = convertPressureTempReading2DegC( getFPGAM3PresRawTemperature() ); currentPresTempReadings[ D9_PRES ].data = convertPressureTempReading2DegC( getFPGAD9PresRawTemperature() ); currentPresTempReadings[ D66_PRES ].data = convertPressureTempReading2DegC( getFPGAD66PresRawTemperature() ); currentPresTempReadings[ D51_PRES ].data = convertPressureTempReading2DegC( getFPGAD51PresRawTemperature() ); currentPresTempReadings[ D18_PRES ].data = convertPressureTempReading2DegC( getFPGAD18PresRawTemperature() ); currentPresTempReadings[ D41_PRES ].data = convertPressureTempReading2DegC( getFPGAD41PresRawTemperature() ); - - // Update read and error counters for each pressure sensor - lastPressureReadCounter[ M1_PRES ].data = (U32)getFPGAM1PresReadCount(); - lastPressureReadCounter[ M3_PRES ].data = (U32)getFPGAM3PresReadCount(); - lastPressureReadCounter[ D9_PRES ].data = (U32)getFPGAD9PresReadCount(); - lastPressureReadCounter[ D66_PRES ].data = (U32)getFPGAD66PresReadCount(); - lastPressureReadCounter[ D51_PRES ].data = (U32)getFPGAD51PresReadCount(); - lastPressureReadCounter[ D18_PRES ].data = (U32)getFPGAD18PresReadCount(); - lastPressureReadCounter[ D41_PRES ].data = (U32)getFPGAD41PresReadCount(); - - lastPressureErrorCounter[ M1_PRES ].data = (U32)getFPGAM1PresErrorCount(); - lastPressureErrorCounter[ M3_PRES ].data = (U32)getFPGAM3PresErrorCount(); - lastPressureErrorCounter[ D9_PRES ].data = (U32)getFPGAD9PresErrorCount(); - lastPressureErrorCounter[ D66_PRES ].data = (U32)getFPGAD66PresErrorCount(); - lastPressureErrorCounter[ D51_PRES ].data = (U32)getFPGAD51PresErrorCount(); - lastPressureErrorCounter[ D18_PRES ].data = (U32)getFPGAD18PresErrorCount(); - lastPressureErrorCounter[ D41_PRES ].data = (U32)getFPGAD41PresErrorCount(); - - // Monitor pressure sensor health - checkPressureSensors(); + currentPresTempReadings[ M1_PRES ].data = convertPressureTempReading2DegC( getFPGAM1RawTemperature() ); + currentPresTempReadings[ M3_PRES ].data = convertPressureTempReading2DegC( getFPGAM3RawTemperature() ); + currentPresTempReadings[ P8_PRES ].data = convertPressureTempReading2DegC( getFPGAP8RawTemperature() ); + currentPresTempReadings[ P13_PRES ].data = convertPressureTempReading2DegC( getFPGAP13RawTemperature() ); + currentPresTempReadings[ P17_PRES ].data = convertPressureTempReading2DegC( getFPGAP17RawTemperature() ); + currentPresTempReadings[ X1_PRES ].data = convertPressureTempReading2DegC( getFPGAX1RawTemperature() ); + currentPresTempReadings[ X2_PRES ].data = convertPressureTempReading2DegC( getFPGAX2RawTemperature() ); + currentPresTempReadings[ X3_PRES ].data = convertPressureTempReading2DegC( getFPGAX3RawTemperature() ); + currentPresTempReadings[ X4_PRES ].data = convertPressureTempReading2DegC( getFPGAX4RawTemperature() ); } -/*********************************************************************//** - * @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; +///*********************************************************************//** +// * @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; +//} - baroConvConsts.pressureSensitivity = getFPGABaroPressureSensitivity(); - baroConvConsts.pressureSensitivityTempCoeff = getFPGABaroTempCoeffOfPressSensitvity(); - baroConvConsts.pressureOffset = getFPGABaroPressureOffset(); - baroConvConsts.pressureOffsetTempCoeff = getFPGABaroTempCoeffOfPressOffset(); - baroPressure = calculateBaroPressure( rawPressure ); +///*********************************************************************//** +// * @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; +//} - 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 - * hydraulics outlet pressure sensor is not able to be read. - * @details \b Alarm: ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT if the - * BiBag pressure sensor is not able to be read. - * @details \b Alarm: ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT if the - * spent dialysate pressure sensor is not able to be read. - * @details \b Alarm: ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT if the - * fresh dialysate pressure sensor is not able to be read. - * @details \b Alarm: ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT if the - * Transmembrane pressure sensor is not able to be read. - * @details \b Inputs: lastPressureReadCounter, lastPressureErrorCounter - * @details \b Outputs: none - * @return none - *************************************************************************/ -static void checkPressureSensors( void ) -{ - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_WATER_INLET_INPUT_PRESSURE, getPressureSensorReadCount( M1_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_WATER_INLET_OUTPUT_PRESSURE, getPressureSensorReadCount( M3_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_HYDRAULICS_OUTLET_PRESSURE, getPressureSensorReadCount( D9_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_BIBAG_PRESSURE, getPressureSensorReadCount( D66_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_SPENT_DIALYSATE_PRESSURE, getPressureSensorReadCount( D51_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_FRESH_DIALYSATE_PRESSURE, getPressureSensorReadCount( D18_PRES ) ); - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_TRANSMEMBRANE_PRESSURE, getPressureSensorReadCount( D41_PRES ) ); - - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_WATER_INLET_INPUT_PRESSURE, getPressureSensorErrorCount( M1_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_WATER_INLET_OUTPUT_PRESSURE, getPressureSensorErrorCount( M3_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_HYDRAULICS_OUTLET_PRESSURE, getPressureSensorErrorCount( D9_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_BIBAG_PRESSURE, getPressureSensorErrorCount( D66_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_SPENT_DIALYSATE_PRESSURE, getPressureSensorErrorCount( D51_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_FRESH_DIALYSATE_PRESSURE, getPressureSensorErrorCount( D18_PRES ) ); - checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_TRANSMEMBRANE_PRESSURE, getPressureSensorErrorCount( D41_PRES ) ); -} - -/*********************************************************************//** - * @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. @@ -338,136 +265,76 @@ 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 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; -} - -/*********************************************************************//** - * @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 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; -} - - /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ /*********************************************************************//** * @brief - * The testPressureSensorReadingsOverride function overrides the value of the - * specified pressure sensor with a given value. + * The testDDPressureSensorReadingsOverride function overrides the value of the + * specified DD 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 testDDPressureSensorReadingsOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, ¤tPressureReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); + BOOL result = f32ArrayOverride( message, ¤tPressureReadings[0], LAST_DD_PRESSURE_SENSOR ); return result; } /*********************************************************************//** * @brief - * The testPressureSensorTemperatureReadingsOverride function overrides the value of the - * specified pressure sensor temperature with a given value. + * The testDDPressureSensorTemperatureReadingsOverride function overrides the value of the + * specified DD 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 testDDPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, ¤tPresTempReadings[0], NUM_OF_PRESSURE_SENSORS - 1 ); + BOOL result = f32ArrayOverride( message, ¤tPresTempReadings[0], LAST_DD_PRESSURE_SENSOR ); return result; } /*********************************************************************//** * @brief - * The testPressureSensorReadCounterOverride function overrides the value of the - * specified pressure sensor read counter with a given value. + * The testFPPressureSensorReadingsOverride function overrides the value of + * the specified FP pressure sensor with a given value. * @details \b Inputs: none - * @details \b Outputs: lastPressureReadCounter[] + * @details \b Outputs: currentPressureReadings[] * @param message Override message from Dialin which includes an sensor - * ID and override value of the pressure sensor read counter. + * ID and override value of the pressure sensor. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testPressureSensorReadCounterOverride( MESSAGE_T *message ) +BOOL testFPPressureSensorReadingsOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &lastPressureReadCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); + BOOL result = f32ArrayOverride( message, ¤tPressureReadings[FIRST_IO_PRESSURE_SENSOR], NUM_OF_PRESSURE_SENSORS - 1 ); return result; } /*********************************************************************//** * @brief - * The testPressureSensorErrorCounterOverride function overrides the value of the - * specified pressure sensor error counter with a given value. + * The testFPPressureSensorTemperatureReadingsOverride function overrides the + * value of the specified FP pressure sensor temperature with a given value. * @details \b Inputs: none - * @details \b Outputs: lastPressureErrorCounter[] + * @details \b Outputs: currentPresTempReadings[] * @param message Override message from Dialin which includes an sensor - * ID and override value of the pressure sensor error counter. + * ID and override value of the pressure sensor temperature. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testPressureSensorErrorCounterOverride( MESSAGE_T *message ) +BOOL testFPPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &lastPressureErrorCounter[0], NUM_OF_PRESSURE_SENSORS - 1, 0, PRES_SENSORS_READ_ERR_MAX_CNT ); + BOOL result = f32ArrayOverride( message, ¤tPresTempReadings[FIRST_IO_PRESSURE_SENSOR], NUM_OF_PRESSURE_SENSORS - 1 ); return result; } Index: firmware/App/Drivers/PressureSensor.h =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r65824878503f019bf9db443c867e27df8de27c51 --- firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 65824878503f019bf9db443c867e27df8de27c51) @@ -35,15 +35,27 @@ /// Enumeration of pressure sensors monitored by this module. typedef enum PressureSensors { - M1_PRES = 0, ///< Water Inlet pressure before regulator (PRi) - PRESSURE_SENSOR_FIRST = M1_PRES, ///< First pressure to scan - M3_PRES, ///< Water Inlet pressure after regulator (PRo) - D9_PRES, ///< Hydraulics outlet pressure (PHo/Pn) + D9_PRES = 0, ///< Hydraulics outlet pressure (PHo/Pn) + FIRST_DD_PRESSURE_SENSOR = D9_PRES, ///< Start of DD pressure sensor group D66_PRES, ///< Dry Bicarb pressure (PDB/PCb) D51_PRES, ///< Spent Dialysate pressure (PDs) D18_PRES, ///< Fresh Dialysate pressure (PDf) D41_PRES, ///< Transmembrane pressure (Ptm) - BARO_PRES, ///< barometric pressure sensor +// BARO_PRES, ///< barometric pressure sensor ToDo moved to TD + LAST_DD_PRESSURE_SENSOR = D41_PRES, ///< End of DD pressure sensor group + M1_PRES, ///< Water inlet pressure before regulator (PRi) + FIRST_IO_PRESSURE_SENSOR = M1_PRES, ///< Start of IO pressure sensor group + M3_PRES, ///< Water inlet pressure after regulator (PRo) + LAST_IO_PRESSURE_SENSOR = M3_PRES, ///< End of IO pressure sensor group + P8_PRES, ///< Water inlet pressure before conductivity sensor + FIRST_FP_PRESSURE_SENSOR = P8_PRES, ///< Start of FP pressure sensor group + P13_PRES, ///< Pressure before RO filter + P17_PRES, ///< Pressure after RO filter + X1_PRES, ///< Pressure before RO pump + X2_PRES, ///< Pressure RO Concentrate + X3_PRES, ///< Pressure after P32, concentrate drop + X4_PRES, ///< Pressure drain drop + LAST_FP_PRESSURE_SENSOR = X4_PRES, ///< End of FP pressure sensor group NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors } PRESSURE_SENSORS_T; @@ -53,13 +65,11 @@ 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 ); +BOOL testDDPressureSensorReadingsOverride( MESSAGE_T *message ); +BOOL testDDPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ); +BOOL testFPPressureSensorReadingsOverride( MESSAGE_T *message ); +BOOL testFPPressureSensorTemperatureReadingsOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r228773fa681489a62db5c47807a4794e5761d4f5 -r65824878503f019bf9db443c867e27df8de27c51 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 228773fa681489a62db5c47807a4794e5761d4f5) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 65824878503f019bf9db443c867e27df8de27c51) @@ -115,10 +115,8 @@ { MSG_ID_DD_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesStatesPublishIntervalOverride }, { MSG_ID_DD_VALVE_STATE_OVERRIDE_REQUEST, &testValveStateOverride }, { MSG_ID_DD_VALVE_SENSED_STATE_OVERRIDE_REQUEST, &testValveSensedStateOverride }, - { MSG_ID_DD_PRESSURE_SENSOR_READINGS_OVERRIDE_REQUEST, &testPressureSensorReadingsOverride }, - { MSG_ID_DD_PRESSURE_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testPressureSensorTemperatureReadingsOverride }, - { MSG_ID_DD_PRESSURE_SENSOR_READ_COUNTER_OVERRIDE_REQUEST, &testPressureSensorReadCounterOverride }, - { MSG_ID_DD_PRESSURE_SENSOR_ERROR_COUNTER_OVERRIDE_REQUEST, &testPressureSensorErrorCounterOverride }, + { MSG_ID_DD_PRESSURE_SENSOR_READINGS_OVERRIDE_REQUEST, &testDDPressureSensorReadingsOverride }, + { MSG_ID_DD_PRESSURE_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testDDPressureSensorTemperatureReadingsOverride }, { MSG_ID_DD_PRESSURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPressureSensorDataPublishIntervalOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST, &testPressureSensorFilteredReadingsOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST, &testPressureSensorFilteredTemperatureReadingsOverride }, @@ -206,6 +204,8 @@ { MSG_ID_FP_RO_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST, &testROPumpTargetPressureOverride }, { MSG_ID_FP_RO_PUMP_TARGET_FLOW_OVERRIDE_REQUEST, &testROPumpTargetFlowOverride }, { MSG_ID_FP_RO_PUMP_TARGET_PWM_OVERRIDE_REQUEST, &testROPumpTargetDutyCycleOverride }, + { MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST, &testFPPressureSensorReadingsOverride }, + { MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST, &testFPPressureSensorTemperatureReadingsOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))