Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 -r25e1aca59e53ee01c2ade994628a5ec7b71e959c --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 25e1aca59e53ee01c2ade994628a5ec7b71e959c) @@ -223,6 +223,7 @@ static void adjustTemperatureSensorsRefResistance( void ); static void checkBaroSensorCRC( void ); static void processDialTemperatureData( void ); +static void getCalibrationAppliedTemperatureValue( U32 sesnorId, F32* temperature ); /*********************************************************************//** * @brief @@ -836,6 +837,7 @@ case TEMPSENSORS_HEAT_DISINFECT: temperature = getADC2TempConversion( avgADCReads, (U32)tempSensors [ sensorIndex ].gain, (U32)tempSensors [ sensorIndex ].refResistance, (U32)tempSensors [ sensorIndex ].zeroDegreeResistance, tempSensors [ sensorIndex ].conversionCoeff ); + getCalibrationAppliedTemperatureValue( sensorIndex, &temperature ); break; case TEMPSENSORS_FPGA_BOARD_SENSOR: @@ -862,6 +864,7 @@ S64 baroSnsrTemperature = BARO_SENSOR_REFERENCE_TEMP_C + ( ( tempSensors[ sensorIndex ].baroTempSnsrDiff * baroConvConsts.temperatureCoeff ) / TWO_TO_POWER_OF_23 ); temperature = (F32)( (U32)( baroSnsrTemperature ) / 100 ); + getCalibrationAppliedTemperatureValue( sensorIndex, &temperature ); } break; @@ -1197,7 +1200,68 @@ } } +/*********************************************************************//** + * @brief + * The getCalibrationAppliedTemperatureValue function applies the calibration + * values to the provided temperature value + * @details Inputs: tempSensorCalRecord + * @details Outputs: none + * @param sensorIndex Temperature sensor index + * @param temperature pointer to the calculated temperature value + * @return none + *************************************************************************/ +static void getCalibrationAppliedTemperatureValue( U32 sesnorId, F32* temperature ) +{ + CAL_DATA_DG_TEMP_SENSORS_T calId; + F32 tempTemperature = *temperature; + switch( sesnorId ) + { + case TEMPSENSORS_INLET_PRIMARY_HEATER: + calId = CAL_DATA_INLET_PRIMARY_HEATER_TEMP; + break; + + case TEMPSENSORS_OUTLET_PRIMARY_HEATER: + calId = CAL_DATA_OUTLET_PRIMARY_HEATER_TEMP; + break; + + case TEMPSENSORS_CONDUCTIVITY_SENSOR_1: + calId = CAL_DATA_COND_SENSOR_1_TEMP; + break; + + case TEMPSENSORS_CONDUCTIVITY_SENSOR_2: + calId = CAL_DATA_COND_SENSOR_2_TEMP; + break; + + case TEMPSENSORS_OUTLET_REDUNDANT: + calId = CAL_DATA_OUTLET_REDUNDANT_TEMP; + break; + + case TEMPSENSORS_INLET_DIALYSATE: + calId = CAL_DATA_INLET_DIALYSATE_TEMP; + break; + + case TEMPSENSORS_HEAT_DISINFECT: + calId = CAL_DATA_HEAT_DISINFECT_TEMP; + break; + + case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: + calId = CAL_DATA_BARMOTERIC_TEMP; + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED, sesnorId ) + break; + } + + *temperature = pow( tempTemperature, 4 ) * tempSensorCalRecord.tempSensors[ calId ].fourthOrderCoeff + + pow( tempTemperature, 3 ) * tempSensorCalRecord.tempSensors[ calId ].thirdOrderCoeff + + pow( tempTemperature, 2 ) * tempSensorCalRecord.tempSensors[ calId ].secondOrderCoeff + + tempTemperature * tempSensorCalRecord.tempSensors[ calId ].gain + + tempSensorCalRecord.tempSensors[ calId ].offset; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/