From 79af48dfdf40854324bb6f22bd9dcd47a632c60a Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Sat, 5 Aug 2023 00:22:50 +0200 Subject: [PATCH] imu: make available via standard input state --- python_payload/mypystubs/imu.pyi | 5 +++++ python_payload/st3m/input.py | 17 +++++++++++++++++ sim/run.py | 1 + 3 files changed, 23 insertions(+) diff --git a/python_payload/mypystubs/imu.pyi b/python_payload/mypystubs/imu.pyi index 8c23c49b3f..5809088f55 100644 --- a/python_payload/mypystubs/imu.pyi +++ b/python_payload/mypystubs/imu.pyi @@ -5,6 +5,11 @@ def acc_read() -> Tuple[float, float, float]: Returns current x, y, z accelerations in m/s**2. """ ... +def gyro_read() -> Tuple[float, float, float]: + """ + Returns current pressure in Pa and temperature in degree C. + """ + ... def pressure_read() -> Tuple[float, float]: """ diff --git a/python_payload/st3m/input.py b/python_payload/st3m/input.py index 6842b50839..405388d66b 100644 --- a/python_payload/st3m/input.py +++ b/python_payload/st3m/input.py @@ -3,6 +3,7 @@ from st3m.ui.ctx import Ctx import hardware import captouch +import imu import math @@ -327,6 +328,19 @@ class TriSwitchState: self.middle._ignore_pressed() self.right._ignore_pressed() +class IMUState: + __slots__ = ("acc", "gyro", "pressure", "temperature") + + def __init__(self) -> None: + self.acc = (0., 0., 0.) + self.gyro = (0., 0., 0.) + self.pressure = 0. + self.temperature = 0. + + def _update(self, ts: int, hr: InputState) -> None: + self.acc = imu.acc_read() + self.gyro = imu.gyro_read() + self.pressure, self.temperature = imu.pressure_read() class InputController: """ @@ -344,6 +358,7 @@ class InputController: "captouch", "left_shoulder", "right_shoulder", + "imu", "_ts", ) @@ -351,6 +366,7 @@ class InputController: self.captouch = CaptouchState() self.left_shoulder = TriSwitchState(TriSwitchHandedness.left) self.right_shoulder = TriSwitchState(TriSwitchHandedness.right) + self.imu = IMUState() self._ts = 0 def think(self, hr: InputState, delta_ms: int) -> None: @@ -358,6 +374,7 @@ class InputController: self.captouch._update(self._ts, hr) self.left_shoulder._update(self._ts, hr) self.right_shoulder._update(self._ts, hr) + self.imu._update(self._ts, hr) def _ignore_pressed(self) -> None: """ diff --git a/sim/run.py b/sim/run.py index 7b8e92cda1..e133ed19d7 100644 --- a/sim/run.py +++ b/sim/run.py @@ -1,4 +1,5 @@ import importlib +import importlib.abc import importlib.machinery from importlib.machinery import PathFinder, BuiltinImporter import importlib.util -- GitLab