| @@ -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: | |||