From 402f569eeae5d803ada29cb949719cb01ef45736 Mon Sep 17 00:00:00 2001
From: The_Spider <nhyatt@smoothnet.org>
Date: Sat, 30 Oct 2021 11:24:48 -0500
Subject: [PATCH] functional yet ugly

---
 cmd/go-temper/main.go     | 92 +--------------------------------------
 internal/temper/temper.go | 23 +++-------
 2 files changed, 8 insertions(+), 107 deletions(-)

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 {