changeset 1437:d149a2c2236c

always send trailing zeros to dmx Ignore-this: 973ae36ba571f865150710d304e255c8
author drewp@bigasterisk.com
date Sat, 11 Jun 2016 20:41:04 +0000
parents d0d5900a8031
children 594160be47f1
files bin/collector light9/collector/collector.py light9/collector/output.py
diffstat 3 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/bin/collector	Sat Jun 11 20:30:34 2016 +0000
+++ b/bin/collector	Sat Jun 11 20:41:04 2016 +0000
@@ -62,8 +62,8 @@
 
     # todo: drive outputs with config files
     outputs = [
-        EnttecDmx(L9['output/dmx0/'], '/dev/dmx3'),
-        Udmx(L9['output/udmx/']),
+        EnttecDmx(L9['output/dmx0/'], '/dev/dmx3', 80),
+        Udmx(L9['output/udmx/'], 510),
     ]
     c = Collector(graph, outputs)
 
--- a/light9/collector/collector.py	Sat Jun 11 20:30:34 2016 +0000
+++ b/light9/collector/collector.py	Sat Jun 11 20:41:04 2016 +0000
@@ -105,6 +105,8 @@
             outputAttrs[d] = toOutputAttrs(devType, deviceAttrs[d])
         
         pendingOut = {} # output : values
+        for out in self.outputs:
+            pendingOut[out] = [0] * out.numChannels
         for device, attrs in outputAttrs.iteritems():
             for outputAttr, value in attrs.iteritems():
                 self.setAttr(device, outputAttr, value, pendingOut)
@@ -117,7 +119,7 @@
 
     def setAttr(self, device, outputAttr, value, pendingOut):
         output, index = self.outputMap[(device, outputAttr)]
-        outList = pendingOut.setdefault(output, [])
+        outList = pendingOut[output]
         setListElem(outList, index, value, combine=max)
 
     def flush(self, pendingOut):
--- a/light9/collector/output.py	Sat Jun 11 20:30:34 2016 +0000
+++ b/light9/collector/output.py	Sat Jun 11 20:41:04 2016 +0000
@@ -8,6 +8,7 @@
 from greplin import scales
 log = logging.getLogger('output')
 
+# eliminate this: lists are always padded now
 def setListElem(outList, index, value, fill=0, combine=lambda old, new: new):
     if len(outList) < index:
         outList.extend([fill] * (index - len(outList)))
@@ -48,8 +49,9 @@
 
 
 class DmxOutput(Output):
-    def __init__(self, uri):
+    def __init__(self, uri, numChannels):
         self.uri = uri
+        self.numChannels = numChannels
 
     def flush(self):
         pass
@@ -74,8 +76,8 @@
                               scales.PmfStat('write'),
                               scales.PmfStat('update'))
 
-    def __init__(self, uri, devicePath='/dev/dmx0'):
-        DmxOutput.__init__(self, uri)
+    def __init__(self, uri, devicePath='/dev/dmx0', numChannels=80):
+        DmxOutput.__init__(self, uri, numChannels)
 
         sys.path.append("dmx_usb_module")
         from dmx import Dmx
@@ -108,8 +110,8 @@
                               scales.PmfStat('update'),
                               scales.PmfStat('write'),
                               scales.IntStat('usbErrors'))
-    def __init__(self, uri):
-        DmxOutput.__init__(self, uri)
+    def __init__(self, uri, numChannels):
+        DmxOutput.__init__(self, uri, numChannels)
         
         from light9.io.udmx import Udmx
         self.dev = Udmx()