diff --git a/light8/io.py b/light8/io.py --- a/light8/io.py +++ b/light8/io.py @@ -1,109 +1,17 @@ - -class BaseIO: - def __init__(self): - self.dummy=1 - self.__name__ = 'BaseIO' - # please override and set __name__ to your class name - - def golive(self): - """call this if you want to promote the dummy object becomes a live object""" - print "IO: %s is going live" % self.__name__ - self.dummy=0 - # you'd override with additional startup stuff here, - # perhaps even loading a module and saving it to a class - # attr so the subclass-specific functions can use it - - def godummy(self): - print "IO: %s is going dummy" % self.__name__ - self.dummy=1 - # you might override this to close ports, etc - - def isdummy(self): - return self.dummy +DUMMY=1 - def __repr__(self): - if self.dummy: - return "" % self.__name__ - else: - return "" % self.__name__ - - # the derived class will have more methods to do whatever it does, - # and they should return dummy values if self.dummy==1. - -class ParportDMX(BaseIO): - def __init__(self, dimmers=68): - BaseIO.__init__(self) - self.__name__='ParportDMX' - self.dimmers = dimmers - - def golive(self): - BaseIO.golive(self) - import parport - self.parport = parport - self.parport.getparport() - - def sendlevels(self, levels): - if self.dummy: - return - - levels = list(levels) + [0] - # if levels[14] > 0: levels[14] = 100 # non-dim - self.parport.outstart() - for p in range(1, self.dimmers + 2): - self.parport.outbyte(levels[p-1]*255 / 100) +def init(DUMMY_in): + global DUMMY + if not DUMMY_in: + getparport() + DUMMY=0 -class SerialPots(BaseIO): - """ - this is a dummy object (that returns zeros forever) until you call startup() - which makes it bind to the port, etc - - """ - def __init__(self): - # no init here- call getport() to actually initialize - self.dummy=1 - self.__name__='SerialPots' # i thought this was automatic! - - def golive(self): - """ - ls -l /dev/i2c-0 - crw-rw-rw- 1 root root 89, 0 Jul 11 12:27 /dev/i2c-0 - """ - import serport - self.serport = serport - - self.f = open("/dev/i2c-0","rw") - - # this is for a chip with A0,A1,A2 lines all low: - port = 72 - - from fcntl import * - - I2C_SLAVE = 0x0703 #/* Change slave address */ - ioctl(self.f,I2C_SLAVE,port) - self.dummy=0 - - def godummy(self): - BaseIO.godummy(self) - self.f.close() - - def getlevels(self): - if self.dummy: - return (0,0,0,0) - else: - return self.serport.read_all_adc(self.f.fileno()) - - -if __name__=='__main__': - - """ tester program that just dumps levels for a while """ - from time import sleep - from serport import * - - i=0 - while i<100: - sleep(.033) - i=i+1 - - print read_all_adc(f.fileno()) - +def sendlevels(levels): + if DUMMY: return + levels = list(levels) + [0] + if levels[14] > 0: levels[14] = 100 + # print "levels", ' '.join(["%3.1f" % l for l in levels]) + outstart() + for p in range(1,70): + outbyte(levels[p-1]*255/100)