forked from boombuler/led
-
Notifications
You must be signed in to change notification settings - Fork 0
/
usbdevice.go
46 lines (38 loc) · 868 Bytes
/
usbdevice.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package led
import (
"github.com/boombuler/hid"
)
type usbDriver struct {
Name string
Type *DeviceType
VendorId uint16
ProductId uint16
Open func(hidDevice hid.Device) (Device, error)
}
func (drv usbDriver) name() string {
return drv.Name
}
func (sd usbDriver) convert(hDev *hid.DeviceInfo) DeviceInfo {
if hDev.VendorId == sd.VendorId && hDev.ProductId == sd.ProductId {
return &usbDeviceInfo{hDev, &sd}
}
return nil
}
type usbDeviceInfo struct {
*hid.DeviceInfo
driver *usbDriver
}
func (usb usbDeviceInfo) GetType() DeviceType {
return *usb.driver.Type
}
func (usb usbDeviceInfo) GetPath() string {
return usb.Path
}
func (usb *usbDeviceInfo) Open() (Device, error) {
d, err := usb.DeviceInfo.Open()
if err != nil {
return nil, err
} else {
return usb.driver.Open(d)
}
}