diff options
Diffstat (limited to 'FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c')
-rw-r--r-- | FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c b/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c new file mode 100644 index 000000000..02fc04506 --- /dev/null +++ b/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c @@ -0,0 +1,39 @@ +#include "Types.h" +#include "TemperatureFilter.h" +#include <math.h> + +static bool initialized; +static float temperatureInCelcius; + +void TemperatureFilter_Init(void) +{ + initialized = FALSE; + temperatureInCelcius = -INFINITY; +} + +float TemperatureFilter_GetTemperatureInCelcius(void) +{ + return temperatureInCelcius; +} + +void TemperatureFilter_ProcessInput(float temperature) +{ + if (!initialized) + { + temperatureInCelcius = temperature; + initialized = TRUE; + } + else + { + if (temperature == +INFINITY || + temperature == -INFINITY || + temperature == +NAN || + temperature == -NAN) + { + initialized = FALSE; + temperature = -INFINITY; + } + + temperatureInCelcius = (temperatureInCelcius * 0.75f) + (temperature * 0.25); + } +} |