summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/src/TemperatureFilter.c
diff options
context:
space:
mode:
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.c39
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);
+ }
+}