package main import ( "context" "encoding/json" "flag" "fmt" "log/slog" "os" reach "forge.cadoles.com/cadoles/go-emlid/reach/client" "forge.cadoles.com/cadoles/go-emlid/reach/client/logger" "github.com/pkg/errors" ) var ( host string = "192.168.42.1" filter string = "" rawLogLevel string = "ERROR" ) func init() { flag.StringVar(&rawLogLevel, "log-level", rawLogLevel, "log level") flag.StringVar(&host, "host", host, "the reachrs module host") flag.StringVar(&filter, "filter", filter, "filter the broadcast messages by name") } func main() { flag.Parse() ctx := context.Background() client := reach.NewClient(host) logLevel, err := logger.ParseLevel(rawLogLevel) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } slog.SetLogLoggerLevel(logLevel) if err := client.Connect(ctx); err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } defer func() { if err := client.Close(ctx); err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } }() broadcasts, err := reach.OnBroadcast(ctx, client) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } for b := range broadcasts { if filter != "" && b.Name != filter { continue } data, err := json.MarshalIndent(b, "", " ") if err != nil { fmt.Printf("[ERROR] %+v", errors.WithStack(err)) continue } fmt.Println(string(data)) } }