From 9c981b200c62ba07337f8cd63dedbff19281ca50 Mon Sep 17 00:00:00 2001 From: Jane Petrovna Date: Wed, 26 May 2021 19:44:47 -0400 Subject: [PATCH] hopefully parsing? --- lights.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lights.js b/lights.js index df3b0e0..5caf35f 100644 --- a/lights.js +++ b/lights.js @@ -9,6 +9,7 @@ const fade_ticks = cfg.fade_ticks || 20; var pixels = new Uint32Array(cfg.leds); var pixel_cache = new Uint32Array(cfg.leds); var next_pattern = new Uint32Array(cfg.leds); +const targets = {} var pattern = {} function rgb_to_int(r, g, b) { @@ -32,11 +33,14 @@ ws281x.configure({ }); export function set_pattern(pat) { - pattern = pat + log.debug("pattern set"); + pattern = pat; } let functions = { - rand: () => { return Math.floor(Math.random() * 256) } + random: (index, args, prev) => { return Math.floor(Math.random() * 256) }, + constant: (index, args, prev) => { return args; }, + modulo: (index, args, prev) => { return prev % args; } } function tick_pattern() { @@ -44,7 +48,23 @@ function tick_pattern() { log.debug("TICKING PATTERN") if (Object.keys(pattern).length > 0) { - + for (let i = 0; i < cfg.leds; i++) { + for (let command of pattern) { + if (command.valid) { + let instruction = command.instruction; + if (functions[instruction.name.toLowerCase()]) { + for (let target of instruction.args) { + let channel = target.channel; + if (!targets[channel]) { + targets[channel] = 0; + } + targets[channel] = + functions[instruction.name.toLowerCase()](i, target.arg, targets[channel]); + } + } + } + } + } } else { getRandom()