package main import ( "flag" "fmt" "powerpod/gotool/pb" ) func runTapNotify(sp *serialPort, args []string) error { fs := flag.NewFlagSet("tap-notify", flag.ExitOnError) write := fs.Bool("set", false, "write tap notify flags (default: read)") clientID := fs.Uint("client", 0, "client id (>0 required for read/set one slave)") all := fs.Bool("all", false, "apply to all registered slaves (with -set)") single := fs.Bool("single", false, "notify on single tap") doubleTap := fs.Bool("double", false, "notify on double tap") triple := fs.Bool("triple", false, "notify on triple tap") if err := fs.Parse(args); err != nil { return err } if !*write && (*all || *clientID == 0) { return fmt.Errorf("read requires -client ") } if *write && !*all && *clientID == 0 { return fmt.Errorf("set requires -client or -all") } r, err := sp.TapNotify(&pb.TapNotifyRequest{ Write: *write, ClientId: uint32(*clientID), AllClients: *all, Single: *single, DoubleTap: *doubleTap, Triple: *triple, }) if err != nil { return err } fmt.Printf("client_id=%d success=%v slaves_updated=%d single=%v double=%v triple=%v\n", r.GetClientId(), r.GetSuccess(), r.GetSlavesUpdated(), r.GetSingle(), r.GetDoubleTap(), r.GetTriple()) return nil } func tapKindLabel(k pb.TapKind) string { switch k { case pb.TapKind_TAP_SINGLE: return "single" case pb.TapKind_TAP_DOUBLE: return "double" case pb.TapKind_TAP_TRIPLE: return "triple" default: return "none" } }