Log when too many disconnects occur rather than removing the device (Arsen6331/itd#10)

This commit is contained in:
Elara 2022-04-16 04:24:21 -07:00
parent 7026da3f6f
commit b7a50271be

View File

@ -14,6 +14,7 @@ import (
"github.com/muka/go-bluetooth/bluez/profile/adapter" "github.com/muka/go-bluetooth/bluez/profile/adapter"
"github.com/muka/go-bluetooth/bluez/profile/device" "github.com/muka/go-bluetooth/bluez/profile/device"
"github.com/muka/go-bluetooth/bluez/profile/gatt" "github.com/muka/go-bluetooth/bluez/profile/gatt"
"github.com/rs/zerolog"
"go.arsenm.dev/infinitime/blefs" "go.arsenm.dev/infinitime/blefs"
) )
@ -67,11 +68,15 @@ type Options struct {
Whitelist []string Whitelist []string
OnReqPasskey func() (uint32, error) OnReqPasskey func() (uint32, error)
OnReconnect func() OnReconnect func()
Logger zerolog.Logger
LogLevel zerolog.Level
} }
var DefaultOptions = &Options{ var DefaultOptions = &Options{
AttemptReconnect: true, AttemptReconnect: true,
WhitelistEnabled: false, WhitelistEnabled: false,
Logger: zerolog.Nop(),
LogLevel: zerolog.Disabled,
} }
// Connect will attempt to connect to a // Connect will attempt to connect to a
@ -239,10 +244,10 @@ func reconnect(opts *Options, dev *device.Device1) {
amtDisconnects = 0 amtDisconnects = 0
} }
// If less than 3 seconds have past and more than 6 // If less than 3 seconds have passed and more than 6
// disconnects have occurred, remove the device and reset // disconnects have occurred, remove the device and reset
if secsSince <= 3 && amtDisconnects >= 6 { if secsSince <= 3 && amtDisconnects >= 6 {
defaultAdapter.RemoveDevice(dev.Path()) opts.Logger.Warn().Msg("At least 6 disconnects have occurred in the last three seconds. If this continues, try removing the InfiniTime device from bluetooth.")
lastDisconnect = time.Unix(0, 0) lastDisconnect = time.Unix(0, 0)
amtDisconnects = 0 amtDisconnects = 0
} }
@ -254,7 +259,7 @@ func reconnect(opts *Options, dev *device.Device1) {
for i := 0; i < 6; i++ { for i := 0; i < 6; i++ {
// If three tries failed, remove device // If three tries failed, remove device
if i == 3 { if i == 3 {
defaultAdapter.RemoveDevice(dev.Path()) opts.Logger.Warn().Msg("Multiple connection attempts have failed. If this continues, try removing the InfiniTime device from bluetooth.")
} }
// Connect to device // Connect to device
newDev, err := connect(opts, false) newDev, err := connect(opts, false)