From dc11cdc6252ce7f7588700af9a25e8a50b041ad8 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak <dos@dosowisko.net> Date: Sun, 12 Nov 2023 21:36:42 +0100 Subject: [PATCH] sim: fakes: Add more stubs --- sim/fakes/_sim.py | 17 +++++++++++++++++ sim/fakes/audio.py | 24 ++++++++++++++++++++++- sim/fakes/ctx.py | 8 ++++++++ sim/fakes/leds.py | 9 +++++++++ sim/fakes/machine.py | 8 ++++++++ sim/fakes/network.py | 12 +++++++++++- sim/fakes/sys_colors.py | 16 +--------------- sim/fakes/sys_display.py | 41 ++++++++++++++++++++++++++++++++++++++++ sim/fakes/sys_kernel.py | 17 +++++++++++++++++ sim/fakes/sys_scope.py | 5 ++++- 10 files changed, 139 insertions(+), 18 deletions(-) diff --git a/sim/fakes/_sim.py b/sim/fakes/_sim.py index 82678dd6f4..087dcd2bc8 100644 --- a/sim/fakes/_sim.py +++ b/sim/fakes/_sim.py @@ -25,6 +25,23 @@ SCREENSHOT = False SCREENSHOT_DELAY = 5 +def path_replace(p): + simpath = "/tmp/flow3r-sim" + projectpath = os.path.dirname( + os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + ) + if p.startswith("/flash/sys"): + p = p[len("/flash/sys") :] + p = projectpath + "/python_payload" + p + return p + if p.startswith("/flash"): + p = p[len("/flash") :] + p = simpath + p + return p + + return p + + class Input: """ Input implements an input overlay (for petals or buttons) that can be diff --git a/sim/fakes/audio.py b/sim/fakes/audio.py index 1bcae08891..bd49202836 100644 --- a/sim/fakes/audio.py +++ b/sim/fakes/audio.py @@ -1,6 +1,12 @@ _volume = 0 _muted = False +INPUT_SOURCE_NONE = None +INPUT_SOURCE_AUTO = None +INPUT_SOURCE_HEADSET_MIC = None +INPUT_SOURCE_LINE_IN = None +INPUT_SOURCE_ONBOARD_MIC = None + def set_volume_dB(v: float) -> None: global _volume @@ -13,7 +19,7 @@ def get_volume_dB() -> float: def get_volume_relative() -> float: - return 0 + return (_volume + 47) / (47 + 14) def headphones_set_volume_dB(v: float) -> None: @@ -125,3 +131,19 @@ def line_in_get_allowed() -> bool: def onboard_mic_to_speaker_get_allowed() -> bool: return False + + +def input_thru_set_source(source): + pass + + +def input_thru_get_source(): + return None + + +def input_engines_get_source_avail(source): + return False + + +def headset_mic_get_allowed(): + return False diff --git a/sim/fakes/ctx.py b/sim/fakes/ctx.py index 925271793f..c282c8bc3b 100644 --- a/sim/fakes/ctx.py +++ b/sim/fakes/ctx.py @@ -134,6 +134,14 @@ class Context: def text_baseline(self, v): self._emit(f"textBaseline {v}") + @property + def compositing_mode(self): + return None + + @compositing_mode.setter + def compositing_mode(self, v): + self._emit(f"compositingMode {v}") + @property def line_width(self): return None diff --git a/sim/fakes/leds.py b/sim/fakes/leds.py index aadca2394f..c8b78d8dc1 100644 --- a/sim/fakes/leds.py +++ b/sim/fakes/leds.py @@ -37,10 +37,19 @@ def set_hsv(ix, h, s, v): set_rgb(ix, color.r / 255, color.g / 255, color.b / 255) +def set_all_hsv(h, s, v): + for i in range(40): + set_hsv(i, h, s, v) + + def set_slew_rate(b: int): pass # Better a no-op than not implemented at all. +def get_slew_rate(): + return 255 + + def update(): _sim.leds_update() pygame.event.post(pygame.event.Event(pygame.USEREVENT, {})) diff --git a/sim/fakes/machine.py b/sim/fakes/machine.py index 34d8eb7610..aa74ae1821 100644 --- a/sim/fakes/machine.py +++ b/sim/fakes/machine.py @@ -22,6 +22,14 @@ class ADC: return 3.8e6 / 2 +class I2C: + def __init__(self, chan, freq=None): + pass + + def scan(self): + return [] + + def reset(): print("beep boop i have reset") sys.exit(0) diff --git a/sim/fakes/network.py b/sim/fakes/network.py index b0f7197f80..894b585b24 100644 --- a/sim/fakes/network.py +++ b/sim/fakes/network.py @@ -1,4 +1,5 @@ STA_IF = 1 +STAT_CONNECTING = 0 def hostname(hostname: str) -> None: @@ -9,7 +10,7 @@ class WLAN: def __init__(self, mode): pass - def active(self, active): + def active(self, active=True): return True def scan(self): @@ -18,5 +19,14 @@ class WLAN: def connect(self, ssid, key=None): pass + def disconnect(self): + pass + def isconnected(self): return True + + def status(self, mode=None): + return STAT_CONNECTING + + def config(self, a): + return None diff --git a/sim/fakes/sys_colors.py b/sim/fakes/sys_colors.py index 6bed207714..636b2a519c 100644 --- a/sim/fakes/sys_colors.py +++ b/sim/fakes/sys_colors.py @@ -1,15 +1 @@ -from typing import Tuple - - -def hsv_to_rgb(h: float, s: float, v: float) -> Tuple[float, float, float]: - """ - Not implemented in sim. - """ - return (0.0, 0.0, 0.0) - - -def rgb_to_hsv(r: float, g: float, b: float) -> Tuple[float, float, float]: - """ - Not implemented in sim. - """ - return (0.0, 0.0, 0.0) +from colorsys import hsv_to_rgb, rgb_to_hsv diff --git a/sim/fakes/sys_display.py b/sim/fakes/sys_display.py index a3e2016773..a967825791 100644 --- a/sim/fakes/sys_display.py +++ b/sim/fakes/sys_display.py @@ -21,6 +21,22 @@ def set_mode(no): pass +def set_default_mode(no): + pass + + +def set_palette(pal): + pass + + +def fb(mode): + return (bytearray(240 * 240 * 4), 240, 240, 240 * 4) + + +def fps(): + return 60.0 + + update = _sim.display_update get_ctx = _sim.get_ctx get_overlay_ctx = _sim.get_overlay_ctx @@ -33,3 +49,28 @@ def ctx(foo): def set_backlight(a): pass + + +def fbconfig(a, b, c, d): + pass + + +default = 0 +rgb332 = 0 +sepia = 0 +cool = 0 +low_latency = 0 +direct_ctx = 0 +lock = 0 +EXPERIMENTAL_think_per_draw = 0 +smart_redraw = 0 +x2 = 0 +x3 = 0 +x4 = 0 +bpp1 = 0 +bpp2 = 0 +bpp4 = 0 +bpp8 = 0 +bpp16 = 0 +bpp24 = 0 +palette = 0 diff --git a/sim/fakes/sys_kernel.py b/sim/fakes/sys_kernel.py index e134708eb7..632c8e59b6 100644 --- a/sim/fakes/sys_kernel.py +++ b/sim/fakes/sys_kernel.py @@ -35,3 +35,20 @@ def i2c_scan(): def battery_charging(): return True + + +def firmware_version(): + return "0.0.0" + + +def hardware_version(): + return "simulator" + + +class FakeSchedulerSnapshot: + def __init__(self): + self.tasks = [] + + +def scheduler_snapshot(): + return FakeSchedulerSnapshot() diff --git a/sim/fakes/sys_scope.py b/sim/fakes/sys_scope.py index fb446bef77..2802761d56 100644 --- a/sim/fakes/sys_scope.py +++ b/sim/fakes/sys_scope.py @@ -1,2 +1,5 @@ +from st3m.goose import Optional + + def get_buffer_x() -> Optional[memoryview]: - return None + return memoryview(b"") -- GitLab