Changeset - d149a2c2236c
[Not reviewed]
default
0 3 0
drewp@bigasterisk.com - 9 years ago 2016-06-11 20:41:04
drewp@bigasterisk.com
always send trailing zeros to dmx
Ignore-this: 973ae36ba571f865150710d304e255c8
3 files changed with 12 insertions and 8 deletions:
0 comments (0 inline, 0 general)
bin/collector
Show inline comments
 
@@ -62,8 +62,8 @@ def launch(graph):
 

	
 
    # 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)
 

	
light9/collector/collector.py
Show inline comments
 
@@ -105,6 +105,8 @@ class Collector(object):
 
            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 @@ class Collector(object):
 

	
 
    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):
light9/collector/output.py
Show inline comments
 
@@ -8,6 +8,7 @@ from twisted.internet import task, threa
 
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 Output(object):
 

	
 

	
 
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 @@ class EnttecDmx(DmxOutput):
 
                              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 @@ class Udmx(DmxOutput):
 
                              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()
0 comments (0 inline, 0 general)