Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def bus(self):
return 'hid' # follow Linux model
@property
def address(self):
return self.hidinfo['path'].decode()
@property
def port(self):
return None
def __eq__(self, other):
return type(self) == type(other) and self.bus == other.bus and self.address == other.address
class GenericHidBus(BaseBus):
def find_devices(self, vendor=None, product=None, hid=None, bus=None,
address=None, usb_port=None, **kwargs):
"""Find compatible USB HID devices.
Both hidapi and PyUSB backends are supported. On Mac and Linux the
default is to use hidapi; on all other platforms it is PyUSB.
The choice of API for HID can be overiden with `hid`:
- `hid='usb'`: use PyUSB (libusb-1.0, libusb-0.1 or OpenUSB)
- `hid='hid'`: use hidapi (backend depends on hidapi build options)
- `hid='hidraw'`: specifically try to use hidraw (Linux; depends on
hidapi build options)
"""
LOGGER.debug('searching %s (api=%s, drivers=[%s])', self.__class__.__name__, api.__name__,
', '.join(map(lambda x: x.__name__, drivers)))
for handle in handles:
if bus and handle.bus != bus:
continue
if address and handle.address != address:
continue
if usb_port and handle.port != usb_port:
continue
LOGGER.debug('probing drivers for device %s:%s', hex(handle.vendor_id),
hex(handle.product_id))
for drv in drivers:
yield from drv.probe(handle, vendor=vendor, product=product, **kwargs)
class PyUsbBus(BaseBus):
def find_devices(self, vendor=None, product=None, bus=None, address=None,
usb_port=None, **kwargs):
""" Find compatible regular USB devices."""
drivers = sorted(find_all_subclasses(UsbDriver), key=lambda x: x.__name__)
LOGGER.debug('searching %s (drivers=[%s])', self.__class__.__name__,
', '.join(map(lambda x: x.__name__, drivers)))
for handle in PyUsbDevice.enumerate(vendor, product):
if bus and handle.bus != bus:
continue
if address and handle.address != address:
continue
if usb_port and handle.port != usb_port:
continue
LOGGER.debug('probing drivers for device %s:%s', hex(handle.vendor_id),
hex(handle.product_id))
for drv in drivers: