From c3b4742eeceee9250f8059972dd150f38e2eb021 Mon Sep 17 00:00:00 2001 From: "jakob.stendahl" Date: Sun, 4 Dec 2022 13:33:45 +0100 Subject: Fix simulation stuttering (still resource intensive) and some oter QOL upgrades --- NeoRuntime/Runtime/luxcena_neo/strip.py | 20 +++++- src/NeoRuntimeManager/index.js | 19 ++++- src/SelfUpdater/index.js | 2 +- .../ComponentLib/Button/EditorActionButton.svelte | 82 ++++++++++++++++++++++ src_frontend/Components/Editor/Controls.svelte | 6 +- src_frontend/Components/Editor/Editor.svelte | 42 +++++++++-- src_frontend/Components/Editor/Output.svelte | 13 +++- src_frontend/Components/Editor/Pane.svelte | 14 +++- src_frontend/Components/Editor/Simulation.svelte | 46 +++++++++--- src_frontend/Components/Editor/TopBar.svelte | 3 +- 10 files changed, 222 insertions(+), 25 deletions(-) create mode 100644 src_frontend/ComponentLib/Button/EditorActionButton.svelte diff --git a/NeoRuntime/Runtime/luxcena_neo/strip.py b/NeoRuntime/Runtime/luxcena_neo/strip.py index 0d23069..aa5b2d2 100644 --- a/NeoRuntime/Runtime/luxcena_neo/strip.py +++ b/NeoRuntime/Runtime/luxcena_neo/strip.py @@ -1,9 +1,27 @@ import json from os import path -import rpi_ws281x as ws from .matrix import Matrix, get_segment_range from .power_calc import calcCurrent +""" import rpi_ws281x library, or import dummy version. """ +try: + import rpi_ws281x as ws +except ModuleNotFoundError: + """ Dummy STRIP used for debugging purposes """ + class STRIP: + def __init__(self, *args, **kwargs): pass + def begin(self, *args): pass + def blank(self): pass + def show(self): pass + def setPixelColor(self, *args): pass + def setBrightness(self, *args): pass + """ Dummy ws implementation """ + class WS: + WS2812_STRIP = 1 + Adafruit_NeoPixel = STRIP + def __init__(*args): print("rpi_ws281x is not installed, using a dummy module") + ws = WS() + class Strip: diff --git a/src/NeoRuntimeManager/index.js b/src/NeoRuntimeManager/index.js index eb38632..1a56b04 100644 --- a/src/NeoRuntimeManager/index.js +++ b/src/NeoRuntimeManager/index.js @@ -33,6 +33,8 @@ let modeDebuggerId = null; let modeDebuggerProcStartHandler = null; /** @type {object} The last received matrix setup */ let matrix = null; +/** @type {object} intervall for sending current state */ +let debugModeStateEmitIntervall = null; eventEmitter.on("proc:exit", (code) => modeExitCode = code); eventEmitter.on("matrix", (_matrix) => matrix = _matrix); @@ -131,7 +133,9 @@ function stopMode(restart=false) { * @return {object} A standardform return object. */ function startMode() { - if (runtimeProcess === null) { return {success: false, reason: "no runtimeprocess", detail: "Runtimeprocess not set, did you mean to call setMode?"}; } + if (runtimeProcess === null) { + return {success: false, reason: "no runtimeprocess", detail: "Runtimeprocess not set, did you mean to call setMode?"}; + } return runtimeProcess.start(); }; @@ -225,6 +229,14 @@ function setVariable(name, value) { return ipc.sendCommand(IPC.COMMAND.SET_VAR, name, value); } +/** + * A function intented to be used in an interval to emit + * the current debug-state. + * + */ +function debugModeEmitState() { +} + /** * Start debugger for a mode * @@ -248,6 +260,11 @@ function startDebugger(debuggerModeId) { console.log(modeDebuggerProcStartHandler); } + if (debugModeStateEmitIntervall == null) { + debugModeStateEmitIntervall = setInterval(() => { + }, 500); + } + modeDebuggerActive = true; modeDebuggerId = debuggerModeId; setTimeout(() => { diff --git a/src/SelfUpdater/index.js b/src/SelfUpdater/index.js index 68f6a1d..cc7ce13 100644 --- a/src/SelfUpdater/index.js +++ b/src/SelfUpdater/index.js @@ -212,7 +212,7 @@ class Updater { let arch = (await this.run(`uname`, ["-m"])).out.replace("\n",""); if (arch == "armv6l") { await this.run("wget", ["https://unofficial-builds.nodejs.org/download/release/v14.10.0/node-v14.10.0-linux-armv6l.tar.gz"]); - await this.run("tar", ["-xzf" "node-v14.10.0-linux-armv6l.tar.gz"]); + await this.run("tar", ["-xzf", "node-v14.10.0-linux-armv6l.tar.gz"]); await this.run("cp", ["-r", "node-v14.10.0-linux-armv6l/*", "/usr/local"]); await this.run("rm", ["-r", "node-v14.10.0-linux-armv6l"]); await this.run("rm", ["node-v14.10.0-linux-armv6l.tar.gz"]); diff --git a/src_frontend/ComponentLib/Button/EditorActionButton.svelte b/src_frontend/ComponentLib/Button/EditorActionButton.svelte new file mode 100644 index 0000000..148720c --- /dev/null +++ b/src_frontend/ComponentLib/Button/EditorActionButton.svelte @@ -0,0 +1,82 @@ + + + + + diff --git a/src_frontend/Components/Editor/Controls.svelte b/src_frontend/Components/Editor/Controls.svelte index 85450a5..36dd9f0 100644 --- a/src_frontend/Components/Editor/Controls.svelte +++ b/src_frontend/Components/Editor/Controls.svelte @@ -34,6 +34,10 @@ }); onMount(() => { + power_on = false; + brightnessValue = 0; + variables = {}; + openSocket.emit("power:get"); openSocket.emit("brightness:get"); openSocket.emit("vars:get") @@ -100,4 +104,4 @@ {/if} {/each} - \ No newline at end of file + diff --git a/src_frontend/Components/Editor/Editor.svelte b/src_frontend/Components/Editor/Editor.svelte index d77b4f5..4328222 100644 --- a/src_frontend/Components/Editor/Editor.svelte +++ b/src_frontend/Components/Editor/Editor.svelte @@ -2,7 +2,7 @@ let debuggerInitialised = false; -
+

{header}

+
-
\ No newline at end of file +
diff --git a/src_frontend/Components/Editor/Simulation.svelte b/src_frontend/Components/Editor/Simulation.svelte index 86cc66c..3a35946 100644 --- a/src_frontend/Components/Editor/Simulation.svelte +++ b/src_frontend/Components/Editor/Simulation.svelte @@ -1,11 +1,24 @@ @@ -67,7 +94,6 @@
-

(still quite buggy, especially for very fast changing pixels, if nothing is happening, try to restart the script)

{#each pixels as pixel} diff --git a/src_frontend/Components/Editor/TopBar.svelte b/src_frontend/Components/Editor/TopBar.svelte index c74adf0..6ca6e84 100644 --- a/src_frontend/Components/Editor/TopBar.svelte +++ b/src_frontend/Components/Editor/TopBar.svelte @@ -1,4 +1,5 @@ Start {/if}
- \ No newline at end of file + -- cgit v1.2.3