package main import ( "cli-mon/can" "cli-mon/ui" yabl "cli-mon/yabl" "flag" "fmt" "os" ) func main() { filename := flag.String("f", "", "Candump filename") canbus := flag.String("i", "", "CAN bus interface") stdin := flag.Bool("s", false, "Read from stdin") gui := flag.Bool("gui", false, "Text mode gui") flag.Parse() var frames <-chan *can.CanFrame switch { case *stdin: frames = can.ReadStdin() case len(*filename) > 0: frames = can.Readfile(filename) case len(*canbus) > 0: var err error frames, err = can.StartCan(*canbus) if err != nil { fmt.Println(err) return } default: flag.Usage() } if frames == nil { fmt.Println("Get no data") os.Exit(0) } converter := yabl.NewProtocolConverter() var display ui.UI if *gui { display = ui.NewUI() } else { display = ui.NewLog() } display.Start() for frame := range frames { if events, ok := converter.EventsFromFrame(frame); ok { for _, event := range events { display.Consume(event) } } } display.Stop() }