Example #1
0
 def can_handle_windows(self, usbdevice, debug=False):
     if hasattr(self.can_handle, 'is_base_class_implementation'):
         # No custom can_handle implementation
         return True
     # Delegate to the unix can_handle function, creating a unix like
     # USBDevice object
     from calibre.devices.winusb import get_usb_info
     dev = usb_info_cache.get(usbdevice)
     if dev is None:
         try:
             data = get_usb_info(usbdevice, debug=debug)
         except Exception:
             time.sleep(0.1)
             try:
                 data = get_usb_info(usbdevice, debug=debug)
             except Exception:
                 data = {}
         dev = usb_info_cache[usbdevice] = namedtuple(
             'USBDevice',
             'vendor_id product_id bcd manufacturer product serial')(
                 usbdevice.vendor_id, usbdevice.product_id, usbdevice.bcd,
                 data.get('manufacturer') or '', data.get('product') or '',
                 data.get('serial_number') or '')
         if debug:
             prints(f'USB Info for device: {dev}')
     return self.can_handle(dev, debug=debug)
Example #2
0
 def can_handle_windows(self, usbdevice, debug=False):
     from calibre.devices.interface import DevicePlugin
     if self.can_handle.im_func is DevicePlugin.can_handle.im_func:
         # No custom can_handle implementation
         return True
     # Delegate to the unix can_handle function, creating a unix like
     # USBDevice object
     from calibre.devices.winusb import get_usb_info
     dev = usb_info_cache.get(usbdevice)
     if dev is None:
         try:
             data = get_usb_info(usbdevice, debug=debug)
         except Exception:
             time.sleep(0.1)
             try:
                 data = get_usb_info(usbdevice, debug=debug)
             except Exception:
                 data = {}
         dev = usb_info_cache[usbdevice] = namedtuple(
             'USBDevice', 'vendor_id product_id bcd manufacturer product serial')(
             usbdevice.vendor_id, usbdevice.product_id, usbdevice.bcd,
             data.get('manufacturer') or '', data.get('product') or '', data.get('serial_number') or '')
         if debug:
             prints('USB Info for device: {}'.format(dev))
     return self.can_handle(dev, debug=debug)