first commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package usb
|
||||
|
||||
// Device represents a USB device
|
||||
type Device struct {
|
||||
BusID string `json:"bus_id"` // e.g. "1-1.4"
|
||||
BusNum uint32 `json:"bus_num"`
|
||||
DevNum uint32 `json:"dev_num"`
|
||||
Speed uint32 `json:"speed"`
|
||||
VendorID uint16 `json:"vendor_id"`
|
||||
ProductID uint16 `json:"product_id"`
|
||||
BcdDevice uint16 `json:"bcd_device"`
|
||||
DeviceClass uint8 `json:"device_class"`
|
||||
DeviceSubClass uint8 `json:"device_sub_class"`
|
||||
DeviceProtocol uint8 `json:"device_protocol"`
|
||||
ConfigValue uint8 `json:"config_value"`
|
||||
NumConfigs uint8 `json:"num_configs"`
|
||||
Manufacturer string `json:"manufacturer"`
|
||||
Product string `json:"product"`
|
||||
Serial string `json:"serial"`
|
||||
SysPath string `json:"sys_path"` // sysfs path
|
||||
DevPath string `json:"dev_path"` // /dev/bus/usb path
|
||||
Interfaces []Interface `json:"interfaces"`
|
||||
}
|
||||
|
||||
// Interface represents a USB interface
|
||||
type Interface struct {
|
||||
Number uint8 `json:"number"`
|
||||
Class uint8 `json:"class"`
|
||||
SubClass uint8 `json:"sub_class"`
|
||||
Protocol uint8 `json:"protocol"`
|
||||
Driver string `json:"driver"`
|
||||
}
|
||||
|
||||
// DevID returns the USB/IP device ID (busnum << 16 | devnum)
|
||||
func (d *Device) DevID() uint32 {
|
||||
return (d.BusNum << 16) | d.DevNum
|
||||
}
|
||||
|
||||
// IsHub returns true if this is a USB hub
|
||||
func (d *Device) IsHub() bool {
|
||||
return d.DeviceClass == 9
|
||||
}
|
||||
|
||||
// DisplayName returns a human-readable device name
|
||||
func (d *Device) DisplayName() string {
|
||||
if d.Product != "" {
|
||||
if d.Manufacturer != "" {
|
||||
return d.Manufacturer + " " + d.Product
|
||||
}
|
||||
return d.Product
|
||||
}
|
||||
return "Unknown USB Device"
|
||||
}
|
||||
Reference in New Issue
Block a user