Compare commits

...

2 Commits

Author SHA1 Message Date
Elara 91fbe718e5 Add error handling to connect call 2021-08-21 20:25:09 -07:00
Elara 7f19dfb354 Allow configuration of pair timeout 2021-08-21 20:24:56 -07:00
1 changed files with 9 additions and 5 deletions

View File

@ -39,13 +39,14 @@ type Device struct {
var ErrNoDevices = errors.New("no InfiniTime devices found")
var ErrNotFound = errors.New("could not find any advertising InfiniTime devices")
type Options struct {
AttemptReconnect bool
PairTimeout time.Duration
}
var DefaultOptions = &Options{
AttemptReconnect: true,
PairTimeout: time.Minute,
}
// Connect will attempt to connect to a
@ -63,7 +64,7 @@ func Connect(opts *Options) (*Device, error) {
// If such device does not exist
if errors.Is(err, ErrNoDevices) {
// Attempt to pair device
dev, err = pair()
dev, err = pair(dev.opts.PairTimeout)
}
if err != nil {
return nil, err
@ -150,7 +151,10 @@ func connectByName() (*Device, error) {
return nil, ErrNoDevices
}
// Connect to device
out.device.Connect()
err = out.device.Connect()
if err != nil {
return nil, err
}
// Resolve characteristics
err = out.resolveChars()
if err != nil {
@ -160,7 +164,7 @@ func connectByName() (*Device, error) {
}
// Pair attempts to discover and pair an InfiniTime device
func pair() (*Device, error) {
func pair(timeout time.Duration) (*Device, error) {
// Create new device
out := &Device{}
// Start bluetooth discovery
@ -190,7 +194,7 @@ discoveryLoop:
// Break out of discoveryLoop
break discoveryLoop
}
case <-time.After(5 * time.Second):
case <-time.After(timeout):
break discoveryLoop
}
}