From 2cfe59596cfa8250e21fadf55839fae0b1781841 Mon Sep 17 00:00:00 2001
From: Jake <jake.read@cba.mit.edu>
Date: Fri, 7 Dec 2018 12:24:28 -0500
Subject: [PATCH] ok flow ready to poll robot

---
 README.md                     |  2 +
 modules/hardware/atkmrobot.js | 17 +++++++--
 modules/util/gate.js          |  3 +-
 programs.js                   | 13 ++++++-
 robot.js                      | 69 +++++++++++++++++++++++++++++++++++
 rundmc.js                     | 18 ---------
 6 files changed, 97 insertions(+), 25 deletions(-)
 create mode 100644 robot.js

diff --git a/README.md b/README.md
index 3d7f6d7..509b6be 100644
--- a/README.md
+++ b/README.md
@@ -272,6 +272,8 @@ View.assignProgram(program)
 
 - ui / button 
 
+- svg doesn't display on chrome 
+
 - would like to send board with new buck out to fab
 - just do stepper23, bc if that's it, that's it ?
 
diff --git a/modules/hardware/atkmrobot.js b/modules/hardware/atkmrobot.js
index fb7a9cb..c44a8dd 100644
--- a/modules/hardware/atkmrobot.js
+++ b/modules/hardware/atkmrobot.js
@@ -34,10 +34,12 @@ function ATKMathRobot() {
     // inputs and outputs as usual 
     atkmr.inputs = {
         tick: Input('event', onPositionTickTock),
-        pc_t: Input('number', onPositionTargetInput)
+        set_pc_t: Input('number', onPositionTargetInput),
+        get_pos: Input('event', onPositionRequest)
     }
     atkmr.outputs = {
-        ok: Output('nothing-yet')
+        ok: Output('nothing-yet'),
+        pos: Output('uint16_t')
     }
 
     // and state as well 
@@ -81,6 +83,15 @@ function ATKMathRobot() {
         console.log("INPUTS NOT YET BOUND", evt)
     }
 
+    function onPositionRequest(evt){
+        var pckt = [145]
+        atkmr.route.send(pckt)
+    }
+
+    atkmr.route.subscribe(145, function(msg){
+        console.log('145 return', msg)
+    })
+
     function onPositionTargetUserChange() {
         var pc_t = state.pc_t
         if (pc_t > 16384) {
@@ -112,8 +123,6 @@ function ATKMathRobot() {
         state.message = 'packet ok'
     })
 
-    atkmr.go = onKValsUpdate
-
     return atkmr
 }
 
diff --git a/modules/util/gate.js b/modules/util/gate.js
index a26b843..7378615 100644
--- a/modules/util/gate.js
+++ b/modules/util/gate.js
@@ -45,14 +45,13 @@ function Gate() {
 
     function onButtonPress(evt) {
         console.log("GATE BUTTON")
-        state.toggle.isPressed = false
         if (gate.isOpen) {
             gate.isOpen = false
             state.message = 'closed'
         } else {
             gate.isOpen = true
             state.message = 'open'
-            gate.outputs.out.emit('go')
+            //gate.outputs.out.emit('go')
         }
     }
 
diff --git a/programs.js b/programs.js
index 11d0887..fef3606 100644
--- a/programs.js
+++ b/programs.js
@@ -295,11 +295,22 @@ function openProgram(path) {
     return program
 }
 
+/* helper functions */
+
+function SetUI(module, left, top){
+    if (module.description.position == null) {
+        module.description.position = {}
+    }
+    module.description.position.left = left
+    module.description.position.top = top
+}
+
 module.exports = {
     new: newProgram,
     open: openProgram,
     save: saveProgram,
     loadModuleFromSource: loadModuleFromSource,
     removeModule: removeModuleFromProgram,
-    assignSocket: assignSocket
+    assignSocket: assignSocket,
+    setUI: SetUI
 }
\ No newline at end of file
diff --git a/robot.js b/robot.js
new file mode 100644
index 0000000..e587503
--- /dev/null
+++ b/robot.js
@@ -0,0 +1,69 @@
+
+// business 
+const Reps = require('./reps.js')
+const Programs = require('./programs.js')
+
+// the program object: real simple, just has a description, and a 'modules' 
+var program = Programs.new('new program')
+
+var link = Programs.loadModuleFromSource(program, './modules/hardware/atkseriallink.js')
+link.startUp()
+Programs.setUI(link, 1050, 50)
+
+var mrbot = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js')
+Programs.setUI(mrbot, 600, 50)
+
+var button = Programs.loadModuleFromSource(program, './modules/ui/button.js')
+var delay = Programs.loadModuleFromSource(program, './modules/util/delay.js')
+var gate = Programs.loadModuleFromSource(program, './modules/util/gate.js')
+//delay.outputs.out.attach(gate.inputs.thru)
+//gate.outputs.out.attach(delay.inputs.thru)
+Programs.setUI(button, 90, 50)
+Programs.setUI(delay, 90, 250)
+Programs.setUI(gate, 90, 400)
+
+button.outputs.whammy.attach(mrbot.inputs.get_pos)
+button.outputs.whammy.attach(delay.inputs.thru)
+delay.outputs.out.attach(gate.inputs.thru)
+gate.outputs.out.attach(button.inputs.thru)
+
+var log = Programs.loadModuleFromSource(program, './modules/util/log.js')
+Programs.setUI(log, 840, 520)
+mrbot.outputs.pos.attach(log.inputs.thru)
+
+/*
+var stest = Programs.loadModuleFromSource(program, './modules/ui/stest.js')
+
+var rep = Reps.makeFromModule(stest)
+console.log('rep', rep)
+
+/* example program-like-an-api 
+// load some modules
+var multiline = Programs.loadModuleFromSource(program, './modules/ui/multiline.js')
+var gcode = Programs.loadModuleFromSource(program, './modules/parsing/gcode.js')
+
+// attaching: always like outputs to inputs
+multiline.outputs.lineOut.attach(gcode.inputs.lineIn)
+
+// we can move things around here as well
+multiline.description.position = {
+	left: 50,
+	top: 50
+}
+
+gcode.description.position = {
+	left: 500,
+	top: 100
+}
+
+// if I have a public function in a module, I can also use that
+multiline.load('./files/dogbone.gcode')
+*/
+
+// UI 
+const View = require('./views.js')
+View.startHttp() 
+View.startWs() 
+
+Programs.assignSocket(View.uiSocket)
+View.assignProgram(program)
\ No newline at end of file
diff --git a/rundmc.js b/rundmc.js
index e1d6cbf..0e9922f 100644
--- a/rundmc.js
+++ b/rundmc.js
@@ -31,24 +31,6 @@ const Programs = require('./programs.js')
 // the program object: real simple, just has a description, and a 'modules' 
 var program = Programs.new('new program')
 
-var link = Programs.loadModuleFromSource(program, './modules/hardware/atkseriallink.js')
-link.startUp()
-
-link.description.position = {
-	left: 600,
-	top: 50
-}
-
-var mrbot = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js')
-
-mrbot.description.position = {
-	left: 20,
-	top: 50
-}
-
-mrbot.go() 
-
-
 /*
 var stest = Programs.loadModuleFromSource(program, './modules/ui/stest.js')
 
-- 
GitLab