Vehicle: add maxcurrent setter (#13055)

This commit is contained in:
andig 2024-03-20 11:32:09 +01:00 • committed by GitHub
parent cccb620707
commit bdee2e5fa0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 733 additions and 42 deletions

View file

@ -8,7 +8,7 @@ import (
"github.com/evcc-io/evcc/util"
)
//go:generate go run ../cmd/tools/decorate.go -f decorateVehicle -b api.Vehicle -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.VehicleClimater,Climater,func() (bool, error)" -t "api.Resurrector,WakeUp,func() error"
//go:generate go run ../cmd/tools/decorate.go -f decorateVehicle -b api.Vehicle -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.VehicleClimater,Climater,func() (bool, error)" -t "api.CurrentController,MaxCurrent,func(int64) error" -t "api.Resurrector,WakeUp,func() error"
// Vehicle is an api.Vehicle implementation with configurable getters and setters.
type Vehicle struct {
@ -23,13 +23,14 @@ func init() {
// NewConfigurableFromConfig creates a new Vehicle
func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error) {
var cc struct {
embed `mapstructure:",squash"`
Soc provider.Config
Status *provider.Config
Range *provider.Config
Odometer *provider.Config
Climater *provider.Config
Wakeup *provider.Config
embed `mapstructure:",squash"`
Soc provider.Config
Status *provider.Config
Range *provider.Config
Odometer *provider.Config
Climater *provider.Config
MaxCurrent *provider.Config
Wakeup *provider.Config
}
if err := util.DecodeOther(other, &cc); err != nil {
@ -92,6 +93,16 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error
climater = climateG
}
// decorate maxCurrent
var maxCurrent func(int64) error
if cc.MaxCurrent != nil {
maxCurrentS, err := provider.NewIntSetterFromConfig("maxCurrent", *cc.MaxCurrent)
if err != nil {
return nil, fmt.Errorf("maxCurrent: %w", err)
}
maxCurrent = maxCurrentS
}
// decorate wakeup
var wakeup func() error
if cc.Wakeup != nil {
@ -104,7 +115,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error
}
}
return decorateVehicle(v, status, rng, odo, climater, wakeup), nil
return decorateVehicle(v, status, rng, odo, climater, maxCurrent, wakeup), nil
}
// Soc implements the api.Vehicle interface

View file

@ -6,12 +6,12 @@ import (
"github.com/evcc-io/evcc/api"
)
func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, error), vehicleRange func() (int64, error), vehicleOdometer func() (float64, error), vehicleClimater func() (bool, error), resurrector func() error) api.Vehicle {
func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, error), vehicleRange func() (int64, error), vehicleOdometer func() (float64, error), vehicleClimater func() (bool, error), currentController func(int64) error, resurrector func() error) api.Vehicle {
switch {
case chargeState == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return base
case chargeState != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -22,7 +22,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.VehicleRange
@ -33,7 +33,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -48,7 +48,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.VehicleOdometer
@ -59,7 +59,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -74,7 +74,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.VehicleOdometer
@ -89,7 +89,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -108,7 +108,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.VehicleClimater
@ -119,7 +119,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -134,7 +134,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.VehicleClimater
@ -149,7 +149,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -168,7 +168,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.VehicleClimater
@ -183,7 +183,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -202,7 +202,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.VehicleClimater
@ -221,7 +221,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -244,7 +244,311 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleOdometer
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleOdometer
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleClimater
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleClimater
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleClimater
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleClimater
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleClimater
api.VehicleOdometer
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleClimater
api.VehicleOdometer
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState == nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.VehicleClimater
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector == nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.VehicleClimater
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.Resurrector
@ -255,7 +559,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -270,7 +574,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.Resurrector
@ -285,7 +589,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -304,7 +608,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.Resurrector
@ -319,7 +623,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -338,7 +642,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.Resurrector
@ -357,7 +661,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -380,7 +684,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.Resurrector
@ -395,7 +699,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -414,7 +718,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.Resurrector
@ -433,7 +737,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -456,7 +760,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.Resurrector
@ -475,7 +779,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
@ -498,7 +802,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState == nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.Resurrector
@ -521,7 +825,7 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
},
}
case chargeState != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
case chargeState != nil && currentController == nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
@ -547,6 +851,374 @@ func decorateVehicle(base api.Vehicle, chargeState func() (api.ChargeStatus, err
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleOdometer
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleOdometer
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater == nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleClimater
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleClimater
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer == nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleOdometer
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange == nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleOdometer
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
}
case chargeState == nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
case chargeState != nil && currentController != nil && resurrector != nil && vehicleClimater != nil && vehicleOdometer != nil && vehicleRange != nil:
return &struct {
api.Vehicle
api.ChargeState
api.CurrentController
api.Resurrector
api.VehicleClimater
api.VehicleOdometer
api.VehicleRange
}{
Vehicle: base,
ChargeState: &decorateVehicleChargeStateImpl{
chargeState: chargeState,
},
CurrentController: &decorateVehicleCurrentControllerImpl{
currentController: currentController,
},
Resurrector: &decorateVehicleResurrectorImpl{
resurrector: resurrector,
},
VehicleClimater: &decorateVehicleVehicleClimaterImpl{
vehicleClimater: vehicleClimater,
},
VehicleOdometer: &decorateVehicleVehicleOdometerImpl{
vehicleOdometer: vehicleOdometer,
},
VehicleRange: &decorateVehicleVehicleRangeImpl{
vehicleRange: vehicleRange,
},
}
}
return nil
@ -560,6 +1232,14 @@ 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 decorateVehicleResurrectorImpl struct {
resurrector func() error
}