diff --git a/preload/apps/spo2/__init__.py b/preload/apps/spo2/__init__.py index 152cf15131c6f58d13810a8a316df943e78c5694..6775f040baf1a464d54ba38c792c044676c196d6 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 08fdecc1582aafae3105fb05b1424bdbde7814d3..7a799c1ca6096752cba2d3f5e33218ffc1dfd9c3 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: