evcc-io/vehicle/vehicle_decorators.go

150 lines
4.3 KiB
Go

package vehicle
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"reflect"
"time"
"github.com/evcc-io/evcc/api"
)
func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeState func() (api.ChargeStatus, error), vehicleRange func() (int64, error), vehicleOdometer func() (float64, error), vehicleClimater func() (bool, error), currentController func(int64) error, currentGetter func() (float64, error), vehicleFinishTimer func() (time.Time, error), resurrector func() error, chargeController func(bool) error) api.Vehicle {
caps := make(map[reflect.Type]any)
if socLimiter != nil {
caps[reflect.TypeFor[api.SocLimiter]()] = &decorateVehicleSocLimiterImpl{socLimiter: socLimiter}
}
if chargeState != nil {
caps[reflect.TypeFor[api.ChargeState]()] = &decorateVehicleChargeStateImpl{chargeState: chargeState}
}
if vehicleRange != nil {
caps[reflect.TypeFor[api.VehicleRange]()] = &decorateVehicleVehicleRangeImpl{vehicleRange: vehicleRange}
}
if vehicleOdometer != nil {
caps[reflect.TypeFor[api.VehicleOdometer]()] = &decorateVehicleVehicleOdometerImpl{vehicleOdometer: vehicleOdometer}
}
if vehicleClimater != nil {
caps[reflect.TypeFor[api.VehicleClimater]()] = &decorateVehicleVehicleClimaterImpl{vehicleClimater: vehicleClimater}
}
if currentController != nil {
caps[reflect.TypeFor[api.CurrentController]()] = &decorateVehicleCurrentControllerImpl{currentController: currentController}
}
if currentGetter != nil {
caps[reflect.TypeFor[api.CurrentGetter]()] = &decorateVehicleCurrentGetterImpl{currentGetter: currentGetter}
}
if vehicleFinishTimer != nil {
caps[reflect.TypeFor[api.VehicleFinishTimer]()] = &decorateVehicleVehicleFinishTimerImpl{vehicleFinishTimer: vehicleFinishTimer}
}
if resurrector != nil {
caps[reflect.TypeFor[api.Resurrector]()] = &decorateVehicleResurrectorImpl{resurrector: resurrector}
}
if chargeController != nil {
caps[reflect.TypeFor[api.ChargeController]()] = &decorateVehicleChargeControllerImpl{chargeController: chargeController}
}
if len(caps) == 0 {
return base
}
return &decorateVehicleCapable{Vehicle: base, caps: caps}
}
type decorateVehicleCapable struct {
api.Vehicle
caps map[reflect.Type]any
}
func (d *decorateVehicleCapable) Capability(typ reflect.Type) (any, bool) {
c, ok := d.caps[typ]
return c, ok
}
type decorateVehicleChargeControllerImpl struct {
chargeController func(bool) error
}
func (impl *decorateVehicleChargeControllerImpl) ChargeEnable(p0 bool) error {
return impl.chargeController(p0)
}
type decorateVehicleChargeStateImpl struct {
chargeState func() (api.ChargeStatus, error)
}
func (impl *decorateVehicleChargeStateImpl) Status() (api.ChargeStatus, error) {
return impl.chargeState()
}
type decorateVehicleCurrentControllerImpl struct {
currentController func(int64) error
}
func (impl *decorateVehicleCurrentControllerImpl) MaxCurrent(p0 int64) error {
return impl.currentController(p0)
}
type decorateVehicleCurrentGetterImpl struct {
currentGetter func() (float64, error)
}
func (impl *decorateVehicleCurrentGetterImpl) GetMaxCurrent() (float64, error) {
return impl.currentGetter()
}
type decorateVehicleResurrectorImpl struct {
resurrector func() error
}
func (impl *decorateVehicleResurrectorImpl) WakeUp() error {
return impl.resurrector()
}
type decorateVehicleSocLimiterImpl struct {
socLimiter func() (int64, error)
}
func (impl *decorateVehicleSocLimiterImpl) GetLimitSoc() (int64, error) {
return impl.socLimiter()
}
type decorateVehicleVehicleClimaterImpl struct {
vehicleClimater func() (bool, error)
}
func (impl *decorateVehicleVehicleClimaterImpl) Climater() (bool, error) {
return impl.vehicleClimater()
}
type decorateVehicleVehicleFinishTimerImpl struct {
vehicleFinishTimer func() (time.Time, error)
}
func (impl *decorateVehicleVehicleFinishTimerImpl) FinishTime() (time.Time, error) {
return impl.vehicleFinishTimer()
}
type decorateVehicleVehicleOdometerImpl struct {
vehicleOdometer func() (float64, error)
}
func (impl *decorateVehicleVehicleOdometerImpl) Odometer() (float64, error) {
return impl.vehicleOdometer()
}
type decorateVehicleVehicleRangeImpl struct {
vehicleRange func() (int64, error)
}
func (impl *decorateVehicleVehicleRangeImpl) Range() (int64, error) {
return impl.vehicleRange()
}