From 4f67fe7d3f34ac5fbd0feaf7b751130cbf1d751d Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Thu, 3 Aug 2023 11:16:42 +0800 Subject: [PATCH] bugfix(temperature_sensor): Fix issue that get the value is negative --- components/driver/deprecated/rtc_temperature_legacy.c | 4 ++-- components/driver/temperature_sensor.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/driver/deprecated/rtc_temperature_legacy.c b/components/driver/deprecated/rtc_temperature_legacy.c index e2be0a3fd3..c821b17f59 100644 --- a/components/driver/deprecated/rtc_temperature_legacy.c +++ b/components/driver/deprecated/rtc_temperature_legacy.c @@ -126,7 +126,7 @@ static esp_err_t read_delta_t_from_efuse(void) return ESP_OK; } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -145,7 +145,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_LL_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_LL_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range."); diff --git a/components/driver/temperature_sensor.c b/components/driver/temperature_sensor.c index 7c395f9c80..7f156dff94 100644 --- a/components/driver/temperature_sensor.c +++ b/components/driver/temperature_sensor.c @@ -185,7 +185,7 @@ static esp_err_t read_delta_t_from_efuse(void) return ESP_OK; } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -201,7 +201,7 @@ esp_err_t temperature_sensor_get_celsius(temperature_sensor_handle_t tsens, floa ESP_RETURN_ON_FALSE(tsens->fsm == TEMP_SENSOR_FSM_ENABLE, ESP_ERR_INVALID_STATE, TAG, "tsens not enabled yet"); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *out_celsius = parse_temp_sensor_raw_value(tsens_out); if (*out_celsius < TEMPERATURE_SENSOR_LL_MEASURE_MIN || *out_celsius > TEMPERATURE_SENSOR_LL_MEASURE_MAX) {