diff --git a/cmd/sutron/main.go b/cmd/sutron/main.go index 823ef0b..6ca8f5d 100644 --- a/cmd/sutron/main.go +++ b/cmd/sutron/main.go @@ -1,7 +1,6 @@ package main import ( - "git.binarythought.com/cdramey/sdb" "git.binarythought.com/cdramey/sutron" "fmt" "bytes" @@ -16,39 +15,31 @@ func main() { os.Exit(1) } - raw, err := ioutil.ReadFile(os.Args[1]) + var raw []byte + var err error + if os.Args[1] == "-" { + raw, err = ioutil.ReadAll(os.Stdin) + } else { + raw, err = ioutil.ReadFile(os.Args[1]) + } if err != nil { fmt.Fprintf(os.Stderr, "error reading \"%s\": %s\n", os.Args[1], err.Error()) } - sdbdata, err := sdb.ParseSDB(raw) - if err != nil { - fmt.Fprintf(os.Stderr, - "%s\n", err.Error()) - os.Exit(1) - } - - for _, i := range sdbdata.Elements { - switch v := i.(type) { - case sdb.MOPayload: - // Seek forward to the First "B" - Sadly necessary - // in certain scenarios - l := bytes.Index(v.Payload, []byte("B")) - if l != -1 { - sutrondata, err := sutron.ParseSutronB(v.Payload[l:]) - if err != nil { - fmt.Fprintf(os.Stderr, - "%s\n", err.Error()) - os.Exit(1) - } - - fmt.Printf("Sutron Block: %s\n", string(sutrondata.Block)) - fmt.Printf("Sutron Group: %s\n", string(sutrondata.Group)) - fmt.Printf("Sutron Delta: %s\n", string(sutrondata.Delta)) - fmt.Printf("Sutron Voltage: %s\n", string(sutrondata.Voltage)) - } + i := bytes.Index(raw, []byte("B")) + if i != -1 { + sutrondata, err := sutron.ParseSutronB(raw[i:]) + if err != nil { + fmt.Fprintf(os.Stderr, + "%s\n", err.Error()) + os.Exit(1) } + + fmt.Printf("Sutron Block: %s\n", string(sutrondata.Block)) + fmt.Printf("Sutron Group: %s\n", string(sutrondata.Group)) + fmt.Printf("Sutron Delta: %s\n", string(sutrondata.Delta)) + fmt.Printf("Sutron Voltage: %s\n", string(sutrondata.Voltage)) } } diff --git a/sutron.go b/sutron.go index 3bd7573..8019256 100644 --- a/sutron.go +++ b/sutron.go @@ -1,7 +1,6 @@ package sutron import ( -// "encoding/binary" "fmt" )