From d10d99fb529e359db9dfa4979e826bae9350b375 Mon Sep 17 00:00:00 2001
From: Arist <aristkojevnikov@gmail.com>
Date: Sun, 9 Feb 2020 21:23:31 +0100
Subject: [PATCH] feat(max86150): MAX86150 Pycardium API: use namedtuple

---
 preload/apps/spo2/__init__.py    |  2 +-
 pycardium/modules/py/max86150.py | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/preload/apps/spo2/__init__.py b/preload/apps/spo2/__init__.py
index 152cf1513..6775f040b 100644
--- a/preload/apps/spo2/__init__.py
+++ b/preload/apps/spo2/__init__.py
@@ -38,7 +38,7 @@ class SPO2:
     def update_history(self, datasets):
         for val in datasets:
             # get red value (first in tuple)
-            self.avg[self.avg_pos] = val[0]
+            self.avg[self.avg_pos] = val.red
             if self.avg_pos < 9:
                 self.avg_pos += 1
             else:
diff --git a/pycardium/modules/py/max86150.py b/pycardium/modules/py/max86150.py
index 08fdecc15..7a799c1ca 100644
--- a/pycardium/modules/py/max86150.py
+++ b/pycardium/modules/py/max86150.py
@@ -1,6 +1,9 @@
 import sys_max86150
 import uerrno
 import interrupt
+import ucollections
+
+Max86150Data = ucollections.namedtuple("Max86150Data", ["red", "infrared", "ecg"])
 
 
 class MAX86150:
@@ -68,7 +71,13 @@ class MAX86150:
         Read as many samples (signed integer) as currently available.
         """
         assert self.active, "Sensor is inactive"
-        return sys_max86150.read_sensor(self.stream_id)
+        result = []
+        for sample in sys_max86150.read_sensor(self.stream_id):
+            result.append(self._convert(sample))
+        return result
+
+    def _convert(self, sample):
+        return Max86150Data(sample[0], sample[1], sample[2])
 
     def _interrupt(self, _):
         if self.active:
-- 
GitLab