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" "forge.cadoles.com/cadoles/go-emlid/reach/client/protocol" v1 "forge.cadoles.com/cadoles/go-emlid/reach/client/protocol/v1" v2 "forge.cadoles.com/cadoles/go-emlid/reach/client/protocol/v2" "github.com/pkg/errors" ) var ( host string = "192.168.42.1" preferredProtocol string = string(v2.Identifier) fallbackProtocol string = string(v1.Identifier) rawLogLevel string = "ERROR" ) func init() { flag.StringVar(&rawLogLevel, "log-level", rawLogLevel, "log level") flag.StringVar(&host, "host", host, "the reachrs module host") flag.StringVar(&preferredProtocol, "preferred-protocol", preferredProtocol, "preferred-protocol") flag.StringVar(&fallbackProtocol, "fallback-protocol", fallbackProtocol, "fallback-protocol") } func main() { flag.Parse() logLevel, err := logger.ParseLevel(rawLogLevel) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } slog.SetLogLoggerLevel(logLevel) ctx := context.Background() client := reach.NewClient( host, reach.WithPreferredProtocol(protocol.Identifier(preferredProtocol)), reach.WithFallbackProtocol(protocol.Identifier(fallbackProtocol)), ) 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) } }() config, err := client.Configuration(ctx) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } data, err := json.MarshalIndent(config, "", " ") if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } fmt.Println(string(data)) }