| package main |
| |
| import ( |
| "context" |
| "fmt" |
| |
| "github.com/go-ble/ble" |
| "github.com/pkg/errors" |
| "github.com/urfave/cli" |
| ) |
| |
| func doGetUUID(c *cli.Context) error { |
| if c.String("uuid") != "" { |
| u, err := ble.Parse(c.String("uuid")) |
| if err != nil { |
| return errInvalidUUID |
| } |
| curr.uuid = u |
| } |
| if curr.uuid == nil { |
| return errNoUUID |
| } |
| return nil |
| } |
| |
| func doConnect(c *cli.Context) error { |
| if c.String("addr") != "" { |
| curr.addr = ble.NewAddr(c.String("addr")) |
| curr.client = curr.clients[curr.addr.String()] |
| } |
| if curr.client != nil { |
| return nil |
| } |
| return cmdConnect(c) |
| } |
| |
| func doDiscover(c *cli.Context) error { |
| if curr.profile != nil { |
| return nil |
| } |
| return cmdDiscover(c) |
| } |
| |
| func chkErr(err error) error { |
| switch errors.Cause(err) { |
| case context.DeadlineExceeded: |
| // Sepcified duration passed, which is the expected case. |
| return nil |
| case context.Canceled: |
| fmt.Printf("\n(Canceled)\n") |
| return nil |
| } |
| return err |
| } |