mirror of
https://github.com/xodio/xod.git
synced 2026-03-22 16:46:54 +01:00
3764 lines
90 KiB
JavaScript
3764 lines
90 KiB
JavaScript
export default {
|
|
authors: [
|
|
'Amperka team',
|
|
],
|
|
description: '',
|
|
license: '',
|
|
name: 'Awesome project',
|
|
patches: {
|
|
'@/1': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {},
|
|
path: '@/1',
|
|
},
|
|
'@/2': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {},
|
|
path: '@/2',
|
|
},
|
|
'xod/core/and': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: e.inputs.a && e.inputs.b };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/and',
|
|
},
|
|
'xod/core/any': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.a || e.inputs.b) {\n return { out: PULSE };\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/any',
|
|
},
|
|
'xod/core/blink': {
|
|
impls: {},
|
|
links: {
|
|
BygxthGNqae: {
|
|
id: 'BygxthGNqae',
|
|
input: {
|
|
nodeId: 'B1zOhGEqax',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'SJbd3z45ag',
|
|
pinKey: 'state',
|
|
},
|
|
},
|
|
'Hk-lY2MEcpl': {
|
|
id: 'Hk-lY2MEcpl',
|
|
input: {
|
|
nodeId: 'Sye_2f45ax',
|
|
pinKey: 'interval',
|
|
},
|
|
output: {
|
|
nodeId: 'Sku3GVq6e',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rkzlt2MVcTe: {
|
|
id: 'rkzlt2MVcTe',
|
|
input: {
|
|
nodeId: 'SJbd3z45ag',
|
|
pinKey: 'toggle',
|
|
},
|
|
output: {
|
|
nodeId: 'Sye_2f45ax',
|
|
pinKey: 'tick',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
B1zOhGEqax: {
|
|
id: 'B1zOhGEqax',
|
|
pins: {},
|
|
position: {
|
|
x: 263,
|
|
y: 508,
|
|
},
|
|
type: 'xod/core/output-boolean',
|
|
},
|
|
SJbd3z45ag: {
|
|
id: 'SJbd3z45ag',
|
|
pins: {},
|
|
position: {
|
|
x: 271,
|
|
y: 355,
|
|
},
|
|
type: 'xod/core/latch',
|
|
},
|
|
Sku3GVq6e: {
|
|
id: 'Sku3GVq6e',
|
|
pins: {},
|
|
position: {
|
|
x: 268,
|
|
y: 103,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
Sye_2f45ax: {
|
|
id: 'Sye_2f45ax',
|
|
pins: {
|
|
interval: {
|
|
curried: false,
|
|
value: 1,
|
|
},
|
|
},
|
|
position: {
|
|
x: 267,
|
|
y: 215,
|
|
},
|
|
type: 'xod/core/clock',
|
|
},
|
|
},
|
|
path: 'xod/core/blink',
|
|
},
|
|
'xod/core/both': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.a && e.inputs.b) {\n return { out: PULSE };\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/both',
|
|
},
|
|
'xod/core/button': {
|
|
impls: {
|
|
espruino: "\nmodule.exports.setup = function(e) {\n var pin = new Pin(e.props.pin);\n\n setWatch(function(evt) {\n e.fire({ state: !evt.state });\n }, pin, {\n edge: 'both',\n repeat: true,\n debounce: 30\n });\n};\n",
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
state: {
|
|
id: 'state',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/button',
|
|
},
|
|
'xod/core/buzzer': {
|
|
impls: {
|
|
espruino: '\nmodule.exports.setup = function(e) {\n e.context.pin = new Pin(e.props.pin);\n};\n\nmodule.exports.evaluate = function(e) {\n var f = e.inputs.freq;\n\n if (f === 0) {\n digitalWrite(e.context.pin, false);\n } else {\n analogWrite(e.context.pin, 0.5, { freq: f });\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
freq: {
|
|
id: 'freq',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/buzzer',
|
|
},
|
|
'xod/core/cast-boolean-to-number': {
|
|
impls: {
|
|
cpp: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n emitNumber(nid, Outputs::__OUT__, getLogic(nid, Inputs::__IN__));\n}\n',
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: Number(e.inputs.__in__) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-boolean-to-number',
|
|
},
|
|
'xod/core/cast-boolean-to-pulse': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.__in__ === false) return;\n return { __out__: PULSE };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-boolean-to-pulse',
|
|
},
|
|
'xod/core/cast-boolean-to-string': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: String(e.inputs.__in__) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-boolean-to-string',
|
|
},
|
|
'xod/core/cast-number-to-boolean': {
|
|
impls: {
|
|
cpp: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n emitLogic(nid, Outputs::__OUT__, getNumber(nid, Inputs::__IN__));\n}\n',
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: Boolean(e.inputs.__in__) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-number-to-boolean',
|
|
},
|
|
'xod/core/cast-number-to-pulse': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (Boolean(e.inputs.__in__) === false) return;\n\n return { __out__: PULSE };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-number-to-pulse',
|
|
},
|
|
'xod/core/cast-number-to-string': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: String(e.inputs.__in__) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-number-to-string',
|
|
},
|
|
'xod/core/cast-pulse-to-boolean': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: true };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-pulse-to-boolean',
|
|
},
|
|
'xod/core/cast-pulse-to-number': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: 1 };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-pulse-to-number',
|
|
},
|
|
'xod/core/cast-string-to-boolean': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { __out__: Boolean(e.inputs.__in__) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-string-to-boolean',
|
|
},
|
|
'xod/core/cast-string-to-pulse': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (Boolean(e.inputs.__in__) === false) return;\n\n return { __out__: PULSE };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/cast-string-to-pulse',
|
|
},
|
|
'xod/core/choose': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.x) {\n return { truePulse: PULSE };\n } else {\n return { falsePulse: PULSE };\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
falsePulse: {
|
|
id: 'falsePulse',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
truePulse: {
|
|
id: 'truePulse',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
x: {
|
|
id: 'x',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/choose',
|
|
},
|
|
'xod/core/choose-range': {
|
|
impls: {},
|
|
links: {
|
|
BJIgthfVqpx: {
|
|
id: 'BJIgthfVqpx',
|
|
input: {
|
|
nodeId: 'BJHu2GV5al',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'r14dnfE9al',
|
|
pinKey: 'truePulse',
|
|
},
|
|
},
|
|
BkreYhfVc6e: {
|
|
id: 'BkreYhfVc6e',
|
|
input: {
|
|
nodeId: 'r14dnfE9al',
|
|
pinKey: 'x',
|
|
},
|
|
output: {
|
|
nodeId: 'H1PuhzVcax',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
HJXxthMN9Tg: {
|
|
id: 'HJXxthMN9Tg',
|
|
input: {
|
|
nodeId: 'H1PuhzVcax',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'rk__hGVcpe',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
HyNgF3f45pg: {
|
|
id: 'HyNgF3f45pg',
|
|
input: {
|
|
nodeId: 'H1PuhzVcax',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'rk7unMVqpx',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
S1Pxt3G45Te: {
|
|
id: 'S1Pxt3G45Te',
|
|
input: {
|
|
nodeId: 'B1Iu3fV9pe',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'r14dnfE9al',
|
|
pinKey: 'falsePulse',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
B1Iu3fV9pe: {
|
|
id: 'B1Iu3fV9pe',
|
|
pins: {},
|
|
position: {
|
|
x: 420,
|
|
y: 482,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
BJHu2GV5al: {
|
|
id: 'BJHu2GV5al',
|
|
pins: {},
|
|
position: {
|
|
x: 242,
|
|
y: 486,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
H1PuhzVcax: {
|
|
id: 'H1PuhzVcax',
|
|
pins: {},
|
|
position: {
|
|
x: 332,
|
|
y: 251,
|
|
},
|
|
type: 'xod/core/less',
|
|
},
|
|
r14dnfE9al: {
|
|
id: 'r14dnfE9al',
|
|
pins: {},
|
|
position: {
|
|
x: 332,
|
|
y: 336,
|
|
},
|
|
type: 'xod/core/choose',
|
|
},
|
|
rk7unMVqpx: {
|
|
id: 'rk7unMVqpx',
|
|
pins: {},
|
|
position: {
|
|
x: 226,
|
|
y: 91,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
rk__hGVcpe: {
|
|
id: 'rk__hGVcpe',
|
|
pins: {},
|
|
position: {
|
|
x: 460,
|
|
y: 88,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
},
|
|
path: 'xod/core/choose-range',
|
|
},
|
|
'xod/core/choose-range-2p': {
|
|
impls: {},
|
|
links: {
|
|
H1alKhzEqpl: {
|
|
id: 'H1alKhzEqpl',
|
|
input: {
|
|
nodeId: 'H1aOnfEcpe',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'rJWlOnGNqal',
|
|
pinKey: 'BJHu2GV5al',
|
|
},
|
|
},
|
|
H1jeF2MNcTg: {
|
|
id: 'H1jeF2MNcTg',
|
|
input: {
|
|
nodeId: 'r1FO2fN5ag',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'BJiu3GNq6g',
|
|
pinKey: 'B1Iu3fV9pe',
|
|
},
|
|
},
|
|
H1xZYnGV56x: {
|
|
id: 'H1xZYnGV56x',
|
|
input: {
|
|
nodeId: 'rygeO3zE5Te',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'SJ2u2zVqTe',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
Sy9xthME56g: {
|
|
id: 'Sy9xthME56g',
|
|
input: {
|
|
nodeId: 'rJWlOnGNqal',
|
|
pinKey: 'rk7unMVqpx',
|
|
},
|
|
output: {
|
|
nodeId: 'ByCO2fNqag',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
r1JbF3ME5Tx: {
|
|
id: 'r1JbF3ME5Tx',
|
|
input: {
|
|
nodeId: 'SJ2u2zVqTe',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'rJWlOnGNqal',
|
|
pinKey: 'B1Iu3fV9pe',
|
|
},
|
|
},
|
|
r1_xF2fE9Tx: {
|
|
id: 'r1_xF2fE9Tx',
|
|
input: {
|
|
nodeId: 'BJiu3GNq6g',
|
|
pinKey: 'rk__hGVcpe',
|
|
},
|
|
output: {
|
|
nodeId: 'rk1guhzVqpl',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rJ0gY2G49px: {
|
|
id: 'rJ0gY2G49px',
|
|
input: {
|
|
nodeId: 'SJ2u2zVqTe',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'BJiu3GNq6g',
|
|
pinKey: 'BJHu2GV5al',
|
|
},
|
|
},
|
|
rkKetnfN5al: {
|
|
id: 'rkKetnfN5al',
|
|
input: {
|
|
nodeId: 'BJiu3GNq6g',
|
|
pinKey: 'rk7unMVqpx',
|
|
},
|
|
output: {
|
|
nodeId: 'ByCO2fNqag',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
ry2xt2M4c6e: {
|
|
id: 'ry2xt2M4c6e',
|
|
input: {
|
|
nodeId: 'rJWlOnGNqal',
|
|
pinKey: 'rk__hGVcpe',
|
|
},
|
|
output: {
|
|
nodeId: 'BJqu3zV9ax',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
BJiu3GNq6g: {
|
|
id: 'BJiu3GNq6g',
|
|
pins: {},
|
|
position: {
|
|
x: 462,
|
|
y: 256,
|
|
},
|
|
type: 'xod/core/choose-range',
|
|
},
|
|
BJqu3zV9ax: {
|
|
id: 'BJqu3zV9ax',
|
|
pins: {},
|
|
position: {
|
|
x: 367,
|
|
y: 117,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
ByCO2fNqag: {
|
|
id: 'ByCO2fNqag',
|
|
pins: {},
|
|
position: {
|
|
x: 189,
|
|
y: 116,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
H1aOnfEcpe: {
|
|
id: 'H1aOnfEcpe',
|
|
pins: {},
|
|
position: {
|
|
x: 191,
|
|
y: 452,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
SJ2u2zVqTe: {
|
|
id: 'SJ2u2zVqTe',
|
|
pins: {},
|
|
position: {
|
|
x: 382,
|
|
y: 361,
|
|
},
|
|
type: 'xod/core/both',
|
|
},
|
|
r1FO2fN5ag: {
|
|
id: 'r1FO2fN5ag',
|
|
pins: {},
|
|
position: {
|
|
x: 554,
|
|
y: 457,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
rJWlOnGNqal: {
|
|
id: 'rJWlOnGNqal',
|
|
pins: {},
|
|
position: {
|
|
x: 271,
|
|
y: 258,
|
|
},
|
|
type: 'xod/core/choose-range',
|
|
},
|
|
rk1guhzVqpl: {
|
|
id: 'rk1guhzVqpl',
|
|
pins: {},
|
|
position: {
|
|
x: 553,
|
|
y: 118,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
rygeO3zE5Te: {
|
|
id: 'rygeO3zE5Te',
|
|
pins: {},
|
|
position: {
|
|
x: 402,
|
|
y: 456,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
},
|
|
path: 'xod/core/choose-range-2p',
|
|
},
|
|
'xod/core/choose-range-3p': {
|
|
impls: {},
|
|
links: {
|
|
'B1O-F2zN56g': {
|
|
id: 'B1O-F2zN56g',
|
|
input: {
|
|
nodeId: 'HycgdhfNqpe',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'Skog_nME5Tg',
|
|
pinKey: 'B1Iu3fV9pe',
|
|
},
|
|
},
|
|
BJXbt3fVcae: {
|
|
id: 'BJXbt3fVcae',
|
|
input: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'rk1guhzVqpl',
|
|
},
|
|
output: {
|
|
nodeId: 'HkVeOnzV9ae',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
BkUbF2zE9ax: {
|
|
id: 'BkUbF2zE9ax',
|
|
input: {
|
|
nodeId: 'Skog_nME5Tg',
|
|
pinKey: 'rk__hGVcpe',
|
|
},
|
|
output: {
|
|
nodeId: 'ByHe_hGEc6l',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
BkbZK2zN9pe: {
|
|
id: 'BkbZK2zN9pe',
|
|
input: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'ByCO2fNqag',
|
|
},
|
|
output: {
|
|
nodeId: 'Skfg_nfE5pg',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
BkwZthfE9al: {
|
|
id: 'BkwZthfE9al',
|
|
input: {
|
|
nodeId: 'Skog_nME5Tg',
|
|
pinKey: 'rk7unMVqpx',
|
|
},
|
|
output: {
|
|
nodeId: 'Skfg_nfE5pg',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
H1MWKhGNqTx: {
|
|
id: 'H1MWKhGNqTx',
|
|
input: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'BJqu3zV9ax',
|
|
},
|
|
output: {
|
|
nodeId: 'BJXxO2zVqpx',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
HJBZKnMEqae: {
|
|
id: 'HJBZKnMEqae',
|
|
input: {
|
|
nodeId: 'B1_x_3G4q6x',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'rygeO3zE5Te',
|
|
},
|
|
},
|
|
S1KZY2MN96l: {
|
|
id: 'S1KZY2MN96l',
|
|
input: {
|
|
nodeId: 'S12ld3MNcax',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'r1FO2fN5ag',
|
|
},
|
|
},
|
|
'Sy5-YnzEq6e': {
|
|
id: 'Sy5-YnzEq6e',
|
|
input: {
|
|
nodeId: 'S12ld3MNcax',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'Skog_nME5Tg',
|
|
pinKey: 'BJHu2GV5al',
|
|
},
|
|
},
|
|
rkiWt3MV9Tx: {
|
|
id: 'rkiWt3MV9Tx',
|
|
input: {
|
|
nodeId: 'BkFxdnzNcpg',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'S12ld3MNcax',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
ryNWFhGEqag: {
|
|
id: 'ryNWFhGEqag',
|
|
input: {
|
|
nodeId: 'Hkwedhz456l',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'Hy8eu3MNqTl',
|
|
pinKey: 'H1aOnfEcpe',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
B1_x_3G4q6x: {
|
|
id: 'B1_x_3G4q6x',
|
|
pins: {},
|
|
position: {
|
|
x: 313,
|
|
y: 538,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
BJXxO2zVqpx: {
|
|
id: 'BJXxO2zVqpx',
|
|
pins: {},
|
|
position: {
|
|
x: 315,
|
|
y: 140,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
BkFxdnzNcpg: {
|
|
id: 'BkFxdnzNcpg',
|
|
pins: {},
|
|
position: {
|
|
x: 456,
|
|
y: 535,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
ByHe_hGEc6l: {
|
|
id: 'ByHe_hGEc6l',
|
|
pins: {},
|
|
position: {
|
|
x: 589,
|
|
y: 140,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HkVeOnzV9ae: {
|
|
id: 'HkVeOnzV9ae',
|
|
pins: {},
|
|
position: {
|
|
x: 452,
|
|
y: 140,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
Hkwedhz456l: {
|
|
id: 'Hkwedhz456l',
|
|
pins: {},
|
|
position: {
|
|
x: 171,
|
|
y: 538,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
Hy8eu3MNqTl: {
|
|
id: 'Hy8eu3MNqTl',
|
|
pins: {},
|
|
position: {
|
|
x: 249,
|
|
y: 294,
|
|
},
|
|
type: 'xod/core/choose-range-2p',
|
|
},
|
|
HycgdhfNqpe: {
|
|
id: 'HycgdhfNqpe',
|
|
pins: {},
|
|
position: {
|
|
x: 598,
|
|
y: 533,
|
|
},
|
|
type: 'xod/core/output-pulse',
|
|
},
|
|
S12ld3MNcax: {
|
|
id: 'S12ld3MNcax',
|
|
pins: {},
|
|
position: {
|
|
x: 419,
|
|
y: 405,
|
|
},
|
|
type: 'xod/core/both',
|
|
},
|
|
Skfg_nfE5pg: {
|
|
id: 'Skfg_nfE5pg',
|
|
pins: {},
|
|
position: {
|
|
x: 173,
|
|
y: 140,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
Skog_nME5Tg: {
|
|
id: 'Skog_nME5Tg',
|
|
pins: {},
|
|
position: {
|
|
x: 495,
|
|
y: 297,
|
|
},
|
|
type: 'xod/core/choose-range',
|
|
},
|
|
},
|
|
path: 'xod/core/choose-range-3p',
|
|
},
|
|
'xod/core/clock': {
|
|
impls: {
|
|
cpp: 'struct State {\n TimeMs nextTrig;\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n TimeMs tNow = transactionTime();\n TimeMs dt = getNumber(nid, Inputs::IVAL) * 1000;\n TimeMs tNext = tNow + dt;\n\n if (isInputDirty(nid, Inputs::IVAL)) {\n if (dt == 0) {\n state->nextTrig = 0;\n clearTimeout(nid);\n } else if (state->nextTrig < tNow || state->nextTrig > tNext) {\n state->nextTrig = tNext;\n setTimeout(nid, dt);\n }\n } else {\n // It was a scheduled tick\n emitLogic(nid, Outputs::TICK, 1);\n state->nextTrig = tNext;\n setTimeout(nid, dt);\n }\n}\n',
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.context.intervalID) {\n clearInterval(e.context.intervalID);\n }\n\n e.context.intervalID = setInterval(function() {\n e.fire({ tick: PULSE });\n }, e.inputs.interval * 1000);\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
interval: {
|
|
id: 'interval',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
tick: {
|
|
id: 'tick',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/clock',
|
|
},
|
|
'xod/core/compare': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var a = e.inputs.a;\n var b = e.inputs.b;\n if (a < b) {\n return { less: PULSE };\n } else if (a > b) {\n return { greater: PULSE };\n } else {\n return { equal: PULSE };\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
equal: {
|
|
id: 'equal',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
greater: {
|
|
id: 'greater',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 400,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
less: {
|
|
id: 'less',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/compare',
|
|
},
|
|
'xod/core/concat': {
|
|
impls: {
|
|
js: 'module.exports.evaluate = function(e) {\n return { result: (String(e.inputs.a) + String(e.inputs.b)) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
result: {
|
|
id: 'result',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/concat',
|
|
},
|
|
'xod/core/const-bool': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { value: e.inputs.inValue };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
inValue: {
|
|
id: 'inValue',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
pulse: {
|
|
id: 'pulse',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/const-bool',
|
|
},
|
|
'xod/core/const-number': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { value: e.inputs.inValue };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
inValue: {
|
|
id: 'inValue',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
pulse: {
|
|
id: 'pulse',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/const-number',
|
|
},
|
|
'xod/core/const-string': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { value: e.inputs.inValue };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
inValue: {
|
|
id: 'inValue',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
pulse: {
|
|
id: 'pulse',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/const-string',
|
|
},
|
|
'xod/core/constant-logic': {
|
|
impls: {
|
|
cpp: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n reemitLogic(nid, Outputs::VAL);\n}\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
VAL: {
|
|
id: 'VAL',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/constant-logic',
|
|
},
|
|
'xod/core/constant-number': {
|
|
impls: {
|
|
cpp: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n reemitNumber(nid, Outputs::VAL);\n}\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
VAL: {
|
|
id: 'VAL',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/constant-number',
|
|
},
|
|
'xod/core/digital-input': {
|
|
impls: {
|
|
espruino: "\nmodule.exports.setup = function(e) {\n e.inputs.pin = new Pin(e.inputs.pin);\n\n setWatch(function(evt) {\n e.fire({ state: !evt.state });\n }, e.inputs.pin, {\n edge: 'both',\n repeat: true,\n debounce: 30\n });\n};\n",
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
PIN: {
|
|
id: 'PIN',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
VALUE: {
|
|
id: 'VALUE',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/digital-input',
|
|
},
|
|
'xod/core/digital-output': {
|
|
impls: {
|
|
arduino: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n const int pin = (int)getNumber(nid, Inputs::PIN);\n const bool val = getLogic(nid, Inputs::VALUE);\n\n if (isInputDirty(nid, Inputs::PIN)) {\n ::pinMode(pin, OUTPUT);\n }\n\n ::digitalWrite(pin, val);\n}\n',
|
|
espruino: '\nmodule.exports.evaluate = function(e) {\n digitalWrite(e.inputs.pin, e.inputs.value);\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
PIN: {
|
|
id: 'PIN',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
VALUE: {
|
|
id: 'VALUE',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/digital-output',
|
|
},
|
|
'xod/core/either': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var out = e.inputs.inp ? e.inputs.trueValue : e.inputs.falseValue;\n return { out: out };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
falseValue: {
|
|
id: 'falseValue',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 400,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
inp: {
|
|
id: 'inp',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
trueValue: {
|
|
id: 'trueValue',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/either',
|
|
},
|
|
'xod/core/equal': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var a = e.inputs.a;\n var b = e.inputs.b;\n\n if (a === undefined || b === undefined) {\n return;\n }\n\n return { out: a === b };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/equal',
|
|
},
|
|
'xod/core/file-read': {
|
|
impls: {
|
|
nodejs: "var path = require('path');\nvar fs = require('fs');\n\nmodule.exports.evaluate = function(e) {\n var filename = e.inputs.fileName;\n\n fs.readFile(filename, function (err, data) {\n if (err) {\n e.fire({ error: err.toString() });\n return;\n }\n\n e.fire({ data: data });\n });\n};\n",
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
data: {
|
|
id: 'data',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
error: {
|
|
id: 'error',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
fileName: {
|
|
id: 'fileName',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
pulse: {
|
|
id: 'pulse',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/file-read',
|
|
},
|
|
'xod/core/file-write': {
|
|
impls: {
|
|
nodejs: "var path = require('path');\nvar fs = require('fs');\n\nmodule.exports.evaluate = function(e) {\n var filename = e.inputs.fileName;\n var data = e.inputs.data;\n\n fs.writeFile(filename, data, function (err) {\n if (err) {\n e.fire({ onFailure: err.toString() });\n return;\n }\n\n e.fire({ onSuccess: PULSE });\n });\n};\n",
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
data: {
|
|
id: 'data',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
fileName: {
|
|
id: 'fileName',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
onFailure: {
|
|
id: 'onFailure',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
onSuccess: {
|
|
id: 'onSuccess',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/file-write',
|
|
},
|
|
'xod/core/greater': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var a = e.inputs.a;\n var b = e.inputs.b;\n\n if (a === undefined || b === undefined) {\n return;\n }\n\n return { out: a > b };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/greater',
|
|
},
|
|
'xod/core/greater-equal': {
|
|
impls: {},
|
|
links: {
|
|
BykfK2G49Tx: {
|
|
id: 'BykfK2G49Tx',
|
|
input: {
|
|
nodeId: 'SJb-u2f4qal',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'B1lWO3G4qag',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
HJ6bYhfEcTl: {
|
|
id: 'HJ6bYhfEcTl',
|
|
input: {
|
|
nodeId: 'H1k-d3zN9ae',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'r10lu2MVq6g',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
HJRWt3MV56l: {
|
|
id: 'HJRWt3MV56l',
|
|
input: {
|
|
nodeId: 'B1lWO3G4qag',
|
|
pinKey: 'in',
|
|
},
|
|
output: {
|
|
nodeId: 'H1k-d3zN9ae',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
SynbFhfE9px: {
|
|
id: 'SynbFhfE9px',
|
|
input: {
|
|
nodeId: 'H1k-d3zN9ae',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'HJ6gO2fVcpx',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
B1lWO3G4qag: {
|
|
id: 'B1lWO3G4qag',
|
|
pins: {},
|
|
position: {
|
|
x: 360,
|
|
y: 358,
|
|
},
|
|
type: 'xod/core/not',
|
|
},
|
|
'H1k-d3zN9ae': {
|
|
id: 'H1k-d3zN9ae',
|
|
pins: {},
|
|
position: {
|
|
x: 353,
|
|
y: 249,
|
|
},
|
|
type: 'xod/core/less',
|
|
},
|
|
HJ6gO2fVcpx: {
|
|
id: 'HJ6gO2fVcpx',
|
|
pins: {},
|
|
position: {
|
|
x: 271,
|
|
y: 122,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
'SJb-u2f4qal': {
|
|
id: 'SJb-u2f4qal',
|
|
pins: {},
|
|
position: {
|
|
x: 360,
|
|
y: 479,
|
|
},
|
|
type: 'xod/core/output-boolean',
|
|
},
|
|
r10lu2MVq6g: {
|
|
id: 'r10lu2MVq6g',
|
|
pins: {},
|
|
position: {
|
|
x: 439,
|
|
y: 120,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
},
|
|
path: 'xod/core/greater-equal',
|
|
},
|
|
'xod/core/in-range': {
|
|
impls: {},
|
|
links: {
|
|
BJgMYhMEqpx: {
|
|
id: 'BJgMYhMEqpx',
|
|
input: {
|
|
nodeId: 'HJrb_nz4qTx',
|
|
pinKey: 'HJ6gO2fVcpx',
|
|
},
|
|
output: {
|
|
nodeId: 'BJGbOnfE5pl',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
BkrMYhzV9ax: {
|
|
id: 'BkrMYhzV9ax',
|
|
input: {
|
|
nodeId: 'HywZO2zE9ag',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'HJIZ_2f4qag',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
SJWMK3fN5pg: {
|
|
id: 'SJWMK3fN5pg',
|
|
input: {
|
|
nodeId: 'HJrb_nz4qTx',
|
|
pinKey: 'r10lu2MVq6g',
|
|
},
|
|
output: {
|
|
nodeId: 'SymbO3GNcal',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rJNGK3f49ax: {
|
|
id: 'rJNGK3f49ax',
|
|
input: {
|
|
nodeId: 'HywZO2zE9ag',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'HJrb_nz4qTx',
|
|
pinKey: 'SJb-u2f4qal',
|
|
},
|
|
},
|
|
rJmMF3GEqae: {
|
|
id: 'rJmMF3GEqae',
|
|
input: {
|
|
nodeId: 'HJIZ_2f4qag',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'HJVZ_2GEcpe',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rkzfY2GE9al: {
|
|
id: 'rkzfY2GE9al',
|
|
input: {
|
|
nodeId: 'HJIZ_2f4qag',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'BJGbOnfE5pl',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
ry8zYhMN5px: {
|
|
id: 'ry8zYhMN5px',
|
|
input: {
|
|
nodeId: 'Hy_bd3MNcax',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'HywZO2zE9ag',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
BJGbOnfE5pl: {
|
|
id: 'BJGbOnfE5pl',
|
|
pins: {},
|
|
position: {
|
|
x: 241,
|
|
y: 117,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HJIZ_2f4qag: {
|
|
id: 'HJIZ_2f4qag',
|
|
pins: {},
|
|
position: {
|
|
x: 520,
|
|
y: 271,
|
|
},
|
|
type: 'xod/core/less',
|
|
},
|
|
HJVZ_2GEcpe: {
|
|
id: 'HJVZ_2GEcpe',
|
|
pins: {},
|
|
position: {
|
|
x: 595,
|
|
y: 116,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HJrb_nz4qTx: {
|
|
id: 'HJrb_nz4qTx',
|
|
pins: {},
|
|
position: {
|
|
x: 349,
|
|
y: 270,
|
|
},
|
|
type: 'xod/core/greater-equal',
|
|
},
|
|
Hy_bd3MNcax: {
|
|
id: 'Hy_bd3MNcax',
|
|
pins: {},
|
|
position: {
|
|
x: 432,
|
|
y: 541,
|
|
},
|
|
type: 'xod/core/output-boolean',
|
|
},
|
|
HywZO2zE9ag: {
|
|
id: 'HywZO2zE9ag',
|
|
pins: {},
|
|
position: {
|
|
x: 432,
|
|
y: 407,
|
|
},
|
|
type: 'xod/core/and',
|
|
},
|
|
SymbO3GNcal: {
|
|
id: 'SymbO3GNcal',
|
|
pins: {},
|
|
position: {
|
|
x: 434,
|
|
y: 114,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
},
|
|
path: 'xod/core/in-range',
|
|
},
|
|
'xod/core/input-bool': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/input-bool',
|
|
},
|
|
'xod/core/input-boolean': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/input-boolean',
|
|
},
|
|
'xod/core/input-number': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/input-number',
|
|
},
|
|
'xod/core/input-pulse': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/input-pulse',
|
|
},
|
|
'xod/core/input-string': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__out__: {
|
|
id: '__out__',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/input-string',
|
|
},
|
|
'xod/core/latch': {
|
|
impls: {
|
|
cpp: 'struct State {\n bool value;\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n if (isInputDirty(nid, Inputs::RST)) {\n state->value = false;\n } else if (isInputDirty(nid, Inputs::SET)) {\n state->value = true;\n } else {\n state->value = !state->value;\n }\n\n emitLogic(nid, Outputs::OUT, state->value);\n}\n',
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var inputs = e.inputs;\n var newState;\n\n if (inputs.toggle) {\n newState = !e.context.state;\n } else if (inputs.set) {\n newState = true;\n } else /* if (inputs.reset) */ {\n newState = false;\n }\n\n e.context.state = newState;\n return { state: newState };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
reset: {
|
|
id: 'reset',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 400,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
set: {
|
|
id: 'set',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
state: {
|
|
id: 'state',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
toggle: {
|
|
id: 'toggle',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/latch',
|
|
},
|
|
'xod/core/led': {
|
|
impls: {
|
|
espruino: '\nmodule.exports.setup = function(e) {\n e.context.pin = new Pin(e.props.pin);\n};\n\nmodule.exports.evaluate = function(e) {\n var b = e.inputs.brightness;\n\n // Adjust duty cycle as a power function to align brightness\n // perception by human eye\n var duty = b * b * b;\n\n analogWrite(e.context.pin, duty);\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
brightness: {
|
|
id: 'brightness',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/led',
|
|
},
|
|
'xod/core/led-new': {
|
|
impls: {},
|
|
links: {
|
|
B1izYnz49Te: {
|
|
id: 'B1izYnz49Te',
|
|
input: {
|
|
nodeId: 'rymFnzNcTe',
|
|
pinKey: 'pin',
|
|
},
|
|
output: {
|
|
nodeId: 'HJfKnfVcpe',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
BJqMF3ME5pe: {
|
|
id: 'BJqMF3ME5pe',
|
|
input: {
|
|
nodeId: 'rymFnzNcTe',
|
|
pinKey: 'value',
|
|
},
|
|
output: {
|
|
nodeId: 'HylFhM45pg',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
HkuzYhfE5Tg: {
|
|
id: 'HkuzYhfE5Tg',
|
|
input: {
|
|
nodeId: 'HylFhM45pg',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'HJWF2fNq6l',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
SJtMY3ME9Tx: {
|
|
id: 'SJtMY3ME9Tx',
|
|
input: {
|
|
nodeId: 'HylFhM45pg',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'SJKhfEqTl',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
r13MK3M4cal: {
|
|
id: 'r13MK3M4cal',
|
|
input: {
|
|
nodeId: 'SJKhfEqTl',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'HJWF2fNq6l',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rkvMF3zEq6g: {
|
|
id: 'rkvMF3zEq6g',
|
|
input: {
|
|
nodeId: 'SJKhfEqTl',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'HJWF2fNq6l',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
HJWF2fNq6l: {
|
|
id: 'HJWF2fNq6l',
|
|
pins: {},
|
|
position: {
|
|
x: 418,
|
|
y: 104,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HJfKnfVcpe: {
|
|
id: 'HJfKnfVcpe',
|
|
pins: {},
|
|
position: {
|
|
x: 172,
|
|
y: 104,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HylFhM45pg: {
|
|
id: 'HylFhM45pg',
|
|
pins: {},
|
|
position: {
|
|
x: 453,
|
|
y: 298,
|
|
},
|
|
type: 'xod/math/multiply',
|
|
},
|
|
SJKhfEqTl: {
|
|
id: 'SJKhfEqTl',
|
|
pins: {},
|
|
position: {
|
|
x: 354,
|
|
y: 218,
|
|
},
|
|
type: 'xod/math/multiply',
|
|
},
|
|
rymFnzNcTe: {
|
|
id: 'rymFnzNcTe',
|
|
pins: {
|
|
pin: {
|
|
curried: false,
|
|
},
|
|
},
|
|
position: {
|
|
x: 305,
|
|
y: 430,
|
|
},
|
|
type: 'xod/core/digital-output',
|
|
},
|
|
},
|
|
path: 'xod/core/led-new',
|
|
},
|
|
'xod/core/less': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var a = e.inputs.a;\n var b = e.inputs.b;\n\n if (a === undefined || b === undefined) {\n return;\n }\n\n return { out: a < b };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/less',
|
|
},
|
|
'xod/core/less-equal': {
|
|
impls: {},
|
|
links: {
|
|
B1lQKhzN5al: {
|
|
id: 'B1lQKhzN5al',
|
|
input: {
|
|
nodeId: 'HkUt2MV5pg',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'SJuYhM49pg',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
Bk6MKhMNqpl: {
|
|
id: 'Bk6MKhMNqpl',
|
|
input: {
|
|
nodeId: 'rkDFhMV5Te',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'BJNtnM45al',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
By1QF3fNc6l: {
|
|
id: 'By1QF3fNc6l',
|
|
input: {
|
|
nodeId: 'SJuYhM49pg',
|
|
pinKey: 'in',
|
|
},
|
|
output: {
|
|
nodeId: 'rkDFhMV5Te',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
rkRzthMN5Tg: {
|
|
id: 'rkRzthMN5Tg',
|
|
input: {
|
|
nodeId: 'rkDFhMV5Te',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'ByrK2zNq6e',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
BJNtnM45al: {
|
|
id: 'BJNtnM45al',
|
|
pins: {},
|
|
position: {
|
|
x: 232,
|
|
y: 76,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
ByrK2zNq6e: {
|
|
id: 'ByrK2zNq6e',
|
|
pins: {},
|
|
position: {
|
|
x: 428,
|
|
y: 78,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
HkUt2MV5pg: {
|
|
id: 'HkUt2MV5pg',
|
|
pins: {},
|
|
position: {
|
|
x: 320,
|
|
y: 454,
|
|
},
|
|
type: 'xod/core/output-boolean',
|
|
},
|
|
SJuYhM49pg: {
|
|
id: 'SJuYhM49pg',
|
|
pins: {},
|
|
position: {
|
|
x: 324,
|
|
y: 318,
|
|
},
|
|
type: 'xod/core/not',
|
|
},
|
|
rkDFhMV5Te: {
|
|
id: 'rkDFhMV5Te',
|
|
pins: {},
|
|
position: {
|
|
x: 326,
|
|
y: 196,
|
|
},
|
|
type: 'xod/core/greater',
|
|
},
|
|
},
|
|
path: 'xod/core/less-equal',
|
|
},
|
|
'xod/core/map': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n var inputs = e.inputs;\n var k = (inputs.inp - inputs.inA) / (inputs.inB - inputs.inA);\n var out = inputs.outA + k * (inputs.outB - inputs.outA);\n\n if (inputs.clip) {\n if (inputs.outB > inputs.outA) {\n out = Math.max(inputs.outA, out);\n out = Math.min(inputs.outB, out);\n } else {\n out = Math.max(inputs.outB, out);\n out = Math.min(inputs.outA, out);\n }\n }\n\n return { out: out };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
clip: {
|
|
id: 'clip',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 1000,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
inA: {
|
|
id: 'inA',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
inB: {
|
|
id: 'inB',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 400,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
inp: {
|
|
id: 'inp',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
outA: {
|
|
id: 'outA',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 600,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
outB: {
|
|
id: 'outB',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 800,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/map',
|
|
},
|
|
'xod/core/not': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: !e.inputs.in };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
in: {
|
|
id: 'in',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/not',
|
|
},
|
|
'xod/core/or': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: e.inputs.a || e.inputs.b };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/or',
|
|
},
|
|
'xod/core/output-boolean': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/output-boolean',
|
|
},
|
|
'xod/core/output-number': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/output-number',
|
|
},
|
|
'xod/core/output-pulse': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/output-pulse',
|
|
},
|
|
'xod/core/output-string': {
|
|
impls: {},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
__in__: {
|
|
id: '__in__',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/output-string',
|
|
},
|
|
'xod/core/pot': {
|
|
impls: {
|
|
espruino: '\nmodule.exports.setup = function(e) {\n e.context.pin = new Pin(e.props.pin);\n};\n\nmodule.exports.evaluate = function(e) {\n return { value: analogRead(e.context.pin) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
sample: {
|
|
id: 'sample',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/pot',
|
|
},
|
|
'xod/core/servo': {
|
|
impls: {
|
|
espruino: '\nmodule.exports.setup = function(e) {\n e.context.pin = new Pin(e.props.pin);\n};\n\nmodule.exports.evaluate = function(e) {\n var minPulse = +e.props.minPulse;\n var maxPulse = +e.props.maxPulse;\n var us = minPulse + (maxPulse - minPulse) * e.inputs.value;\n analogWrite(e.context.pin, us / 20000, { freq: 50 });\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
maxPulse: {
|
|
id: 'maxPulse',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
minPulse: {
|
|
id: 'minPulse',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 400,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/servo',
|
|
},
|
|
'xod/core/sort-pair': {
|
|
impls: {},
|
|
links: {
|
|
B17mF3zEcTg: {
|
|
id: 'B17mF3zEcTg',
|
|
input: {
|
|
nodeId: 'BJ6KhzV5Te',
|
|
pinKey: 'inp',
|
|
},
|
|
output: {
|
|
nodeId: 'BkyeKhzV56l',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
H1PXY2fE5pe: {
|
|
id: 'H1PXY2fE5pe',
|
|
input: {
|
|
nodeId: 'BJsFnGN9pe',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'BJ6KhzV5Te',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
'HJ-7Y3zE56e': {
|
|
id: 'HJ-7Y3zE56e',
|
|
input: {
|
|
nodeId: 'BkyeKhzV56l',
|
|
pinKey: 'a',
|
|
},
|
|
output: {
|
|
nodeId: 'rkYt3G49px',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
HJEXF3zVc6l: {
|
|
id: 'HJEXF3zVc6l',
|
|
input: {
|
|
nodeId: 'HJRtnME96g',
|
|
pinKey: 'inp',
|
|
},
|
|
output: {
|
|
nodeId: 'BkyeKhzV56l',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
Hk5XYhzE56g: {
|
|
id: 'Hk5XYhzE56g',
|
|
input: {
|
|
nodeId: 'HJ2Y2GV56l',
|
|
pinKey: '__in__',
|
|
},
|
|
output: {
|
|
nodeId: 'HJRtnME96g',
|
|
pinKey: 'out',
|
|
},
|
|
},
|
|
Sy87Ynz49Te: {
|
|
id: 'Sy87Ynz49Te',
|
|
input: {
|
|
nodeId: 'BJ6KhzV5Te',
|
|
pinKey: 'falseValue',
|
|
},
|
|
output: {
|
|
nodeId: 'B15Y3z45ae',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rkG7FhzVqTx: {
|
|
id: 'rkG7FhzVqTx',
|
|
input: {
|
|
nodeId: 'BkyeKhzV56l',
|
|
pinKey: 'b',
|
|
},
|
|
output: {
|
|
nodeId: 'B15Y3z45ae',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
rkY7K3M4cal: {
|
|
id: 'rkY7K3M4cal',
|
|
input: {
|
|
nodeId: 'HJRtnME96g',
|
|
pinKey: 'falseValue',
|
|
},
|
|
output: {
|
|
nodeId: 'rkYt3G49px',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
ryHXt2fEqax: {
|
|
id: 'ryHXt2fEqax',
|
|
input: {
|
|
nodeId: 'BJ6KhzV5Te',
|
|
pinKey: 'trueValue',
|
|
},
|
|
output: {
|
|
nodeId: 'rkYt3G49px',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
ry_Xt2MV5Tl: {
|
|
id: 'ry_Xt2MV5Tl',
|
|
input: {
|
|
nodeId: 'HJRtnME96g',
|
|
pinKey: 'trueValue',
|
|
},
|
|
output: {
|
|
nodeId: 'B15Y3z45ae',
|
|
pinKey: '__out__',
|
|
},
|
|
},
|
|
},
|
|
nodes: {
|
|
B15Y3z45ae: {
|
|
id: 'B15Y3z45ae',
|
|
pins: {},
|
|
position: {
|
|
x: 671,
|
|
y: 110,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
BJ6KhzV5Te: {
|
|
id: 'BJ6KhzV5Te',
|
|
pins: {},
|
|
position: {
|
|
x: 332,
|
|
y: 386,
|
|
},
|
|
type: 'xod/core/either',
|
|
},
|
|
BJsFnGN9pe: {
|
|
id: 'BJsFnGN9pe',
|
|
pins: {},
|
|
position: {
|
|
x: 327,
|
|
y: 497,
|
|
},
|
|
type: 'xod/core/output-number',
|
|
},
|
|
BkyeKhzV56l: {
|
|
id: 'BkyeKhzV56l',
|
|
pins: {},
|
|
position: {
|
|
x: 422,
|
|
y: 204,
|
|
},
|
|
type: 'xod/core/less',
|
|
},
|
|
HJ2Y2GV56l: {
|
|
id: 'HJ2Y2GV56l',
|
|
pins: {},
|
|
position: {
|
|
x: 528,
|
|
y: 497,
|
|
},
|
|
type: 'xod/core/output-number',
|
|
},
|
|
HJRtnME96g: {
|
|
id: 'HJRtnME96g',
|
|
pins: {},
|
|
position: {
|
|
x: 535,
|
|
y: 383,
|
|
},
|
|
type: 'xod/core/either',
|
|
},
|
|
rkYt3G49px: {
|
|
id: 'rkYt3G49px',
|
|
pins: {},
|
|
position: {
|
|
x: 134,
|
|
y: 91,
|
|
},
|
|
type: 'xod/core/input-number',
|
|
},
|
|
},
|
|
path: 'xod/core/sort-pair',
|
|
},
|
|
'xod/core/split-bool': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.inp) {\n return { outTrue: PULSE };\n } else {\n return { outFalse: PULSE };\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
inp: {
|
|
id: 'inp',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
outFalse: {
|
|
id: 'outFalse',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
outTrue: {
|
|
id: 'outTrue',
|
|
type: 'xod/patch-nodes/output-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/split-bool',
|
|
},
|
|
'xod/core/stdout': {
|
|
impls: {
|
|
nodejs: 'module.exports.evaluate = function(e) {\n var val = String(e.inputs.value);\n process.stdout.write(val);\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/stdout',
|
|
},
|
|
'xod/core/time': {
|
|
impls: {
|
|
js: 'module.exports.evaluate = function(e) {\n return { value: new Date().getTime() };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
pulse: {
|
|
id: 'pulse',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/time',
|
|
},
|
|
'xod/core/triggerable-number': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: e.props.value };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
trigOn: {
|
|
id: 'trigOn',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/triggerable-number',
|
|
},
|
|
'xod/core/ultrasonic-hc-sr04': {
|
|
impls: {
|
|
espruino: "\nvar sonic = require('@amperka/ultrasonic');\n\nmodule.exports.setup = function(e) {\n var pinTrig = new Pin(e.props.pinTrig);\n var pinEcho = new Pin(e.props.pinEcho);\n e.context.device = sonic.connect({\n trigPin: pinTrig,\n echoPin: pinEcho\n });\n e.context.units = e.props.units;\n e.context.isBusy = false;\n};\n\nmodule.exports.evaluate = function(e) {\n if (e.context.isBusy) {\n e.fire({ error: \"busy\" });\n } else {\n e.context.isBusy = true;\n e.context.device.ping(function(err, value) {\n e.context.isBusy = false;\n if (err) {\n e.fire({ error: err.msg });\n } else {\n e.fire({ value: value });\n }\n }, e.context.units);\n }\n};\n",
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
error: {
|
|
id: 'error',
|
|
type: 'xod/patch-nodes/output-string',
|
|
position: {
|
|
x: 200,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
sample: {
|
|
id: 'sample',
|
|
type: 'xod/patch-nodes/input-pulse',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
units: {
|
|
id: 'units',
|
|
type: 'xod/patch-nodes/input-string',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
value: {
|
|
id: 'value',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/ultrasonic-hc-sr04',
|
|
},
|
|
'xod/core/valveNumber': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n if (e.inputs.cond) {\n e.fire({ out: e.inputs.in });\n }\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
cond: {
|
|
id: 'cond',
|
|
type: 'xod/patch-nodes/input-boolean',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
in: {
|
|
id: 'in',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/core/valveNumber',
|
|
},
|
|
'xod/math/add': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: (e.inputs.a + e.inputs.b) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/math/add',
|
|
},
|
|
'xod/math/divide': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: (e.inputs.a / e.inputs.b) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/math/divide',
|
|
},
|
|
'xod/math/multiply': {
|
|
impls: {
|
|
cpp: 'struct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(NodeId nid, State* state) {\n const Number in1 = getNumber(nid, Inputs::A);\n const Number in2 = getNumber(nid, Inputs::B);\n emitNumber(nid, Outputs::OUT, in1 * in2);\n}\n',
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: (e.inputs.a * e.inputs.b) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/math/multiply',
|
|
},
|
|
'xod/math/subtrac': {
|
|
impls: {
|
|
js: '\nmodule.exports.evaluate = function(e) {\n return { out: (e.inputs.a - e.inputs.b) };\n};\n',
|
|
},
|
|
links: {},
|
|
nodes: {
|
|
noNativeImpl: {
|
|
description: '',
|
|
id: 'noNativeImpl',
|
|
label: '',
|
|
position: {
|
|
x: 100,
|
|
y: 100,
|
|
},
|
|
type: 'xod/patch-nodes/not-implemented-in-xod',
|
|
},
|
|
a: {
|
|
id: 'a',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
b: {
|
|
id: 'b',
|
|
type: 'xod/patch-nodes/input-number',
|
|
position: {
|
|
x: 200,
|
|
y: 0,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
out: {
|
|
id: 'out',
|
|
type: 'xod/patch-nodes/output-number',
|
|
position: {
|
|
x: 0,
|
|
y: 300,
|
|
},
|
|
label: '',
|
|
description: '',
|
|
},
|
|
},
|
|
path: 'xod/math/subtrac',
|
|
},
|
|
},
|
|
};
|