mirror of
https://github.com/BertoldVdb/ms-tools.git
synced 2025-12-10 07:44:46 +01:00
41 lines
789 B
Go
41 lines
789 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/sstallion/go-hid"
|
|
"errors"
|
|
)
|
|
|
|
func SearchDevice(foundHandler func(info *hid.DeviceInfo) error) error {
|
|
return hid.Enumerate(uint16(CLI.VID), uint16(CLI.PID), func(info *hid.DeviceInfo) error {
|
|
if CLI.Serial != "" && info.SerialNbr != CLI.Serial {
|
|
return nil
|
|
}
|
|
if CLI.RawPath != "" && info.Path != CLI.RawPath {
|
|
return nil
|
|
}
|
|
|
|
return foundHandler(info)
|
|
})
|
|
}
|
|
|
|
func OpenDevice() (*hid.Device, error) {
|
|
var dev *hid.Device
|
|
err := SearchDevice(func(info *hid.DeviceInfo) error {
|
|
d, err := hid.Open(info.VendorID, info.ProductID, info.SerialNbr)
|
|
if err == nil {
|
|
dev = d
|
|
return errors.New("Done")
|
|
}
|
|
return err
|
|
})
|
|
if dev != nil {
|
|
return dev, nil
|
|
}
|
|
if err == nil {
|
|
err = os.ErrNotExist
|
|
}
|
|
|
|
return nil, err
|
|
}
|