diff --git a/api/api.go b/api/api.go index 6e47d1ac1..6c938f419 100644 --- a/api/api.go +++ b/api/api.go @@ -49,9 +49,14 @@ type MaxACPowerGetter interface { MaxACPower() float64 } -// BatteryMaxPowerGetter provides max AC charge- and discharge power in W -type BatteryMaxPowerGetter interface { - GetMaxChargeDischargePower() (float64, float64) +// BatteryPowerLimiter provides max AC charge- and discharge power in W +type BatteryPowerLimiter interface { + GetPowerLimits() (charge, discharge float64) +} + +// BatterySocLimiter provides min/max battery soc in % +type BatterySocLimiter interface { + GetSocLimits() (min, max float64) } // ChargeState provides current charging status diff --git a/cmd/decorate/decorate.go b/cmd/decorate/decorate.go index cf5b52439..c8ac3101b 100644 --- a/cmd/decorate/decorate.go +++ b/cmd/decorate/decorate.go @@ -47,9 +47,10 @@ var a struct { api.Battery api.BatteryCapacity + api.SocLimiter // vehicles only api.BatteryController - api.SocLimiter - api.BatteryMaxPowerGetter + api.BatterySocLimiter + api.BatteryPowerLimiter } func typ(i any) string { @@ -57,10 +58,10 @@ func typ(i any) string { } var dependents = map[string][]string{ - typ(&a.Meter): {typ(&a.MeterEnergy), typ(&a.PhaseCurrents), typ(&a.PhaseVoltages), typ(&a.PhasePowers), typ(&a.MaxACPowerGetter)}, + typ(&a.Meter): {typ(&a.MeterEnergy), typ(&a.PhaseCurrents), typ(&a.PhaseVoltages), typ(&a.MaxACPowerGetter)}, typ(&a.PhaseCurrents): {typ(&a.PhasePowers)}, // phase powers are only used to determine currents sign typ(&a.PhaseSwitcher): {typ(&a.PhaseGetter)}, - typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.BatteryController), typ(&a.SocLimiter), typ(&a.BatteryMaxPowerGetter)}, + typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.SocLimiter), typ(&a.BatteryController), typ(&a.BatterySocLimiter), typ(&a.BatteryPowerLimiter)}, } // hasIntersection returns if the slices intersect diff --git a/core/site_optimizer.go b/core/site_optimizer.go index 75eafb245..4c0283e29 100644 --- a/core/site_optimizer.go +++ b/core/site_optimizer.go @@ -231,12 +231,18 @@ func (site *Site) optimizerUpdate(battery []measurement) error { bat.ChargeFromGrid = true } - if m, ok := instance.(api.BatteryMaxPowerGetter); ok { - charge, discharge := m.GetMaxChargeDischargePower() + if m, ok := instance.(api.BatteryPowerLimiter); ok { + charge, discharge := m.GetPowerLimits() bat.CMax = float32(charge) bat.DMax = float32(discharge) } + if m, ok := instance.(api.BatterySocLimiter); ok { + min, max := m.GetSocLimits() + bat.SMin = float32(*b.Capacity * float64(min) * 10) // Wh + bat.SMax = float32(*b.Capacity * float64(max) * 10) // Wh + } + req.Batteries = append(req.Batteries, bat) details.BatteryDetails = append(details.BatteryDetails, batteryDetail{ diff --git a/meter/lgess.go b/meter/lgess.go index 4fbfba3ce..6a102d325 100644 --- a/meter/lgess.go +++ b/meter/lgess.go @@ -22,7 +22,7 @@ func init() { registry.Add("lgess15", NewLgEss15FromConfig) } -//go:generate go tool decorate -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate go tool decorate -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" func NewLgEss8FromConfig(other map[string]interface{}) (api.Meter, error) { return NewLgEssFromConfig(other, lgpcs.LgEss8) @@ -79,15 +79,18 @@ func NewLgEss(uri, usage, registration, password string, cache time.Duration, ca // decorate battery var batterySoc func() (float64, error) + var batterySocLimiter func() (float64, float64) var setBatteryMode func(api.BatteryMode) error if usage == "battery" { batterySoc = m.batterySoc + batterySocLimiter = batterySocLimits.Decorator() + if version, err := conn.GetFirmwareVersion(); err == nil && version >= 7430 { setBatteryMode = m.batteryMode(batterySocLimits) } } - return decorateLgEss(m, totalEnergy, batterySoc, setBatteryMode, capacity), nil + return decorateLgEss(m, totalEnergy, capacity, batterySoc, batterySocLimiter, setBatteryMode), nil } // CurrentPower implements the api.Meter interface diff --git a/meter/lgess_decorators.go b/meter/lgess_decorators.go index 54db10bcf..c42057c2b 100644 --- a/meter/lgess_decorators.go +++ b/meter/lgess_decorators.go @@ -6,7 +6,7 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery func() (float64, error), batteryController func(api.BatteryMode) error, batteryCapacity func() float64) api.Meter { +func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapacity func() float64, battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { switch { case battery == nil && meterEnergy == nil: return base @@ -22,7 +22,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -33,7 +33,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -48,41 +48,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil: - return &struct { - *LgEss - api.Battery - api.BatteryController - }{ - LgEss: base, - Battery: &decorateLgEssBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateLgEssBatteryControllerImpl{ - batteryController: batteryController, - }, - } - - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil: - return &struct { - *LgEss - api.Battery - api.BatteryController - api.MeterEnergy - }{ - LgEss: base, - Battery: &decorateLgEssBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateLgEssBatteryControllerImpl{ - batteryController: batteryController, - }, - MeterEnergy: &decorateLgEssMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -97,7 +63,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -116,7 +82,117 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -135,7 +211,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -157,6 +233,98 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun meterEnergy: meterEnergy, }, } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } } return nil @@ -186,6 +354,14 @@ func (impl *decorateLgEssBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMod return impl.batteryController(p0) } +type decorateLgEssBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateLgEssBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + type decorateLgEssMeterEnergyImpl struct { meterEnergy func() (float64, error) } diff --git a/meter/meter.go b/meter/meter.go index 13b6c1a17..6d5fc3c39 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -14,7 +14,7 @@ func init() { registry.AddCtx(api.Custom, NewConfigurableFromConfig) } -//go:generate go tool decorate -f decorateMeter -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryMaxPowerGetter,GetMaxChargeDischargePower,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.MaxACPowerGetter,MaxACPower,func() float64" +//go:generate go tool decorate -f decorateMeter -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryPowerLimiter,GetPowerLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.MaxACPowerGetter,MaxACPower,func() float64" // NewConfigurableFromConfig creates api.Meter from config func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{}) (api.Meter, error) { @@ -26,12 +26,12 @@ func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{} pvMaxACPower `mapstructure:",squash"` // battery - batteryCapacity `mapstructure:",squash"` - batterySocLimits `mapstructure:",squash"` - batteryChargeDischargePower `mapstructure:",squash"` - Soc *plugin.Config // optional - LimitSoc *plugin.Config // optional - BatteryMode *plugin.Config // optional + batteryCapacity `mapstructure:",squash"` + batterySocLimits `mapstructure:",squash"` + batteryPowerLimits `mapstructure:",squash"` + Soc *plugin.Config // optional + LimitSoc *plugin.Config // optional + BatteryMode *plugin.Config // optional }{ batterySocLimits: batterySocLimits{ MinSoc: 20, @@ -85,7 +85,7 @@ func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{} res := m.Decorate( energyG, currentsG, voltagesG, powersG, - socG, cc.batteryCapacity.Decorator(), cc.batteryChargeDischargePower.Decorator(), batModeS, + socG, cc.batteryCapacity.Decorator(), cc.batterySocLimits.Decorator(), cc.batteryPowerLimits.Decorator(), batModeS, cc.pvMaxACPower.Decorator(), ) @@ -111,13 +111,13 @@ func (m *Meter) Decorate( currents, voltages, powers func() (float64, float64, float64, error), batterySoc func() (float64, error), batteryCapacity func() float64, - batteryChargeDischargePower func() (float64, float64), + batterySocLimits, batteryPowerLimits func() (float64, float64), setBatteryMode func(api.BatteryMode) error, maxACPower func() float64, ) api.Meter { return decorateMeter(m, totalEnergy, currents, voltages, powers, - batterySoc, batteryCapacity, batteryChargeDischargePower, setBatteryMode, + batterySoc, batteryCapacity, batterySocLimits, batteryPowerLimits, setBatteryMode, maxACPower, ) } diff --git a/meter/meter_average.go b/meter/meter_average.go index 096c79f34..37605675d 100644 --- a/meter/meter_average.go +++ b/meter/meter_average.go @@ -70,7 +70,7 @@ func NewMovingAverageFromConfig(ctx context.Context, other map[string]interface{ powers = m.Powers } - return meter.Decorate(totalEnergy, currents, voltages, powers, batterySoc, cc.Meter.batteryCapacity.Decorator(), nil, nil, nil), nil + return meter.Decorate(totalEnergy, currents, voltages, powers, batterySoc, cc.Meter.batteryCapacity.Decorator(), nil, nil, nil, nil), nil } type MovingAverage struct { diff --git a/meter/meter_decorators.go b/meter/meter_decorators.go index d7a57a74c..ca490cbe1 100644 --- a/meter/meter_decorators.go +++ b/meter/meter_decorators.go @@ -6,7 +6,7 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), phasePowers func() (float64, float64, float64, error), battery func() (float64, error), batteryCapacity func() float64, batteryMaxPowerGetter func() (float64, float64), batteryController func(api.BatteryMode) error, maxACPowerGetter func() float64) api.Meter { +func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), phasePowers func() (float64, float64, float64, error), battery func() (float64, error), batteryCapacity func() float64, batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), batteryController func(api.BatteryMode) error, maxACPowerGetter func() float64) api.Meter { switch { case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return base @@ -184,7 +184,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -195,7 +195,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -210,7 +210,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -225,7 +225,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -244,7 +244,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -259,7 +259,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -278,7 +278,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -297,7 +297,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -320,7 +320,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -339,7 +339,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -362,7 +362,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -385,7 +385,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -412,7 +412,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -427,7 +427,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -446,7 +446,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -465,7 +465,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -488,7 +488,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -507,7 +507,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -530,7 +530,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -553,7 +553,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -580,7 +580,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -603,7 +603,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -630,7 +630,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -657,7 +657,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -688,64 +688,64 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents }{ Meter: base, Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents }{ @@ -753,8 +753,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -764,30 +764,30 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseVoltages }{ Meter: base, Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseVoltages }{ @@ -795,8 +795,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -806,11 +806,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhaseVoltages }{ @@ -818,8 +818,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -829,11 +829,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages @@ -842,8 +842,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -856,11 +856,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers }{ @@ -868,8 +868,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -879,11 +879,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -892,8 +892,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -906,11 +906,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers api.PhaseVoltages @@ -919,8 +919,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -933,11 +933,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -947,8 +947,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -964,12 +964,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryImpl{ @@ -978,17 +978,17 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy }{ Meter: base, @@ -998,20 +998,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents }{ Meter: base, @@ -1021,20 +1021,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents }{ @@ -1045,8 +1045,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1056,12 +1056,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseVoltages }{ Meter: base, @@ -1071,20 +1071,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseVoltages }{ @@ -1095,8 +1095,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1106,12 +1106,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhaseVoltages }{ @@ -1122,8 +1122,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -1133,12 +1133,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages @@ -1150,8 +1150,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1164,12 +1164,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers }{ @@ -1180,8 +1180,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -1191,12 +1191,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -1208,8 +1208,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1222,12 +1222,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers api.PhaseVoltages @@ -1239,8 +1239,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -1253,12 +1253,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -1271,8 +1271,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1288,7 +1288,1303 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1303,7 +2599,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1322,7 +2618,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1341,7 +2637,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1364,7 +2660,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1383,7 +2679,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1406,7 +2702,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1429,7 +2725,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1456,7 +2752,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1479,7 +2775,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1506,7 +2802,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1533,7 +2829,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1564,7 +2860,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1583,7 +2879,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1606,7 +2902,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1629,7 +2925,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1656,7 +2952,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1679,7 +2975,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1706,7 +3002,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1733,7 +3029,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1764,7 +3060,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1791,7 +3087,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -1822,7 +3118,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1853,7 +3149,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -1888,12 +3184,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryImpl{ @@ -1902,17 +3198,17 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy }{ Meter: base, @@ -1922,20 +3218,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents }{ Meter: base, @@ -1945,20 +3241,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents }{ @@ -1969,8 +3265,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -1980,12 +3276,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseVoltages }{ Meter: base, @@ -1995,20 +3291,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseVoltages }{ @@ -2019,8 +3315,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2030,12 +3326,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhaseVoltages }{ @@ -2046,8 +3342,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2057,12 +3353,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages @@ -2074,8 +3370,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2088,12 +3384,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers }{ @@ -2104,8 +3400,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2115,12 +3411,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -2132,8 +3428,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2146,12 +3442,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers api.PhaseVoltages @@ -2163,8 +3459,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2177,12 +3473,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -2195,8 +3491,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2212,13 +3508,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryImpl{ @@ -2230,18 +3526,18 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy }{ Meter: base, @@ -2254,21 +3550,21 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents }{ Meter: base, @@ -2281,21 +3577,21 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents }{ @@ -2309,8 +3605,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2320,13 +3616,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseVoltages }{ Meter: base, @@ -2339,21 +3635,21 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseVoltages }{ @@ -2367,8 +3663,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2378,13 +3674,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhaseVoltages }{ @@ -2398,8 +3694,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2409,13 +3705,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages @@ -2430,8 +3726,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2444,13 +3740,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers }{ @@ -2464,8 +3760,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2475,13 +3771,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -2496,8 +3792,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2510,13 +3806,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.PhaseCurrents api.PhasePowers api.PhaseVoltages @@ -2531,8 +3827,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, @@ -2545,13 +3841,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MeterEnergy api.PhaseCurrents api.PhasePowers @@ -2567,8 +3863,1496 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, @@ -2812,7 +5596,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -2827,7 +5611,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -2846,7 +5630,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -2865,7 +5649,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -2888,7 +5672,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -2907,7 +5691,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -2930,7 +5714,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -2953,7 +5737,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -2980,7 +5764,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3003,7 +5787,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3030,7 +5814,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3057,7 +5841,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3088,7 +5872,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3107,7 +5891,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3130,7 +5914,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3153,7 +5937,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3180,7 +5964,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3203,7 +5987,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3230,7 +6014,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3257,7 +6041,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3288,7 +6072,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3315,7 +6099,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -3346,7 +6130,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3377,7 +6161,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -3412,30 +6196,30 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter }{ Meter: base, Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy }{ @@ -3443,8 +6227,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3454,11 +6238,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents }{ @@ -3466,8 +6250,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3477,11 +6261,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3490,8 +6274,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3504,11 +6288,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseVoltages }{ @@ -3516,8 +6300,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3527,11 +6311,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseVoltages @@ -3540,8 +6324,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3554,11 +6338,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhaseVoltages @@ -3567,8 +6351,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3581,11 +6365,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3595,8 +6379,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3612,11 +6396,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -3625,8 +6409,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3639,11 +6423,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3653,8 +6437,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3670,11 +6454,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -3684,8 +6468,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3701,11 +6485,11 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3716,8 +6500,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur Battery: &decorateMeterBatteryImpl{ battery: battery, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3736,12 +6520,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter }{ Meter: base, @@ -3751,20 +6535,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy }{ @@ -3775,8 +6559,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3786,12 +6570,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents }{ @@ -3802,8 +6586,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3813,12 +6597,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3830,8 +6614,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3844,12 +6628,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseVoltages }{ @@ -3860,8 +6644,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3871,12 +6655,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseVoltages @@ -3888,8 +6672,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3902,12 +6686,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhaseVoltages @@ -3919,8 +6703,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3933,12 +6717,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -3951,8 +6735,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3968,12 +6752,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -3985,8 +6769,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -3999,12 +6783,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -4017,8 +6801,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4034,12 +6818,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -4052,8 +6836,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4069,12 +6853,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -4088,8 +6872,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryCapacity: &decorateMeterBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4108,7 +6892,1495 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4127,7 +8399,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4150,7 +8422,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4173,7 +8445,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4200,7 +8472,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4223,7 +8495,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4250,7 +8522,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4277,7 +8549,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4308,7 +8580,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4335,7 +8607,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4366,7 +8638,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4397,7 +8669,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4432,7 +8704,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4455,7 +8727,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4482,7 +8754,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4509,7 +8781,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4540,7 +8812,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4567,7 +8839,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4598,7 +8870,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4629,7 +8901,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4664,7 +8936,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4695,7 +8967,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery @@ -4730,7 +9002,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4765,7 +9037,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery @@ -4804,12 +9076,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter }{ Meter: base, @@ -4819,20 +9091,20 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy }{ @@ -4843,8 +9115,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4854,12 +9126,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents }{ @@ -4870,8 +9142,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4881,12 +9153,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -4898,8 +9170,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4912,12 +9184,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseVoltages }{ @@ -4928,8 +9200,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4939,12 +9211,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseVoltages @@ -4956,8 +9228,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -4970,12 +9242,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhaseVoltages @@ -4987,8 +9259,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5001,12 +9273,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5019,8 +9291,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5036,12 +9308,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -5053,8 +9325,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5067,12 +9339,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5085,8 +9357,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5102,12 +9374,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -5120,8 +9392,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5137,12 +9409,12 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5156,8 +9428,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5176,13 +9448,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter }{ Meter: base, @@ -5195,21 +9467,21 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy }{ @@ -5223,8 +9495,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5234,13 +9506,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents }{ @@ -5254,8 +9526,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5265,13 +9537,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5286,8 +9558,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5300,13 +9572,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseVoltages }{ @@ -5320,8 +9592,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5331,13 +9603,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseVoltages @@ -5352,8 +9624,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5366,13 +9638,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhaseVoltages @@ -5387,8 +9659,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5401,13 +9673,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5423,8 +9695,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5440,13 +9712,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -5461,8 +9733,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5475,13 +9747,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5497,8 +9769,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5514,13 +9786,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers @@ -5536,8 +9808,8 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5553,13 +9825,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryMaxPowerGetter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController - api.BatteryMaxPowerGetter + api.BatterySocLimiter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents @@ -5576,8 +9848,1688 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur BatteryController: &decorateMeterBatteryControllerImpl{ batteryController: batteryController, }, - BatteryMaxPowerGetter: &decorateMeterBatteryMaxPowerGetterImpl{ - batteryMaxPowerGetter: batteryMaxPowerGetter, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, }, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, @@ -5624,12 +11576,20 @@ func (impl *decorateMeterBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMod return impl.batteryController(p0) } -type decorateMeterBatteryMaxPowerGetterImpl struct { - batteryMaxPowerGetter func() (float64, float64) +type decorateMeterBatteryPowerLimiterImpl struct { + batteryPowerLimiter func() (float64, float64) } -func (impl *decorateMeterBatteryMaxPowerGetterImpl) GetMaxChargeDischargePower() (float64, float64) { - return impl.batteryMaxPowerGetter() +func (impl *decorateMeterBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { + return impl.batteryPowerLimiter() +} + +type decorateMeterBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateMeterBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() } type decorateMeterMaxACPowerGetterImpl struct { diff --git a/meter/openwb.go b/meter/openwb.go index 8f6dcad52..f93e3a908 100644 --- a/meter/openwb.go +++ b/meter/openwb.go @@ -139,7 +139,7 @@ func NewOpenWBFromConfig(other map[string]interface{}) (api.Meter, error) { return nil, err } - res := m.Decorate(nil, currents, nil, nil, soc, capacity, nil, nil, nil) + res := m.Decorate(nil, currents, nil, nil, soc, capacity, nil, nil, nil, nil) return res, nil } diff --git a/meter/powerwall.go b/meter/powerwall.go index b37be8e26..877cb2561 100644 --- a/meter/powerwall.go +++ b/meter/powerwall.go @@ -31,7 +31,7 @@ func init() { registry.Add("powerwall", NewPowerWallFromConfig) } -//go:generate go tool decorate -f decoratePowerWall -b *PowerWall -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" +//go:generate go tool decorate -f decoratePowerWall -b *PowerWall -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" // NewPowerWallFromConfig creates a PowerWall Powerwall Meter from generic config func NewPowerWallFromConfig(other map[string]interface{}) (api.Meter, error) { @@ -143,10 +143,13 @@ func NewPowerWall(uri, usage, user, password string, cache time.Duration, refres } // decorate battery - var batterySoc func() (float64, error) var batteryCapacity func() float64 + var batterySoc func() (float64, error) + var batterySocLimiter func() (float64, float64) + if usage == "battery" { batterySoc = m.batterySoc + batterySocLimiter = batterySocLimits.Decorator() res, err := m.client.GetSystemStatus() if err != nil { @@ -173,7 +176,7 @@ func NewPowerWall(uri, usage, user, password string, cache time.Duration, refres }) } - return decoratePowerWall(m, totalEnergy, batterySoc, batteryCapacity, batModeS), nil + return decoratePowerWall(m, totalEnergy, batterySoc, batteryCapacity, batterySocLimiter, batModeS), nil } var _ api.Meter = (*PowerWall)(nil) diff --git a/meter/powerwall_decorators.go b/meter/powerwall_decorators.go index 6eb0fca3f..e6ca79e31 100644 --- a/meter/powerwall_decorators.go +++ b/meter/powerwall_decorators.go @@ -6,7 +6,7 @@ import ( "github.com/evcc-io/evcc/api" ) -func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), battery func() (float64, error), batteryCapacity func() float64, batteryController func(api.BatteryMode) error) api.Meter { +func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), battery func() (float64, error), batteryCapacity func() float64, batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { switch { case battery == nil && meterEnergy == nil: return base @@ -22,7 +22,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *PowerWall api.Battery @@ -33,7 +33,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *PowerWall api.Battery @@ -48,7 +48,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *PowerWall api.Battery @@ -63,7 +63,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *PowerWall api.Battery @@ -82,7 +82,83 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.Battery + api.BatterySocLimiter + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.Battery + api.BatterySocLimiter + api.MeterEnergy + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *PowerWall api.Battery @@ -97,7 +173,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *PowerWall api.Battery @@ -116,7 +192,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *PowerWall api.Battery @@ -135,7 +211,7 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *PowerWall api.Battery @@ -157,6 +233,98 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat meterEnergy: meterEnergy, }, } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + PowerWall: base, + Battery: &decoratePowerWallBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decoratePowerWallBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } } return nil @@ -186,6 +354,14 @@ func (impl *decoratePowerWallBatteryControllerImpl) SetBatteryMode(p0 api.Batter return impl.batteryController(p0) } +type decoratePowerWallBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decoratePowerWallBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + type decoratePowerWallMeterEnergyImpl struct { meterEnergy func() (float64, error) } diff --git a/meter/rct.go b/meter/rct.go index 021fdcd04..cde79c50e 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -33,7 +33,7 @@ func init() { registry.AddCtx("rct", NewRCTFromConfig) } -//go:generate go tool decorate -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate go tool decorate -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatteryCapacity,Capacity,func() float64" // NewRCTFromConfig creates an RCT from generic config func NewRCTFromConfig(ctx context.Context, other map[string]interface{}) (api.Meter, error) { @@ -101,9 +101,12 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL // decorate api.Battery var batterySoc func() (float64, error) + var batterySocLimiter func() (float64, float64) var batteryMode func(api.BatteryMode) error + if usage == "battery" { batterySoc = m.batterySoc + batterySocLimiter = batterySocLimits.Decorator() batteryMode = func(mode api.BatteryMode) error { if mode != api.BatteryNormal { @@ -154,7 +157,7 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL } } - return decorateRCT(m, totalEnergy, batterySoc, batteryMode, capacity), nil + return decorateRCT(m, totalEnergy, batterySoc, batterySocLimiter, batteryMode, capacity), nil } func (m *RCT) floatVal(f float32) []byte { diff --git a/meter/rct_decorators.go b/meter/rct_decorators.go index 5804034cc..b012360b4 100644 --- a/meter/rct_decorators.go +++ b/meter/rct_decorators.go @@ -6,7 +6,7 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() (float64, error), batteryController func(api.BatteryMode) error, batteryCapacity func() float64) api.Meter { +func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error, batteryCapacity func() float64) api.Meter { switch { case battery == nil && meterEnergy == nil: return base @@ -22,7 +22,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -33,7 +33,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -48,7 +48,41 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatterySocLimiter + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatterySocLimiter + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -63,7 +97,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -82,7 +116,49 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -97,7 +173,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -116,7 +192,49 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -135,7 +253,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -157,6 +275,56 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() meterEnergy: meterEnergy, }, } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } } return nil @@ -186,6 +354,14 @@ func (impl *decorateRCTBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode) return impl.batteryController(p0) } +type decorateRCTBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateRCTBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + type decorateRCTMeterEnergyImpl struct { meterEnergy func() (float64, error) } diff --git a/meter/usage_battery.go b/meter/usage_battery.go index 760ee6077..199319711 100644 --- a/meter/usage_battery.go +++ b/meter/usage_battery.go @@ -8,7 +8,7 @@ type batteryCapacity struct { // var _ api.BatteryCapacity = (*batteryCapacity)(nil) -// Decorator returns the capacity decorator +// Decorator returns an api.BatteryCapacity decorator func (m *batteryCapacity) Decorator() func() float64 { if m.Capacity == 0 { return nil @@ -18,15 +18,15 @@ func (m *batteryCapacity) Decorator() func() float64 { } } -type batteryChargeDischargePower struct { +type batteryPowerLimits struct { MaxChargePower float64 MaxDischargePower float64 } -// var _ api.BatteryMaxPowerGetter = (*batteryChargeDischargePower)(nil) +// var _ api.BatteryPowerLimiter = (*batteryPowerLimits)(nil) -// Decorator returns the max charge/discharge power decorator -func (m *batteryChargeDischargePower) Decorator() func() (float64, float64) { +// Decorator returns an api.BatteryPowerLimiter decorator +func (m *batteryPowerLimits) Decorator() func() (float64, float64) { if m.MaxChargePower == 0 || m.MaxDischargePower == 0 { return nil } @@ -39,6 +39,16 @@ type batterySocLimits struct { MinSoc, MaxSoc float64 } +// Decorator returns an api.BatterySocLimiter decorator +func (m *batterySocLimits) Decorator() func() (float64, float64) { + if m.MinSoc == 0 && m.MaxSoc == 0 { + return nil + } + return func() (float64, float64) { + return m.MinSoc, m.MaxSoc + } +} + // LimitController returns an api.BatteryController decorator func (m *batterySocLimits) LimitController(socG func() (float64, error), limitSocS func(float64) error) func(api.BatteryMode) error { return func(mode api.BatteryMode) error {