Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r4bd3bf3483660050d3026f7f9adff43782bfc620 -r61c74b7c3a092f9e2900665f1a4f0391f78c5c03 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 4bd3bf3483660050d3026f7f9adff43782bfc620) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 61c74b7c3a092f9e2900665f1a4f0391f78c5c03) @@ -223,6 +223,7 @@ static void adjustTemperatureSensorsRefResistance( void ); static void checkBaroSensorCRC( void ); static void processDialTemperatureData( void ); +static void getCalibrationAppliedTemperatureValue( U32 sesnorIndex, F32* temperature ); /*********************************************************************//** * @brief @@ -388,7 +389,7 @@ SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; BOOL calStatus = getNVRecord2Driver( GET_CAL_TEMP_SENSORS, (U08*)&tempSensorCalRecord, sizeof( DG_TEMP_SENSORS_CAL_RECORD_T ), - NUM_OF_CAL_DATA_TEMP_SENSORS, ALARM_ID_NO_ALARM ); + NUM_OF_CAL_DATA_TEMP_SENSORS, ALARM_ID_DG_TEMPERATURE_SENSORS_INVALID_CAL_RECORD ); if ( TRUE == calStatus ) { @@ -873,6 +874,7 @@ break; } + getCalibrationAppliedTemperatureValue( sensorIndex, &temperature ); // Update the temperature tempSensors[ sensorIndex ].temperatureValues.data = temperature; } @@ -1197,7 +1199,72 @@ } } +/*********************************************************************//** + * @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 sesnorIndex, F32* temperature ) +{ + CAL_DATA_DG_TEMP_SENSORS_T calId; + F32 tempTemperature = *temperature; + switch( sesnorIndex ) + { + 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 the calibration temperature value as num of meaning calibration is not needed for the provided sensor + calId = NUM_OF_CAL_DATA_TEMP_SENSORS; + break; + } + + if ( calId != NUM_OF_CAL_DATA_TEMP_SENSORS ) + { + *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 *************************************************************************/