def __init__(self, reset=False, load=None, **kwargs): try: ftdi_cbmnet.FtdiCbmnetThreaded.__init__(self) except IOError: raise # TODO enter offline mode # here we enforce arguments to be passed as keyword arguments debug_kwargs = ['_debug_out', '_debug_ftdi', '_debug_cbmif'] for arg in debug_kwargs: if arg in kwargs: setattr(self, arg, kwargs[arg]) self.readout_enable(0) # message splitters and output queues for groups A and B self._dataA_splitter = MessageSplitter() self._dataB_splitter = MessageSplitter() self._dataA_queue = Queue.Queue() self._dataB_queue = Queue.Queue() # register read result Queue (indexable) self._ctrl_queue = IndexQueue() # data reader thread self._recv_worker = threading.Thread(name="recv worker") self._recv_worker.run = self._recv_job self._recv_worker.daemon = True self._recv_worker.start() # higher level register file access def rf_write_gen(name, addr): def write(value): self.write_register(addr, value) return write def rf_read_gen(name, addr): def read(): return self.read_register(addr) return read self._registerfile = SpadicRegisterFile(rf_write_gen, rf_read_gen) # higher level shift register access self._shiftregister = SpadicShiftRegister(self.write_register, self.read_register) # highest level configuration controller self.control = SpadicController(self._registerfile, self._shiftregister, reset, load) self.readout_enable(1)
def __init__(self, expires=2): BaseReceiveClient.__init__(self) self._recv_queue = IndexQueue() self._cache = {} self._expires = expires