41 lines
761 B
Go
41 lines
761 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("socOdometer", odo)
|
|
case api.ErrMustRetry:
|
|
default:
|
|
lp.log.ERROR.Printf("vehicle odometer: %v", err)
|
|
}
|
|
return err
|
|
}
|