forked from Elara6331/infinitime
Log when too many disconnects occur rather than removing the device (Arsen6331/itd#10)
This commit is contained in:
parent
36aee2e1fe
commit
165db63deb
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user