devices spec file; pulser

new test commands

vm {"op":"create", "name":"test"}
vm {"op":"use", "name":"test"}
vm {"op":"list"}
vm {"op":"devices"}

control/test {"op":"status"}

control/test {"op":"create", "class":"breadboard.devices.RNG", "name":"rng", "config":{"seed":2894829238}}
control/test/rng/pulse {}

control/test {"op":"create", "class":"breadboard.devices.Pulse", "name":"pulse0", "config":{"hz":2}}
control/test {"op":"wire", "from-device": "pulse0", "from-port": "pulse", "to-device": "rng", "to-port": "pulse", "carrier": "control"}

control/test {"op":"create", "class":"breadboard.devices.RNG", "name":"rng2", "config":{"seed":2894829238}}
control/test/rng2/pulse {}
control/test {"op":"create", "class":"breadboard.devices.RNG", "name":"rng3", "config":{"seed":2894829238}}
control/test/rng3/pulse {}

control/test {"op":"create", "class":"breadboard.devices.Pulse", "name":"pulse1", "config":{"hz":2}}
control/test {"op":"wire", "from-device": "pulse1", "from-port": "pulse", "to-device": "rng", "to-port": "pulse", "carrier": "control"}
control/test {"op":"wire", "from-device": "pulse1", "from-port": "pulse", "to-device": "rng2", "to-port": "pulse", "carrier": "control"}

control/test/pulse0/runstop {}
control/test/pulse1/runstop {}

control/test/pulse0/runstop {}
control/test/pulse1/runstop {}

control/test {"op":"wire", "from-device": "rng", "from-port": "random-number", "to-device": "rng2", "to-port": "pulse", "carrier": "control"}
control/test/rng/pulse {}
control/test {"op":"create", "class":"breadboard.devices.Counter", "name":"counter", "config":{}}
control/test {"op":"wire", "from-device": "rng2", "from-port": "random-number", "to-device": "counter", "to-port": "data-in", "carrier": "data"}
control/test/rng/pulse {}
control/test/rng/pulse {}
control/test/rng/pulse {}

control/test {"op":"wire", "from-device": "rng2", "from-port": "random-number", "to-device": "counter", "to-port": "emit-count", "carrier": "control"}
control/test/counter/emit-count {}

control/test {"op":"status"}

control/test {"op":"uistate", "device":"counter", "state": { "x":250, "y":250 } }

control/test/rng2/pulse {}