From e61aabf40fbaff8f389c88f26550c0168919de4a Mon Sep 17 00:00:00 2001 From: Christian Josepeit <72402991+PanNwt@users.noreply.github.com> Date: Mon, 11 Oct 2021 08:36:18 +0200 Subject: [PATCH] Ovms: improve retry behaviour (#1713) --- vehicle/ovms.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vehicle/ovms.go b/vehicle/ovms.go index c58b7c216..db454046a 100644 --- a/vehicle/ovms.go +++ b/vehicle/ovms.go @@ -36,6 +36,8 @@ type Ovms struct { *embed *request.Helper user, password, vehicleId, server string + cache time.Duration + isOnline bool chargeG func() (interface{}, error) statusG func() (interface{}, error) } @@ -67,6 +69,7 @@ func NewOvmsFromConfig(other map[string]interface{}) (api.Vehicle, error) { password: cc.Password, vehicleId: cc.VehicleID, server: cc.Server, + cache: cc.Cache, } v.chargeG = provider.NewCached(v.batteryAPI, cc.Cache).InterfaceGetter() @@ -117,8 +120,8 @@ func (v *Ovms) authFlow() error { err := v.loginToServer() if err == nil { resp, err = v.connectRequest() - if err == nil && resp.NetConnected != 1 { - return api.ErrMustRetry + if err == nil { + v.isOnline = resp.NetConnected == 1 } } return err @@ -137,7 +140,7 @@ func (v *Ovms) batteryAPI() (interface{}, error) { } messageAge := time.Duration(resp.MessageAgeServer) * time.Second - if err == nil && messageAge > time.Minute { + if err == nil && v.isOnline && messageAge > v.cache { err = api.ErrMustRetry }