evcc-io/core/loadpoint_task.go
2021-08-23 13:39:43 +02:00

41 lines
765 B
Go

package core
import (
"errors"
"github.com/evcc-io/evcc/api"
)
// task adds a task to the list of running tasks
func (lp *LoadPoint) task(task func() error) {
lp.tasks = append(lp.tasks, task)
}
// runTasks runs all defined tasks
func (lp *LoadPoint) runTasks() {
var incomplete []func() error
for _, task := range lp.tasks {
err := task()
if errors.Is(err, api.ErrMustRetry) {
incomplete = append(incomplete, task)
}
}
lp.tasks = incomplete
}
func (lp *LoadPoint) odometer() error {
v, ok := lp.vehicle.(api.VehicleOdometer)
if !ok {
return nil
}
odo, err := v.Odometer()
switch err {
case nil:
lp.publish("vehicleOdometer", odo)
case api.ErrMustRetry:
default:
lp.log.ERROR.Printf("vehicle odometer: %v", err)
}
return err
}