blob: dbcf0875cb917eea6aa0442c45474f673ffc0614 [file] [log] [blame]
// Command-line utility application to read sensor values and printSensorValue to stdout.
//
// Currently only supports the DLP-TH1C sensor module.
package main
import (
"fmt"
"os"
"go.skia.org/infra/go/skerr"
"go.skia.org/infra/skolo/go/sensors"
)
func openDevice(portName string) (*sensors.DLPTH1C, error) {
d, err := sensors.NewDLPTH1C(portName)
if err != nil {
return nil, skerr.Wrapf(err, `error opening port "%s"`, portName)
}
const maxPings = 5
err = d.ConfirmConnection(maxPings)
if err != nil {
return nil, skerr.Wrapf(err, "error confirming connection to device")
}
return d, nil
}
func printSensorValue[S fmt.Stringer](label string, fn func() (S, error)) {
s, err := fn()
if err != nil {
fmt.Printf("Error %s: %s\n", label, err)
} else {
fmt.Printf("%s: %v\n", label, s)
}
}
func main() {
args := os.Args[1:]
if len(args) != 1 {
fmt.Fprintf(os.Stderr, "Usage: %s <serial-port-name>\n", os.Args[0])
os.Exit(1)
}
portName := args[0]
d, err := openDevice(portName)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to open device: %v\n", err)
os.Exit(2)
}
printSensorValue("Temperature", d.GetTemperature)
printSensorValue("Humidity", d.GetHumidity)
printSensorValue("Pressure", d.GetPressure)
printSensorValue("Tilt", d.GetTilt)
printSensorValue("Vibration X", d.GetVibrationX)
printSensorValue("Vibration Y", d.GetVibrationY)
printSensorValue("Vibration Z", d.GetVibrationZ)
printSensorValue("Light", d.GetLight)
printSensorValue("Sound", d.GetSound)
printSensorValue("Broadband sound", d.GetBroadbandSound)
}