package main import ( "flag" "fmt" "log" "os" ) const defaultBaud = 921600 func usage() { fmt.Fprintf(os.Stderr, "usage: gotool -port /dev/ttyUSB0 \n\n") fmt.Fprintf(os.Stderr, "commands:\n") fmt.Fprintf(os.Stderr, " version firmware version and git hash\n") fmt.Fprintf(os.Stderr, " clients registered ESP-NOW slaves on the master\n\n") flag.PrintDefaults() } func main() { portName := flag.String("port", "", "serial port (e.g. /dev/ttyUSB0)") baud := flag.Int("baud", defaultBaud, "UART baud rate") flag.Parse() if *portName == "" || flag.NArg() < 1 { usage() os.Exit(2) } cmd := flag.Arg(0) sp, err := openSerial(*portName, *baud) if err != nil { log.Fatalf("open serial: %v", err) } defer sp.Close() var runErr error switch cmd { case "version": runErr = runVersion(sp) case "clients", "client-info": runErr = runClients(sp) default: fmt.Fprintf(os.Stderr, "unknown command %q\n\n", cmd) usage() os.Exit(2) } if runErr != nil { log.Fatal(runErr) } }