# File lib/usb.rb, line 103 def USB.each_device_by_class(devclass, subclass=nil, protocol=nil) USB.devices.each {|dev| if dev.bDeviceClass == USB::USB_CLASS_PER_INTERFACE found = dev.settings.any? {|s| s.bInterfaceClass == devclass && (!subclass || s.bInterfaceSubClass == subclass) && (!protocol || s.bInterfaceProtocol == protocol) } else found = dev.bDeviceClass == devclass && (!subclass || dev.bDeviceSubClass == subclass) && (!protocol || dev.bDeviceProtocol == protocol) end yield dev if found } nil end