Boot reason via watchdog scratch register, reboot/picoboot CLI commands, enum msgpack support
This commit is contained in:
@@ -113,7 +113,7 @@ func closeTargets(targets []target) {
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
slog.Error("usage: picomap <info|load|log|test> [args...]")
|
||||
fmt.Fprintf(os.Stderr, "usage: picomap <command> [args...]\n\ncommands:\n info\n load\n log\n reboot\n picoboot\n test\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
cmd := os.Args[1]
|
||||
@@ -127,10 +127,14 @@ func main() {
|
||||
err = cmdLoad(args)
|
||||
case "log":
|
||||
err = cmdLog(args)
|
||||
case "reboot":
|
||||
err = cmdReboot(args)
|
||||
case "picoboot":
|
||||
err = cmdPICOBOOT(args)
|
||||
case "test":
|
||||
err = cmdTestGroup(args)
|
||||
default:
|
||||
slog.Error("usage: picomap <info|load|log|test> [args...]")
|
||||
fmt.Fprintf(os.Stderr, "usage: picomap <command> [args...]\n\ncommands:\n info\n load\n log\n reboot\n picoboot\n test\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err != nil {
|
||||
@@ -145,7 +149,8 @@ func printInfo(via string, info *client.ResponseInfo) {
|
||||
"board_id", hex.EncodeToString(info.BoardID[:]),
|
||||
"mac", net.HardwareAddr(info.MAC[:]).String(),
|
||||
"ip", net.IP(info.IP[:]).String(),
|
||||
"firmware", info.FirmwareName)
|
||||
"firmware", info.FirmwareName,
|
||||
"boot", info.Boot.String())
|
||||
}
|
||||
|
||||
func cmdInfo(args []string) error {
|
||||
@@ -199,6 +204,48 @@ func cmdLog(args []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func cmdReboot(args []string) error {
|
||||
fs := flag.NewFlagSet("reboot", flag.ExitOnError)
|
||||
tf := addTargetFlags(fs)
|
||||
fs.Parse(args)
|
||||
|
||||
targets, err := tf.connect(500 * time.Millisecond)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer closeTargets(targets)
|
||||
|
||||
for _, t := range targets {
|
||||
if err := t.client.Reboot(); err != nil {
|
||||
slog.Error("reboot error", "via", t.name, "err", err)
|
||||
continue
|
||||
}
|
||||
slog.Info("rebooted", "via", t.name)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cmdPICOBOOT(args []string) error {
|
||||
fs := flag.NewFlagSet("picoboot", flag.ExitOnError)
|
||||
tf := addTargetFlags(fs)
|
||||
fs.Parse(args)
|
||||
|
||||
targets, err := tf.connect(500 * time.Millisecond)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer closeTargets(targets)
|
||||
|
||||
for _, t := range targets {
|
||||
if err := t.client.PICOBOOT(); err != nil {
|
||||
slog.Error("picoboot error", "via", t.name, "err", err)
|
||||
continue
|
||||
}
|
||||
slog.Info("picoboot", "via", t.name)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func boardSerial(id [8]byte) string {
|
||||
return fmt.Sprintf("%02X%02X%02X%02X%02X%02X%02X%02X",
|
||||
id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7])
|
||||
|
||||
Reference in New Issue
Block a user