From 66ed7fb0a5d7c1b62dc8d306d637b09b2085ff8e Mon Sep 17 00:00:00 2001
From: Jake Read <jake.read@cba.mit.edu>
Date: Thu, 31 Oct 2019 17:15:08 -0400
Subject: [PATCH] close loop mseg -> cpp

---
 save/systems/dbg-l0.json | 275 ++++++++++++++++++++++++
 save/systems/dbg-l1.json | 439 +++++++++++++++++++++++++++++++++++++++
 typeset.js               |  37 ++++
 3 files changed, 751 insertions(+)
 create mode 100644 save/systems/dbg-l0.json
 create mode 100644 save/systems/dbg-l1.json

diff --git a/save/systems/dbg-l0.json b/save/systems/dbg-l0.json
new file mode 100644
index 0000000..8950c35
--- /dev/null
+++ b/save/systems/dbg-l0.json
@@ -0,0 +1,275 @@
+{
+  "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"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "view",
+      "name": "tlview",
+      "inputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "0",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "link",
+      "name": "link_2",
+      "inputs": [
+        {
+          "name": "data",
+          "type": "byteArray"
+        },
+        {
+          "name": "mgrMsgs",
+          "type": "byteArray"
+        },
+        {
+          "name": "segs",
+          "type": "MDmseg"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "data",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "3",
+              "inHunkInput": "0"
+            }
+          ]
+        },
+        {
+          "name": "mgrMsgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "4",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "isActive",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "otherLink",
+          "type": "uint16",
+          "value": "0"
+        },
+        {
+          "name": "inputList",
+          "type": "string",
+          "value": "mgrMsgs (byteArray), segs (MDmseg)"
+        },
+        {
+          "name": "outputList",
+          "type": "string",
+          "value": "mgrMsgs (byteArray)"
+        }
+      ]
+    },
+    {
+      "type": "pipes/vfptc",
+      "name": "pipes/vfptc_3",
+      "inputs": [
+        {
+          "name": "data",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "data",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "pipe status",
+          "type": "string",
+          "value": "open"
+        },
+        {
+          "name": "websocket port",
+          "type": "string",
+          "value": "2042"
+        },
+        {
+          "name": "usb product id",
+          "type": "string",
+          "value": "8022"
+        },
+        {
+          "name": "pipe reset",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "serialport status",
+          "type": "string",
+          "value": "open"
+        }
+      ]
+    },
+    {
+      "type": "view",
+      "name": "view_4",
+      "inputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "1"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "adhoc/tpath",
+      "name": "adhoc/tpath_5",
+      "outputs": [
+        {
+          "name": "position",
+          "type": "array",
+          "connections": [
+            {
+              "inHunkIndex": "6",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "mm/pix",
+          "type": "number",
+          "value": "0.35277777777777775"
+        },
+        {
+          "name": "longpath",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "shortpath",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "sl2path",
+          "type": "boolean",
+          "value": "false"
+        }
+      ]
+    },
+    {
+      "type": "adhoc/saturn",
+      "name": "adhoc/saturn_6",
+      "inputs": [
+        {
+          "name": "posn",
+          "type": "array"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "posn",
+          "type": "array",
+          "connections": [
+            {
+              "inHunkIndex": "7",
+              "inHunkInput": "0"
+            }
+          ]
+        },
+        {
+          "name": "motionSegment",
+          "type": "MDmseg",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "2"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "data/logger",
+      "name": "data/logger_7",
+      "inputs": [
+        {
+          "name": "tolog",
+          "type": "reference"
+        }
+      ],
+      "states": [
+        {
+          "name": "prefix",
+          "type": "string",
+          "value": "LOG:"
+        },
+        {
+          "name": "console",
+          "type": "boolean",
+          "value": "false"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/save/systems/dbg-l1.json b/save/systems/dbg-l1.json
new file mode 100644
index 0000000..211a227
--- /dev/null
+++ b/save/systems/dbg-l1.json
@@ -0,0 +1,439 @@
+{
+  "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"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "view",
+      "name": "tlview",
+      "inputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "0",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "link",
+      "name": "link_2",
+      "inputs": [
+        {
+          "name": "data",
+          "type": "byteArray"
+        },
+        {
+          "name": "mgrMsgs",
+          "type": "byteArray"
+        },
+        {
+          "name": "segs",
+          "type": "MDmseg"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "data",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "3",
+              "inHunkInput": "0"
+            }
+          ]
+        },
+        {
+          "name": "mgrMsgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "4",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "isActive",
+          "type": "boolean",
+          "value": "true"
+        },
+        {
+          "name": "otherLink",
+          "type": "uint16",
+          "value": "1"
+        },
+        {
+          "name": "inputList",
+          "type": "string",
+          "value": "mgrMsgs (byteArray), segs (MDmseg)"
+        },
+        {
+          "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"
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            "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"
+                  }
+                ]
+              },
+              {
+                "name": "segs",
+                "type": "MDmseg",
+                "connections": [
+                  {
+                    "inHunkIndex": "4",
+                    "inHunkInput": "0"
+                  }
+                ]
+              }
+            ],
+            "states": [
+              {
+                "name": "isActive",
+                "type": "boolean",
+                "value": "true"
+              },
+              {
+                "name": "otherLink",
+                "type": "uint16",
+                "value": "2"
+              },
+              {
+                "name": "inputList",
+                "type": "string",
+                "value": "mgrMsgs (byteArray)"
+              },
+              {
+                "name": "outputList",
+                "type": "string",
+                "value": "mgrMsgs (byteArray), segs (MDmseg)"
+              }
+            ]
+          },
+          {
+            "type": "comm/COBS_USB",
+            "name": "comm/COBS_USB_2",
+            "inputs": [
+              {
+                "name": "data_1024",
+                "type": "byteArray"
+              }
+            ],
+            "outputs": [
+              {
+                "name": "data_1024",
+                "type": "byteArray",
+                "connections": [
+                  {
+                    "inHunkIndex": "1",
+                    "inHunkInput": "0"
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            "type": "stepper",
+            "name": "step_driver",
+            "inputs": [
+              {
+                "name": "increment",
+                "type": "int32"
+              },
+              {
+                "name": "enable",
+                "type": "boolean"
+              }
+            ],
+            "outputs": [
+              {
+                "name": "increment",
+                "type": "int32"
+              },
+              {
+                "name": "stallGuard",
+                "type": "uint32"
+              }
+            ],
+            "states": [
+              {
+                "name": "current (6-24)",
+                "type": "uint16",
+                "value": "16"
+              },
+              {
+                "name": "enable",
+                "type": "boolean",
+                "value": "true"
+              }
+            ]
+          },
+          {
+            "type": "control/MDtoDmseg",
+            "name": "control/MDtoDmseg_4",
+            "inputs": [
+              {
+                "name": "motionSegment",
+                "type": "MDmseg"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "type": "pipes/vfptc",
+      "name": "pipes/vfptc_3",
+      "inputs": [
+        {
+          "name": "data",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "data",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "pipe status",
+          "type": "string",
+          "value": "open"
+        },
+        {
+          "name": "websocket port",
+          "type": "string",
+          "value": "2042"
+        },
+        {
+          "name": "usb product id",
+          "type": "string",
+          "value": "8022"
+        },
+        {
+          "name": "pipe reset",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "serialport status",
+          "type": "string",
+          "value": "open"
+        }
+      ]
+    },
+    {
+      "type": "view",
+      "name": "view_4",
+      "inputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "msgs",
+          "type": "byteArray",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "1"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "adhoc/tpath",
+      "name": "adhoc/tpath_5",
+      "outputs": [
+        {
+          "name": "position",
+          "type": "array",
+          "connections": [
+            {
+              "inHunkIndex": "6",
+              "inHunkInput": "0"
+            }
+          ]
+        }
+      ],
+      "states": [
+        {
+          "name": "mm/pix",
+          "type": "number",
+          "value": "0.35277777777777775"
+        },
+        {
+          "name": "longpath",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "shortpath",
+          "type": "boolean",
+          "value": "false"
+        },
+        {
+          "name": "sl2path",
+          "type": "boolean",
+          "value": "false"
+        }
+      ]
+    },
+    {
+      "type": "adhoc/saturn",
+      "name": "adhoc/saturn_6",
+      "inputs": [
+        {
+          "name": "posn",
+          "type": "array"
+        }
+      ],
+      "outputs": [
+        {
+          "name": "posn",
+          "type": "array",
+          "connections": [
+            {
+              "inHunkIndex": "7",
+              "inHunkInput": "0"
+            }
+          ]
+        },
+        {
+          "name": "motionSegment",
+          "type": "MDmseg",
+          "connections": [
+            {
+              "inHunkIndex": "2",
+              "inHunkInput": "2"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "type": "data/logger",
+      "name": "data/logger_7",
+      "inputs": [
+        {
+          "name": "tolog",
+          "type": "reference"
+        }
+      ],
+      "states": [
+        {
+          "name": "prefix",
+          "type": "string",
+          "value": "LOG:"
+        },
+        {
+          "name": "console",
+          "type": "boolean",
+          "value": "false"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/typeset.js b/typeset.js
index 81608e5..0de90e6 100644
--- a/typeset.js
+++ b/typeset.js
@@ -523,6 +523,43 @@ const TSET = [
   },
   {
     name: 'MDmseg',
+    key: 88,
+    write: function(ms) {
+      // ok, bless up, we have:
+      /*
+      p0: 3-arr
+      p1: 3-arr
+      t: num
+      v0: num
+      a: num
+      // for simplicity, we should write one typedarray
+      */
+      let f32arr = Float32Array.from([
+        ms.p0[0], ms.p0[1], ms.p0[2],
+        ms.p1[0], ms.p1[1], ms.p1[2],
+        ms.t, ms.v0, ms.a]
+      )
+      // ok,
+      let btarr = new Uint8Array(f32arr.buffer)
+      let rtarr = Array.from(btarr)
+      rtarr.unshift(this.key)
+      console.log('MDseg bytes', rtarr)
+      return rtarr
+    },
+    read: function(arr, start) {
+      /*
+      if (arr[start] !== this.key)
+        throw new Error(`mismatched key on phy read: ${arr[start]}, ${this.key}`)
+      let rdarr = arr.slice(start + 1, start + 9)
+      let btarr = Uint8Array.from(rdarr)
+      if (tsdebug)
+        console.log('bts on read of float64', btarr)
+      let vlarr = new Float64Array(btarr.buffer)
+      if (tsdebug)
+        console.log('vlarr', vlarr)
+      return {item: vlarr[0], increment: 9}
+      */
+    },
     copy: {
       MDmseg: (mdmseg) => {
         return {
-- 
GitLab