|
@@ -9,6 +9,9 @@ import threading |
|
|
class NoDeviceError(Exception): |
|
|
class NoDeviceError(Exception): |
|
|
pass |
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
class CommError(Exception): |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
class AD2USB(object): |
|
|
class AD2USB(object): |
|
|
on_test = event.Event('testing') |
|
|
on_test = event.Event('testing') |
|
|
|
|
|
|
|
@@ -73,8 +76,8 @@ class Device(object): |
|
|
|
|
|
|
|
|
try: |
|
|
try: |
|
|
devices = Ftdi.find_all([(Device.FTDI_VENDOR_ID, Device.FTDI_PRODUCT_ID)], nocache=True) |
|
|
devices = Ftdi.find_all([(Device.FTDI_VENDOR_ID, Device.FTDI_PRODUCT_ID)], nocache=True) |
|
|
except usb.core.USBError, e: |
|
|
|
|
|
raise |
|
|
|
|
|
|
|
|
except (usb.core.USBError, FtdiError), err: |
|
|
|
|
|
raise CommError('Error enumerating AD2USB devices: {0}'.format(str(err))) |
|
|
|
|
|
|
|
|
return devices |
|
|
return devices |
|
|
|
|
|
|
|
@@ -101,9 +104,10 @@ class Device(object): |
|
|
self._description) |
|
|
self._description) |
|
|
|
|
|
|
|
|
self._device.set_baudrate(baudrate) |
|
|
self._device.set_baudrate(baudrate) |
|
|
except (usb.core.USBError, FtdiError): |
|
|
|
|
|
|
|
|
except (usb.core.USBError, FtdiError), err: |
|
|
self.on_close() |
|
|
self.on_close() |
|
|
raise |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
raise CommError('Error opening AD2USB device: {0}'.format(str(err))) |
|
|
else: |
|
|
else: |
|
|
self._read_thread.start() |
|
|
self._read_thread.start() |
|
|
|
|
|
|
|
@@ -151,9 +155,10 @@ class Device(object): |
|
|
break |
|
|
break |
|
|
|
|
|
|
|
|
time.sleep(0.01) |
|
|
time.sleep(0.01) |
|
|
except FtdiError, e: |
|
|
|
|
|
# TODO: I don't think we should be ignoring this |
|
|
|
|
|
raise |
|
|
|
|
|
|
|
|
except (usb.core.USBError, FtdiError), err: |
|
|
|
|
|
self.close() |
|
|
|
|
|
|
|
|
|
|
|
raise CommError('Error reading from AD2USB device: {0}'.format(str(err))) |
|
|
else: |
|
|
else: |
|
|
if got_line: |
|
|
if got_line: |
|
|
ret = self._buffer |
|
|
ret = self._buffer |
|
@@ -178,8 +183,7 @@ class Device(object): |
|
|
while self._running: |
|
|
while self._running: |
|
|
try: |
|
|
try: |
|
|
self._device.read_line() |
|
|
self._device.read_line() |
|
|
except (usb.core.USBError, FtdiError): |
|
|
|
|
|
|
|
|
except CommError, err: |
|
|
self.stop() |
|
|
self.stop() |
|
|
self._device.close() |
|
|
|
|
|
|
|
|
|
|
|
time.sleep(0.25) |
|
|
time.sleep(0.25) |