def inspect
if self.revoked?
"\#<#{self.class} revoked>"
else
attrs = []
attrs << "#{self.bus.dirname}/#{self.filename}"
attrs << ("%04x:%04x" % [self.idVendor, self.idProduct])
attrs << self.manufacturer
attrs << self.product
attrs << self.serial_number
if self.bDeviceClass == USB::USB_CLASS_PER_INTERFACE
devclass = self.settings.map {|i|
USB.dev_string(i.bInterfaceClass, i.bInterfaceSubClass, i.bInterfaceProtocol)
}.join(", ")
else
devclass = USB.dev_string(self.bDeviceClass, self.bDeviceSubClass, self.bDeviceProtocol)
end
attrs << "(#{devclass})"
attrs.compact!
"\#<#{self.class} #{attrs.join(' ')}>"
end
end