diff --git a/src/modules/sensors/temperature_compensation.cpp b/src/modules/sensors/temperature_compensation.cpp index 84b96d3bb8..fc491cead8 100644 --- a/src/modules/sensors/temperature_compensation.cpp +++ b/src/modules/sensors/temperature_compensation.cpp @@ -372,10 +372,8 @@ int TemperatureCompensation::apply_corrections_gyro(int topic_instance, math::Ve sensor_data(axis_index) = (sensor_data(axis_index) - offsets[axis_index]) * scales[axis_index]; } - int8_t temperaturei = (int8_t)temperature; - - if (temperaturei != _gyro_data.last_temperature[topic_instance]) { - _gyro_data.last_temperature[topic_instance] = temperaturei; + if (fabsf(temperature - _gyro_data.last_temperature[topic_instance]) > 1.0f) { + _gyro_data.last_temperature[topic_instance] = temperature; return 2; } @@ -403,10 +401,8 @@ int TemperatureCompensation::apply_corrections_accel(int topic_instance, math::V sensor_data(axis_index) = (sensor_data(axis_index) - offsets[axis_index]) * scales[axis_index]; } - int8_t temperaturei = (int8_t)temperature; - - if (temperaturei != _accel_data.last_temperature[topic_instance]) { - _accel_data.last_temperature[topic_instance] = temperaturei; + if (fabsf(temperature - _accel_data.last_temperature[topic_instance]) > 1.0f) { + _accel_data.last_temperature[topic_instance] = temperature; return 2; } @@ -432,10 +428,8 @@ int TemperatureCompensation::apply_corrections_baro(int topic_instance, float &s *scales = _parameters.baro_cal_data[mapping].scale; sensor_data = (sensor_data - *offsets) * *scales; - int8_t temperaturei = (int8_t)temperature; - - if (temperaturei != _baro_data.last_temperature[topic_instance]) { - _baro_data.last_temperature[topic_instance] = temperaturei; + if (fabsf(temperature - _baro_data.last_temperature[topic_instance]) > 1.0f) { + _baro_data.last_temperature[topic_instance] = temperature; return 2; } diff --git a/src/modules/sensors/temperature_compensation.h b/src/modules/sensors/temperature_compensation.h index 0317ee0c16..9cd2aa13bd 100644 --- a/src/modules/sensors/temperature_compensation.h +++ b/src/modules/sensors/temperature_compensation.h @@ -252,10 +252,10 @@ private: struct PerSensorData { PerSensorData() { - for (int i = 0; i < SENSOR_COUNT_MAX; ++i) { device_mapping[i] = 255; last_temperature[i] = -100; } + for (int i = 0; i < SENSOR_COUNT_MAX; ++i) { device_mapping[i] = 255; last_temperature[i] = -100.0f; } } uint8_t device_mapping[SENSOR_COUNT_MAX]; /// map a topic instance to the parameters index - int8_t last_temperature[SENSOR_COUNT_MAX]; + float last_temperature[SENSOR_COUNT_MAX]; }; PerSensorData _gyro_data; PerSensorData _accel_data;