diff options
Diffstat (limited to 'extra/tigertool/ecusb/stm32usb.py')
-rw-r--r-- | extra/tigertool/ecusb/stm32usb.py | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/extra/tigertool/ecusb/stm32usb.py b/extra/tigertool/ecusb/stm32usb.py index 3d3627e8ab..b8ffb2765e 100644 --- a/extra/tigertool/ecusb/stm32usb.py +++ b/extra/tigertool/ecusb/stm32usb.py @@ -57,10 +57,8 @@ class Susb(object): def _find_device(self): """Set up the usb endpoint""" # Find the stm32. - dev_g = usb.core.find(idVendor=self._vendor, idProduct=self._product, + dev_list = usb.core.find(idVendor=self._vendor, idProduct=self._product, find_all=True) - dev_list = list(dev_g) - if not dev_list: raise SusbError('USB device not found') @@ -68,7 +66,7 @@ class Susb(object): dev = None if self._serialname: for d in dev_list: - dev_serial = usb.util.get_string(d, d.iSerialNumber) + dev_serial = usb.util.get_string(d, 256, d.iSerialNumber) if dev_serial == self._serialname: dev = d break @@ -81,20 +79,12 @@ class Susb(object): raise SusbError('USB device %04x:%04x not found' % ( self._vendor, self._product)) - # Detach raiden.ko if it is loaded. CCD endpoints support either a kernel - # module driver that produces a ttyUSB, or direct endpoint access, but - # can't do both at the same time. - if dev.is_kernel_driver_active(self._interface) is True: - dev.detach_kernel_driver(self._interface) - # If we can't set configuration, it's already been set. try: dev.set_configuration() - except usb.core.USBError as e: + except usb.core.USBError: pass - self._dev = dev - # Get an endpoint instance. cfg = dev.get_active_configuration() intf = usb.util.find_descriptor(cfg, bInterfaceNumber=self._interface) @@ -103,6 +93,12 @@ class Susb(object): raise SusbError('Interface %04x:%04x - 0x%x not found' % ( self._vendor, self._product, self._interface)) + # Detach raiden.ko if it is loaded. CCD endpoints support either a kernel + # module driver that produces a ttyUSB, or direct endpoint access, but + # can't do both at the same time. + if dev.is_kernel_driver_active(intf.bInterfaceNumber) is True: + dev.detach_kernel_driver(intf.bInterfaceNumber) + read_ep_number = intf.bInterfaceNumber + self.READ_ENDPOINT read_ep = usb.util.find_descriptor(intf, bEndpointAddress=read_ep_number) self._read_ep = read_ep @@ -110,6 +106,3 @@ class Susb(object): write_ep_number = intf.bInterfaceNumber + self.WRITE_ENDPOINT write_ep = usb.util.find_descriptor(intf, bEndpointAddress=write_ep_number) self._write_ep = write_ep - - def close(self): - usb.util.dispose_resources(self._dev) |