diff --git a/cmd/go-temper/main.go b/cmd/go-temper/main.go index ece56a1..b2526a6 100644 --- a/cmd/go-temper/main.go +++ b/cmd/go-temper/main.go @@ -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 -} -*/ diff --git a/internal/temper/temper.go b/internal/temper/temper.go index d7bf941..1e18109 100644 --- a/internal/temper/temper.go +++ b/internal/temper/temper.go @@ -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 {