feat(xod-arduino): update XOD runtime to work fine with tweaks in Simulation mode

This commit is contained in:
Kirill Shumilov
2019-02-06 16:30:19 +03:00
parent 1be9cd3276
commit 478d612494
2 changed files with 28 additions and 26 deletions

View File

@@ -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

View File

@@ -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