From 478d612494ea7c3bf9c7ea4f72a52f85edda6ae2 Mon Sep 17 00:00:00 2001 From: Kirill Shumilov Date: Wed, 6 Feb 2019 16:30:19 +0300 Subject: [PATCH] feat(xod-arduino): update XOD runtime to work fine with tweaks in Simulation mode --- packages/xod-arduino/platform/program.tpl.cpp | 52 ++++++++++--------- packages/xod-arduino/platform/runtime.cpp | 2 +- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/packages/xod-arduino/platform/program.tpl.cpp b/packages/xod-arduino/platform/program.tpl.cpp index ec532722..a0ebba38 100644 --- a/packages/xod-arduino/platform/program.tpl.cpp +++ b/packages/xod-arduino/platform/program.tpl.cpp @@ -39,7 +39,7 @@ namespace xod { {{/unless}} {{/each}} -#if defined(XOD_DEBUG) // can't do that in XOD_SIMULATION yet +#if defined(XOD_DEBUG) || defined(XOD_SIMULATION) namespace detail { void handleTweaks() { if (XOD_DEBUG_SERIAL.available() > 0 && XOD_DEBUG_SERIAL.find("+XOD:", 5)) { @@ -48,34 +48,36 @@ void handleTweaks() { switch (tweakedNodeId) { {{#eachTweakNode nodes}} case {{ id }}: - {{#switch patch.patchPath}} - {{#case "xod/debug/tweak-number"}} - node_{{ id }}.output_OUT = XOD_DEBUG_SERIAL.parseFloat(); - {{/case}} - {{#case "xod/debug/tweak-byte"}} - node_{{ id }}.output_OUT = XOD_DEBUG_SERIAL.parseInt(); - {{/case}} - {{#case "xod/debug/tweak-pulse"}} - node_{{ id }}.output_OUT = 1; - {{/case}} - {{#case "xod/debug/tweak-boolean"}} - node_{{ id }}.output_OUT = (bool)XOD_DEBUG_SERIAL.parseInt(); - {{/case}} - {{#case "xod/debug/tweak-string-16"}} - XOD_DEBUG_SERIAL.read(); // consume the ':' separator that was left after parsing node id - size_t readChars = XOD_DEBUG_SERIAL.readBytesUntil('\r', node_{{ id }}.state.buff, 16); - node_{{ id }}.state.buff[readChars] = '\0'; - {{/case}} - {{/switch}} - // to run evaluate and mark all downstream nodes as dirty - node_{{ id }}.isNodeDirty = true; - node_{{ id }}.isOutputDirty_OUT = true; + { + {{#switch patch.patchPath}} + {{#case "xod/debug/tweak-number"}} + node_{{ id }}.output_OUT = XOD_DEBUG_SERIAL.parseFloat(); + {{/case}} + {{#case "xod/debug/tweak-byte"}} + node_{{ id }}.output_OUT = XOD_DEBUG_SERIAL.parseInt(); + {{/case}} + {{#case "xod/debug/tweak-pulse"}} + node_{{ id }}.output_OUT = 1; + {{/case}} + {{#case "xod/debug/tweak-boolean"}} + node_{{ id }}.output_OUT = (bool)XOD_DEBUG_SERIAL.parseInt(); + {{/case}} + {{#case "xod/debug/tweak-string-16"}} + XOD_DEBUG_SERIAL.read(); // consume the ':' separator that was left after parsing node id + size_t readChars = XOD_DEBUG_SERIAL.readBytesUntil('\r', node_{{ id }}.state.buff, 16); + node_{{ id }}.state.buff[readChars] = '\0'; + {{/case}} + {{/switch}} + // to run evaluate and mark all downstream nodes as dirty + node_{{ id }}.isNodeDirty = true; + node_{{ id }}.isOutputDirty_OUT = true; + } break; {{/eachTweakNode}} } - XOD_DEBUG_SERIAL.find("\r\n", 2); + XOD_DEBUG_SERIAL.find('\n'); } } } // namespace detail @@ -87,7 +89,7 @@ void runTransaction() { XOD_TRACE_F("Transaction started, t="); XOD_TRACE_LN(g_transactionTime); -#if defined(XOD_DEBUG) // can't do that in XOD_SIMULATION yet +#if defined(XOD_DEBUG) || defined(XOD_SIMULATION) detail::handleTweaks(); #endif diff --git a/packages/xod-arduino/platform/runtime.cpp b/packages/xod-arduino/platform/runtime.cpp index ce610f75..dcd683cd 100644 --- a/packages/xod-arduino/platform/runtime.cpp +++ b/packages/xod-arduino/platform/runtime.cpp @@ -152,7 +152,7 @@ void setup() { // FIXME: looks like there is a rounding bug. Waiting for 100ms fights it delay(100); -#if defined(XOD_DEBUG) // can't do that in XOD_SIMULATION yet +#if defined(XOD_DEBUG) || defined(XOD_SIMULATION) XOD_DEBUG_SERIAL.begin(115200); XOD_DEBUG_SERIAL.setTimeout(10); #endif