From 902ade82c31c2fc3caaecac5d8efd2881ae7206b Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Sat, 11 Apr 2020 04:19:29 +0200
Subject: [PATCH] fix(spo2): Use averaging from TomoStrap

---
 preload/apps/spo2/__init__.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/preload/apps/spo2/__init__.py b/preload/apps/spo2/__init__.py
index 120666228..10b25ff65 100644
--- a/preload/apps/spo2/__init__.py
+++ b/preload/apps/spo2/__init__.py
@@ -24,6 +24,7 @@ class SPO2:
         self.filtered_value = 0.0
         self.source = "Red"
         self.average = 0
+        self.prev_w = 0
 
     def open(self):
         def callback(datasets):
@@ -46,13 +47,19 @@ class SPO2:
             while buttons.read(buttons.BOTTOM_RIGHT): pass
 
     def update_history(self, datasets):
-        alpha = 0.995
+        alpha = 0.9975
         for val in datasets:
-            """
+            print("%d,%d" % (val.red, val.infrared))
             if self.source == "Red":
-                self.avg[self.avg_pos] = val.red
+                d = val.red
             else:
-                self.avg[self.avg_pos] = val.infrared
+                d = val.infrared
+
+            w = d + self.prev_w * 0.95
+            self.history.append(w - self.prev_w)
+            self.prev_w = w
+            """
+            self.avg[self.avg_pos] = d
 
             if self.avg_pos < 9:
                 self.avg_pos += 1
@@ -68,15 +75,11 @@ class SPO2:
             self.history.append(self.filtered_value)
             """
 
-            #print("%d,%d" % (val.red, val.infrared))
-            if self.source == "Red":
-                d = val.red
-            else:
-                d = val.infrared
-
+            """
             self.average = alpha * self.average + (1 - alpha) * d
             d -= self.average
             self.history.append(d)
+            """
 
         # trim old elements
         self.history = self.history[-self.HISTORY_MAX :]
-- 
GitLab