diff --git a/pyad2usb/devices.py b/pyad2usb/devices.py index 8a2643e..b073cce 100644 --- a/pyad2usb/devices.py +++ b/pyad2usb/devices.py @@ -7,16 +7,43 @@ from pyftdi.pyftdi.usbtools import * from . import util from .event import event -class USBDevice(object): - FTDI_VENDOR_ID = 0x0403 - FTDI_PRODUCT_ID = 0x6001 - BAUDRATE = 115200 - +class Device(object): on_open = event.Event('Called when the device has been opened') on_close = event.Event('Called when the device has been closed') on_read = event.Event('Called when a line has been read from the device') on_write = event.Event('Called when data has been written to the device') + def __init__(self): + pass + + def __del__(self): + pass + + class ReadThread(threading.Thread): + def __init__(self, device): + threading.Thread.__init__(self) + self._device = device + self._running = False + + def stop(self): + self._running = False + + def run(self): + self._running = True + + while self._running: + try: + self._device.read_line() + except util.CommError, err: + self.stop() + + time.sleep(0.25) + +class USBDevice(Device): + FTDI_VENDOR_ID = 0x0403 + FTDI_PRODUCT_ID = 0x6001 + BAUDRATE = 115200 + @staticmethod def find_all(): devices = [] @@ -29,6 +56,8 @@ class USBDevice(object): return devices def __init__(self, vid=FTDI_VENDOR_ID, pid=FTDI_PRODUCT_ID, serial=None, description=None): + Device.__init__(self) + self._vendor_id = vid self._product_id = pid self._serial_number = serial @@ -37,7 +66,7 @@ class USBDevice(object): self._device = Ftdi() self._running = False - self._read_thread = USBDevice.ReadThread(self) + self._read_thread = Device.ReadThread(self) def open(self, baudrate=BAUDRATE, interface=0, index=0): self._running = True @@ -115,37 +144,17 @@ class USBDevice(object): return ret - class ReadThread(threading.Thread): - def __init__(self, device): - threading.Thread.__init__(self) - self._device = device - self._running = False - - def stop(self): - self._running = False - - def run(self): - self._running = True - - while self._running: - try: - self._device.read_line() - except util.CommError, err: - self.stop() - - time.sleep(0.25) - -class SerialDevice(object): +class SerialDevice(Device): BAUDRATE = 9600 def __init__(self): - pass + Device.__init__(self) def __del__(self): pass - def open(self, port, baudrate=BAUDRATE): + def open(self, baudrate=BAUDRATE, interface="COM1", index=0): pass def close(self):