Add debug log ring buffer with timestamps, log CLI subcommand
This commit is contained in:
@@ -29,10 +29,12 @@ func main() {
|
||||
err = cmdInfo()
|
||||
case "load":
|
||||
err = cmdLoad(args)
|
||||
case "log":
|
||||
err = cmdLog(args)
|
||||
case "test":
|
||||
err = cmdTest(args)
|
||||
default:
|
||||
slog.Error("unknown command", "cmd", cmd)
|
||||
slog.Error("usage: picomap <info|load|log|test> [args...]")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err != nil {
|
||||
@@ -128,6 +130,38 @@ func buildFirmware(buildDir string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func cmdLog(_ []string) error {
|
||||
devs, err := client.ListSerial()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(devs) == 0 {
|
||||
return fmt.Errorf("no devices found")
|
||||
}
|
||||
for _, dev := range devs {
|
||||
log := slog.With("dev", dev)
|
||||
c, err := client.NewSerial(dev, 2*time.Second)
|
||||
if err != nil {
|
||||
log.Error("connect error", "err", err)
|
||||
continue
|
||||
}
|
||||
resp, err := c.Log()
|
||||
c.Close()
|
||||
if err != nil {
|
||||
log.Error("log error", "err", err)
|
||||
continue
|
||||
}
|
||||
if len(resp.Entries) == 0 {
|
||||
log.Info("no debug messages")
|
||||
continue
|
||||
}
|
||||
for _, e := range resp.Entries {
|
||||
log.Info("dlog", "t_us", e.TimestampUS, "msg", e.Message)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cmdLoad(args []string) error {
|
||||
target := "all"
|
||||
if len(args) > 0 {
|
||||
|
||||
Reference in New Issue
Block a user