functional yet ugly
This commit is contained in:
parent
e22682db00
commit
402f569eea
@ -8,29 +8,8 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
/*
|
||||
temp, err := GetTemperature()
|
||||
|
||||
if err == nil {
|
||||
log.Printf(
|
||||
"Temperature: %.2f°K %.2f°F %.2f°C\n",
|
||||
temp.Temperature+273.15,
|
||||
9.0/5.0*temp.Temperature+32,
|
||||
temp.Temperature,
|
||||
)
|
||||
} else {
|
||||
log.Fatalf("Failed: %s", err)
|
||||
}
|
||||
*/
|
||||
dev, err := temper.GetDevice()
|
||||
if err != nil {
|
||||
log.Fatalf("[FATAL] Unable to get TEMPer Device ID: %v\n", err)
|
||||
}
|
||||
|
||||
defer dev.Device.Close()
|
||||
|
||||
for {
|
||||
temp, err := dev.GetTemperature()
|
||||
temp, err := temper.GetTemperature()
|
||||
if err != nil {
|
||||
log.Printf("[WARNING] Unable to get temperature from device: %v\n", err)
|
||||
} else {
|
||||
@ -45,72 +24,3 @@ func main() {
|
||||
time.Sleep(time.Duration(5 * time.Second))
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
type DeviceTemperature struct {
|
||||
Device *gousb.Device
|
||||
Temperature float64
|
||||
}
|
||||
|
||||
func GetTemperature() (DeviceTemperature, error) {
|
||||
ctx := gousb.NewContext()
|
||||
defer ctx.Close()
|
||||
|
||||
vid, pid := gousb.ID(0x0c45), gousb.ID(0x7401)
|
||||
devs, err := ctx.OpenDevices(func(desc *gousb.DeviceDesc) bool {
|
||||
return desc.Vendor == vid && desc.Product == pid
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
|
||||
if len(devs) == 0 {
|
||||
return DeviceTemperature{}, fmt.Errorf("no devices found matching VID %s and PID %s", vid, pid)
|
||||
}
|
||||
|
||||
// Pick the first device found.
|
||||
dev := devs[0]
|
||||
devs[0].SetAutoDetach(true)
|
||||
|
||||
for _, d := range devs {
|
||||
defer d.Close()
|
||||
}
|
||||
|
||||
temp, err := getDeviceTemperature(dev)
|
||||
return temp, err
|
||||
}
|
||||
|
||||
func getDeviceTemperature(dev *gousb.Device) (DeviceTemperature, error) {
|
||||
cfg, err := dev.Config(1)
|
||||
if err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
defer cfg.Close()
|
||||
|
||||
intf, err := cfg.Interface(1, 0)
|
||||
if err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
defer intf.Close()
|
||||
|
||||
epIn, err := intf.InEndpoint(0x82)
|
||||
if err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
|
||||
_, err = dev.Control(
|
||||
0x21, 0x09, 0x0200, 0x01, []byte{0x01, 0x80, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00},
|
||||
)
|
||||
if err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
|
||||
buf := make([]byte, 8)
|
||||
if _, err = epIn.Read(buf); err != nil {
|
||||
return DeviceTemperature{}, err
|
||||
}
|
||||
|
||||
return DeviceTemperature{Device: dev, Temperature: float64(buf[2]) + float64(buf[3])/256}, nil
|
||||
}
|
||||
*/
|
||||
|
@ -6,12 +6,7 @@ import (
|
||||
"github.com/google/gousb"
|
||||
)
|
||||
|
||||
type TEMPer struct {
|
||||
Device *gousb.Device
|
||||
}
|
||||
|
||||
// GetDevice will return the first temper device found.
|
||||
func GetDevice() (*TEMPer, error) {
|
||||
func GetTemperature() (float64, error) {
|
||||
ctx := gousb.NewContext()
|
||||
defer ctx.Close()
|
||||
|
||||
@ -21,24 +16,20 @@ func GetDevice() (*TEMPer, error) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return &TEMPer{}, err
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if len(devs) == 0 {
|
||||
return &TEMPer{}, fmt.Errorf("no devices found matching VID %s and PID %s", vid, pid)
|
||||
return 0, fmt.Errorf("no devices found matching VID %s and PID %s", vid, pid)
|
||||
}
|
||||
|
||||
devs[0].SetAutoDetach(true)
|
||||
|
||||
for i := 1; i <= len(devs)-1; i++ {
|
||||
defer devs[i].Close()
|
||||
for _, d := range devs {
|
||||
defer d.Close()
|
||||
}
|
||||
|
||||
return &TEMPer{Device: devs[0]}, nil
|
||||
}
|
||||
|
||||
func (d *TEMPer) GetTemperature() (float64, error) {
|
||||
cfg, err := d.Device.Config(1)
|
||||
cfg, err := devs[0].Config(1)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@ -55,7 +46,7 @@ func (d *TEMPer) GetTemperature() (float64, error) {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
_, err = d.Device.Control(
|
||||
_, err = devs[0].Control(
|
||||
0x21, 0x09, 0x0200, 0x01, []byte{0x01, 0x80, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00},
|
||||
)
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user