Skip to content
Snippets Groups Projects
Select Git revision
  • ccf8d648638af01e353f7ca94a61adf589263ccf
  • master default protected
  • add-joust
  • blinkisync-as-preload
  • genofire/rockets-state
  • genofire/leds_rgb_get_state
  • genofire/ble-follow-py
  • genofire/haule-ble-fs-deactive
  • hauke/ble-cleanups
  • plaetzchen/ios-workaround
  • schneider/max30001-pycardium
  • schneider/max30001-epicaridum
  • schneider/max30001
  • schneider/stream-locks
  • ios-workarounds
  • schneider/fundamental-test
  • schneider/ble-buffers
  • schneider/maxim-sdk-update
  • rahix/simple_menu
  • ch3/splashscreen
  • koalo/bhi160-works-but-dirty
  • v1.7
  • v1.6
  • v1.5
  • v1.4
  • v1.3
  • v1.2
  • v1.1
  • v1.0
  • release-1
  • bootloader-v1
  • v0.0
32 results

meson.build

Blame
  • Forked from card10 / 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)