mirror of
https://github.com/xodio/xod.git
synced 2026-03-19 15:16:58 +01:00
feat(xod-arduino): update XOD runtime to work fine with tweaks in Simulation mode
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user