Пример #1
0
    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)
Пример #2
0
 def __init__(self, expires=2):
     BaseReceiveClient.__init__(self)
     self._recv_queue = IndexQueue()
     self._cache = {}
     self._expires = expires