diff --git a/index.html b/index.html
index c3d83f514850a15fdbb9840b14affa509145e594..c839a1f5e8c6112b69d8ce6268f5064f2d031e1b 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
<!-- these three disable caching -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
- <meta http-equiv="Expires" content="0" />
+ <meta http-equiv="Expires" content="-1" />
</head>
<body>
diff --git a/save/systems/sysattempt-03.json b/save/systems/dev-recursivelinks-01.json
similarity index 64%
rename from save/systems/sysattempt-03.json
rename to save/systems/dev-recursivelinks-01.json
index be463a3c283dd83803745950e05e3a6203b61cc0..99ae32aaca9d2643071ecd4e0d05a849cd8927a5 100644
--- a/save/systems/sysattempt-03.json
+++ b/save/systems/dev-recursivelinks-01.json
@@ -263,10 +263,6 @@
{
"name": "mgrMsgs",
"type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "int32"
}
],
"outputs": [
@@ -289,16 +285,6 @@
"inHunkInput": 2
}
]
- },
- {
- "name": "auto_0_2",
- "type": "int32",
- "connections": [
- {
- "inHunkIndex": 5,
- "inHunkInput": 2
- }
- ]
}
],
"states": [
@@ -315,14 +301,141 @@
{
"name": "inputList",
"type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (int32)"
+ "value": "mgrMsgs (byteArray)"
},
{
"name": "outputList",
"type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (int32)"
+ "value": "mgrMsgs (byteArray)"
}
- ]
+ ],
+ "contains": {
+ "interpreterName": "ponyo",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "ponyo_one",
+ "inputs": [
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_1",
+ "inputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 3
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ }
+ ]
+ },
+ {
+ "type": "comm/COBSerialUSB",
+ "name": "comm/COBSerialUSB_2",
+ "inputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "comm/COBSerialRJ45",
+ "name": "comm/COBSerialRJ45_3",
+ "inputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ }
+ ],
+ "states": []
+ }
+ ]
+ }
},
{
"type": "comm/cobserial",
@@ -362,58 +475,6 @@
"value": false
}
]
- },
- {
- "type": "control/saturnjog",
- "name": "control/saturnjog_5",
- "inputs": [
- {
- "name": "xNegPressure",
- "type": "boolean"
- },
- {
- "name": "xPosPressure",
- "type": "boolean"
- },
- {
- "name": "xStepsMade",
- "type": "int32"
- }
- ],
- "outputs": [
- {
- "name": "xStepsNextIncrement",
- "type": "int32",
- "connections": [
- {
- "inHunkIndex": 3,
- "inHunkInput": 2
- }
- ]
- }
- ],
- "states": [
- {
- "name": "intervalRunning",
- "type": "boolean",
- "value": false
- },
- {
- "name": "msPerInterval",
- "type": "number",
- "value": 20
- },
- {
- "name": "accel (s/s^2)",
- "type": "number",
- "value": 2000
- },
- {
- "name": "max (s/s)",
- "type": "number",
- "value": 2000
- }
- ]
}
]
}
@@ -465,154 +526,7 @@
"type": "number",
"value": 2042
}
- ],
- "contains": {
- "interpreterName": "ponyo",
- "interpreterVersion": "v0.1",
- "hunks": [
- {
- "type": "manager",
- "name": "ponyo_one",
- "inputs": [
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray"
- }
- ],
- "outputs": [
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray",
- "connections": [
- {
- "inHunkIndex": 1,
- "inHunkInput": 1
- }
- ]
- }
- ],
- "states": []
- },
- {
- "type": "link",
- "name": "link_1",
- "inputs": [
- {
- "name": "data_1024",
- "type": "byteArray"
- },
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "int32"
- }
- ],
- "outputs": [
- {
- "name": "data_1024",
- "type": "byteArray",
- "connections": [
- {
- "inHunkIndex": 2,
- "inHunkInput": 0
- }
- ]
- },
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray",
- "connections": [
- {
- "inHunkIndex": 0,
- "inHunkInput": 0
- }
- ]
- },
- {
- "name": "auto_0_2",
- "type": "int32",
- "connections": [
- {
- "inHunkIndex": 3,
- "inHunkInput": 0
- }
- ]
- }
- ],
- "states": [
- {
- "name": "isActive",
- "type": "boolean",
- "value": true
- },
- {
- "name": "otherLink",
- "type": "uint16",
- "value": 3
- },
- {
- "name": "inputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (int32)"
- },
- {
- "name": "outputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (int32)"
- }
- ]
- },
- {
- "type": "comm/COBSerialUSB",
- "name": "comm/COBSerialUSB_2",
- "inputs": [
- {
- "name": "data_1024",
- "type": "byteArray"
- }
- ],
- "outputs": [
- {
- "name": "data_1024",
- "type": "byteArray",
- "connections": [
- {
- "inHunkIndex": 1,
- "inHunkInput": 0
- }
- ]
- }
- ],
- "states": []
- },
- {
- "type": "stepper",
- "name": "stepper_3",
- "inputs": [
- {
- "name": "increment",
- "type": "int32"
- }
- ],
- "outputs": [
- {
- "name": "increment",
- "type": "int32",
- "connections": [
- {
- "inHunkIndex": 1,
- "inHunkInput": 2
- }
- ]
- }
- ],
- "states": []
- }
- ]
- }
+ ]
},
{
"type": "view",
@@ -659,6 +573,29 @@
}
],
"states": []
+ },
+ {
+ "type": "debug/bytearrayoutput",
+ "name": "debug/bytearrayoutput_6",
+ "inputs": [],
+ "outputs": [
+ {
+ "name": "source",
+ "type": "byteArray"
+ }
+ ],
+ "states": [
+ {
+ "name": "gobutton",
+ "type": "boolean",
+ "value": false
+ },
+ {
+ "name": "prefix",
+ "type": "string",
+ "value": "85, 86, 87, 88"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/save/systems/ponyo-bridge-rf.json b/save/systems/ponyo-bridge-rf.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3151708be8d1962ca3aaed05cf3c959486ead38
--- /dev/null
+++ b/save/systems/ponyo-bridge-rf.json
@@ -0,0 +1,561 @@
+{
+ "interpreterName": "cuttlefish",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "nrol",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "view",
+ "name": "tlview",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_2",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ },
+ {
+ "name": "auto_0_3",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 4,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "auto_0_2",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 5,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 1
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
+ }
+ ],
+ "contains": {
+ "interpreterName": "nautilus",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "nautilus",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_1",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ },
+ {
+ "name": "auto_0_3",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "auto_0_2",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 2
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
+ }
+ ]
+ },
+ {
+ "type": "comm/websocketserver",
+ "name": "comm/websocketserver_2",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "connected"
+ },
+ {
+ "name": "port",
+ "type": "number",
+ "value": 2042
+ }
+ ]
+ },
+ {
+ "type": "link",
+ "name": "link_3",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 4,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 2
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 1
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ }
+ ],
+ "contains": {
+ "interpreterName": "ponyo",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "ponyo_one",
+ "inputs": [
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_1",
+ "inputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 3
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ }
+ ]
+ },
+ {
+ "type": "comm/COBSerialUSB",
+ "name": "comm/COBSerialUSB_2",
+ "inputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data_1024",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ }
+ ]
+ }
+ },
+ {
+ "type": "comm/cobserial",
+ "name": "comm/cobserial_4",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "closed"
+ },
+ {
+ "name": "pid",
+ "type": "string",
+ "value": "8022"
+ },
+ {
+ "name": "refresh",
+ "type": "boolean",
+ "value": false
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "comm/websocketclient",
+ "name": "comm/websocketclient_3",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "open"
+ },
+ {
+ "name": "retrycount",
+ "type": "number",
+ "value": 3
+ },
+ {
+ "name": "retryreset",
+ "type": "boolean",
+ "value": false
+ },
+ {
+ "name": "address",
+ "type": "string",
+ "value": "127.0.0.1"
+ },
+ {
+ "name": "port",
+ "type": "number",
+ "value": 2042
+ }
+ ]
+ },
+ {
+ "type": "view",
+ "name": "view_4",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "view",
+ "name": "view_5",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 2
+ }
+ ]
+ }
+ ],
+ "states": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/save/systems/ponyo-bridge.json b/save/systems/ponyo-bridge.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2dd1ad3a05c2244b2ed2b2c1fdcab3b19558479
--- /dev/null
+++ b/save/systems/ponyo-bridge.json
@@ -0,0 +1,451 @@
+{
+ "interpreterName": "cuttlefish",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "nrol",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "view",
+ "name": "tlview",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_2",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ },
+ {
+ "name": "auto_0_3",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 4,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "auto_0_2",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 5,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 1
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
+ }
+ ],
+ "contains": {
+ "interpreterName": "nautilus",
+ "interpreterVersion": "v0.1",
+ "hunks": [
+ {
+ "type": "manager",
+ "name": "nautilus",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "link",
+ "name": "link_1",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ },
+ {
+ "name": "auto_0_3",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 0,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "auto_0_2",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": true
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 2
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
+ }
+ ]
+ },
+ {
+ "type": "comm/websocketserver",
+ "name": "comm/websocketserver_2",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "connected"
+ },
+ {
+ "name": "port",
+ "type": "number",
+ "value": 2042
+ }
+ ]
+ },
+ {
+ "type": "link",
+ "name": "link_3",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 4,
+ "inHunkInput": 0
+ }
+ ]
+ },
+ {
+ "name": "mgrMsgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 1,
+ "inHunkInput": 2
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "isActive",
+ "type": "boolean",
+ "value": false
+ },
+ {
+ "name": "otherLink",
+ "type": "uint16",
+ "value": 0
+ },
+ {
+ "name": "inputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ },
+ {
+ "name": "outputList",
+ "type": "string",
+ "value": "mgrMsgs (byteArray)"
+ }
+ ]
+ },
+ {
+ "type": "comm/cobserial",
+ "name": "comm/cobserial_4",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 3,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "closed"
+ },
+ {
+ "name": "pid",
+ "type": "string",
+ "value": "8022"
+ },
+ {
+ "name": "refresh",
+ "type": "boolean",
+ "value": false
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "comm/websocketclient",
+ "name": "comm/websocketclient_3",
+ "inputs": [
+ {
+ "name": "data",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "data",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 0
+ }
+ ]
+ }
+ ],
+ "states": [
+ {
+ "name": "status",
+ "type": "string",
+ "value": "open"
+ },
+ {
+ "name": "retrycount",
+ "type": "number",
+ "value": 3
+ },
+ {
+ "name": "retryreset",
+ "type": "boolean",
+ "value": false
+ },
+ {
+ "name": "address",
+ "type": "string",
+ "value": "127.0.0.1"
+ },
+ {
+ "name": "port",
+ "type": "number",
+ "value": 2042
+ }
+ ]
+ },
+ {
+ "type": "view",
+ "name": "view_4",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 1
+ }
+ ]
+ }
+ ],
+ "states": []
+ },
+ {
+ "type": "view",
+ "name": "view_5",
+ "inputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "msgs",
+ "type": "byteArray",
+ "connections": [
+ {
+ "inHunkIndex": 2,
+ "inHunkInput": 2
+ }
+ ]
+ }
+ ],
+ "states": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/save/systems/sysattempt-02.json b/save/systems/sysattempt-02.json
deleted file mode 100644
index 12b5883add566ab5fd81a3a3f1967439f3cb8664..0000000000000000000000000000000000000000
--- a/save/systems/sysattempt-02.json
+++ /dev/null
@@ -1,550 +0,0 @@
-{
- "interpreterName": "cuttlefish",
- "interpreterVersion": "v0.1",
- "hunks": [{
- "type": "manager",
- "name": "nrol",
- "inputs": [{
- "name": "msgs",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "msgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 0
- }]
- }],
- "states": []
- },
- {
- "type": "view",
- "name": "tlview",
- "inputs": [{
- "name": "msgs",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "msgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 0,
- "inHunkInput": 0
- }]
- }],
- "states": []
- },
- {
- "type": "link",
- "name": "link_2",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "byteArray"
- }
- ],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 3,
- "inHunkInput": 0
- }]
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 4,
- "inHunkInput": 0
- }]
- },
- {
- "name": "auto_0_2",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 5,
- "inHunkInput": 0
- }]
- }
- ],
- "states": [{
- "name": "isActive",
- "type": "boolean",
- "value": true
- },
- {
- "name": "otherLink",
- "type": "uint16",
- "value": 1
- },
- {
- "name": "inputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
- },
- {
- "name": "outputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
- }
- ],
- "contains": {
- "interpreterName": "nautilus",
- "interpreterVersion": "v0.1",
- "hunks": [{
- "type": "manager",
- "name": "nautilus",
- "inputs": [{
- "name": "msgs",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "msgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 1
- }]
- }],
- "states": []
- },
- {
- "type": "link",
- "name": "link_1",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "byteArray"
- }
- ],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 2,
- "inHunkInput": 0
- }]
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 0,
- "inHunkInput": 0
- }]
- },
- {
- "name": "auto_0_2",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 3,
- "inHunkInput": 1
- }]
- }
- ],
- "states": [{
- "name": "isActive",
- "type": "boolean",
- "value": true
- },
- {
- "name": "otherLink",
- "type": "uint16",
- "value": 2
- },
- {
- "name": "inputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (byteArray)"
- },
- {
- "name": "outputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (byteArray)"
- }
- ]
- },
- {
- "type": "comm/websocketserver",
- "name": "comm/websocketserver_2",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 0
- }]
- }],
- "states": [{
- "name": "status",
- "type": "string",
- "value": "connected"
- },
- {
- "name": "port",
- "type": "number",
- "value": 2042
- }
- ]
- },
- {
- "type": "link",
- "name": "link_3",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "int32"
- }
- ],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 4,
- "inHunkInput": 0
- }]
- },
- {
- "name": "mgrMsgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 2
- }]
- },
- {
- "name": "auto_0_2",
- "type": "int32",
- "connections": [{
- "inHunkIndex": 5,
- "inHunkInput": 2
- }]
- }
- ],
- "states": [{
- "name": "isActive",
- "type": "boolean",
- "value": true
- },
- {
- "name": "otherLink",
- "type": "uint16",
- "value": 1
- },
- {
- "name": "inputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (int32)"
- },
- {
- "name": "outputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (int32)"
- }
- ],
- "contains": {
- "interpreterName": "ponyo",
- "interpreterVersion": "v0.1",
- "hunks": [{
- "type": "manager",
- "name": "ponyo_one",
- "inputs": [{
- "name": "mgrMsgs_1024",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "mgrMsgs_1024",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 1
- }]
- }],
- "states": []
- },
- {
- "type": "link",
- "name": "link_1",
- "inputs": [{
- "name": "data_1024",
- "type": "byteArray"
- },
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray"
- },
- {
- "name": "auto_0_3",
- "type": "int32"
- }
- ],
- "outputs": [{
- "name": "data_1024",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 2,
- "inHunkInput": 0
- }]
- },
- {
- "name": "mgrMsgs_1024",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 0,
- "inHunkInput": 0
- }]
- },
- {
- "name": "auto_0_2",
- "type": "int32",
- "connections": [{
- "inHunkIndex": 3,
- "inHunkInput": 0
- }]
- }
- ],
- "states": [{
- "name": "isActive",
- "type": "boolean",
- "value": true
- },
- {
- "name": "otherLink",
- "type": "uint16",
- "value": 3
- },
- {
- "name": "inputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_3 (int32)"
- },
- {
- "name": "outputList",
- "type": "string",
- "value": "mgrMsgs (byteArray), auto_0_2 (int32)"
- }
- ]
- },
- {
- "type": "comm/COBSerialUSB",
- "name": "comm/COBSerialUSB_2",
- "inputs": [{
- "name": "data_1024",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "data_1024",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 0
- }]
- }],
- "states": []
- },
- {
- "type": "stepper",
- "name": "stepper_3",
- "inputs": [{
- "name": "increment",
- "type": "int32"
- }],
- "outputs": [{
- "name": "increment",
- "type": "int32",
- "connections": [{
- "inHunkIndex": 1,
- "inHunkInput": 2
- }]
- }],
- "states": []
- }
- ]
- }
- },
- {
- "type": "comm/cobserial",
- "name": "comm/cobserial_4",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 3,
- "inHunkInput": 0
- }]
- }],
- "states": [{
- "name": "status",
- "type": "string",
- "value": "closed"
- },
- {
- "name": "pid",
- "type": "string",
- "value": "8022"
- },
- {
- "name": "refresh",
- "type": "boolean",
- "value": false
- }
- ]
- },
- {
- "type": "control/saturnjog",
- "name": "control/saturnjog_5",
- "inputs": [{
- "name": "xNegPressure",
- "type": "boolean"
- },
- {
- "name": "xPosPressure",
- "type": "boolean"
- },
- {
- "name": "xStepsMade",
- "type": "int32"
- }
- ],
- "outputs": [{
- "name": "xStepsNextIncrement",
- "type": "int32",
- "connections": [{
- "inHunkIndex": 3,
- "inHunkInput": 2
- }]
- }],
- "states": [{
- "name": "intervalRunning",
- "type": "boolean",
- "value": false
- },
- {
- "name": "msPerInterval",
- "type": "number",
- "value": 20
- },
- {
- "name": "accel (s/s^2)",
- "type": "number",
- "value": 2000
- },
- {
- "name": "max (s/s)",
- "type": "number",
- "value": 2000
- }
- ]
- }
- ]
- }
- },
- {
- "type": "comm/websocketclient",
- "name": "comm/websocketclient_3",
- "inputs": [{
- "name": "data",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "data",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 2,
- "inHunkInput": 0
- }]
- }],
- "states": [{
- "name": "status",
- "type": "string",
- "value": "open"
- },
- {
- "name": "retrycount",
- "type": "number",
- "value": 3
- },
- {
- "name": "retryreset",
- "type": "boolean",
- "value": false
- },
- {
- "name": "address",
- "type": "string",
- "value": "127.0.0.1"
- },
- {
- "name": "port",
- "type": "number",
- "value": 2042
- }
- ]
- },
- {
- "type": "view",
- "name": "view_4",
- "inputs": [{
- "name": "msgs",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "msgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 2,
- "inHunkInput": 1
- }]
- }],
- "states": []
- },
- {
- "type": "view",
- "name": "view_5",
- "inputs": [{
- "name": "msgs",
- "type": "byteArray"
- }],
- "outputs": [{
- "name": "msgs",
- "type": "byteArray",
- "connections": [{
- "inHunkIndex": 2,
- "inHunkInput": 2
- }]
- }],
- "states": []
- }
- ]
-}
diff --git a/view/vcontextmenu.js b/view/vcontextmenu.js
index 6738be63ee757c1b065b74f415289e6f825ee47c..743ebd5becc72dfbe30b51b8cb2d4224ff61d987 100644
--- a/view/vcontextmenu.js
+++ b/view/vcontextmenu.js
@@ -243,7 +243,7 @@ function cfContextMenu(evt, view, dt) {
} // end recursive cycle ?
// once that runs to completion, should have the hierarchichal patch
- console.log('BIG UPS: a system patch ... ', tlp)
+ console.log('CONSIDER THIS: a system patch ... ', tlp)
// now present-and-save
setupForSave(ce, tlp)
}) // end save entire system
diff --git a/view/vtoplevel.js b/view/vtoplevel.js
index be870d5c88a271d38cda96e4f2d4609a8a9612d4..972b355c82945615963c909a4edbaa4e0fd20573 100644
--- a/view/vtoplevel.js
+++ b/view/vtoplevel.js
@@ -225,7 +225,7 @@ function makeTopLevel(view){
// ok, traces through links / heirarchy, returning final destination
// of *connected* links
if (output.connections.length !== 1) {
- // no connections exist, er, we can only do this for singleton lines
+ // no connections exist, er, we can only do this for singleton lines
return false
}
let next = output.connections[0]
@@ -268,7 +268,8 @@ function makeTopLevel(view){
*/
- view.buildRoute = (output, input) => {
+ view.buildRoute = (output, input, debug) => {
+ debug = true
return new Promise((resolve, reject) => {
// first, we can check
let pt = trace(output)
@@ -285,60 +286,60 @@ function makeTopLevel(view){
resolve()
})
} else {
- console.log("BUILD: diving")
- let lcounter = 0
- let twocounter = 0
- // well, ya didn't know it, but you're here to write a graph traversal scheme
- // one must start somewhere,
- // let's find the links of the output's parent
- for (let df of opv.defs) {
- if (df.type === 'link') {
- console.log(`BUILD: find link ${df.name}`)
- let dfr = df.reciprocalLink
- if (dfr) {
- console.log(`BUILD: find reciprocal link ${dfr.name} for ${df.name}`)
- // that's one traverse, let's check
- if (dfr.parentView === ipv) {
- // this is the 'other side'
- // let's add that side first ... bottom - up
- // this is the link's state item describing it's outputs, as it stands:
- let opList = dfr.states[3].value
- opList += `, auto_${lcounter}_${dfr.outputs.length} (${output.type})`
- console.log("BUILD: to req state for", opList)
- // have to req via this view,
- dfr.parentView.requestStateChange(dfr.states[3], opList).then(() => {
- // tricky, tricky, and dangerous:
- // we requested a state change on the dfr object,
- // that swapped in a new definition (bc this state change req's an addition to outputs)
- // so,
- dfr = dfr.parentView.defs[dfr.ind]
- return dfr.parentView.requestAddLink(dfr.outputs[dfr.outputs.length - 1], input)
- }).then(() => {
- let ipList = df.states[2].value
- ipList += `, auto_${lcounter}_${dfr.outputs.length} (${output.type})`
- return df.parentView.requestStateChange(df.states[2], ipList)
- }).then(() => {
- // swap happened,
- df = df.parentView.defs[df.ind]
- return df.parentView.requestAddLink(output, df.inputs[df.inputs.length - 1])
- }).then(() => {
- // note: !: since we repalced a few link definitions,
- // we need to hook back their .reciprocalLinks,
- // we can do that by calling:
- view.globalOrganize()
- // and finally,
- resolve()
+ // ok, we have two views, and some string of links between them
+ // let's first see if we can just find the route,
+ // we are the top level ... but we should hunt by link,
+ let recurse = (view, entrance, trace) => {
+ if(debug) console.log(`BR: recurse to ${view.name}`)
+ let ntrace = JSON.parse(JSON.stringify(trace))
+ for(let df of view.defs){
+ if(df.type === 'link' && df !== entrance){
+ if(df.reciprocalLink){
+ ntrace.push({
+ entrance: {
+ link: df.name,
+ view: view.name
+ },
+ exit: {
+ link: df.reciprocalLink.name,
+ view: df.reciprocalLink.parentView.name
+ }
})
- } else {
- console.error('no second layer recursion yet, pls write, thx')
- // would do same search over defs, for links, at this layer ...
- }
- } else {
- console.log(`BUILD: no reciprocal link for ${df.name}`)
- }
+ if(df.reciprocalLink.parentView === ipv){
+ if(debug) console.log("BR: Makes")
+ return ntrace;
+ } else {
+ return recurse(df.reciprocalLink.parentView, df.reciprocalLink, ntrace)
+ }
+ }// no reciprocalLink
+ }// not a link
}
}
- }
+ let route = recurse(opv, null, [])
+ if(debug) console.log("BR Recurse Return: ", route)
+ // should we resolve those objects? probably safe to assume that view names are unique,
+ // these are the kinds of code snippets that happen when jake is betwixt cpp and js
+ let resolver = (obj) => {
+ // jeez
+ let realView = view.defs.find((cand) => {
+ return cand.name === obj.view
+ })
+ let handle = view
+ if(realView.name !== "tlview") handle = realView.hunk
+ let realLink = handle.defs.find((cand) => {
+ return cand.name === obj.link
+ })
+ obj.view = handle
+ obj.link = realLink
+ }
+ for(let item of route){
+ resolver(item.entrance)
+ resolver(item.exit)
+ }
+ if(debug) console.log("BR: resolved to", route)
+ // OK: we gotem
+
+ } // end not-same-view case,
})
}
@@ -532,8 +533,7 @@ function makeTopLevel(view){
})
} else {
if(debug){
- console.log(`RESTORE SYSTEM: nothing contined in next link`)
- console.log(nl)
+ console.log(`RESTORE SYSTEM: nothing contained in next link`)
}
}
} else {
@@ -563,3 +563,59 @@ function makeTopLevel(view){
}
export default makeTopLevel
+
+/*
+ if(debug) console.log("BUILD: diving")
+ let lcounter = 0
+ let twocounter = 0
+ // well, ya didn't know it, but you're here to write a graph traversal scheme
+ // one must start somewhere,
+ // let's find the links of the output's parent
+ for (let df of opv.defs) {
+ if (df.type === 'link') {
+ if(debug) console.log(`BUILD: find link ${df.name}`)
+ let dfr = df.reciprocalLink
+ if (dfr) {
+ if(debug) console.log(`BUILD: find reciprocal link ${dfr.name} for ${df.name}`)
+ // that's one traverse, let's check
+ if (dfr.parentView === ipv) {
+ // this is the 'other side'
+ // let's add that side first ... bottom - up
+ // this is the link's state item describing it's outputs, as it stands:
+ let opList = dfr.states[3].value
+ opList += `, auto_${lcounter}_${dfr.outputs.length} (${output.type})`
+ if(debug) console.log("BUILD: to req state for", opList)
+ // have to req via this view,
+ dfr.parentView.requestStateChange(dfr.states[3], opList).then(() => {
+ // tricky, tricky, and dangerous:
+ // we requested a state change on the dfr object,
+ // that swapped in a new definition (bc this state change req's an addition to outputs)
+ // so,
+ dfr = dfr.parentView.defs[dfr.ind]
+ return dfr.parentView.requestAddLink(dfr.outputs[dfr.outputs.length - 1], input)
+ }).then(() => {
+ let ipList = df.states[2].value
+ ipList += `, auto_${lcounter}_${dfr.outputs.length} (${output.type})`
+ return df.parentView.requestStateChange(df.states[2], ipList)
+ }).then(() => {
+ // swap happened,
+ df = df.parentView.defs[df.ind]
+ return df.parentView.requestAddLink(output, df.inputs[df.inputs.length - 1])
+ }).then(() => {
+ // note: !: since we repalced a few link definitions,
+ // we need to hook back their .reciprocalLinks,
+ // we can do that by calling:
+ view.globalOrganize()
+ // and finally,
+ resolve()
+ })
+ } else {
+ console.error('no second layer recursion yet, pls write, thx')
+ // would do same search over defs, for links, at this layer ...
+ }
+ } else {
+ console.log(`BUILD: no reciprocal link for ${df.name}`)
+ }
+ }
+ }
+*/