def test_list_devices(self): """List FTDI devices.""" vid = 0x403 vids = {'ftdi': vid} pids = { vid: { '230x': 0x6015, '232r': 0x6001, '232h': 0x6014, '2232h': 0x6010, '4232h': 0x6011, } } devs = UsbTools.list_devices('ftdi:///?', vids, pids, vid) self.assertEqual(len(devs), 6) ifmap = {0x6001: 1, 0x6010: 2, 0x6011: 4, 0x6014: 1, 0x6015: 1} for dev, desc in devs: strings = UsbTools.build_dev_strings('ftdi', vids, pids, [(dev, desc)]) self.assertEqual(len(strings), ifmap[dev.pid]) for url, _ in strings: parts, _ = UsbTools.parse_url(url, 'ftdi', vids, pids, vid) self.assertEqual(parts.vid, dev.vid) self.assertEqual(parts.pid, dev.pid) self.assertEqual(parts.bus, dev.bus) self.assertEqual(parts.address, dev.address) self.assertEqual(parts.sn, dev.sn) devs = UsbTools.list_devices('ftdi://:232h/?', vids, pids, vid) self.assertEqual(len(devs), 2) devs = UsbTools.list_devices('ftdi://:2232h/?', vids, pids, vid) self.assertEqual(len(devs), 1)
def get_identifiers(cls, url): """Extract the identifiers of a FTDI device from URL, if any :param url: input URL to parse :return: (vendor, product, index, sernum, interface) """ ids = UsbTools.parse_url(url, cls, cls.SCHEME, cls.VENDOR_IDS, cls.PRODUCT_IDS, cls.DEFAULT_VENDOR) return ids
def open(self, devclass, scheme, vdict, pdict, default_vendor): """Open the initialized serial port""" from serial import SerialException if self._port is None: raise SerialException("Port must be configured before use.") try: vendor, product, interface, sernum, ix = UsbTools.parse_url( self.portstr, devclass, scheme, vdict, pdict, default_vendor) except UsbToolsError, e: raise SerialException(str(e))
def open(self, devclass, scheme, vdict, pdict, default_vendor): """Open the initialized serial port""" from serial import SerialException if self._port is None: raise SerialException("Port must be configured before use.") try: vendor, product, interface, sernum, ix = UsbTools.parse_url( self.portstr, devclass, scheme, vdict, pdict, default_vendor) except UsbToolsError as e: raise SerialException(str(e)) try: self.udev = devclass() self.udev.open(vendor, product, interface, ix, sernum) self.flushOutput() self.flushInput() except IOError: raise SerialException('Unable to open USB port %s' % self.portstr) self._set_open_state(True) self._reconfigurePort() self._product = product