|
|
@@ -92,6 +92,7 @@ class Device(object): |
|
|
|
while self._running: |
|
|
|
try: |
|
|
|
self._device.read_line(timeout=self.READ_TIMEOUT) |
|
|
|
|
|
|
|
except util.TimeoutError, err: |
|
|
|
pass |
|
|
|
|
|
|
@@ -116,6 +117,7 @@ class USBDevice(Device): |
|
|
|
|
|
|
|
try: |
|
|
|
devices = Ftdi.find_all([(USBDevice.FTDI_VENDOR_ID, USBDevice.FTDI_PRODUCT_ID)], nocache=True) |
|
|
|
|
|
|
|
except (usb.core.USBError, FtdiError), err: |
|
|
|
raise util.CommError('Error enumerating AD2USB devices: {0}'.format(str(err))) |
|
|
|
|
|
|
@@ -163,8 +165,10 @@ class USBDevice(Device): |
|
|
|
self._device.set_baudrate(baudrate) |
|
|
|
|
|
|
|
self._id = 'USB {0}:{1}'.format(self._device.usb_dev.bus, self._device.usb_dev.address) |
|
|
|
|
|
|
|
except (usb.core.USBError, FtdiError), err: |
|
|
|
raise util.NoDeviceError('Error opening device: {0}'.format(str(err))) |
|
|
|
|
|
|
|
else: |
|
|
|
self._running = True |
|
|
|
if not no_reader_thread: |
|
|
@@ -184,7 +188,8 @@ class USBDevice(Device): |
|
|
|
|
|
|
|
# HACK: Probably should fork pyftdi and make this call in .close(). |
|
|
|
self._device.usb_dev.attach_kernel_driver(self._interface) |
|
|
|
except (FtdiError, usb.core.USBError): |
|
|
|
|
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
self.on_close() |
|
|
@@ -256,6 +261,7 @@ class USBDevice(Device): |
|
|
|
timer.cancel() |
|
|
|
|
|
|
|
raise util.CommError('Error reading from device: {0}'.format(str(err))) |
|
|
|
|
|
|
|
else: |
|
|
|
if got_line: |
|
|
|
ret = self._buffer |
|
|
@@ -292,6 +298,7 @@ class SerialDevice(Device): |
|
|
|
devices = serial.tools.list_ports.grep(pattern) |
|
|
|
else: |
|
|
|
devices = serial.tools.list_ports.comports() |
|
|
|
|
|
|
|
except SerialException, err: |
|
|
|
raise util.CommError('Error enumerating serial devices: {0}'.format(str(err))) |
|
|
|
|
|
|
@@ -335,6 +342,7 @@ class SerialDevice(Device): |
|
|
|
|
|
|
|
except (serial.SerialException, ValueError), err: |
|
|
|
raise util.NoDeviceError('Error opening device on port {0}.'.format(interface)) |
|
|
|
|
|
|
|
else: |
|
|
|
self._running = True |
|
|
|
self.on_open(('N/A', "AD2SERIAL")) |
|
|
@@ -351,7 +359,8 @@ class SerialDevice(Device): |
|
|
|
self._read_thread.stop() |
|
|
|
|
|
|
|
self._device.close() |
|
|
|
except Exception, err: |
|
|
|
|
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
self.on_close() |
|
|
@@ -362,10 +371,13 @@ class SerialDevice(Device): |
|
|
|
""" |
|
|
|
try: |
|
|
|
self._device.write(data) |
|
|
|
|
|
|
|
except serial.SerialTimeoutException, err: |
|
|
|
pass |
|
|
|
|
|
|
|
except serial.SerialException, err: |
|
|
|
raise util.CommError('Error writing to device.') |
|
|
|
|
|
|
|
else: |
|
|
|
self.on_write(data) |
|
|
|
|
|
|
@@ -425,6 +437,7 @@ class SerialDevice(Device): |
|
|
|
timer.cancel() |
|
|
|
|
|
|
|
raise util.CommError('Error reading from device: {0}'.format(str(err))) |
|
|
|
|
|
|
|
else: |
|
|
|
if got_line: |
|
|
|
ret = self._buffer |
|
|
@@ -471,6 +484,7 @@ class SocketDevice(Device): |
|
|
|
|
|
|
|
except socket.error, err: |
|
|
|
raise util.NoDeviceError('Error opening device at {0}:{1}'.format(self._host, self._port)) |
|
|
|
|
|
|
|
else: |
|
|
|
self._running = True |
|
|
|
|
|
|
@@ -489,6 +503,7 @@ class SocketDevice(Device): |
|
|
|
self._read_thread.stop() |
|
|
|
self._device.shutdown(socket.SHUT_RDWR) # Make sure that it closes immediately. |
|
|
|
self._device.close() |
|
|
|
|
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
@@ -521,6 +536,7 @@ class SocketDevice(Device): |
|
|
|
|
|
|
|
try: |
|
|
|
data = self._device.recv(1) |
|
|
|
|
|
|
|
except socket.error, err: |
|
|
|
raise util.CommError('Error while reading from device: {0}'.format(str(err))) |
|
|
|
|
|
|
@@ -568,6 +584,7 @@ class SocketDevice(Device): |
|
|
|
timer.cancel() |
|
|
|
|
|
|
|
raise util.CommError('Error reading from device: {0}'.format(str(err))) |
|
|
|
|
|
|
|
else: |
|
|
|
if got_line: |
|
|
|
ret = self._buffer |
|
|
|