diff --git a/cmd/decorate/decorate.go b/cmd/decorate/decorate.go index 58fd9a1db..b0a39bda4 100644 --- a/cmd/decorate/decorate.go +++ b/cmd/decorate/decorate.go @@ -32,6 +32,9 @@ import ( //go:embed decorate.tpl var srcTmpl string +//go:embed header.tpl +var header string + type dynamicType struct { typ, function, signature string } @@ -85,7 +88,7 @@ func hasIntersection[T comparable](a, b []T) bool { return false } -func generate(out io.Writer, packageName, functionName, baseType string, dynamicTypes ...dynamicType) error { +func generate(out io.Writer, functionName, baseType string, dynamicTypes ...dynamicType) error { types := make(map[string]typeStruct, len(dynamicTypes)) combos := make([]string, 0) @@ -186,15 +189,12 @@ COMBO: } vars := struct { - API string - Package, Function string + Function string BaseType, ShortBase string ReturnType string Types map[string]typeStruct Combinations [][]string }{ - API: "github.com/evcc-io/evcc/api", - Package: packageName, Function: functionName, BaseType: baseType, ShortBase: shortBase, @@ -206,6 +206,11 @@ COMBO: return tmpl.Execute(out, vars) } +type decorationSet struct { + function, base, ret string + types []string +} + var ( target = pflag.StringP("out", "o", "", "output file") pkg = pflag.StringP("package", "p", "", "package name") @@ -223,13 +228,17 @@ func Usage() { pflag.PrintDefaults() } -func parseFile(file string, function, basetype, returntype *string, types *[]string) error { +func parseFile(file string) ([]decorationSet, error) { + var res []decorationSet + f, err := os.Open(file) if err != nil { - return err + return nil, err } defer f.Close() + var current decorationSet + scanner := bufio.NewScanner(f) for scanner.Scan() { line := scanner.Text() @@ -242,20 +251,29 @@ func parseFile(file string, function, basetype, returntype *string, types *[]str switch segs[0] { case "function": - *function = segs[1] + // must be first + if current.function != "" { + res = append(res, current) + current = decorationSet{} + } + current.function = segs[1] case "basetype": - *basetype = segs[1] + current.base = segs[1] case "returntype": - *returntype = segs[1] + current.ret = segs[1] case "type": - *types = append(*types, segs[1]) + current.types = append(current.types, segs[1]) default: panic("invalid directive //evcc:" + segs[0]) } } } - return scanner.Err() + if current.function != "" { + res = append(res, current) + } + + return res, scanner.Err() } func main() { @@ -274,32 +292,22 @@ func main() { pkg = &gopkg } + sets := []decorationSet{{*function, *base, *ret, *types}} + if *function == "" { - if err := parseFile(gofile, function, base, ret, types); err != nil { + all, err := parseFile(gofile) + if err != nil { fmt.Println(err) os.Exit(2) } + sets = all } - if *base == "" || *pkg == "" || len(*types) == 0 { + if *pkg == "" || len(sets) == 0 || sets[0].base == "" || len(sets[0].types) == 0 { Usage() os.Exit(2) } - var dynamicTypes []dynamicType - for _, v := range *types { - split := strings.SplitN(v, ",", 3) - dt := dynamicType{split[0], split[1], split[2]} - dynamicTypes = append(dynamicTypes, dt) - } - - var buf bytes.Buffer - if err := generate(&buf, *pkg, *function, *base, dynamicTypes...); err != nil { - fmt.Println(err) - os.Exit(2) - } - generated := strings.TrimSpace(buf.String()) + "\n" - var out io.Writer = os.Stdout var name string @@ -319,9 +327,29 @@ func main() { out = dst } - formatted, err := format.Source([]byte(generated)) + generated := new(bytes.Buffer) + fmt.Fprintln(generated, strings.ReplaceAll(header, "{{.Package}}", *pkg)) + + for _, set := range sets { + var dynamicTypes []dynamicType + for _, v := range set.types { + split := strings.SplitN(v, ",", 3) + dt := dynamicType{split[0], split[1], split[2]} + dynamicTypes = append(dynamicTypes, dt) + } + + var buf bytes.Buffer + if err := generate(&buf, set.function, set.base, dynamicTypes...); err != nil { + fmt.Println(err) + os.Exit(2) + } + + fmt.Fprintln(generated, buf.String()) + } + + formatted, err := format.Source(generated.Bytes()) if err != nil { - formatted = []byte(generated) + formatted = generated.Bytes() } formatted, err = imports.Process(name, formatted, nil) diff --git a/cmd/decorate/decorate.tpl b/cmd/decorate/decorate.tpl index cc686a980..b4d1aecdb 100644 --- a/cmd/decorate/decorate.tpl +++ b/cmd/decorate/decorate.tpl @@ -1,11 +1,3 @@ -package {{.Package}} - -// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT. - -import ( - "{{.API}}" -) - {{define "case"}} {{- $combo := .Combo}} {{- $prefix := .Prefix}} diff --git a/cmd/decorate/header.tpl b/cmd/decorate/header.tpl new file mode 100644 index 000000000..b3ea644a5 --- /dev/null +++ b/cmd/decorate/header.tpl @@ -0,0 +1,7 @@ +package {{.Package}} + +// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT. + +import ( + "github.com/evcc-io/evcc/api" +) diff --git a/meter/meter.go b/meter/meter.go index cd0fff31e..11aad1b35 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -14,7 +14,24 @@ 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.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" +//go:generate go tool decorate + +//evcc:function decorateMeter +//evcc:basetype api.Meter +//evcc:type api.MeterEnergy,TotalEnergy,func() (float64, error) +//evcc:type api.PhaseCurrents,Currents,func() (float64, float64, float64, error) +//evcc:type api.PhaseVoltages,Voltages,func() (float64, float64, float64, error) +//evcc:type api.PhasePowers,Powers,func() (float64, float64, float64, error) +//evcc:type api.MaxACPowerGetter,MaxACPower,func() float64 + +//evcc:function decorateMeterBattery +//evcc:basetype api.Meter +//evcc:type api.MeterEnergy,TotalEnergy,func() (float64, error) +//evcc:type api.Battery,Soc,func() (float64, error) +//evcc:type api.BatteryCapacity,Capacity,func() float64 +//evcc:type api.BatterySocLimiter,GetSocLimits,func() (float64, float64) +//evcc:type api.BatteryPowerLimiter,GetPowerLimits,func() (float64, float64) +//evcc:type api.BatteryController,SetBatteryMode,func(api.BatteryMode) error // NewConfigurableFromConfig creates api.Meter from config func NewConfigurableFromConfig(ctx context.Context, other map[string]any) (api.Meter, error) { @@ -83,13 +100,18 @@ func NewConfigurableFromConfig(ctx context.Context, other map[string]any) (api.M } } - res := m.Decorate( - energyG, currentsG, voltagesG, powersG, - socG, cc.batteryCapacity.Decorator(), cc.batterySocLimits.Decorator(), cc.batteryPowerLimits.Decorator(), batModeS, - cc.pvMaxACPower.Decorator(), - ) + if socG != nil { + return m.DecorateBattery( + energyG, + socG, cc.batteryCapacity.Decorator(), + cc.batterySocLimits.Decorator(), cc.batteryPowerLimits.Decorator(), + batModeS, + ), nil + } - return res, nil + return m.Decorate( + energyG, currentsG, voltagesG, powersG, cc.pvMaxACPower.Decorator(), + ), nil } // NewConfigurable creates a new meter @@ -109,19 +131,28 @@ type Meter struct { func (m *Meter) Decorate( totalEnergy func() (float64, error), currents, voltages, powers func() (float64, float64, float64, error), - batterySoc func() (float64, error), - batteryCapacity func() 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, batterySocLimits, batteryPowerLimits, setBatteryMode, maxACPower, ) } +func (m *Meter) DecorateBattery( + totalEnergy func() (float64, error), + soc func() (float64, error), capacity func() float64, + socLimits, powerLimits func() (float64, float64), + setMode func(api.BatteryMode) error, +) api.Meter { + return decorateMeterBattery(m, + totalEnergy, + soc, capacity, + socLimits, powerLimits, + setMode, + ) +} + // CurrentPower implements the api.Meter interface func (m *Meter) CurrentPower() (float64, error) { return m.currentPowerG() diff --git a/meter/meter_average.go b/meter/meter_average.go index d0a740e4c..dc9ab1baf 100644 --- a/meter/meter_average.go +++ b/meter/meter_average.go @@ -70,7 +70,11 @@ func NewMovingAverageFromConfig(ctx context.Context, other map[string]any) (api. powers = m.Powers } - return meter.Decorate(totalEnergy, currents, voltages, powers, batterySoc, cc.Meter.batteryCapacity.Decorator(), nil, nil, nil, nil), nil + if batterySoc != nil { + return meter.DecorateBattery(totalEnergy, batterySoc, cc.Meter.batteryCapacity.Decorator(), nil, nil, nil), nil + } + + return meter.Decorate(totalEnergy, currents, voltages, powers, nil), nil } type MovingAverage struct { diff --git a/meter/meter_decorators.go b/meter/meter_decorators.go index ca490cbe1..e0d9a9439 100644 --- a/meter/meter_decorators.go +++ b/meter/meter_decorators.go @@ -6,12 +6,12 @@ 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, batterySocLimiter func() (float64, float64), batteryPowerLimiter 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), maxACPowerGetter func() float64) api.Meter { switch { - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return base - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy @@ -22,7 +22,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.PhaseCurrents @@ -33,7 +33,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy @@ -48,7 +48,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseVoltages @@ -59,7 +59,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy @@ -74,7 +74,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseCurrents @@ -89,7 +89,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy @@ -108,7 +108,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.PhaseCurrents @@ -123,7 +123,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy @@ -142,7 +142,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseCurrents @@ -161,7 +161,7 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery == nil && maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy @@ -184,10960 +184,24 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter - api.Battery - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - } - - 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.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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 - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - } - - 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.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.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 - api.BatteryController - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - } - - 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.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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 - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - } - - 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.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhasePowers: &decorateMeterPhasePowersImpl{ - phasePowers: phasePowers, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - MeterEnergy: &decorateMeterMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - MeterEnergy: &decorateMeterMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - MeterEnergy: &decorateMeterMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - MeterEnergy: &decorateMeterMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhasePowers: &decorateMeterPhasePowersImpl{ - phasePowers: phasePowers, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - MeterEnergy: &decorateMeterMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhasePowers: &decorateMeterPhasePowersImpl{ - phasePowers: phasePowers, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ - maxACPowerGetter: maxACPowerGetter, - }, - PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhasePowers: &decorateMeterPhasePowersImpl{ - phasePowers: phasePowers, - }, - PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: - return &struct { - api.Meter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - 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.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - 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.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 - api.BatteryController - api.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.MeterEnergy - api.PhaseCurrents - api.PhasePowers - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.BatterySocLimiter - api.MaxACPowerGetter - api.PhaseCurrents - api.PhasePowers - api.PhaseVoltages - }{ - Meter: base, - Battery: &decorateMeterBatteryImpl{ - battery: battery, - }, - BatteryCapacity: &decorateMeterBatteryCapacityImpl{ - batteryCapacity: batteryCapacity, - }, - BatteryController: &decorateMeterBatteryControllerImpl{ - batteryController: batteryController, - }, - 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.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, - }, - 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: + case 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, }, @@ -11146,33 +210,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case 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, }, @@ -11181,34 +225,14 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + case 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, }, @@ -11220,33 +244,13 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case 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, }, @@ -11255,34 +259,14 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case 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, }, @@ -11294,34 +278,14 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case 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, }, @@ -11333,35 +297,15 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + case 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, }, @@ -11376,34 +320,14 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case 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, }, @@ -11415,35 +339,15 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + case 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, }, @@ -11458,35 +362,15 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case 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, }, @@ -11501,14 +385,9 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + case 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 @@ -11516,21 +395,6 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur 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, }, @@ -11552,46 +416,6 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur return nil } -type decorateMeterBatteryImpl struct { - battery func() (float64, error) -} - -func (impl *decorateMeterBatteryImpl) Soc() (float64, error) { - return impl.battery() -} - -type decorateMeterBatteryCapacityImpl struct { - batteryCapacity func() float64 -} - -func (impl *decorateMeterBatteryCapacityImpl) Capacity() float64 { - return impl.batteryCapacity() -} - -type decorateMeterBatteryControllerImpl struct { - batteryController func(api.BatteryMode) error -} - -func (impl *decorateMeterBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode) error { - return impl.batteryController(p0) -} - -type decorateMeterBatteryPowerLimiterImpl struct { - batteryPowerLimiter func() (float64, float64) -} - -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 { maxACPowerGetter func() float64 } @@ -11631,3 +455,743 @@ type decorateMeterPhaseVoltagesImpl struct { func (impl *decorateMeterPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) { return impl.phaseVoltages() } + +func decorateMeterBattery(base api.Meter, meterEnergy func() (float64, error), battery func() (float64, error), batteryCapacity func() float64, batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { + switch { + case battery == nil && meterEnergy == nil: + return base + + case battery == nil && meterEnergy != nil: + return &struct { + api.Meter + api.MeterEnergy + }{ + Meter: base, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + Meter: base, + Battery: &decorateMeterBatteryBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + } + + return nil +} + +type decorateMeterBatteryBatteryImpl struct { + battery func() (float64, error) +} + +func (impl *decorateMeterBatteryBatteryImpl) Soc() (float64, error) { + return impl.battery() +} + +type decorateMeterBatteryBatteryCapacityImpl struct { + batteryCapacity func() float64 +} + +func (impl *decorateMeterBatteryBatteryCapacityImpl) Capacity() float64 { + return impl.batteryCapacity() +} + +type decorateMeterBatteryBatteryControllerImpl struct { + batteryController func(api.BatteryMode) error +} + +func (impl *decorateMeterBatteryBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode) error { + return impl.batteryController(p0) +} + +type decorateMeterBatteryBatteryPowerLimiterImpl struct { + batteryPowerLimiter func() (float64, float64) +} + +func (impl *decorateMeterBatteryBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { + return impl.batteryPowerLimiter() +} + +type decorateMeterBatteryBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateMeterBatteryBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + +type decorateMeterBatteryMeterEnergyImpl struct { + meterEnergy func() (float64, error) +} + +func (impl *decorateMeterBatteryMeterEnergyImpl) TotalEnergy() (float64, error) { + return impl.meterEnergy() +} diff --git a/meter/meter_test.go b/meter/meter_test.go index b40e25b51..6f38efcd1 100644 --- a/meter/meter_test.go +++ b/meter/meter_test.go @@ -8,22 +8,33 @@ import ( "github.com/stretchr/testify/require" ) -func TestACPower(t *testing.T) { +func TestPV(t *testing.T) { m, err := NewConfigurableFromConfig(t.Context(), map[string]any{ + "power": map[string]any{ + "source": "const", + "value": 1000, + }, + "maxacpower": 1000, + }) + require.NoError(t, err) + + // must not have soc/capacity + assert.Implements(t, new(api.MaxACPowerGetter), m) +} +func TestBattery(t *testing.T) { + m, err := NewConfigurableFromConfig(t.Context(), map[string]any{ + "power": map[string]any{ + "source": "const", + "value": 1000, + }, "capacity": 23, "soc": map[string]any{ "source": "const", "value": 47, }, - "maxacpower": 1000, - "power": map[string]any{ - "source": "const", - "value": 1000, - }, }) require.NoError(t, err) - _, ok := m.(api.BatteryCapacity) - assert.True(t, ok, "api.BatteryCapacity") - _, ok = m.(api.MaxACPowerGetter) - assert.True(t, ok, "api.MaxACPowerGetter") + + assert.Implements(t, new(api.Battery), m) + assert.Implements(t, new(api.BatteryCapacity), m) } diff --git a/meter/openwb.go b/meter/openwb.go index 8f5942af4..2f6292a09 100644 --- a/meter/openwb.go +++ b/meter/openwb.go @@ -139,7 +139,9 @@ func NewOpenWBFromConfig(other map[string]any) (api.Meter, error) { return nil, err } - res := m.Decorate(nil, currents, nil, nil, soc, capacity, nil, nil, nil, nil) + if strings.ToLower(cc.Usage) == "battery" { + return m.DecorateBattery(nil, soc, capacity, nil, nil, nil), nil + } - return res, nil + return m.Decorate(nil, currents, nil, nil, nil), nil }