Skip to content
Snippets Groups Projects
Select Git revision
  • 4b7f18c9d313f8e40d46a0eda6beec0491538c02
  • main default protected
  • phhw
  • captouch-threshold
  • t
  • dos
  • test2
  • test
  • slewtest
  • simtest
  • view-think
  • vm-pending
  • media-buf
  • scope
  • passthrough
  • wave
  • vsync
  • dos-main-patch-50543
  • json-error
  • rahix/big-flow3r
  • pippin/media_framework
  • v1.3.0
  • v1.2.0
  • v1.2.0+rc1
  • v1.1.1
  • v1.1.0
  • v1.1.0+rc1
  • v1.0.0
  • v1.0.0+rc6
  • v1.0.0+rc5
  • v1.0.0+rc4
  • v1.0.0+rc3
  • v1.0.0+rc2
  • v1.0.0+rc1
34 results

sequencer.c

Blame
  • Forked from flow3r / flow3r firmware
    Source project has a limited visibility.
    max30001.py 1.72 KiB
    import sys_max30001
    import interrupt
    import ucollections
    
    
    class MAX30001:
        def __init__(
            self,
            usb=False,
            bias=True,
            sample_rate=128,
            callback=None,
            sample_buffer_len=256,
        ):
            self.sample_rate = sample_rate
            self.callback = callback
            self.sample_buffer_len = sample_buffer_len
            self.interrupt_id = interrupt.MAX30001_ECG
            self.usb = usb
            self.bias = bias
            self._callback = callback
            self.enable_sensor()
    
        def enable_sensor(self):
            interrupt.disable_callback(self.interrupt_id)
            interrupt.set_callback(self.interrupt_id, self._interrupt)
            self.stream_id = sys_max30001.enable_sensor(
                self.usb, self.bias, self.sample_rate, self.sample_buffer_len
            )
    
            if self.stream_id < 0:
                raise ValueError("Enable sensor returned %i", self.stream_id)
    
            self.active = True
    
            if self._callback:
                interrupt.enable_callback(self.interrupt_id)
    
        def __enter__(self):
            return self
    
        def __exit__(self, _et, _ev, _t):
            self.close()
    
        def close(self):
            if self.active:
                self.active = False
                ret = sys_max30001.disable_sensor(self.sensor_id)
    
                if ret < 0:
                    raise ValueError("Disable sensor returned %i", ret)
    
                interrupt.disable_callback(self.interrupt_id)
                interrupt.set_callback(self.interrupt_id, None)
    
        def read(self):
            if self.active:
                return sys_max30001.read_sensor(self.stream_id)
            return []
    
        def _interrupt(self, _):
            if self.active:
                data = self.read()
                if self._callback:
                    self._callback(data)