@@ -65,7 +65,7 @@ class AD2Factory(object): | |||
device = cls.__devices[0] | |||
vendor, product, sernum, ifcount, description = device | |||
device = USBDevice((sernum, ifcount - 1)) | |||
device = USBDevice(interface=sernum) | |||
return AD2(device) | |||
@@ -167,18 +167,21 @@ class USBDevice(Device): | |||
:returns: the interface used to connect to the device. | |||
""" | |||
return (self._serial_number, self._endpoint) | |||
return self._interface | |||
@interface.setter | |||
def interface(self, value): | |||
""" | |||
Sets the interface used to connect to the device. | |||
:param value: Tuple containing the serial number and endpoint number to use. | |||
:type value: tuple | |||
:param value: May specify either the serial number or the device index. | |||
:type value: str or int | |||
""" | |||
self._serial_number = value[0] | |||
self._endpoint = value[1] | |||
self._interface = value | |||
if isinstance(value, int): | |||
self._device_number = value | |||
else: | |||
self._serial_number = value | |||
@property | |||
def serial_number(self): | |||
@@ -219,21 +222,23 @@ class USBDevice(Device): | |||
""" | |||
self._description = value | |||
def __init__(self, interface=(None, 0)): | |||
def __init__(self, interface=0): | |||
""" | |||
Constructor | |||
:param interface: Tuple containing the serial number and endpoint number to use. | |||
:type interface: tuple | |||
:param interface: May specify either the serial number or the device index. | |||
:type interface: str or int | |||
""" | |||
Device.__init__(self) | |||
self._device = Ftdi() | |||
self._serial_number = interface[0] | |||
self._endpoint = interface[1] | |||
self._device_number = 0 | |||
self._serial_number = None | |||
self.interface = interface | |||
self._vendor_id = USBDevice.FTDI_VENDOR_ID | |||
self._product_id = USBDevice.FTDI_PRODUCT_ID | |||
self._device_number = None | |||
self._endpoint = 0 | |||
self._description = None | |||
def open(self, baudrate=BAUDRATE, no_reader_thread=False): | |||
@@ -36,15 +36,15 @@ class TestAD2Factory(TestCase): | |||
with patch.object(USBDevice, 'find_all', return_value=[(0, 0, 'AD2', 1, 'AD2')]): | |||
device = AD2Factory.create() | |||
self.assertEquals(device._device.interface, ('AD2', 0)) | |||
self.assertEquals(device._device.interface, 'AD2') | |||
def test_create_with_param(self): | |||
with patch.object(USBDevice, 'find_all', return_value=[(0, 0, 'AD2-1', 1, 'AD2'), (0, 0, 'AD2-2', 1, 'AD2')]): | |||
device = AD2Factory.create((0, 0, 'AD2-1', 1, 'AD2')) | |||
self.assertEquals(device._device.interface, ('AD2-1', 0)) | |||
self.assertEquals(device._device.interface, 'AD2-1') | |||
device = AD2Factory.create((0, 0, 'AD2-2', 1, 'AD2')) | |||
self.assertEquals(device._device.interface, ('AD2-2', 0)) | |||
self.assertEquals(device._device.interface, 'AD2-2') | |||
def test_events(self): | |||
self.assertEquals(self._attached, False) | |||
@@ -34,8 +34,22 @@ class TestUSBDevice(TestCase): | |||
with self.assertRaises(CommError): | |||
devices = USBDevice.find_all() | |||
def test_interface_serial_number(self): | |||
self._device.interface = 'AD2USB' | |||
self.assertEquals(self._device.interface, 'AD2USB') | |||
self.assertEquals(self._device.serial_number, 'AD2USB') | |||
self.assertEquals(self._device._device_number, 0) | |||
def test_interface_index(self): | |||
self._device.interface = 1 | |||
self.assertEquals(self._device.interface, 1) | |||
self.assertEquals(self._device.serial_number, None) | |||
self.assertEquals(self._device._device_number, 1) | |||
def test_open(self): | |||
self._device.interface = ('AD2USB', 0) | |||
self._device.interface = 'AD2USB' | |||
with patch.object(self._device._device, 'open') as mock: | |||
self._device.open(no_reader_thread=True) | |||
@@ -43,7 +57,7 @@ class TestUSBDevice(TestCase): | |||
mock.assert_any_calls() | |||
def test_open_failed(self): | |||
self._device.interface = ('AD2USB', 0) | |||
self._device.interface = 'AD2USB' | |||
with patch.object(self._device._device, 'open', side_effect=[USBError('testing'), FtdiError]): | |||
with self.assertRaises(NoDeviceError): | |||
@@ -53,7 +67,7 @@ class TestUSBDevice(TestCase): | |||
self._device.open(no_reader_thread=True) | |||
def test_write(self): | |||
self._device.interface = ('AD2USB', 0) | |||
self._device.interface = 'AD2USB' | |||
self._device.open(no_reader_thread=True) | |||
with patch.object(self._device._device, 'write_data') as mock: | |||
@@ -67,7 +81,7 @@ class TestUSBDevice(TestCase): | |||
self._device.write('test') | |||
def test_read(self): | |||
self._device.interface = ('AD2USB', 0) | |||
self._device.interface = 'AD2USB' | |||
self._device.open(no_reader_thread=True) | |||
with patch.object(self._device._device, 'read_data') as mock: | |||