From c2a3122b4074ca245ffd56c7277f7390b4c9e0b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:02:00 +0100 Subject: [PATCH 0001/1912] chore(deps): bump actions/cache from 4 to 5 (#26310) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/default.yml | 14 +++++++------- .github/workflows/nightly.yml | 4 ++-- .github/workflows/release.yml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 4fcd1b906..8141fcc90 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -26,7 +26,7 @@ jobs: cache: false # avoid cache thrashing id: go - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: | ~/.cache/go-build @@ -66,7 +66,7 @@ jobs: cache: false id: go - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: | ~/.cache/go-build @@ -104,7 +104,7 @@ jobs: cache: false id: go - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: | ~/.cache/go-build @@ -135,7 +135,7 @@ jobs: cache: false # avoid cache thrashing id: go - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: | ~/.cache/go-build @@ -191,7 +191,7 @@ jobs: - name: Cache dist # avoid cache thrashing by nightly if: github.event_name == 'push' || github.event_name == 'pull_request' - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 id: cache-dist with: path: dist @@ -220,7 +220,7 @@ jobs: cache: false id: go - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: | ~/.cache/go-build @@ -246,7 +246,7 @@ jobs: run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package-lock.json').packages['node_modules/@playwright/test'].version)")" >> $GITHUB_ENV - name: Cache Playwright browsers - uses: actions/cache@v4 + uses: actions/cache@v5 id: playwright-cache with: path: ~/.cache/ms-playwright diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 6580db0a3..ae749d82d 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -59,7 +59,7 @@ jobs: persist-credentials: false - name: Get dist from cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 id: cache-dist with: path: dist @@ -158,7 +158,7 @@ jobs: run: make patch-asn1-sudo - name: Get dist from cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 id: cache-dist with: path: dist diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e24ec1e5f..98aac6c76 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,7 +82,7 @@ jobs: run: make patch-asn1-sudo - name: Get dist from cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 id: cache-dist with: path: dist From a7cf82e1fa3cdbba05ee70f7ef0ee0eb686282bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:02:20 +0100 Subject: [PATCH 0002/1912] chore(deps): bump actions/upload-artifact from 5 to 6 (#26311) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 8141fcc90..c5dae132a 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -266,7 +266,7 @@ jobs: env: TZ: Europe/Berlin - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 if: ${{ !cancelled() }} with: name: playwright-report From 9ba0a015f7e8176f8a368c6e4c72e9e465ac2919 Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 1 Jan 2026 13:21:08 +0100 Subject: [PATCH 0003/1912] chore: simplify --- templates/definition/meter/kostal-plenticore-gen2.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/templates/definition/meter/kostal-plenticore-gen2.yaml b/templates/definition/meter/kostal-plenticore-gen2.yaml index 86e5d71e4..6a2a7a955 100644 --- a/templates/definition/meter/kostal-plenticore-gen2.yaml +++ b/templates/definition/meter/kostal-plenticore-gen2.yaml @@ -120,7 +120,6 @@ render: | encoding: {{ if (eq .endianness "big") }}float32{{ else }}float32s{{ end }} - case: 3 # charge set: - {{- if .maxchargepower }} source: const value: -{{ .maxchargepower }} # W set: @@ -130,10 +129,6 @@ render: | address: 1034 # Battery charge power (DC) setpoint, absolute [W] type: writemultiple encoding: {{ if (eq .endianness "big") }}float32{{ else }}float32s{{ end }} - {{- else }} - source: error - error: ErrNotAvailable - {{- end }} capacity: {{ .capacity }} # kWh maxchargepower: {{ .maxchargepower }} # W maxdischargepower: {{ .maxdischargepower }} # W From cc02d429b029ade1c51708846e56328296fdf855 Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Thu, 1 Jan 2026 15:27:23 +0100 Subject: [PATCH 0004/1912] RCT: fix battery control (#26329) --- meter/rct.go | 2 +- templates/definition/meter/rct-power.yaml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/meter/rct.go b/meter/rct.go index e7d3e39cc..88bbd69a8 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -140,7 +140,7 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL } // check for normal operating mode - if batStatus != 1032 { + if batStatus != 0 && batStatus != 1032 { return fmt.Errorf("invalid battery operating mode: %d", batStatus) } } diff --git a/templates/definition/meter/rct-power.yaml b/templates/definition/meter/rct-power.yaml index 05a57a7eb..4d294018c 100644 --- a/templates/definition/meter/rct-power.yaml +++ b/templates/definition/meter/rct-power.yaml @@ -6,9 +6,6 @@ products: capabilities: ["battery-control"] requirements: evcc: ["skiptest"] - description: - de: Es wird mindestens die BMS-Version 5615 benötigt. - en: At least BMS version 5615 is needed. params: - name: usage choice: ["grid", "pv", "battery"] From 109eaeb696b2d988c6d4c82c0c7f837a2b10349b Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 1 Jan 2026 16:01:17 +0100 Subject: [PATCH 0005/1912] chore: fix compile error on empty required param --- templates/definition/meter/kostal-plenticore-gen2.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/definition/meter/kostal-plenticore-gen2.yaml b/templates/definition/meter/kostal-plenticore-gen2.yaml index 6a2a7a955..6fd1814ab 100644 --- a/templates/definition/meter/kostal-plenticore-gen2.yaml +++ b/templates/definition/meter/kostal-plenticore-gen2.yaml @@ -121,7 +121,7 @@ render: | - case: 3 # charge set: source: const - value: -{{ .maxchargepower }} # W + value: {{ if .maxchargerate }}-{{ .maxchargerate }}{{ end }} # % set: source: modbus {{- include "modbus" . | indent 10 }} From 3115bb1a2e4227014252e809a2f2d421c01f7cb2 Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 1 Jan 2026 17:30:51 +0100 Subject: [PATCH 0006/1912] chore: avoid allocating intermediate slices (#26320) --- core/planner/helper.go | 85 +++++++++++++++++++++--------------- core/planner/helper_test.go | 22 ++++++++++ core/planner/planner.go | 7 +-- core/planner/planner_test.go | 9 +--- 4 files changed, 79 insertions(+), 44 deletions(-) diff --git a/core/planner/helper.go b/core/planner/helper.go index 1b12f5818..2f1840c93 100644 --- a/core/planner/helper.go +++ b/core/planner/helper.go @@ -1,10 +1,11 @@ package planner import ( + "iter" + "slices" "time" "github.com/evcc-io/evcc/api" - "github.com/samber/lo" ) // Start returns the earliest slot's start time @@ -87,42 +88,58 @@ func IsFirst(r api.Rate, plan api.Rates) bool { // clampRates filters rates to the given time window and adjusts boundary slots func clampRates(rates api.Rates, start, end time.Time) api.Rates { - res := make(api.Rates, 0, len(rates)+2) + res := make(api.Rates, 0, len(rates)) + return slices.AppendSeq(res, clampRatesSeq(rates, start, end)) +} - for _, r := range rates { - // slot before continuous plan - if !r.End.After(start) { - continue +// clampRatesSeq returns an iterator for filtering rates to the given time window and adjusts boundary slots +func clampRatesSeq(rates api.Rates, start, end time.Time) iter.Seq[api.Rate] { + return func(yield func(api.Rate) bool) { + for _, r := range rates { + // slot before continuous plan + if !r.End.After(start) { + continue + } + + // slot after continuous plan + if !r.Start.Before(end) { + continue + } + + // calculate adjusted bounds + adjustedStart := r.Start + if adjustedStart.Before(start) { + adjustedStart = start + } + + adjustedEnd := r.End + if adjustedEnd.After(end) { + adjustedEnd = end + } + + // skip if adjustment would create invalid slot + if !adjustedEnd.After(adjustedStart) { + continue + } + + if !yield(api.Rate{ + Start: adjustedStart, + End: adjustedEnd, + Value: r.Value, + }) { + return // Stop early if yield returns false + } } - - // slot after continuous plan - if !r.Start.Before(end) { - continue - } - - // calculate adjusted bounds - adjustedStart := r.Start - if adjustedStart.Before(start) { - adjustedStart = start - } - - adjustedEnd := r.End - if adjustedEnd.After(end) { - adjustedEnd = end - } - - // skip if adjustment would create invalid slot - if !adjustedEnd.After(adjustedStart) { - continue - } - - slot := r - slot.Start = adjustedStart - slot.End = adjustedEnd - res = append(res, slot) } +} - return res +// SumBySeq sums over a sequence +func SumBySeq[T any, R float64](seq iter.Seq[T], iteratee func(item T) R) R { + var sum R + for t := range seq { + sum += iteratee(t) + } + return sum } // findContinuousWindow finds the cheapest continuous window of slots for the given duration. @@ -138,7 +155,7 @@ func findContinuousWindow(rates api.Rates, effectiveDuration time.Duration, targ break } - cost := lo.SumBy(clampRates(rates[i:], rates[i].Start, windowEnd), func(r api.Rate) float64 { + cost := SumBySeq(clampRatesSeq(rates[i:], rates[i].Start, windowEnd), func(r api.Rate) float64 { return float64(r.End.Sub(r.Start)) * r.Value }) diff --git a/core/planner/helper_test.go b/core/planner/helper_test.go index 92d656225..c2759ea23 100644 --- a/core/planner/helper_test.go +++ b/core/planner/helper_test.go @@ -7,6 +7,8 @@ import ( "github.com/benbjohnson/clock" "github.com/evcc-io/evcc/api" + "github.com/evcc-io/evcc/tariff" + "github.com/samber/lo" "github.com/stretchr/testify/require" ) @@ -93,3 +95,23 @@ func TestSlotAt(t *testing.T) { require.Equal(t, 2.0, SlotAt(now.Add(90*time.Minute), plan).Value) require.True(t, SlotAt(now.Add(3*time.Hour), plan).IsZero()) } + +func BenchmarkFindContinuousWindow(b *testing.B) { + rr := rates(lo.RepeatBy(96, func(i int) float64 { + return float64(i) + }), time.Now(), tariff.SlotDuration) + + for b.Loop() { + findContinuousWindow(rr, 4*tariff.SlotDuration, rr[len(rr)-1].End) + } +} + +func BenchmarkOptimalPlan(b *testing.B) { + rr := rates(lo.RepeatBy(96, func(i int) float64 { + return float64(i) + }), time.Now(), tariff.SlotDuration) + + for b.Loop() { + optimalPlan(rr, 4*tariff.SlotDuration, rr[len(rr)-1].End) + } +} diff --git a/core/planner/planner.go b/core/planner/planner.go index d27a2f88b..c0bbe7ecb 100644 --- a/core/planner/planner.go +++ b/core/planner/planner.go @@ -6,6 +6,7 @@ import ( "github.com/benbjohnson/clock" "github.com/evcc-io/evcc/api" + "github.com/evcc-io/evcc/tariff" "github.com/evcc-io/evcc/util" ) @@ -35,8 +36,8 @@ func New(log *util.Logger, tariff api.Tariff, opt ...func(t *Planner)) *Planner // It MUST already be established that: // - rates are sorted in ascending order by cost and descending order by start time (prefer late slots) // - rates are filtered to [now, targetTime] window by caller -func (t *Planner) plan(rates api.Rates, requiredDuration time.Duration, targetTime time.Time) api.Rates { - var plan api.Rates +func optimalPlan(rates api.Rates, requiredDuration time.Duration, targetTime time.Time) api.Rates { + plan := make(api.Rates, 0, int64(requiredDuration)/int64(tariff.SlotDuration)+3) for _, slot := range rates { slotDuration := slot.End.Sub(slot.Start) @@ -199,7 +200,7 @@ func (t *Planner) Plan(requiredDuration, precondition time.Duration, targetTime // sort rates by price and time slices.SortStableFunc(rates, sortByCost) - plan = t.plan(rates, requiredDuration, targetTime) + plan = optimalPlan(rates, requiredDuration, targetTime) // sort plan by time plan.Sort() diff --git a/core/planner/planner_test.go b/core/planner/planner_test.go index e3825e21b..011d7a473 100644 --- a/core/planner/planner_test.go +++ b/core/planner/planner_test.go @@ -48,11 +48,6 @@ func TestPlan(t *testing.T) { trf := api.NewMockTariff(ctrl) trf.EXPECT().Rates().AnyTimes().Return(rates([]float64{20, 60, 10, 80, 40, 90}, clock.Now(), time.Hour), nil) - p := &Planner{ - log: util.NewLogger("foo"), - clock: clock, - } - rates, err := trf.Rates() require.NoError(t, err) @@ -60,7 +55,7 @@ func TestPlan(t *testing.T) { { // filter rates to [now, now] window - should return empty - plan := p.plan(clampRates(rates, clock.Now(), clock.Now()), time.Hour, clock.Now()) + plan := optimalPlan(clampRates(rates, clock.Now(), clock.Now()), time.Hour, clock.Now()) assert.Empty(t, plan) } @@ -129,7 +124,7 @@ func TestPlan(t *testing.T) { t.Log(tc.desc) clock.Set(tc.now) // filter rates to [now, target] window as caller would do - plan := p.plan(clampRates(rates, tc.now, tc.target), tc.duration, tc.target) + plan := optimalPlan(clampRates(rates, tc.now, tc.target), tc.duration, tc.target) assert.Equalf(t, tc.planStart.UTC(), Start(plan).UTC(), "case %d start", i) assert.Equalf(t, tc.duration, Duration(plan), "case %d duration", i) From a861b11c81a353d49d64626d675f583639542ef3 Mon Sep 17 00:00:00 2001 From: premultiply <4681172+premultiply@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:20:40 +0100 Subject: [PATCH 0007/1912] minor: fix slimmelezer brand --- templates/definition/meter/slimmelezer.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/definition/meter/slimmelezer.yaml b/templates/definition/meter/slimmelezer.yaml index 4cb3d0346..8daa764a2 100644 --- a/templates/definition/meter/slimmelezer.yaml +++ b/templates/definition/meter/slimmelezer.yaml @@ -6,9 +6,9 @@ products: - brand: ESPHome description: generic: DSMR - - brand: mhendriks + - brand: Smartstuff description: - generic: P1 dongle + generic: P1 Dongle params: - name: usage choice: ["grid"] @@ -22,8 +22,8 @@ params: de: Skalierungsfaktor en: Scale factor help: - de: Verwenden Skala von 1000 für Zuidwijk Slimmelezer. Verwenden Skala 1 für ESPHome DSMR und mhendriks P1 Dongle - en: Use scale of 1000 for Zuidwijk Slimmelezer. Use scale 1 for ESPHome DSMR and mhendriks P1 Dongle + de: Faktor 1000 für Zuidwijk Slimmelezer, Faktor 1 für ESPHome DSMR und das P1 Dongle + en: Use scale of 1000 for Zuidwijk Slimmelezer. Use scale 1 for ESPHome DSMR and P1 Dongle render: | type: custom power: From aa9723b32354efdf4022c2a7bbfa3e5008729d55 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 09:00:22 +0100 Subject: [PATCH 0008/1912] Fix effectiveMaxPower returning vehile value only --- core/loadpoint_effective.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/loadpoint_effective.go b/core/loadpoint_effective.go index 358f1d038..49d1b7461 100644 --- a/core/loadpoint_effective.go +++ b/core/loadpoint_effective.go @@ -233,12 +233,13 @@ func (lp *Loadpoint) EffectiveMaxPower() float64 { // effectiveMaxPower returns the effective max power taking vehicle capabilities and phase scaling into account func (lp *Loadpoint) effectiveMaxPower() float64 { + res := Voltage * lp.effectiveMaxCurrent() * float64(lp.maxActivePhases()) if lp.vehicle != nil { if maxPower, ok := lp.vehicle.OnIdentified().GetMaxPower(); ok { - return maxPower + return min(maxPower, res) } } - return Voltage * lp.effectiveMaxCurrent() * float64(lp.maxActivePhases()) + return res } // EffectivePlanStrategy returns the effective plan strategy From df5bf5f452b10c746a1cb591ec4c748388c1d238 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 09:05:35 +0100 Subject: [PATCH 0009/1912] chore: add template agent --- .github/agents/template.agent.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/agents/template.agent.md diff --git a/.github/agents/template.agent.md b/.github/agents/template.agent.md new file mode 100644 index 000000000..9b5ef1fdc --- /dev/null +++ b/.github/agents/template.agent.md @@ -0,0 +1,6 @@ +--- +description: 'Tidy templates' +tools: ["read", "edit", "search"] +--- +Validate templates files inside templates/definition/** against default parameters in util/tempaltes/defaults.yaml. +Make sure that templates don't repeat parts of the default parameter definition. From 9b50d3082ac694539cdbe8694726c49e47401e5d Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 09:11:31 +0100 Subject: [PATCH 0010/1912] chore: tidy duplicate definitions --- templates/definition/charger/openwb-native.yaml | 7 ------- templates/definition/meter/senec-home.yaml | 1 - 2 files changed, 8 deletions(-) diff --git a/templates/definition/charger/openwb-native.yaml b/templates/definition/charger/openwb-native.yaml index 36a39b02d..303b33d5b 100644 --- a/templates/definition/charger/openwb-native.yaml +++ b/templates/definition/charger/openwb-native.yaml @@ -137,14 +137,7 @@ params: advanced: true - name: connector type: int - description: - en: Connector - de: Ladepunkt - help: - en: 1 or 2, usually 1, except for Duo - de: 1 oder 2, normalerweise 1, ausser bei Duo default: 1 - advanced: true render: | type: openwb-native phases1p3p: {{ .phases1p3p }} diff --git a/templates/definition/meter/senec-home.yaml b/templates/definition/meter/senec-home.yaml index 276cf1605..a891867c5 100644 --- a/templates/definition/meter/senec-home.yaml +++ b/templates/definition/meter/senec-home.yaml @@ -14,7 +14,6 @@ params: allinone: true - name: host - name: schema - default: https - name: capacity advanced: true render: | From a827e37454534493410e516406c2f8b71bea50f9 Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Fri, 2 Jan 2026 09:35:15 +0100 Subject: [PATCH 0011/1912] UI: add IDs for mobile testing (2) (#26325) --- assets/js/components/Top/Navigation.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/js/components/Top/Navigation.vue b/assets/js/components/Top/Navigation.vue index e240f8ead..914068e13 100644 --- a/assets/js/components/Top/Navigation.vue +++ b/assets/js/components/Top/Navigation.vue @@ -124,7 +124,12 @@
  • -
  • From 44ab703f1877e88bd1ccbe4b86c4de60f5ccbaf8 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Fri, 2 Jan 2026 09:55:23 +0100 Subject: [PATCH 0012/1912] Revert "Residual power default of 100W" (#26353) --- core/site.go | 1 - evcc.dist.yaml | 2 +- i18n/de.json | 2 +- i18n/en.json | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/site.go b/core/site.go index 2fb87723a..cfefc896b 100644 --- a/core/site.go +++ b/core/site.go @@ -266,7 +266,6 @@ func NewSite() *Site { site := &Site{ log: util.NewLogger("site"), Voltage: 230, // V - ResidualPower: 100, // W pvEnergy: make(map[string]*meterEnergy), fcstEnergy: &meterEnergy{clock: clock.New()}, householdEnergy: &meterEnergy{clock: clock.New()}, diff --git a/evcc.dist.yaml b/evcc.dist.yaml index 1962f6218..cc3178339 100644 --- a/evcc.dist.yaml +++ b/evcc.dist.yaml @@ -105,7 +105,7 @@ site: - battery # list of battery meters aux: - aux # list of auxiliary meters for adjusting grid operating point - residualPower: 100 # additional household usage margin + residualPower: 0 # additional household usage margin # loadpoint describes the charger, charge meter and connected vehicle loadpoints: diff --git a/i18n/de.json b/i18n/de.json index a740889dc..4d7992173 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -100,7 +100,7 @@ "control": { "description": "Normalerweise sind die Standardwerte in Ordnung. Ändere nur etwas, wenn du weißt, was du tust.", "descriptionInterval": "Aktualisierungszyklus in Sekunden. Definiert, wie oft evcc Messdaten liest und die Ladung anpasst. Die Standardeinstellung von 30 Sekunden ist eine sichere Wahl. Geräte wie Fahrzeuge, Wallbox und Wechselrichter brauchen in der Regel mehrere Sekunden um ihr Verhalten anzupassen. Wenn deine Komponenten schnell reagieren kannst du niedrigere Werte verwenden. Wir empfehlen dringend nicht unter 10 Sekunden zu gehen. Wenn du komisches Regelverhalten oder springende Leistungswerte beobachtest wähle ein größeres Intervall.", - "descriptionResidualPower": "Verschiebt den Betriebspunkt des Regelkreises. Der Standardwert von 100 W gibt Hausbatterien eine leichte Priorität gegenüber dem Netzbezug. Wenn du keine Batterie hast, kannst du den Wert auf 0 W setzen, um den Netzbezug im PV-Modus zu minimieren.", + "descriptionResidualPower": "Verschiebt den Betriebspunkt des Regelkreises. Wenn du eine Hausbatterie hast, wird empfohlen, einen Wert von 100 W einzustellen. Auf diese Weise erhält die Batterie eine leichte Priorität gegenüber dem Netzbezug.", "labelInterval": "Aktualisierungsintervall", "labelResidualPower": "Residualleistung", "title": "Regelverhalten" diff --git a/i18n/en.json b/i18n/en.json index 3d1f141c4..22f8e8d3b 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -100,7 +100,7 @@ "control": { "description": "Usually the default values are fine. Only change them if you know what you are doing.", "descriptionInterval": "Update cycle in seconds. Defines how often evcc reads meter data and adjusts charging. The default of 30 seconds is a safe choice. Devices like vehicles, wallboxes and inverters typically need several seconds to adjust their behavior. If your components react quickly you can use lower values. We strongly recommend not going below 10 seconds. If you observe erratic control behavior or jumping power values choose a larger interval.", - "descriptionResidualPower": "Shifts the operation point of the control loop. The default of 100 W gives home batteries slight priority over grid use. If you don't have a battery, you can set this to 0 W to minimize grid consumption in solar mode.", + "descriptionResidualPower": "Shifts the operation point of the control loop. If you have a home battery it's recommended to set a value of 100 W. This way the battery will get slight priority over grid use.", "labelInterval": "Update interval", "labelResidualPower": "Residual power", "title": "Control behavior" From bd46743e4ad5bc279720b98cd05951cf9778a12c Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Fri, 2 Jan 2026 10:17:25 +0100 Subject: [PATCH 0013/1912] chore: upgrade npm dependencies (#26354) --- package-lock.json | 160 ++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 77 insertions(+), 85 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05c52f3f6..f1d680918 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-vue": "^10.6.2", - "globals": "^16.5.0", + "globals": "^17.0.0", "happy-dom": "^20.0.11", "jiti": "^2.6.1", "kill-port": "^2.0.1", @@ -2463,13 +2463,13 @@ } }, "node_modules/@intlify/core-base": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.2.2.tgz", - "integrity": "sha512-0mCTBOLKIqFUP3BzwuFW23hYEl9g/wby6uY//AC5hTgQfTsM2srCYF2/hYGp+a5DZ/HIFIgKkLJMzXTt30r0JQ==", + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.2.8.tgz", + "integrity": "sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==", "license": "MIT", "dependencies": { - "@intlify/message-compiler": "11.2.2", - "@intlify/shared": "11.2.2" + "@intlify/message-compiler": "11.2.8", + "@intlify/shared": "11.2.8" }, "engines": { "node": ">= 16" @@ -2479,12 +2479,12 @@ } }, "node_modules/@intlify/message-compiler": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.2.2.tgz", - "integrity": "sha512-XS2p8Ff5JxWsKhgfld4/MRQzZRQ85drMMPhb7Co6Be4ZOgqJX1DzcZt0IFgGTycgqL8rkYNwgnD443Q+TapOoA==", + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.2.8.tgz", + "integrity": "sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==", "license": "MIT", "dependencies": { - "@intlify/shared": "11.2.2", + "@intlify/shared": "11.2.8", "source-map-js": "^1.0.2" }, "engines": { @@ -2495,9 +2495,9 @@ } }, "node_modules/@intlify/shared": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.2.2.tgz", - "integrity": "sha512-OtCmyFpSXxNu/oET/aN6HtPCbZ01btXVd0f3w00YsHOb13Kverk1jzA2k47pAekM55qbUw421fvPF1yxZ+gicw==", + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.2.8.tgz", + "integrity": "sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==", "license": "MIT", "engines": { "node": ">= 16" @@ -3118,13 +3118,13 @@ "license": "MIT" }, "node_modules/@storybook/builder-vite": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.1.10.tgz", - "integrity": "sha512-6m6zOyDhHLynv3lvkH70s1YoIkIFPhbpGsBKvHchRLrZLe8hCPeafIFLfZRPoD4yIPwBS6rWbjMsSvBMFlR+ag==", + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.1.11.tgz", + "integrity": "sha512-MMD09Ap7FyzDfWG961pkIMv/w684XXe1bBEi+wCEpHxvrgAd3j3A9w/Rqp9Am2uRDPCEdi1QgSzS3SGW3aGThQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "10.1.10", + "@storybook/csf-plugin": "10.1.11", "@vitest/mocker": "3.2.4", "ts-dedent": "^2.0.0" }, @@ -3133,14 +3133,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.1.10", + "storybook": "^10.1.11", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.1.10.tgz", - "integrity": "sha512-2dri4TRU8uuj/skmx/ZBw+GnnXf8EZHiMDMeijVRdBQtYFWPeoYzNIrGRpNfbuGpnDP0dcxrqti/TsedoxwFkA==", + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.1.11.tgz", + "integrity": "sha512-Ant0NhgqHKzQsseeVTSetZCuDHHs0W2HRkHt51Kg/sUl0T/sDtfVA+fWZT8nGzGZqYSFkxqYPWjauPmIhPtaRw==", "dev": true, "license": "MIT", "dependencies": { @@ -3153,7 +3153,7 @@ "peerDependencies": { "esbuild": "*", "rollup": "*", - "storybook": "^10.1.10", + "storybook": "^10.1.11", "vite": "*", "webpack": "*" }, @@ -3191,9 +3191,9 @@ } }, "node_modules/@storybook/vue3": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/@storybook/vue3/-/vue3-10.1.10.tgz", - "integrity": "sha512-NqMxLzW9VbuQOGbWIuwzi5yHcjP/iAUnmFtQ+Qm1vYGkxCdSmZAPiTo/nW3nK8KgPkSbSLumUbeCE7YyGBLiBA==", + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/@storybook/vue3/-/vue3-10.1.11.tgz", + "integrity": "sha512-1QnVCZUN9fZspK1933xL7xUqi1TZEMY58zxfIpgQnkVhkGmbK82e6kYzB+XhHrnuYt33E1Pc5QFV9/5CvYK0Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -3206,19 +3206,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.1.10", + "storybook": "^10.1.11", "vue": "^3.0.0" } }, "node_modules/@storybook/vue3-vite": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/@storybook/vue3-vite/-/vue3-vite-10.1.10.tgz", - "integrity": "sha512-lH6Ae2BI++0QUASco6BXsECnf3V+5ZNtY2ij1/gY3RQFM9kGhHF0k9VWulK+1KmwnjRDWzh1PTZ6B4FC9DDq2Q==", + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/@storybook/vue3-vite/-/vue3-vite-10.1.11.tgz", + "integrity": "sha512-Kq5co2xdBhShYRzDfLlt1xoYiHo8RHOjX7wtsFQTtSwTKIPsm34j45pmGov4xEUMhfSf1PIor//spTzd1HDR9Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-vite": "10.1.10", - "@storybook/vue3": "10.1.10", + "@storybook/builder-vite": "10.1.11", + "@storybook/vue3": "10.1.11", "magic-string": "^0.30.0", "typescript": "^5.8.3", "vue-component-meta": "^2.0.0", @@ -3229,7 +3229,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.1.10", + "storybook": "^10.1.11", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, @@ -3746,13 +3746,13 @@ } }, "node_modules/@unhead/vue": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.19.tgz", - "integrity": "sha512-7BYjHfOaoZ9+ARJkT10Q2TjnTUqDXmMpfakIAsD/hXiuff1oqWg1xeXT5+MomhNcC15HbiABpbbBmITLSHxdKg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.1.tgz", + "integrity": "sha512-WYa8ORhfv7lWDSoNpkMKhbW1Dbsux/3HqMcVkZS3xZ2/c/VrcChLj+IMadpCd1WNR0srITfRJhBYZ1i9hON5Qw==", "license": "MIT", "dependencies": { "hookable": "^5.5.3", - "unhead": "2.0.19" + "unhead": "2.1.1" }, "funding": { "url": "https://github.com/sponsors/harlan-zw" @@ -6949,9 +6949,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", + "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", "dev": true, "license": "MIT", "engines": { @@ -9184,9 +9184,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10174,9 +10174,9 @@ } }, "node_modules/storybook": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.1.10.tgz", - "integrity": "sha512-oK0t0jEogiKKfv5Z1ao4Of99+xWw1TMUGuGRYDQS4kp2yyBsJQEgu7NI7OLYsCDI6gzt5p3RPtl1lqdeVLUi8A==", + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.1.11.tgz", + "integrity": "sha512-pKP5jXJYM4OjvNklGuHKO53wOCAwfx79KvZyOWHoi9zXUH5WVMFUe/ZfWyxXG/GTcj0maRgHGUjq/0I43r0dDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10968,9 +10968,9 @@ "license": "MIT" }, "node_modules/unhead": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.0.19.tgz", - "integrity": "sha512-gEEjkV11Aj+rBnY6wnRfsFtF2RxKOLaPN4i+Gx3UhBxnszvV6ApSNZbGk7WKyy/lErQ6ekPN63qdFL7sa1leow==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.1.tgz", + "integrity": "sha512-NOt8n2KybAOxSLfNXegAVai4SGU8bPKqWnqCzNAvnRH2i8mW+0bbFjN/L75LBgCSTiOjJSpANe5w2V34Grr7Cw==", "license": "MIT", "dependencies": { "hookable": "^5.5.3" @@ -11593,13 +11593,13 @@ "license": "MIT" }, "node_modules/vue-i18n": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.2.2.tgz", - "integrity": "sha512-ULIKZyRluUPRCZmihVgUvpq8hJTtOqnbGZuv4Lz+byEKZq4mU0g92og414l6f/4ju+L5mORsiUuEPYrAuX2NJg==", + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.2.8.tgz", + "integrity": "sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==", "license": "MIT", "dependencies": { - "@intlify/core-base": "11.2.2", - "@intlify/shared": "11.2.2", + "@intlify/core-base": "11.2.8", + "@intlify/shared": "11.2.8", "@vue/devtools-api": "^6.5.0" }, "engines": { @@ -11638,14 +11638,14 @@ } }, "node_modules/vue-tsc": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.1.8.tgz", - "integrity": "sha512-deKgwx6exIHeZwF601P1ktZKNF0bepaSN4jBU3AsbldPx9gylUc1JDxYppl82yxgkAgaz0Y0LCLOi+cXe9HMYA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.1.tgz", + "integrity": "sha512-I23Rk8dkQfmcSbxDO0dmg9ioMLjKA1pjlU3Lz6Jfk2pMGu3Uryu9810XkcZH24IzPbhzPCnkKo2rEMRX0skSrw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/typescript": "2.4.26", - "@vue/language-core": "3.1.8" + "@volar/typescript": "2.4.27", + "@vue/language-core": "3.2.1" }, "bin": { "vue-tsc": "bin/vue-tsc.js" @@ -11655,62 +11655,54 @@ } }, "node_modules/vue-tsc/node_modules/@volar/language-core": { - "version": "2.4.26", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.26.tgz", - "integrity": "sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz", + "integrity": "sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.26" + "@volar/source-map": "2.4.27" } }, "node_modules/vue-tsc/node_modules/@volar/source-map": { - "version": "2.4.26", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.26.tgz", - "integrity": "sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz", + "integrity": "sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==", "dev": true, "license": "MIT" }, "node_modules/vue-tsc/node_modules/@volar/typescript": { - "version": "2.4.26", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.26.tgz", - "integrity": "sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz", + "integrity": "sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.26", + "@volar/language-core": "2.4.27", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/vue-tsc/node_modules/@vue/language-core": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.8.tgz", - "integrity": "sha512-PfwAW7BLopqaJbneChNL6cUOTL3GL+0l8paYP5shhgY5toBNidWnMXWM+qDwL7MC9+zDtzCF2enT8r6VPu64iw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.1.tgz", + "integrity": "sha512-g6oSenpnGMtpxHGAwKuu7HJJkNZpemK/zg3vZzZbJ6cnnXq1ssxuNrXSsAHYM3NvH8p4IkTw+NLmuxyeYz4r8A==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.26", + "@volar/language-core": "2.4.27", "@vue/compiler-dom": "^3.5.0", "@vue/shared": "^3.5.0", "alien-signals": "^3.0.0", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1", "picomatch": "^4.0.2" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, "node_modules/vue-tsc/node_modules/alien-signals": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.1.tgz", - "integrity": "sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz", + "integrity": "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 380664cc0..8d02c4123 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-vue": "^10.6.2", - "globals": "^16.5.0", + "globals": "^17.0.0", "happy-dom": "^20.0.11", "jiti": "^2.6.1", "kill-port": "^2.0.1", From 468561611fa8131843e859c4d297a7a3164f82b2 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Fri, 2 Jan 2026 10:44:43 +0100 Subject: [PATCH 0014/1912] chore: faster runner for playwright (#26355) --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index c5dae132a..fe5a5ea10 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -203,7 +203,7 @@ jobs: integration: name: Integration - runs-on: depot-ubuntu-24.04-arm-16 + runs-on: depot-ubuntu-24.04-arm-32 permissions: contents: read From 1e0539ec7d282cf7b3f206a2fe06376900c17d6c Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 12:05:03 +0100 Subject: [PATCH 0015/1912] chore: improve generator dependencies (#26360) --- cmd/decorate/decorate.go | 12 +- vehicle/vehicle_decorators.go | 7424 ++------------------------------- 2 files changed, 264 insertions(+), 7172 deletions(-) diff --git a/cmd/decorate/decorate.go b/cmd/decorate/decorate.go index b1beba1d2..58fd9a1db 100644 --- a/cmd/decorate/decorate.go +++ b/cmd/decorate/decorate.go @@ -58,6 +58,9 @@ var a struct { api.BatteryController api.BatterySocLimiter api.BatteryPowerLimiter + + api.CurrentController + api.CurrentGetter } func typ(i any) string { @@ -65,10 +68,11 @@ func typ(i any) string { } var dependents = map[string][]string{ - typ(&a.Meter): {typ(&a.MeterEnergy), typ(&a.PhaseCurrents), typ(&a.PhaseVoltages), typ(&a.MaxACPowerGetter)}, - typ(&a.PhaseCurrents): {typ(&a.PhasePowers)}, // phase powers are only used to determine currents sign - typ(&a.PhaseSwitcher): {typ(&a.PhaseGetter)}, - typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.SocLimiter), typ(&a.BatteryController), typ(&a.BatterySocLimiter), typ(&a.BatteryPowerLimiter)}, + typ(&a.Meter): {typ(&a.MeterEnergy), typ(&a.PhaseCurrents), typ(&a.PhaseVoltages), typ(&a.MaxACPowerGetter)}, + typ(&a.PhaseCurrents): {typ(&a.PhasePowers)}, // phase powers are only used to determine currents sign + typ(&a.PhaseSwitcher): {typ(&a.PhaseGetter)}, + typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.SocLimiter), typ(&a.BatteryController), typ(&a.BatterySocLimiter), typ(&a.BatteryPowerLimiter)}, + typ(&a.CurrentController): {typ(&a.CurrentGetter)}, } // hasIntersection returns if the slices intersect diff --git a/vehicle/vehicle_decorators.go b/vehicle/vehicle_decorators.go index d63eb82e9..930b9dc42 100644 --- a/vehicle/vehicle_decorators.go +++ b/vehicle/vehicle_decorators.go @@ -10,10 +10,10 @@ import ( func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeState func() (api.ChargeStatus, error), vehicleRange func() (int64, error), vehicleOdometer func() (float64, error), vehicleClimater func() (bool, error), currentController func(int64) error, currentGetter func() (float64, error), vehicleFinishTimer func() (time.Time, error), resurrector func() error, chargeController func(bool) error) api.Vehicle { switch { - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return base - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -24,7 +24,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -35,7 +35,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -50,7 +50,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleRange @@ -61,7 +61,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -76,7 +76,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -91,7 +91,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -110,7 +110,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleOdometer @@ -121,7 +121,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -136,7 +136,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -151,7 +151,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -170,7 +170,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleOdometer @@ -185,7 +185,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -204,7 +204,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -223,7 +223,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -246,7 +246,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleClimater @@ -257,7 +257,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -272,7 +272,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -287,7 +287,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -306,7 +306,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleClimater @@ -321,7 +321,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -340,7 +340,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -359,7 +359,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -382,7 +382,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleClimater @@ -397,7 +397,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -416,7 +416,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -435,7 +435,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -458,7 +458,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleClimater @@ -477,7 +477,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -500,7 +500,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -523,7 +523,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -1222,678 +1222,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController == nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -2694,7 +2022,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleFinishTimer @@ -2705,7 +2033,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -2720,7 +2048,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -2735,7 +2063,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -2754,7 +2082,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleFinishTimer @@ -2769,7 +2097,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -2788,7 +2116,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -2807,7 +2135,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -2830,7 +2158,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleFinishTimer @@ -2845,7 +2173,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -2864,7 +2192,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -2883,7 +2211,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -2906,7 +2234,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleFinishTimer @@ -2925,7 +2253,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -2948,7 +2276,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -2971,7 +2299,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -2998,7 +2326,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleClimater @@ -3013,7 +2341,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -3032,7 +2360,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -3051,7 +2379,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -3074,7 +2402,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleClimater @@ -3093,7 +2421,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -3116,7 +2444,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -3139,7 +2467,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -3166,7 +2494,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.VehicleClimater @@ -3185,7 +2513,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.SocLimiter @@ -3208,7 +2536,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -3231,7 +2559,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -3258,7 +2586,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.VehicleClimater @@ -3281,7 +2609,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.SocLimiter @@ -3308,7 +2636,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -3335,7 +2663,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -4166,806 +3494,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController == nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -5894,7 +4422,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -5905,7 +4433,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -5920,7 +4448,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -5935,7 +4463,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -5954,7 +4482,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -5969,7 +4497,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -5988,7 +4516,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6007,7 +4535,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6030,7 +4558,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6045,7 +4573,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6064,7 +4592,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6083,7 +4611,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6106,7 +4634,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6125,7 +4653,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6148,7 +4676,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6171,7 +4699,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6198,7 +4726,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6213,7 +4741,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6232,7 +4760,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6251,7 +4779,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6274,7 +4802,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6293,7 +4821,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6316,7 +4844,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6339,7 +4867,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6366,7 +4894,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6385,7 +4913,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -6408,7 +4936,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6431,7 +4959,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -6458,7 +4986,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6481,7 +5009,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -6508,7 +5036,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -6535,7 +5063,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -7366,806 +5894,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController == nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -9094,7 +6822,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9109,7 +6837,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9128,7 +6856,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9147,7 +6875,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9170,7 +6898,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9189,7 +6917,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9212,7 +6940,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9235,7 +6963,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9262,7 +6990,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9281,7 +7009,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9304,7 +7032,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9327,7 +7055,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9354,7 +7082,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9377,7 +7105,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9404,7 +7132,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9431,7 +7159,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9462,7 +7190,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9481,7 +7209,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9504,7 +7232,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9527,7 +7255,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9554,7 +7282,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9577,7 +7305,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9604,7 +7332,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9631,7 +7359,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9662,7 +7390,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9685,7 +7413,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.Resurrector @@ -9712,7 +7440,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9739,7 +7467,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeState @@ -9770,7 +7498,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9797,7 +7525,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.Resurrector @@ -9828,7 +7556,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -9859,7 +7587,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController == nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeState @@ -10822,934 +8550,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController == nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController == nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -12806,7 +9606,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12817,7 +9617,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12832,7 +9632,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12847,7 +9647,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12866,7 +9666,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -12881,7 +9681,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -12900,7 +9700,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -12919,7 +9719,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -12942,7 +9742,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12957,7 +9757,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12976,7 +9776,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -12995,7 +9795,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13018,7 +9818,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13037,7 +9837,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13060,7 +9860,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13083,7 +9883,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13110,7 +9910,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13125,7 +9925,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13144,7 +9944,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13163,7 +9963,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13186,7 +9986,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13205,7 +10005,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13228,7 +10028,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13251,7 +10051,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13278,7 +10078,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13297,7 +10097,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13320,7 +10120,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13343,7 +10143,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -13370,7 +10170,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13393,7 +10193,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13420,7 +10220,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -13447,7 +10247,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -14278,806 +11078,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController != nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -16006,7 +12006,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16021,7 +12021,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16040,7 +12040,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16059,7 +12059,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16082,7 +12082,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16101,7 +12101,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16124,7 +12124,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16147,7 +12147,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16174,7 +12174,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16193,7 +12193,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16216,7 +12216,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16239,7 +12239,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16266,7 +12266,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16289,7 +12289,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16316,7 +12316,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16343,7 +12343,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16374,7 +12374,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16393,7 +12393,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16416,7 +12416,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16439,7 +12439,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16466,7 +12466,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16489,7 +12489,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16516,7 +12516,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16543,7 +12543,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16574,7 +12574,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16597,7 +12597,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16624,7 +12624,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16651,7 +12651,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -16682,7 +12682,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16709,7 +12709,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16740,7 +12740,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -16771,7 +12771,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -17734,934 +13734,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector == nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController != nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector == nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -19718,7 +14790,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19733,7 +14805,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19752,7 +14824,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19771,7 +14843,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19794,7 +14866,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -19813,7 +14885,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -19836,7 +14908,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -19859,7 +14931,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -19886,7 +14958,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19905,7 +14977,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19928,7 +15000,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19951,7 +15023,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -19978,7 +15050,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20001,7 +15073,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20028,7 +15100,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20055,7 +15127,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20086,7 +15158,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20105,7 +15177,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20128,7 +15200,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20151,7 +15223,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20178,7 +15250,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20201,7 +15273,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20228,7 +15300,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20255,7 +15327,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20286,7 +15358,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20309,7 +15381,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20336,7 +15408,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20363,7 +15435,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -20394,7 +15466,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20421,7 +15493,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20452,7 +15524,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -20483,7 +15555,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -21446,934 +16518,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer == nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController != nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer == nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle @@ -23430,7 +17574,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23449,7 +17593,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23472,7 +17616,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23495,7 +17639,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23522,7 +17666,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23545,7 +17689,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23572,7 +17716,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23599,7 +17743,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23630,7 +17774,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23653,7 +17797,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23680,7 +17824,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23707,7 +17851,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23738,7 +17882,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23765,7 +17909,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23796,7 +17940,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23827,7 +17971,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23862,7 +18006,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23885,7 +18029,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23912,7 +18056,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23939,7 +18083,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -23970,7 +18114,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -23997,7 +18141,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24028,7 +18172,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24059,7 +18203,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24094,7 +18238,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -24121,7 +18265,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -24152,7 +18296,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -24183,7 +18327,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: return &struct { api.Vehicle api.ChargeController @@ -24218,7 +18362,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24249,7 +18393,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState == nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24284,7 +18428,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -24319,7 +18463,7 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: + case chargeController != nil && chargeState != nil && currentController == nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: return &struct { api.Vehicle api.ChargeController @@ -25414,1062 +19558,6 @@ func decorateVehicle(base api.Vehicle, socLimiter func() (int64, error), chargeS }, } - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange == nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState == nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - - case chargeController != nil && chargeState != nil && currentController == nil && currentGetter != nil && resurrector != nil && socLimiter != nil && vehicleClimater != nil && vehicleFinishTimer != nil && vehicleOdometer != nil && vehicleRange != nil: - return &struct { - api.Vehicle - api.ChargeController - api.ChargeState - api.CurrentGetter - api.Resurrector - api.SocLimiter - api.VehicleClimater - api.VehicleFinishTimer - api.VehicleOdometer - api.VehicleRange - }{ - Vehicle: base, - ChargeController: &decorateVehicleChargeControllerImpl{ - chargeController: chargeController, - }, - ChargeState: &decorateVehicleChargeStateImpl{ - chargeState: chargeState, - }, - CurrentGetter: &decorateVehicleCurrentGetterImpl{ - currentGetter: currentGetter, - }, - Resurrector: &decorateVehicleResurrectorImpl{ - resurrector: resurrector, - }, - SocLimiter: &decorateVehicleSocLimiterImpl{ - socLimiter: socLimiter, - }, - VehicleClimater: &decorateVehicleVehicleClimaterImpl{ - vehicleClimater: vehicleClimater, - }, - VehicleFinishTimer: &decorateVehicleVehicleFinishTimerImpl{ - vehicleFinishTimer: vehicleFinishTimer, - }, - VehicleOdometer: &decorateVehicleVehicleOdometerImpl{ - vehicleOdometer: vehicleOdometer, - }, - VehicleRange: &decorateVehicleVehicleRangeImpl{ - vehicleRange: vehicleRange, - }, - } - case chargeController != nil && chargeState == nil && currentController != nil && currentGetter != nil && resurrector != nil && socLimiter == nil && vehicleClimater == nil && vehicleFinishTimer != nil && vehicleOdometer == nil && vehicleRange == nil: return &struct { api.Vehicle From 30b1e135e4f6f48114de0a41f4c18726e6452d50 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 12:28:13 +0100 Subject: [PATCH 0016/1912] chore: allow decorator to split functions (#26357) --- cmd/decorate/decorate.go | 88 +- cmd/decorate/decorate.tpl | 8 - cmd/decorate/header.tpl | 7 + meter/meter.go | 55 +- meter/meter_average.go | 6 +- meter/meter_decorators.go | 11966 +++--------------------------------- meter/meter_test.go | 31 +- meter/openwb.go | 6 +- 8 files changed, 903 insertions(+), 11264 deletions(-) create mode 100644 cmd/decorate/header.tpl 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 } From 4a7498ac9cc539666ad708b4f888ee9488827e90 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 2 Jan 2026 13:20:09 +0100 Subject: [PATCH 0017/1912] Optimizer: standardize definition of battery parameters (#26302) --- meter/e3dc.go | 30 +- meter/e3dc_decorators.go | 570 +++++++++++++++++- meter/lgess.go | 9 +- meter/lgess_decorators.go | 410 ++++++++++++- meter/mbmd.go | 2 + .../definition/meter/alpha-ess-smile.yaml | 9 +- templates/definition/meter/batterx.yaml | 7 +- templates/definition/meter/bosch-bpt.yaml | 3 +- .../definition/meter/deye-hybrid-3p.yaml | 11 +- .../definition/meter/deye-hybrid-hp3.yaml | 11 +- templates/definition/meter/deye-storage.yaml | 5 +- templates/definition/meter/e3dc-modbus.yaml | 5 +- templates/definition/meter/e3dc-rscp.yaml | 35 +- templates/definition/meter/enphase.yaml | 11 +- .../definition/meter/fox-ess-avocado.yaml | 11 +- templates/definition/meter/fox-ess-h1.yaml | 2 + .../definition/meter/fox-ess-h3-smart.yaml | 15 +- templates/definition/meter/fox-ess-h3.yaml | 5 +- templates/definition/meter/fronius-gen24.yaml | 13 +- .../definition/meter/fronius-solarapi-v1.yaml | 5 +- .../definition/meter/fronius-vertoplus.yaml | 5 +- templates/definition/meter/goodwe-hybrid.yaml | 11 +- .../definition/meter/growatt-hybrid-tlxh.yaml | 5 +- .../definition/meter/growatt-hybrid.yaml | 5 +- .../definition/meter/hager-flow-modbus.yaml | 3 +- templates/definition/meter/huawei-emma.yaml | 5 +- .../definition/meter/huawei-smartlogger.yaml | 17 +- .../definition/meter/huawei-sun2000.yaml | 18 +- .../definition/meter/kostal-piko-hybrid.yaml | 5 +- .../meter/kostal-plenticore-gen2.yaml | 17 +- .../definition/meter/kostal-plenticore.yaml | 14 +- .../definition/meter/lg-ess-home-15.yaml | 14 +- .../definition/meter/lg-ess-home-8-10.yaml | 14 +- .../meter/marstek-jupiterc-plus.yaml | 7 +- templates/definition/meter/marstek-venus.yaml | 12 +- templates/definition/meter/mtec-eb-gen3.yaml | 5 +- .../definition/meter/openems-modbus.yaml | 19 +- templates/definition/meter/openems.yaml | 15 +- templates/definition/meter/plexlog.yaml | 5 +- .../definition/meter/qcells-hybrid-cloud.yaml | 5 +- templates/definition/meter/rct-power.yaml | 43 +- templates/definition/meter/saj-h1.yaml | 21 +- templates/definition/meter/saj-h2.yaml | 9 +- templates/definition/meter/sax.yaml | 5 +- templates/definition/meter/senec-home.yaml | 5 +- .../definition/meter/senergy-hybrid.yaml | 11 +- .../definition/meter/sermatec-hybrid.yaml | 5 +- .../definition/meter/siemens-junelight.yaml | 5 +- templates/definition/meter/sigenergy.yaml | 13 +- .../definition/meter/sma-datamanager.yaml | 5 +- templates/definition/meter/sma-hybrid.yaml | 5 +- .../meter/sma-inverter-speedwire.yaml | 3 +- templates/definition/meter/sofarsolar-g3.yaml | 13 +- templates/definition/meter/sofarsolar.yaml | 5 +- .../definition/meter/solaredge-hybrid.yaml | 31 +- .../definition/meter/solarmax-maxstorage.yaml | 5 +- .../definition/meter/solarwatt-flex.yaml | 5 +- .../meter/solarwatt-myreserve-matrix.yaml | 5 +- templates/definition/meter/solarwatt.yaml | 5 +- .../definition/meter/solax-hybrid-cloud.yaml | 5 +- templates/definition/meter/solax.yaml | 15 +- .../definition/meter/solis-hybrid-s.yaml | 11 +- templates/definition/meter/solis-hybrid.yaml | 5 +- .../definition/meter/sonnenbatterie.yaml | 14 +- .../meter/sonnenbatterie_eco56.yaml | 7 +- templates/definition/meter/storaxe.yaml | 5 +- .../definition/meter/sungrow-hybrid.yaml | 17 +- templates/definition/meter/sungrow-ihm.yaml | 5 +- .../meter/sunspec-battery-control.yaml | 14 +- .../definition/meter/sunspec-hybrid.yaml | 5 +- .../meter/sunspec-inverter-control.yaml | 5 +- .../definition/meter/sunspec-inverter.yaml | 5 +- templates/definition/meter/varta.yaml | 9 +- .../definition/meter/victron-energy.yaml | 16 +- .../definition/meter/wattsonic-gen3.yaml | 11 +- templates/definition/meter/wattsonic.yaml | 9 +- .../meter/zendure-solarflow-ac.yaml | 5 +- .../meter/zendure-solarflow-pro.yaml | 3 +- util/templates/defaults.yaml | 7 + util/templates/includes/battery-params.tpl | 7 + 80 files changed, 1184 insertions(+), 565 deletions(-) create mode 100644 util/templates/includes/battery-params.tpl diff --git a/meter/e3dc.go b/meter/e3dc.go index 118eefa49..bfc1900e2 100644 --- a/meter/e3dc.go +++ b/meter/e3dc.go @@ -29,20 +29,22 @@ func init() { registry.Add("e3dc-rscp", NewE3dcFromConfig) } -//go:generate go tool decorate -f decorateE3dc -b *E3dc -r api.Meter -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.MaxACPowerGetter,MaxACPower,func() float64" +//go:generate go tool decorate -f decorateE3dc -b *E3dc -r api.Meter -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryPowerLimiter,GetPowerLimits,func() (float64, float64)" -t "api.MaxACPowerGetter,MaxACPower,func() float64" func NewE3dcFromConfig(other map[string]any) (api.Meter, error) { cc := struct { - batteryCapacity `mapstructure:",squash"` - pvMaxACPower `mapstructure:",squash"` - Usage templates.Usage - Uri string - User string - Password string - Key string - ExternalPower bool - DischargeLimit uint32 - Timeout time.Duration + batteryCapacity `mapstructure:",squash"` + batteryPowerLimits `mapstructure:",squash"` + batterySocLimits `mapstructure:",squash"` + pvMaxACPower `mapstructure:",squash"` + Usage templates.Usage + Uri string + User string + Password string + Key string + ExternalPower bool + DischargeLimit uint32 + Timeout time.Duration }{ Timeout: request.Timeout, } @@ -69,12 +71,12 @@ func NewE3dcFromConfig(other map[string]any) (api.Meter, error) { ReceiveTimeout: cc.Timeout, } - return NewE3dc(cfg, cc.Usage, cc.DischargeLimit, cc.ExternalPower, cc.batteryCapacity.Decorator(), cc.pvMaxACPower.Decorator()) + return NewE3dc(cfg, cc.Usage, cc.DischargeLimit, cc.ExternalPower, cc.batteryCapacity.Decorator(), cc.pvMaxACPower.Decorator(), cc.batterySocLimits.Decorator(), cc.batteryPowerLimits.Decorator()) } var e3dcOnce sync.Once -func NewE3dc(cfg rscp.ClientConfig, usage templates.Usage, dischargeLimit uint32, externalPower bool, capacity, maxacpower func() float64) (api.Meter, error) { +func NewE3dc(cfg rscp.ClientConfig, usage templates.Usage, dischargeLimit uint32, externalPower bool, capacity, maxacpower func() float64, batterySocLimits, batteryPowerLimits func() (float64, float64)) (api.Meter, error) { e3dcOnce.Do(func() { log := util.NewLogger("e3dc") rscp.Log.SetLevel(logrus.DebugLevel) @@ -112,7 +114,7 @@ func NewE3dc(cfg rscp.ClientConfig, usage templates.Usage, dischargeLimit uint32 batteryMode = m.setBatteryMode } - return decorateE3dc(m, batterySoc, batteryCapacity, batteryMode, maxacpower), nil + return decorateE3dc(m, batterySoc, batteryCapacity, batteryMode, batterySocLimits, batteryPowerLimits, maxacpower), nil } // retryMessage executes a single message request with retry diff --git a/meter/e3dc_decorators.go b/meter/e3dc_decorators.go index a517635ac..5c2e2279a 100644 --- a/meter/e3dc_decorators.go +++ b/meter/e3dc_decorators.go @@ -6,12 +6,12 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity func() float64, batteryController func(api.BatteryMode) error, maxACPowerGetter func() float64) api.Meter { +func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity func() float64, batteryController func(api.BatteryMode) error, batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), maxACPowerGetter func() float64) api.Meter { switch { case battery == nil && maxACPowerGetter == nil: return base - case battery != nil && batteryCapacity == nil && batteryController == nil && maxACPowerGetter == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil: return &struct { *E3dc api.Battery @@ -22,7 +22,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && maxACPowerGetter == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil: return &struct { *E3dc api.Battery @@ -37,7 +37,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && maxACPowerGetter == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil: return &struct { *E3dc api.Battery @@ -52,7 +52,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && maxACPowerGetter == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter == nil: return &struct { *E3dc api.Battery @@ -71,6 +71,250 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryPowerLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatteryPowerLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter == nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + case battery == nil && maxACPowerGetter != nil: return &struct { *E3dc @@ -82,7 +326,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && maxACPowerGetter != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil: return &struct { *E3dc api.Battery @@ -97,7 +341,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && maxACPowerGetter != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil: return &struct { *E3dc api.Battery @@ -116,7 +360,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && maxACPowerGetter != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil: return &struct { *E3dc api.Battery @@ -135,7 +379,7 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && maxACPowerGetter != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && maxACPowerGetter != nil: return &struct { *E3dc api.Battery @@ -157,6 +401,298 @@ func decorateE3dc(base *E3dc, battery func() (float64, error), batteryCapacity f maxACPowerGetter: maxACPowerGetter, }, } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && maxACPowerGetter != nil: + return &struct { + *E3dc + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MaxACPowerGetter + }{ + E3dc: base, + Battery: &decorateE3dcBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateE3dcBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateE3dcBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MaxACPowerGetter: &decorateE3dcMaxACPowerGetterImpl{ + maxACPowerGetter: maxACPowerGetter, + }, + } } return nil @@ -186,6 +722,22 @@ func (impl *decorateE3dcBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode return impl.batteryController(p0) } +type decorateE3dcBatteryPowerLimiterImpl struct { + batteryPowerLimiter func() (float64, float64) +} + +func (impl *decorateE3dcBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { + return impl.batteryPowerLimiter() +} + +type decorateE3dcBatterySocLimiterImpl struct { + batterySocLimiter func() (float64, float64) +} + +func (impl *decorateE3dcBatterySocLimiterImpl) GetSocLimits() (float64, float64) { + return impl.batterySocLimiter() +} + type decorateE3dcMaxACPowerGetterImpl struct { maxACPowerGetter func() float64 } diff --git a/meter/lgess.go b/meter/lgess.go index 4962bbba8..29adcbec8 100644 --- a/meter/lgess.go +++ b/meter/lgess.go @@ -22,7 +22,7 @@ func init() { registry.Add("lgess15", NewLgEss15FromConfig) } -//go:generate go tool decorate -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" +//go:generate go tool decorate -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryPowerLimiter,GetPowerLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" func NewLgEss8FromConfig(other map[string]any) (api.Meter, error) { return NewLgEssFromConfig(other, lgpcs.LgEss8) @@ -37,6 +37,7 @@ func NewLgEssFromConfig(other map[string]any, essType lgpcs.Model) (api.Meter, e cc := struct { batteryCapacity `mapstructure:",squash"` batterySocLimits `mapstructure:",squash"` + batteryPowerLimits `mapstructure:",squash"` URI, Usage string Registration, Password string Cache time.Duration @@ -56,11 +57,11 @@ func NewLgEssFromConfig(other map[string]any, essType lgpcs.Model) (api.Meter, e return nil, errors.New("missing usage") } - return NewLgEss(cc.URI, cc.Usage, cc.Registration, cc.Password, cc.Cache, cc.batteryCapacity.Decorator(), cc.batterySocLimits, essType) + return NewLgEss(cc.URI, cc.Usage, cc.Registration, cc.Password, cc.Cache, cc.batteryCapacity.Decorator(), cc.batterySocLimits, cc.batteryPowerLimits, essType) } // NewLgEss creates an LgEss Meter -func NewLgEss(uri, usage, registration, password string, cache time.Duration, capacity func() float64, batterySocLimits batterySocLimits, essType lgpcs.Model) (api.Meter, error) { +func NewLgEss(uri, usage, registration, password string, cache time.Duration, capacity func() float64, batterySocLimits batterySocLimits, batteryPowerLimits batteryPowerLimits, essType lgpcs.Model) (api.Meter, error) { conn, err := lgpcs.GetInstance(uri, registration, password, cache, essType) if err != nil { return nil, err @@ -90,7 +91,7 @@ func NewLgEss(uri, usage, registration, password string, cache time.Duration, ca } } - return decorateLgEss(m, totalEnergy, capacity, batterySoc, batterySocLimiter, setBatteryMode), nil + return decorateLgEss(m, totalEnergy, capacity, batterySoc, batterySocLimiter, batteryPowerLimits.Decorator(), setBatteryMode), nil } // CurrentPower implements the api.Meter interface diff --git a/meter/lgess_decorators.go b/meter/lgess_decorators.go index c42057c2b..7515f66a6 100644 --- a/meter/lgess_decorators.go +++ b/meter/lgess_decorators.go @@ -6,7 +6,7 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapacity func() float64, battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { +func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapacity func() float64, battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { switch { case battery == nil && meterEnergy == nil: return base @@ -22,7 +22,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -33,7 +33,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -48,7 +48,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -63,7 +63,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -82,7 +82,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -97,7 +97,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -116,7 +116,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -135,7 +135,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -158,7 +158,175 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryPowerLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryPowerLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -173,7 +341,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -192,7 +360,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -211,7 +379,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -234,7 +402,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -253,7 +421,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -276,7 +444,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { *LgEss api.Battery @@ -299,7 +467,7 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { *LgEss api.Battery @@ -325,6 +493,206 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), batteryCapa meterEnergy: meterEnergy, }, } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatteryPowerLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: + return &struct { + *LgEss + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatteryPowerLimiter + api.BatterySocLimiter + api.MeterEnergy + }{ + LgEss: base, + Battery: &decorateLgEssBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateLgEssBatteryControllerImpl{ + batteryController: batteryController, + }, + BatteryPowerLimiter: &decorateLgEssBatteryPowerLimiterImpl{ + batteryPowerLimiter: batteryPowerLimiter, + }, + BatterySocLimiter: &decorateLgEssBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } } return nil @@ -354,6 +722,14 @@ func (impl *decorateLgEssBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMod return impl.batteryController(p0) } +type decorateLgEssBatteryPowerLimiterImpl struct { + batteryPowerLimiter func() (float64, float64) +} + +func (impl *decorateLgEssBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { + return impl.batteryPowerLimiter() +} + type decorateLgEssBatterySocLimiterImpl struct { batterySocLimiter func() (float64, float64) } diff --git a/meter/mbmd.go b/meter/mbmd.go index 21bf9d14e..e08fd1773 100644 --- a/meter/mbmd.go +++ b/meter/mbmd.go @@ -33,6 +33,8 @@ func NewModbusMbmdFromConfig(ctx context.Context, other map[string]any) (api.Met cc := struct { Model string batteryCapacity `mapstructure:",squash"` + batteryPowerLimits `mapstructure:",squash"` + batterySocLimits `mapstructure:",squash"` modbus.Settings `mapstructure:",squash"` Power, Energy, Soc string Currents []string diff --git a/templates/definition/meter/alpha-ess-smile.yaml b/templates/definition/meter/alpha-ess-smile.yaml index 425b10f0a..9117a849f 100644 --- a/templates/definition/meter/alpha-ess-smile.yaml +++ b/templates/definition/meter/alpha-ess-smile.yaml @@ -18,13 +18,8 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 85 - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -204,5 +199,5 @@ render: | address: 2133 # 0x855 Charge Cut Soc type: writemultiple decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/batterx.yaml b/templates/definition/meter/batterx.yaml index a03b6a902..eaea8c5ff 100644 --- a/templates/definition/meter/batterx.yaml +++ b/templates/definition/meter/batterx.yaml @@ -11,9 +11,8 @@ params: - name: host - name: port default: 80 - - name: capacity - advanced: true - name: externalpv + type: bool description: de: | Benötigt bei ein weiterer Solarwechselrichter. @@ -28,7 +27,7 @@ params: This parameter is needed when the BatterX station is connected to another solar inverter. The total produced solar power can so be reported through one system. Further auxilary solar inverters do not need to be connected to evcc. - default: "false" + - preset: battery-params render: | type: custom power: @@ -81,6 +80,6 @@ render: | uri: http://{{ .host }}:{{ .port }}/api.php?set=command&type=20738&text1=3&text2=1 # Battery Charge AC - ON - source: http uri: http://{{ .host }}:{{ .port }}/api.php?set=command&type=20738&text1=4&text2=0 # Battery Discharging - OFF - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} {{- end }} diff --git a/templates/definition/meter/bosch-bpt.yaml b/templates/definition/meter/bosch-bpt.yaml index a2843b40b..a3fdefe12 100644 --- a/templates/definition/meter/bosch-bpt.yaml +++ b/templates/definition/meter/bosch-bpt.yaml @@ -12,8 +12,7 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: uri - - name: capacity - advanced: true + - preset: battery-params render: | type: bosch-bpt usage: {{ .usage }} diff --git a/templates/definition/meter/deye-hybrid-3p.yaml b/templates/definition/meter/deye-hybrid-3p.yaml index 5e3afb3d3..6ef2be65d 100644 --- a/templates/definition/meter/deye-hybrid-3p.yaml +++ b/templates/definition/meter/deye-hybrid-3p.yaml @@ -16,13 +16,8 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - name: maxacpower + - preset: battery-params - name: maxdischargecurrent required: true default: 100 @@ -384,7 +379,5 @@ render: | address: 109 # Battery Max Discharging Current type: writemultiple decode: uint16 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/deye-hybrid-hp3.yaml b/templates/definition/meter/deye-hybrid-hp3.yaml index 175f7e547..7fdcc279f 100644 --- a/templates/definition/meter/deye-hybrid-hp3.yaml +++ b/templates/definition/meter/deye-hybrid-hp3.yaml @@ -19,13 +19,8 @@ params: type: int default: 1 advanced: true - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - name: maxacpower + - preset: battery-params - name: includegenport type: bool advanced: true @@ -306,7 +301,5 @@ render: | address: 172 type: writemultiple decode: int32s - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/deye-storage.yaml b/templates/definition/meter/deye-storage.yaml index 94a382899..36365f5f9 100644 --- a/templates/definition/meter/deye-storage.yaml +++ b/templates/definition/meter/deye-storage.yaml @@ -13,8 +13,7 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 1 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -103,5 +102,5 @@ render: | address: 184 # "battery capacity" type: holding decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/e3dc-modbus.yaml b/templates/definition/meter/e3dc-modbus.yaml index 731b54b2f..c2f22c950 100644 --- a/templates/definition/meter/e3dc-modbus.yaml +++ b/templates/definition/meter/e3dc-modbus.yaml @@ -9,8 +9,7 @@ params: - name: host - name: port default: 502 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -56,5 +55,5 @@ render: | address: 40082 # Batterie-SOC in % type: holding decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/e3dc-rscp.yaml b/templates/definition/meter/e3dc-rscp.yaml index 9b299280f..5159c9ff5 100644 --- a/templates/definition/meter/e3dc-rscp.yaml +++ b/templates/definition/meter/e3dc-rscp.yaml @@ -38,6 +38,18 @@ params: de: Muss auf dem Bildschirm des Hauskraftwerks unter 'Personalisieren' > 'Benutzerprofil' angelegt werden. mask: true required: true + - name: maxacpower + - name: externalpower + type: bool + description: + de: Externe Quelle einschließen + en: Include external power + help: + de: Bezieht alle angeschlossenen externen Quellen in die PV-Berechnung ein (Standard). + en: Includes all connected external sources into the PV calculation (default). + advanced: true + usages: ["pv"] + default: true - name: battery description: generic: Battery @@ -52,20 +64,7 @@ params: type: int advanced: true usages: ["battery"] - - name: maxacpower - - name: capacity - advanced: true - - name: externalpower - type: bool - description: - de: Externe Quelle einschließen - en: Include external power - help: - de: Bezieht alle angeschlossenen externen Quellen in die PV-Berechnung ein (Standard). - en: Includes all connected external sources into the PV calculation (default). - advanced: true - usages: ["pv"] - default: "true" + - preset: battery-params render: | type: e3dc-rscp usage: {{ .usage }} @@ -73,11 +72,11 @@ render: | user: {{ .user }} password: {{ .password }} key: {{ .key }} - {{- if eq .usage "battery" }} - dischargelimit: {{ .dischargelimit }} - capacity: {{ .capacity }} # kWh - {{- end }} {{- if eq .usage "pv" }} maxacpower: {{ .maxacpower }} # W externalpower: {{ .externalpower }} {{- end }} + {{- if eq .usage "battery" }} + dischargelimit: {{ .dischargelimit }} + {{- include "battery-params" . }} + {{- end }} diff --git a/templates/definition/meter/enphase.yaml b/templates/definition/meter/enphase.yaml index 17ca1228a..57ef156c0 100644 --- a/templates/definition/meter/enphase.yaml +++ b/templates/definition/meter/enphase.yaml @@ -15,11 +15,6 @@ params: help: en: "Required if Envoy Firmware D7.x.xxx. Token is valid for one year. Instructions for obtaining a token via web UI: https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication" de: "Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication" - - name: capacity - advanced: true - - name: cache - advanced: true - default: 1s - name: battery_type description: en: "Enphase Battery Type (AC or IQ)" @@ -30,6 +25,10 @@ params: default: ac choice: ["ac", "iq"] advanced: true + - preset: battery-params + - name: cache + advanced: true + default: 1s render: | type: custom {{- if eq .usage "grid" }} @@ -163,5 +162,5 @@ render: | {{- end }} cache: {{ .cache }} jq: '[.[].devices[] | select(.percentFull != null) | .percentFull] | add / length' - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fox-ess-avocado.yaml b/templates/definition/meter/fox-ess-avocado.yaml index 129d5b96b..162a980f0 100644 --- a/templates/definition/meter/fox-ess-avocado.yaml +++ b/templates/definition/meter/fox-ess-avocado.yaml @@ -14,14 +14,15 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 1 + - name: maxacpower + default: 800 + - preset: battery-params - name: capacity default: 2.11 # kWh - name: minsoc default: 10 - name: maxsoc default: 100 - - name: maxacpower - default: 800 - name: maxchargepower default: 1200 render: | @@ -188,9 +189,5 @@ render: | address: 46003 # Remote Active Power type: writemultiple encoding: int32 - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxacpower }} # W - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fox-ess-h1.yaml b/templates/definition/meter/fox-ess-h1.yaml index a8bd78c4d..65939fbaf 100644 --- a/templates/definition/meter/fox-ess-h1.yaml +++ b/templates/definition/meter/fox-ess-h1.yaml @@ -10,6 +10,7 @@ params: - name: modbus choice: ["rs485", "tcpip"] id: 247 + - preset: battery-params render: | type: custom {{- if eq .usage "pv" }} @@ -64,4 +65,5 @@ render: | type: input {{- end }} decode: int16 + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fox-ess-h3-smart.yaml b/templates/definition/meter/fox-ess-h3-smart.yaml index 9c8c8a569..d0ee8e6c8 100644 --- a/templates/definition/meter/fox-ess-h3-smart.yaml +++ b/templates/definition/meter/fox-ess-h3-smart.yaml @@ -10,17 +10,8 @@ params: - name: modbus choice: ["rs485", "tcpip"] id: 247 - - name: capacity - type: float - advanced: true - # battery control - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -124,7 +115,5 @@ render: | address: 46611 # Minimum SoC OnGrid type: writesingle decode: uint16 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fox-ess-h3.yaml b/templates/definition/meter/fox-ess-h3.yaml index 2429279e9..1645133e3 100644 --- a/templates/definition/meter/fox-ess-h3.yaml +++ b/templates/definition/meter/fox-ess-h3.yaml @@ -10,6 +10,7 @@ params: - name: modbus choice: ["rs485", "tcpip"] id: 247 + - preset: battery-params - name: capacity advanced: true # battery control @@ -99,7 +100,5 @@ render: | address: 41009 # limit soc type: writesingle decode: uint16 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fronius-gen24.yaml b/templates/definition/meter/fronius-gen24.yaml index 6af4dd06c..deb527965 100644 --- a/templates/definition/meter/fronius-gen24.yaml +++ b/templates/definition/meter/fronius-gen24.yaml @@ -32,14 +32,9 @@ params: generic: Integer deprecated: true - name: maxacpower + - preset: battery-params - name: maxchargerate advanced: true - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true render: | type: custom # sunspec model 20x (int+sf)/ 21x (float) meter @@ -248,13 +243,11 @@ render: | id: 1 value: 124:0:StorCtl_Mod - source: const - value: -{{ .maxchargerate }} # % + value: {{ if .maxchargerate }}-{{ .maxchargerate }}{{ end }} # % set: source: sunspec uri: {{ .host }}:{{ .port }} id: 1 value: 124:0:OutWRte - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fronius-solarapi-v1.yaml b/templates/definition/meter/fronius-solarapi-v1.yaml index aabd02041..0232717d4 100644 --- a/templates/definition/meter/fronius-solarapi-v1.yaml +++ b/templates/definition/meter/fronius-solarapi-v1.yaml @@ -23,8 +23,6 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: host - - name: capacity - advanced: true - name: user default: customer description: @@ -44,6 +42,7 @@ params: help: de: Firmware Versionen ab 1.36.5-1 erfordern /api/config. en: Firmware starting with 1.36.5-1 requires /api/config. + - preset: battery-params render: | type: custom power: @@ -113,5 +112,5 @@ render: | - source: error error: ErrNotAvailable {{- end }} - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/fronius-vertoplus.yaml b/templates/definition/meter/fronius-vertoplus.yaml index 40cdedb65..2ad36f31c 100644 --- a/templates/definition/meter/fronius-vertoplus.yaml +++ b/templates/definition/meter/fronius-vertoplus.yaml @@ -21,8 +21,7 @@ params: - name: maxacpower - name: maxchargerate advanced: true - - name: capacity - advanced: true + - preset: battery-params render: | type: custom # sunspec model 20x (int+sf)/ 21x (float) meter @@ -246,5 +245,5 @@ render: | uri: {{ .host }}:{{ .port }} id: 1 value: 124:0:OutWRte - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/goodwe-hybrid.yaml b/templates/definition/meter/goodwe-hybrid.yaml index b866ba06b..eac500c08 100644 --- a/templates/definition/meter/goodwe-hybrid.yaml +++ b/templates/definition/meter/goodwe-hybrid.yaml @@ -11,6 +11,7 @@ params: choice: ["rs485", "tcpip", "udp"] baudrate: 9600 id: 247 + - name: maxacpower - name: battery default: 1 type: choice @@ -19,9 +20,7 @@ params: de: Batteriespeichernummer choice: [1, 2] usages: ["battery"] - - name: capacity - advanced: true - - name: maxacpower + - preset: battery-params - name: maxchargepower default: 10000 - name: maxdischargepower @@ -230,9 +229,5 @@ render: | address: 47512 # EMSPowerSet [0-10000] type: writemultiple encoding: uint16 - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/growatt-hybrid-tlxh.yaml b/templates/definition/meter/growatt-hybrid-tlxh.yaml index 367ba34c5..69ce4b042 100644 --- a/templates/definition/meter/growatt-hybrid-tlxh.yaml +++ b/templates/definition/meter/growatt-hybrid-tlxh.yaml @@ -11,9 +11,8 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -214,5 +213,5 @@ render: | address: 3049 type: writemultiple decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/growatt-hybrid.yaml b/templates/definition/meter/growatt-hybrid.yaml index b53a7fc8e..e6f14ecd8 100644 --- a/templates/definition/meter/growatt-hybrid.yaml +++ b/templates/definition/meter/growatt-hybrid.yaml @@ -23,9 +23,8 @@ params: choice: ["rs485", "tcpip"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -176,5 +175,5 @@ render: | address: 1092 type: writemultiple decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/hager-flow-modbus.yaml b/templates/definition/meter/hager-flow-modbus.yaml index a9ef517c5..886bcb165 100644 --- a/templates/definition/meter/hager-flow-modbus.yaml +++ b/templates/definition/meter/hager-flow-modbus.yaml @@ -23,8 +23,7 @@ params: - name: host - name: port default: 502 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} diff --git a/templates/definition/meter/huawei-emma.yaml b/templates/definition/meter/huawei-emma.yaml index 96f136b9d..c9171d69b 100644 --- a/templates/definition/meter/huawei-emma.yaml +++ b/templates/definition/meter/huawei-emma.yaml @@ -9,8 +9,7 @@ params: allinone: true - name: modbus choice: ["tcpip"] - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -104,5 +103,5 @@ render: | type: holding decode: uint16nan scale: 0.01 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/huawei-smartlogger.yaml b/templates/definition/meter/huawei-smartlogger.yaml index 55da95500..5eedae0b1 100644 --- a/templates/definition/meter/huawei-smartlogger.yaml +++ b/templates/definition/meter/huawei-smartlogger.yaml @@ -14,18 +14,16 @@ params: advanced: true - name: modbus choice: ["tcpip"] - - name: timeout - default: 15s - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params + - name: timeout + deprecated: true render: | type: custom {{- if eq .usage "grid" }} power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} connectdelay: 1s register: address: 32278 # Active power @@ -35,7 +33,6 @@ render: | energy: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 32349 # Negative active electricity type: holding @@ -44,7 +41,6 @@ render: | currents: - source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 32272 # Huawei phase A grid current type: holding @@ -52,7 +48,6 @@ render: | scale: 0.1 - source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 32274 # Huawei phase B grid current type: holding @@ -60,7 +55,6 @@ render: | scale: 0.1 - source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 32276 # Huawei phase C grid current type: holding @@ -91,7 +85,6 @@ render: | power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} connectdelay: 1s register: {{- if eq .storageunit "1" }} @@ -106,7 +99,6 @@ render: | energy: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: {{- if eq .storageunit "1" }} address: 37068 # [Energy storage unit 1] Total discharge @@ -120,7 +112,6 @@ render: | soc: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: {{- if eq .storageunit "1" }} address: 37004 @@ -238,5 +229,5 @@ render: | address: 47087 # Charge from grid type: writesingle encoding: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/huawei-sun2000.yaml b/templates/definition/meter/huawei-sun2000.yaml index a2fb94fcb..d09e98e41 100644 --- a/templates/definition/meter/huawei-sun2000.yaml +++ b/templates/definition/meter/huawei-sun2000.yaml @@ -27,15 +27,6 @@ params: type: int default: 1 advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - - name: maxchargepower - default: 10000 - - name: maxdischargepower - - name: capacity - advanced: true - name: maxacpower - name: forceaccharging default: false @@ -48,6 +39,9 @@ params: help: en: Keep AC charging active to charge the storage from other inverters via AC. Prevents stand-by. de: AC-Laden bleibt aktiv zum Laden des Speichers aus anderen AC Quellen für Wechselrichterkaskaden. Verhindert Stand-by. + - preset: battery-params + - name: maxchargepower + default: 10000 render: | type: custom {{- if eq .usage "grid" }} @@ -281,9 +275,5 @@ render: | address: 47087 # Charge from grid type: writesingle encoding: uint16 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/kostal-piko-hybrid.yaml b/templates/definition/meter/kostal-piko-hybrid.yaml index c9a680896..d69becf9e 100644 --- a/templates/definition/meter/kostal-piko-hybrid.yaml +++ b/templates/definition/meter/kostal-piko-hybrid.yaml @@ -9,8 +9,7 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: host - - name: capacity - advanced: true + - preset: battery-params render: | {{- if eq .usage "grid" }} type: custom @@ -48,5 +47,5 @@ render: | uri: http://{{ .host }}/api/dxs.json?dxsEntries=33556229 # Battery SOC # | ----------------------------- Bat SOC% --------- | jq: (.dxsEntries[] | select(.dxsId==33556229) | .value ) - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/kostal-plenticore-gen2.yaml b/templates/definition/meter/kostal-plenticore-gen2.yaml index 6fd1814ab..875e869cd 100644 --- a/templates/definition/meter/kostal-plenticore-gen2.yaml +++ b/templates/definition/meter/kostal-plenticore-gen2.yaml @@ -38,19 +38,10 @@ params: choice: ["little", "big"] default: little advanced: true - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params - name: maxchargerate deprecated: true - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - - name: maxchargepower - required: true - - name: maxdischargepower - name: watchdog type: duration default: 60s @@ -87,8 +78,6 @@ render: | source: sunspec {{- include "modbus" . | indent 2 }} value: 802:SoC # 802 battery control - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % batterymode: source: watchdog timeout: {{ .watchdog }} # re-write at timeout/2 @@ -129,7 +118,5 @@ render: | address: 1034 # Battery charge power (DC) setpoint, absolute [W] type: writemultiple encoding: {{ if (eq .endianness "big") }}float32{{ else }}float32s{{ end }} - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/kostal-plenticore.yaml b/templates/definition/meter/kostal-plenticore.yaml index a7f51b790..79d935b6d 100644 --- a/templates/definition/meter/kostal-plenticore.yaml +++ b/templates/definition/meter/kostal-plenticore.yaml @@ -34,16 +34,8 @@ params: choice: ["little", "big"] default: little advanced: true - - name: capacity - advanced: true - name: maxacpower - # battery control - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true + - preset: battery-params - name: watchdog type: duration default: 60s @@ -90,7 +82,5 @@ render: | address: 1042 # limit soc type: writemultiple encoding: {{ if (eq .endianness "big") }}float32{{ else }}float32s{{ end }} - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/lg-ess-home-15.yaml b/templates/definition/meter/lg-ess-home-15.yaml index e318ca838..6ab7cbc54 100644 --- a/templates/definition/meter/lg-ess-home-15.yaml +++ b/templates/definition/meter/lg-ess-home-15.yaml @@ -26,15 +26,7 @@ params: help: en: ID of the LG ESS HOME inverter. de: Nummer des LG ESS HOME Wechselrichters. - - name: capacity - advanced: true - # battery control - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true + - preset: battery-params render: | type: lgess15 usage: {{ .usage }} @@ -47,7 +39,5 @@ render: | registration: {{ .registration }} {{- end }} {{- if eq .usage "battery" }} - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} - maxsoc: {{ .maxsoc }} + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/lg-ess-home-8-10.yaml b/templates/definition/meter/lg-ess-home-8-10.yaml index 490f3deb7..2cc663627 100644 --- a/templates/definition/meter/lg-ess-home-8-10.yaml +++ b/templates/definition/meter/lg-ess-home-8-10.yaml @@ -32,15 +32,7 @@ params: help: en: ID of the LG ESS HOME inverter. de: Nummer des LG ESS HOME Wechselrichters. - - name: capacity - advanced: true - # battery control - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true + - preset: battery-params render: | type: lgess8 usage: {{ .usage }} @@ -53,7 +45,5 @@ render: | registration: {{ .registration }} {{- end }} {{- if eq .usage "battery" }} - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} - maxsoc: {{ .maxsoc }} + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/marstek-jupiterc-plus.yaml b/templates/definition/meter/marstek-jupiterc-plus.yaml index c073907ed..01ffdd8ba 100644 --- a/templates/definition/meter/marstek-jupiterc-plus.yaml +++ b/templates/definition/meter/marstek-jupiterc-plus.yaml @@ -10,13 +10,14 @@ params: choice: ["rs485"] baudrate: 115200 comset: 8N1 + - name: maxacpower + default: 800 # W + - preset: battery-params - name: capacity default: 2.56 help: de: Basisgerät 2.56 kWh, jede Erweiterung zzgl. 2.56 kWh en: Base unit 2.56 kWh, each extension plus 2.56 kWh - - name: maxacpower - default: 800 # W render: | type: custom {{- if eq .usage "pv" }} @@ -94,5 +95,5 @@ render: | type: holding decode: uint16 scale: -1 # Substract PV power to calc battery charge - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/marstek-venus.yaml b/templates/definition/meter/marstek-venus.yaml index 93f6d8d66..93cbd166d 100644 --- a/templates/definition/meter/marstek-venus.yaml +++ b/templates/definition/meter/marstek-venus.yaml @@ -11,23 +11,17 @@ params: choice: ["rs485", "tcpip"] baudrate: 115200 comset: 8N1 + - preset: battery-params - name: capacity - default: 5.12 help: de: Venus-E 5.12 kWh, Venus-C 2.56 kWh en: Venus-E 5.12 kWh, Venus-C 2.56 kWh - name: minsoc default: 11 - advanced: true - name: maxsoc default: 100 - advanced: true - name: maxchargepower default: 2500 - advanced: true - help: - en: 2500W is the maximum for Venus. - de: 2500W ist das Maximum für Venus. - name: work_mode_normal default: 1 advanced: true @@ -152,6 +146,4 @@ render: | type: writesingle decode: uint16 # Do not disable RS485 Control Mode because it will reset the device and let it charge/discharge again - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} diff --git a/templates/definition/meter/mtec-eb-gen3.yaml b/templates/definition/meter/mtec-eb-gen3.yaml index 0c820f20a..5010a76df 100644 --- a/templates/definition/meter/mtec-eb-gen3.yaml +++ b/templates/definition/meter/mtec-eb-gen3.yaml @@ -10,8 +10,7 @@ params: - name: modbus choice: ["rs485", "tcpip"] id: 255 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -85,5 +84,5 @@ render: | address: 50000 type: writesingle decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/openems-modbus.yaml b/templates/definition/meter/openems-modbus.yaml index f9b323c53..ead55a0e0 100644 --- a/templates/definition/meter/openems-modbus.yaml +++ b/templates/definition/meter/openems-modbus.yaml @@ -72,6 +72,7 @@ params: generic: ProductionActiveEnergy (Wh) usages: ["pv"] advanced: true + - name: maxacpower - name: battery_power_register type: int default: 415 @@ -120,15 +121,7 @@ params: en: battery control API timeout usages: ["battery"] advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - - name: capacity - advanced: true - - name: maxchargepower - - name: maxdischargepower - - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -226,11 +219,7 @@ render: | {{- else }} source: error error: ErrNotAvailable - {{- end }} + {{- end }} {{- end }} - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/openems.yaml b/templates/definition/meter/openems.yaml index e5a53c98b..3035de440 100644 --- a/templates/definition/meter/openems.yaml +++ b/templates/definition/meter/openems.yaml @@ -34,6 +34,7 @@ params: mask: true default: user advanced: true + - name: maxacpower - name: battery example: ess0 description: @@ -55,13 +56,7 @@ params: en: FEMS/OpenEMS standard 60s usages: ["battery"] advanced: true - - name: minsoc - - name: maxsoc - - name: capacity - advanced: true - - name: maxchargepower - - name: maxdischargepower - - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -168,9 +163,5 @@ render: | error: ErrNotAvailable {{- end }} {{- end }} - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/plexlog.yaml b/templates/definition/meter/plexlog.yaml index a5faee6c6..1801c6e35 100644 --- a/templates/definition/meter/plexlog.yaml +++ b/templates/definition/meter/plexlog.yaml @@ -16,8 +16,7 @@ params: choice: ["tcpip"] id: 1 port: 503 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -75,5 +74,5 @@ render: | type: input decode: uint16 timeout: 30s - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/qcells-hybrid-cloud.yaml b/templates/definition/meter/qcells-hybrid-cloud.yaml index 02d73d746..f8c6d0ca6 100644 --- a/templates/definition/meter/qcells-hybrid-cloud.yaml +++ b/templates/definition/meter/qcells-hybrid-cloud.yaml @@ -40,8 +40,7 @@ params: help: de: Registriernummer von https://qhome-ess-g3.q-cells.eu/blue/#/inverter oder https://qhome-ess-g3.q-cells.us/blue/#/inverter hier eintragen. en: Go to https://qhome-ess-g3.q-cells.eu/blue/#/inverter or https://qhome-ess-g3.q-cells.us/blue/#/inverter and take the value of registration number. - - name: capacity - advanced: true + - preset: battery-params render: | type: custom power: @@ -77,5 +76,5 @@ render: | uri: https://qhome-ess-g3.q-cells.{{ lower .region }}/proxyApp/proxy/api/getRealtimeInfo.do?tokenId={{ urlEncode .tokenid }}&sn={{ urlEncode .serial }} jq: .result.soc # Solax API inverter.DC.battery.energy.SOC cache: 2m30s - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/rct-power.yaml b/templates/definition/meter/rct-power.yaml index 4d294018c..48ee69913 100644 --- a/templates/definition/meter/rct-power.yaml +++ b/templates/definition/meter/rct-power.yaml @@ -11,28 +11,6 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: host - - name: capacity - - name: capacity2 - unit: kWh - description: - de: Akkukapazität der zweiten Batterie - en: Battery capacity of the second battery - example: 50 - type: float - usages: ["battery"] - # battery control - - name: minsoc - type: int - default: 7 - advanced: true - - name: maxsoc - type: int - default: 97 - advanced: true - - name: cache - advanced: true - default: 30s - - name: maxchargepower - name: externalpower type: bool description: @@ -43,14 +21,27 @@ params: en: Query external power of all devices connected to S0 advanced: true usages: ["pv"] + - preset: battery-params + - name: minsoc + default: 7 + - name: maxsoc + default: 97 + - name: capacity2 + unit: kWh + description: + de: Akkukapazität der zweiten Batterie + en: Battery capacity of the second battery + example: 50 + type: float + usages: ["battery"] + - name: cache + advanced: true + default: 30s render: | type: rct uri: {{ .host }} usage: {{ .usage }} cache: {{ .cache }} - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} capacity2: {{ .capacity2 }} # kWh - minsoc: {{ .minsoc }} - maxsoc: {{ .maxsoc }} - maxchargepower: {{ .maxchargepower }} externalpower: {{ .externalpower }} diff --git a/templates/definition/meter/saj-h1.yaml b/templates/definition/meter/saj-h1.yaml index 1dbd027ea..453d1ac51 100644 --- a/templates/definition/meter/saj-h1.yaml +++ b/templates/definition/meter/saj-h1.yaml @@ -8,17 +8,13 @@ params: choice: ["grid", "pv", "battery"] - name: modbus choice: ["tcpip"] - - name: timeout - default: 5s - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40A1 # SmartMeterTotalGridPowerWatt (undocumented) type: holding @@ -26,7 +22,6 @@ render: | energy: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40FD # Total_FeedInEnergy type: holding @@ -37,7 +32,6 @@ render: | power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40A5 # TotalPVPower type: holding @@ -45,7 +39,6 @@ render: | energy: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40C5 # Total PVEnergy type: holding @@ -56,7 +49,6 @@ render: | power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40A6 # TotalBatteryPower type: holding @@ -64,7 +56,6 @@ render: | energy: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x40D5 # Total BatDisEnergy type: holding @@ -73,7 +64,6 @@ render: | soc: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0x406F # BatEnergyPercent type: holding @@ -91,7 +81,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3247 # AppMode type: writeholding @@ -105,7 +94,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3247 # AppMode type: writeholding @@ -119,7 +107,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3247 # AppMode type: writeholding @@ -129,7 +116,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3604 # Charge time enable control type: writeholding @@ -139,7 +125,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3606 # Battery first charging time (start) type: writeholding @@ -149,7 +134,6 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3607 # Battery first charging time (end) type: writeholding @@ -159,10 +143,9 @@ render: | set: source: modbus {{- include "modbus" . | indent 10 }} - timeout: {{ .timeout }} register: address: 0x3608 # Battery first charging time (power) type: writeholding decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/saj-h2.yaml b/templates/definition/meter/saj-h2.yaml index 46b470251..3c59ad7ba 100644 --- a/templates/definition/meter/saj-h2.yaml +++ b/templates/definition/meter/saj-h2.yaml @@ -13,16 +13,11 @@ params: choice: ["rs485", "tcpip"] baudrate: 115200 comset: 8N1 - - name: capacity - advanced: true # battery control - name: defaultmode default: 2 advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -201,5 +196,5 @@ render: | address: 13832 # First_charge_power_time type: writeholding decode: int16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sax.yaml b/templates/definition/meter/sax.yaml index d8be36db4..362eb10cb 100644 --- a/templates/definition/meter/sax.yaml +++ b/templates/definition/meter/sax.yaml @@ -17,8 +17,7 @@ params: choice: ["tcpip"] port: 502 id: 64 - - name: capacity - advanced: true + - preset: battery-params - name: watchdog type: duration default: 240s @@ -89,5 +88,5 @@ render: | address: 43 # 2Bh battery discharging power [W] type: writemultiple encoding: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/senec-home.yaml b/templates/definition/meter/senec-home.yaml index a891867c5..5127f8b5b 100644 --- a/templates/definition/meter/senec-home.yaml +++ b/templates/definition/meter/senec-home.yaml @@ -14,8 +14,7 @@ params: allinone: true - name: host - name: schema - - name: capacity - advanced: true + - preset: battery-params render: | type: custom power: @@ -77,5 +76,5 @@ render: | headers: - content-type: application/json body: '{"ENERGY":{"SAFE_CHARGE_FORCE":"u8_01"}}' # force to charge - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/senergy-hybrid.yaml b/templates/definition/meter/senergy-hybrid.yaml index d60ad27f1..2f8b85e31 100644 --- a/templates/definition/meter/senergy-hybrid.yaml +++ b/templates/definition/meter/senergy-hybrid.yaml @@ -13,8 +13,8 @@ params: choice: ["rs485"] baudrate: 9600 id: 1 - - name: capacity - advanced: true + - name: maxacpower + - preset: battery-params - name: maxchargepower default: 10000 - name: maxdischargepower @@ -23,7 +23,6 @@ params: default: 10 - name: maxsoc default: 100 - - name: maxacpower render: | type: custom {{- if eq .usage "grid" }} @@ -220,9 +219,5 @@ render: | address: 0x214C # Time-based control Enable type: writesingle encoding: uint16 - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sermatec-hybrid.yaml b/templates/definition/meter/sermatec-hybrid.yaml index 305e0783e..af32237cf 100644 --- a/templates/definition/meter/sermatec-hybrid.yaml +++ b/templates/definition/meter/sermatec-hybrid.yaml @@ -13,9 +13,8 @@ params: choice: ["rs485"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -71,5 +70,5 @@ render: | address: 0x3003 # Battery SOC type: holding decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/siemens-junelight.yaml b/templates/definition/meter/siemens-junelight.yaml index 5a7448c76..3688ff307 100644 --- a/templates/definition/meter/siemens-junelight.yaml +++ b/templates/definition/meter/siemens-junelight.yaml @@ -13,10 +13,9 @@ params: - name: usage choice: ["grid", "pv", "battery"] allinone: true - - name: capacity - advanced: true - name: modbus choice: ["tcpip"] + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -54,5 +53,5 @@ render: | address: 8 # "battery soc" type: holding decode: int32 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sigenergy.yaml b/templates/definition/meter/sigenergy.yaml index 0ba7dce13..6ae4555a0 100644 --- a/templates/definition/meter/sigenergy.yaml +++ b/templates/definition/meter/sigenergy.yaml @@ -17,14 +17,7 @@ params: default: 502 - name: id default: 1 - - name: capacity - advanced: true - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -121,7 +114,5 @@ render: | type: writeholding decode: uint16 scale: 10 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sma-datamanager.yaml b/templates/definition/meter/sma-datamanager.yaml index ddbfd6be5..53217f58b 100644 --- a/templates/definition/meter/sma-datamanager.yaml +++ b/templates/definition/meter/sma-datamanager.yaml @@ -15,8 +15,7 @@ params: - name: modbus choice: ["tcpip"] id: 2 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "pv" }} @@ -100,5 +99,5 @@ render: | address: 30845 # Battery Soc, % type: holding decode: uint32nan - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sma-hybrid.yaml b/templates/definition/meter/sma-hybrid.yaml index e3c51a0ba..3d64b3a43 100644 --- a/templates/definition/meter/sma-hybrid.yaml +++ b/templates/definition/meter/sma-hybrid.yaml @@ -20,9 +20,8 @@ params: help: en: ModbusTCP server needs to be enabled. de: Der ModbusTCP Server muss aktiviert sein. - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params - name: maxchargepower default: 4200 - name: watchdog @@ -376,5 +375,5 @@ render: | address: 40801 # CmpBMS.GridWSpt - Sollwert der Netzaustauschleistung type: writemultiple decode: uint32 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sma-inverter-speedwire.yaml b/templates/definition/meter/sma-inverter-speedwire.yaml index a23a0e58a..bdcfa8fb9 100644 --- a/templates/definition/meter/sma-inverter-speedwire.yaml +++ b/templates/definition/meter/sma-inverter-speedwire.yaml @@ -16,8 +16,7 @@ params: help: en: Password for user group Standard de: Passwort für Benutzergruppe Benutzer - - name: capacity - advanced: true + - preset: battery-params render: | type: sma uri: {{ .host }} # IP address or hostname diff --git a/templates/definition/meter/sofarsolar-g3.yaml b/templates/definition/meter/sofarsolar-g3.yaml index 8ed364864..8cc6d4161 100644 --- a/templates/definition/meter/sofarsolar-g3.yaml +++ b/templates/definition/meter/sofarsolar-g3.yaml @@ -33,8 +33,6 @@ params: type: int default: 1 advanced: true - - name: capacity - advanced: true - name: maxacpower - name: defaultmode help: @@ -43,14 +41,6 @@ params: default: 0 # self use advanced: true # battery control - - name: minsoc - type: int - advanced: true - deprecated: true - - name: maxsoc - type: int - advanced: true - deprecated: true - name: externalpower type: bool description: @@ -61,6 +51,7 @@ params: en: Includes all connected external sources, like the power generation of cascaded inverters, into the PV power calculation. advanced: true usages: ["pv"] + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -303,5 +294,5 @@ render: | address: 0x1187 type: writemultiple decode: bytes - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sofarsolar.yaml b/templates/definition/meter/sofarsolar.yaml index c9aba2b8b..c247be693 100644 --- a/templates/definition/meter/sofarsolar.yaml +++ b/templates/definition/meter/sofarsolar.yaml @@ -21,8 +21,7 @@ params: comset: 8N1 port: 502 id: 1 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -97,5 +96,5 @@ render: | address: 0x0210 # The residual capacity of battery type: holding decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solaredge-hybrid.yaml b/templates/definition/meter/solaredge-hybrid.yaml index f6a94628e..0ea5d1bbe 100644 --- a/templates/definition/meter/solaredge-hybrid.yaml +++ b/templates/definition/meter/solaredge-hybrid.yaml @@ -20,17 +20,10 @@ params: choice: ["tcpip", "rs485"] id: 1 port: 1502 - - name: timeout - - name: capacity - advanced: true - name: maxacpower - - name: maxchargepower + - preset: battery-params - name: maxdischargepower default: 5000 - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - name: watchdog type: duration default: 60s @@ -41,65 +34,54 @@ render: | power: source: sunspec {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:W scale: -1 energy: source: sunspec {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:TotWhImp scale: 0.001 currents: - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:AphA - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:AphB - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:AphC voltages: - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:PhVphA - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:PhVphB - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:PhVphC powers: - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:WphA scale: -1 - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:WphB scale: -1 - source: sunspec {{- include "modbus" . | indent 4 }} - timeout: {{ .timeout }} subdevice: 1 # Metering device value: 203:WphC scale: -1 @@ -110,13 +92,11 @@ render: | add: - source: sunspec {{- include "modbus" . | indent 6 }} - timeout: {{ .timeout }} value: - 101:DCW - 103:DCW - source: modbus {{- include "modbus" . | indent 6 }} - timeout: {{ .timeout }} register: address: 62836 # Battery 1 Instantaneous Power type: holding @@ -124,7 +104,6 @@ render: | energy: source: sunspec {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} value: - 101:WH - 103:WH @@ -135,7 +114,6 @@ render: | power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0xE174 # Battery 1 Instantaneous Power type: holding @@ -144,13 +122,10 @@ render: | soc: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 0xE184 # Battery 1 State of Energy (SOE) type: holding decode: float32nans - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % batterymode: source: watchdog timeout: {{ .watchdog }} @@ -224,7 +199,5 @@ render: | address: 0xE010 # StorageRemoteCtrl_DischargeLimit type: writemultiple encoding: float32s - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solarmax-maxstorage.yaml b/templates/definition/meter/solarmax-maxstorage.yaml index 2800252ee..147b4893e 100644 --- a/templates/definition/meter/solarmax-maxstorage.yaml +++ b/templates/definition/meter/solarmax-maxstorage.yaml @@ -15,9 +15,8 @@ params: - name: modbus choice: ["tcpip"] id: 1 - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params # battery control - name: watchdog type: duration @@ -140,5 +139,5 @@ render: | set: source: error error: ErrNotAvailable - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solarwatt-flex.yaml b/templates/definition/meter/solarwatt-flex.yaml index 3be70f0a9..6c1fd2063 100644 --- a/templates/definition/meter/solarwatt-flex.yaml +++ b/templates/definition/meter/solarwatt-flex.yaml @@ -15,8 +15,7 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: host - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -76,5 +75,5 @@ render: | jq: > def parseSecondNumber: sub("[^|]*\\|(?[.\\d]*).*"; "\(.number)") | tonumber; (.[] | select(.name | test("^kiwigrid_location_standard_.*_harmonized_work_released_total$")).state | parseSecondNumber / 1000) // 0 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solarwatt-myreserve-matrix.yaml b/templates/definition/meter/solarwatt-myreserve-matrix.yaml index 2235a54d7..bf90318a7 100644 --- a/templates/definition/meter/solarwatt-myreserve-matrix.yaml +++ b/templates/definition/meter/solarwatt-myreserve-matrix.yaml @@ -10,8 +10,7 @@ params: - name: host - name: port default: 8080 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom power: @@ -29,5 +28,5 @@ render: | source: http uri: http://{{ .host }}:{{ .port }}/ jq: .SData.SoC - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solarwatt.yaml b/templates/definition/meter/solarwatt.yaml index c3db9b7c5..0d40a092f 100644 --- a/templates/definition/meter/solarwatt.yaml +++ b/templates/definition/meter/solarwatt.yaml @@ -15,8 +15,7 @@ params: choice: ["grid", "pv", "battery"] allinone: true - name: host - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -52,5 +51,5 @@ render: | source: http uri: http://{{ .host }}/rest/kiwigrid/wizard/devices # EnergyManager jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | (.tagValues.WorkReleased.value // 0) / 1000 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solax-hybrid-cloud.yaml b/templates/definition/meter/solax-hybrid-cloud.yaml index 9a92ddbba..ecd65c1e8 100644 --- a/templates/definition/meter/solax-hybrid-cloud.yaml +++ b/templates/definition/meter/solax-hybrid-cloud.yaml @@ -33,8 +33,7 @@ params: help: de: https://www.solaxcloud.com/ -> Gerät -> Wechselrichter (neue Website) oder Support (alte Website), Wert von Registrierungsnummer hier eintragen en: https://www.solaxcloud.com/ -> Device -> Inverter (new site) or Support (old site), use the registration number - - name: capacity - advanced: true + - preset: battery-params render: | type: custom power: @@ -70,5 +69,5 @@ render: | uri: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId={{ unquote .tokenid }}&sn={{ unquote .serial }} jq: .result.soc # Solax API inverter.DC.battery.energy.SOC cache: 2m30s - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solax.yaml b/templates/definition/meter/solax.yaml index 230ba252f..3158407e3 100644 --- a/templates/definition/meter/solax.yaml +++ b/templates/definition/meter/solax.yaml @@ -28,18 +28,11 @@ params: type: int default: 1 advanced: true - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params - name: defaultmode default: 0 # "SelfUse" advanced: true - - name: maxchargepower - - name: maxdischargepower - - name: minsoc - advanced: true - - name: maxsoc - advanced: true render: | type: custom {{- if eq .usage "grid" }} @@ -125,8 +118,6 @@ render: | # type: input # decode: uint32s # scale: 0.1 - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % batterymode: source: switch switch: @@ -185,7 +176,5 @@ render: | address: 0x001F # SolarChargeUseMode type: writesingle decode: uint16 - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solis-hybrid-s.yaml b/templates/definition/meter/solis-hybrid-s.yaml index 468162173..db89d3bae 100644 --- a/templates/definition/meter/solis-hybrid-s.yaml +++ b/templates/definition/meter/solis-hybrid-s.yaml @@ -28,13 +28,8 @@ params: choice: ["rs485"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - name: maxacpower - - name: minsoc - advanced: true - - name: maxsoc - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -158,7 +153,5 @@ render: | address: 43024 # Battery Reserve Mode SOC type: writeholding encoding: uint16 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/solis-hybrid.yaml b/templates/definition/meter/solis-hybrid.yaml index 237230f43..c3e666cd9 100644 --- a/templates/definition/meter/solis-hybrid.yaml +++ b/templates/definition/meter/solis-hybrid.yaml @@ -11,9 +11,8 @@ params: choice: ["rs485"] baudrate: 9600 id: 1 - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -118,5 +117,5 @@ render: | address: 33139 # Battery capacity SOC type: input decode: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sonnenbatterie.yaml b/templates/definition/meter/sonnenbatterie.yaml index 4fd5d9a78..7ae4031a7 100644 --- a/templates/definition/meter/sonnenbatterie.yaml +++ b/templates/definition/meter/sonnenbatterie.yaml @@ -22,15 +22,9 @@ params: - name: host - name: port default: 8080 - - name: capacity - advanced: true + - preset: battery-params - name: maxchargepower default: 3300 - - name: maxdischargepower - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - name: token help: de: API Token (benötigt für aktive Batteriesteuerung) @@ -63,8 +57,6 @@ render: | source: http uri: http://{{ .host }}:{{ .port }}/api/v1/status jq: .USOC - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % {{- if .token }} batterymode: source: switch @@ -136,7 +128,5 @@ render: | - content-type: application/json - Auth-Token: {{ .token }} {{- end }} - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sonnenbatterie_eco56.yaml b/templates/definition/meter/sonnenbatterie_eco56.yaml index fa4d7b85a..a3829cbfb 100644 --- a/templates/definition/meter/sonnenbatterie_eco56.yaml +++ b/templates/definition/meter/sonnenbatterie_eco56.yaml @@ -18,10 +18,7 @@ params: - name: host - name: port default: 7979 - - name: capacity - advanced: true - - name: maxchargepower - advanced: true + - preset: battery-params - name: cache advanced: true default: 5s @@ -119,5 +116,5 @@ render: | method: PUT uri: http://{{ .host }}:{{ .port }}/rest/devices/battery/C24 body: {{ if .maxchargepower }}{{ .maxchargepower }}{{ else }}99000{{ end }} - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/storaxe.yaml b/templates/definition/meter/storaxe.yaml index f70460967..1406431a7 100644 --- a/templates/definition/meter/storaxe.yaml +++ b/templates/definition/meter/storaxe.yaml @@ -9,8 +9,7 @@ params: - name: modbus choice: ["tcpip"] id: 2 - - name: capacity - advanced: true + - preset: battery-params render: | type: custom power: @@ -79,4 +78,4 @@ render: | address: 126 # SXSSOC type: input decode: int16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} diff --git a/templates/definition/meter/sungrow-hybrid.yaml b/templates/definition/meter/sungrow-hybrid.yaml index 02d8ec622..08a8798d4 100644 --- a/templates/definition/meter/sungrow-hybrid.yaml +++ b/templates/definition/meter/sungrow-hybrid.yaml @@ -16,27 +16,19 @@ params: - name: modbus choice: ["rs485", "tcpip"] baudrate: 9600 - - name: timeout - - name: capacity - name: maxacpower - - name: minsoc - advanced: true - - name: maxsoc - advanced: true + - preset: battery-params - name: maxchargepower default: 5000 - advanced: true required: true - name: maxdischargepower default: 5000 - advanced: true render: | type: custom {{- if eq .usage "grid" }} power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: type: input address: 13009 # Export power @@ -101,7 +93,6 @@ render: | power: source: modbus {{- include "modbus" . | indent 2 }} - timeout: {{ .timeout }} register: address: 5016 # Total DC power type: input @@ -280,9 +271,5 @@ render: | address: 13051 # Battery max forced (dis)charge power type: writesingle decode: uint16 - capacity: {{ .capacity }} # kWh - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sungrow-ihm.yaml b/templates/definition/meter/sungrow-ihm.yaml index 923a84151..06cb6d664 100644 --- a/templates/definition/meter/sungrow-ihm.yaml +++ b/templates/definition/meter/sungrow-ihm.yaml @@ -12,8 +12,7 @@ params: comset: "8N1" id: 247 port: 502 - - name: capacity - advanced: true + - preset: battery-params render: | {{- if eq .usage "grid" }} type: custom @@ -107,5 +106,5 @@ render: | type: input decode: uint16 scale: 0.1 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sunspec-battery-control.yaml b/templates/definition/meter/sunspec-battery-control.yaml index cca25111d..de836ad81 100644 --- a/templates/definition/meter/sunspec-battery-control.yaml +++ b/templates/definition/meter/sunspec-battery-control.yaml @@ -10,15 +10,7 @@ params: choice: ["battery"] - name: modbus choice: ["tcpip", "rs485"] - - name: capacity - advanced: true - # battery control (model 802) - - name: minsoc - type: int - advanced: true - - name: maxsoc - type: int - advanced: true + - preset: battery-params render: | {{- if eq .usage "battery" }} type: custom @@ -34,7 +26,5 @@ render: | source: sunspec {{- include "modbus" . | indent 2 }} value: 802:SoCRsvMin - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sunspec-hybrid.yaml b/templates/definition/meter/sunspec-hybrid.yaml index ab133be04..dd61ab64f 100644 --- a/templates/definition/meter/sunspec-hybrid.yaml +++ b/templates/definition/meter/sunspec-hybrid.yaml @@ -11,9 +11,8 @@ params: allinone: true - name: modbus choice: ["tcpip", "rs485"] - - name: capacity - advanced: true - name: maxacpower + - preset: battery-params render: | type: custom # sunspec model 203 (int+sf)/ 213 (float) meter @@ -125,5 +124,5 @@ render: | value: - 124:ChaState - 802:SoC - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sunspec-inverter-control.yaml b/templates/definition/meter/sunspec-inverter-control.yaml index 09668d612..a7d4f8717 100644 --- a/templates/definition/meter/sunspec-inverter-control.yaml +++ b/templates/definition/meter/sunspec-inverter-control.yaml @@ -12,8 +12,7 @@ params: choice: ["tcpip", "rs485"] - name: maxchargerate advanced: true - - name: capacity - advanced: true + - preset: battery-params render: | {{- if eq .usage "battery" }} type: custom @@ -105,5 +104,5 @@ render: | source: sunspec {{- include "modbus" . | indent 10 }} value: 124:0:InOutWRte_RvrtTms - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/sunspec-inverter.yaml b/templates/definition/meter/sunspec-inverter.yaml index 7e7cb12da..1f0bed786 100644 --- a/templates/definition/meter/sunspec-inverter.yaml +++ b/templates/definition/meter/sunspec-inverter.yaml @@ -9,8 +9,7 @@ params: choice: ["grid", "pv", "battery"] - name: modbus choice: ["tcpip", "rs485"] - - name: capacity - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -161,5 +160,5 @@ render: | value: - 124:ChaState - 802:SoC - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/varta.yaml b/templates/definition/meter/varta.yaml index 8e4c2a446..9f9ec44ad 100644 --- a/templates/definition/meter/varta.yaml +++ b/templates/definition/meter/varta.yaml @@ -24,15 +24,14 @@ params: - name: host - name: port default: 502 + - preset: battery-params + - name: maxdischargepower + default: 4000 - name: watchdog type: duration default: 120s usages: ["battery"] advanced: true - - name: maxdischargepower - default: 4000 - - name: capacity - advanced: true render: | type: custom power: @@ -107,5 +106,5 @@ render: | set: source: error error: ErrNotAvailable - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/victron-energy.yaml b/templates/definition/meter/victron-energy.yaml index 62b9eddac..93e1b99aa 100644 --- a/templates/definition/meter/victron-energy.yaml +++ b/templates/definition/meter/victron-energy.yaml @@ -15,8 +15,6 @@ params: - name: host - name: port default: 502 - - name: capacity - advanced: true - name: maxacpower - name: meterid # grid meter VRM instance description: @@ -27,13 +25,7 @@ params: help: de: "Kann im VRM Portal oder im RemoteUI ausgelesen werden." en: "Can be read out in VRM portal or via remoteUI." - # battery control - - name: minsoc - advanced: true - - name: maxsoc - advanced: true - - name: maxchargepower - - name: maxdischargepower + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -174,9 +166,5 @@ render: | type: writesingle decode: uint16 scale: 10 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % - maxchargepower: {{ .maxchargepower }} # W - maxdischargepower: {{ .maxdischargepower }} # W + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/wattsonic-gen3.yaml b/templates/definition/meter/wattsonic-gen3.yaml index 38bca7d72..9f6efb052 100644 --- a/templates/definition/meter/wattsonic-gen3.yaml +++ b/templates/definition/meter/wattsonic-gen3.yaml @@ -12,12 +12,7 @@ params: choice: ["rs485"] port: 502 id: 255 - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true + - preset: battery-params render: | type: custom {{- if eq .usage "grid" }} @@ -107,7 +102,5 @@ render: | type: writeholding encoding: uint16 scale: 10 - capacity: {{ .capacity }} # kWh - minsoc: {{ .minsoc }} # % - maxsoc: {{ .maxsoc }} # % + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/wattsonic.yaml b/templates/definition/meter/wattsonic.yaml index dd393e5f6..9907a5a8d 100644 --- a/templates/definition/meter/wattsonic.yaml +++ b/templates/definition/meter/wattsonic.yaml @@ -14,12 +14,7 @@ params: choice: ["rs485"] port: 502 id: 247 - - name: capacity - advanced: true - - name: minsoc - advanced: true - - name: maxsoc - advanced: true + - preset: battery-params - name: delay default: 100ms advanced: true @@ -121,5 +116,5 @@ render: | address: 52503 # min soc type: writeholding encoding: uint16 - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/templates/definition/meter/zendure-solarflow-ac.yaml b/templates/definition/meter/zendure-solarflow-ac.yaml index f85266f72..e77289504 100644 --- a/templates/definition/meter/zendure-solarflow-ac.yaml +++ b/templates/definition/meter/zendure-solarflow-ac.yaml @@ -9,8 +9,7 @@ params: choice: ["battery"] - name: host required: true - - name: capacity - required: true + - preset: battery-params - name: cache advanced: true default: 1s @@ -26,4 +25,4 @@ render: | uri: http://{{ .host }}/properties/report jq: .properties.electricLevel cache: {{ .cache }} - capacity: {{ .capacity }} + {{- include "battery-params" . }} diff --git a/templates/definition/meter/zendure-solarflow-pro.yaml b/templates/definition/meter/zendure-solarflow-pro.yaml index 0c4e123db..ea63cf0c0 100644 --- a/templates/definition/meter/zendure-solarflow-pro.yaml +++ b/templates/definition/meter/zendure-solarflow-pro.yaml @@ -11,6 +11,7 @@ params: default: 1.92 # kWh - name: maxacpower default: 800 # W + - preset: battery-params - name: cache advanced: true default: 1s @@ -42,5 +43,5 @@ render: | uri: http://{{ .host }}/properties/report jq: .properties.electricLevel cache: {{ .cache }} - capacity: {{ .capacity }} # kWh + {{- include "battery-params" . }} {{- end }} diff --git a/util/templates/defaults.yaml b/util/templates/defaults.yaml index ecb56ee98..c67cafbf8 100644 --- a/util/templates/defaults.yaml +++ b/util/templates/defaults.yaml @@ -701,6 +701,13 @@ presets: de: Akzeptiere keine Daten die älter sind als dieser Wert en: Don't accept values older than this value + battery-params: + - name: capacity + - name: minsoc + - name: maxsoc + - name: maxchargepower + - name: maxdischargepower + modbus: interfaces: rs485: ["rs485serial", "rs485tcpip"] diff --git a/util/templates/includes/battery-params.tpl b/util/templates/includes/battery-params.tpl new file mode 100644 index 000000000..a7747d1e6 --- /dev/null +++ b/util/templates/includes/battery-params.tpl @@ -0,0 +1,7 @@ +{{ define "battery-params" }} +capacity: {{ .capacity }} # kWh +minsoc: {{ .minsoc }} # % +maxsoc: {{ .maxsoc }} # % +maxchargepower: {{ .maxchargepower }} # W +maxdischargepower: {{ .maxdischargepower }} # W +{{- end }} From 87346351d8c5efa51422cea9b81f2357390dcf02 Mon Sep 17 00:00:00 2001 From: Ingo <71161062+iseeberg79@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:09:20 +0100 Subject: [PATCH 0018/1912] chore: speedup planner (#26385) --- core/planner/helper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/planner/helper.go b/core/planner/helper.go index 2f1840c93..de5a9238a 100644 --- a/core/planner/helper.go +++ b/core/planner/helper.go @@ -103,7 +103,7 @@ func clampRatesSeq(rates api.Rates, start, end time.Time) iter.Seq[api.Rate] { // slot after continuous plan if !r.Start.Before(end) { - continue + return } // calculate adjusted bounds From 3f632d9096aa84ba3b1749b83bd9849a2bc8b0df Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:47:55 +0100 Subject: [PATCH 0019/1912] RCT: improve battery control (#26358) --- meter/rct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meter/rct.go b/meter/rct.go index 88bbd69a8..f92336451 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -140,7 +140,7 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL } // check for normal operating mode - if batStatus != 0 && batStatus != 1032 { + if batStatus != 0 && batStatus != 1032 && batStatus != 2048 { return fmt.Errorf("invalid battery operating mode: %d", batStatus) } } From 0c46b45fd4ad0307e820c9b5d9744b81689ea097 Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 3 Jan 2026 13:28:06 +0100 Subject: [PATCH 0020/1912] chore: support decorating multi-function interfaces (#26323) --- cmd/decorate/decorate.go | 120 +++++++++++++++++++++++++++++--------- cmd/decorate/decorate.tpl | 26 ++++++--- 2 files changed, 109 insertions(+), 37 deletions(-) diff --git a/cmd/decorate/decorate.go b/cmd/decorate/decorate.go index b0a39bda4..6af6da5ad 100644 --- a/cmd/decorate/decorate.go +++ b/cmd/decorate/decorate.go @@ -10,6 +10,7 @@ import ( "os" "reflect" "slices" + "strconv" "strings" "text/template" @@ -21,7 +22,6 @@ import ( "golang.org/x/tools/imports" ) -// go:generate go tool decorate -f decorateTest -b api.Charger -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" //go:generate go tool decorate //evcc:function decorateTest //evcc:basetype api.Charger @@ -35,13 +35,23 @@ var srcTmpl string //go:embed header.tpl var header string +type function struct { + function, signature string +} + type dynamicType struct { - typ, function, signature string + typ string + functions []function +} + +type funcStruct struct { + Signature, Function, VarName, ReturnTypes string + Params []string } type typeStruct struct { - Type, ShortType, Signature, Function, VarName, ReturnTypes string - Params []string + Type, ShortType string + Functions []funcStruct } var a struct { @@ -95,11 +105,13 @@ func generate(out io.Writer, functionName, baseType string, dynamicTypes ...dyna tmpl, err := template.New("gen").Funcs(sprig.FuncMap()).Funcs(template.FuncMap{ // contains checks if slice contains string "contains": slices.Contains[[]string, string], - // ordered returns a slice of typeStructs ordered by dynamicType - "ordered": func() []typeStruct { - ordered := make([]typeStruct, 0) - for _, k := range dynamicTypes { - ordered = append(ordered, types[k.typ]) + // ordered returns a slice of funcStruct ordered by dynamicType + "ordered": func() []funcStruct { + ordered := make([]funcStruct, 0) + for _, dt := range dynamicTypes { + for _, fs := range types[dt.typ].Functions { + ordered = append(ordered, fs) + } } return ordered @@ -128,23 +140,40 @@ func generate(out io.Writer, functionName, baseType string, dynamicTypes ...dyna parts := strings.SplitN(dt.typ, ".", 2) lastPart := parts[len(parts)-1] - openingBrace := strings.Index(dt.signature, "(") - closingBrace := strings.Index(dt.signature, ")") - paramsStr := dt.signature[openingBrace+1 : closingBrace] + var funcs []funcStruct - var params []string - if paramsStr = strings.TrimSpace(paramsStr); len(paramsStr) > 0 { - params = strings.Split(paramsStr, ",") + for i, fun := range dt.functions { + function := fun.function + signature := fun.signature + + openingBrace := strings.Index(signature, "(") + closingBrace := strings.Index(signature, ")") + paramsStr := signature[openingBrace+1 : closingBrace] + returns := signature[closingBrace+1:] + + var params []string + if paramsStr = strings.TrimSpace(paramsStr); len(paramsStr) > 0 { + params = strings.Split(paramsStr, ",") + } + + varName := strings.ToLower(lastPart[:1]) + lastPart[1:] + if len(dt.functions) > 1 { + varName += strconv.Itoa(i) + } + + funcs = append(funcs, funcStruct{ + VarName: varName, + Signature: signature, + Function: function, + Params: params, + ReturnTypes: returns, + }) } types[dt.typ] = typeStruct{ - Type: dt.typ, - ShortType: lastPart, - VarName: strings.ToLower(lastPart[:1]) + lastPart[1:], - Signature: dt.signature, - Function: dt.function, - Params: params, - ReturnTypes: dt.signature[closingBrace+1:], + Type: dt.typ, + ShortType: lastPart, + Functions: funcs, } combos = append(combos, dt.typ) @@ -214,7 +243,7 @@ type decorationSet struct { var ( target = pflag.StringP("out", "o", "", "output file") pkg = pflag.StringP("package", "p", "", "package name") - function = pflag.StringP("function", "f", "", "function name") + funcname = pflag.StringP("function", "f", "", "function name") base = pflag.StringP("base", "b", "", "base type") ret = pflag.StringP("return", "r", "", "return type") types = pflag.StringArrayP("type", "t", nil, "comma-separated list of type definitions") @@ -276,6 +305,41 @@ func parseFile(file string) ([]decorationSet, error) { return res, scanner.Err() } +func splitTopLevel(s string) []string { + var res []string + brackets := 0 + start := 0 + + for i, r := range s { + switch r { + case '(': + brackets++ + case ')': + brackets-- + case ',': + if brackets == 0 { + res = append(res, strings.TrimSpace(s[start:i])) + start = i + 1 + } + } + } + res = append(res, strings.TrimSpace(s[start:])) + return res +} + +func parseFunctions(iface string) []function { + parts := splitTopLevel(iface) + + var res []function + for i := 0; i+1 < len(parts); i += 2 { + res = append(res, function{ + function: parts[i], + signature: parts[i+1], + }) + } + return res +} + func main() { pflag.Usage = Usage pflag.Parse() @@ -292,9 +356,9 @@ func main() { pkg = &gopkg } - sets := []decorationSet{{*function, *base, *ret, *types}} + sets := []decorationSet{{*funcname, *base, *ret, *types}} - if *function == "" { + if *funcname == "" { all, err := parseFile(gofile) if err != nil { fmt.Println(err) @@ -332,10 +396,10 @@ func main() { 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) + split := strings.SplitN(v, ",", 2) // iface,... + dynamicTypes = append(dynamicTypes, dynamicType{split[0], parseFunctions(split[1])}) } var buf bytes.Buffer diff --git a/cmd/decorate/decorate.tpl b/cmd/decorate/decorate.tpl index b4d1aecdb..87271417e 100644 --- a/cmd/decorate/decorate.tpl +++ b/cmd/decorate/decorate.tpl @@ -5,7 +5,9 @@ {{- range $typ, $def := .Types}} {{- if requiredType $combo $typ}} - {{- if $and}} &&{{else}}{{$and = true}}{{end}} {{$def.VarName}} {{if contains $combo $typ}}!={{else}}=={{end}} nil + {{- range $def.Functions}} + {{- if $and}} &&{{else}}{{$and = true}}{{end}} {{.VarName}} {{if contains $combo $typ}}!={{else}}=={{end}} nil + {{- end}} {{- end}} {{- end}}: return &struct { @@ -20,7 +22,9 @@ {{- range $typ, $def := .Types}} {{- if contains $combo $typ}} {{$def.ShortType}}: &{{$prefix}}{{$def.ShortType}}Impl{ - {{$def.VarName}}: {{$def.VarName}}, + {{- range $def.Functions}} + {{.VarName}}: {{.VarName}}, + {{- end}} }, {{- end}} {{- end}} @@ -36,7 +40,9 @@ func {{.Function}}(base {{.BaseType}}{{range ordered}}, {{.VarName}} {{.Signatur switch { case {{- range $typ, $def := .Types}} {{- if requiredType empty $typ}} - {{- if $and}} &&{{else}}{{$and = true}}{{end}} {{$def.VarName}} == nil + {{- range $def.Functions}} + {{- if $and}} &&{{else}}{{$and = true}}{{end}} {{.VarName}} == nil + {{- end}} {{- end}} {{- end}}: return base @@ -47,12 +53,14 @@ func {{.Function}}(base {{.BaseType}}{{range ordered}}, {{.VarName}} {{.Signatur return nil } -{{range .Types -}} -type {{$prefix}}{{.ShortType}}Impl struct { +{{range $element := .Types -}} +type {{$prefix}}{{$element.ShortType}}Impl struct { + {{- range .Functions}} {{.VarName}} {{.Signature}} + {{- end}} } - -func (impl *{{$prefix}}{{.ShortType}}Impl) {{.Function}}( +{{range $element.Functions}} +func (impl *{{$prefix}}{{$element.ShortType}}Impl) {{.Function}}( {{- range $idx, $param := .Params -}} {{- if gt $idx 0}}, {{end -}} p{{$idx}} {{ $param -}} @@ -60,6 +68,6 @@ func (impl *{{$prefix}}{{.ShortType}}Impl) {{.Function}}( return impl.{{.VarName}}( {{- range $idx, $param := .Params -}} {{- if gt $idx 0}}, {{end}}p{{- $idx -}}{{end}}) - } - +} +{{end}} {{end}} From 0d609afa14645696038ed245d3ad06f5806d9eef Mon Sep 17 00:00:00 2001 From: lehmanju Date: Sat, 3 Jan 2026 13:31:38 +0100 Subject: [PATCH 0021/1912] chore: disable moby in devcontainer (#26335) --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bb8875353..0f5ab73d8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ "image": "mcr.microsoft.com/devcontainers/go", "features": { "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { - "moby": true, + "moby": false, "installDockerBuildx": true, "installDockerComposeSwitch": true, "version": "latest", From 2d78403581d57a031ba6316f29d55f4c4bf1779a Mon Sep 17 00:00:00 2001 From: Andreas Linde <42185+DerAndereAndi@users.noreply.github.com> Date: Sat, 3 Jan 2026 18:02:00 +0100 Subject: [PATCH 0022/1912] EEBUS: properly setup entities (#26401) --- server/eebus/eebus.go | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/server/eebus/eebus.go b/server/eebus/eebus.go index 7d8382915..b54c0e6c8 100644 --- a/server/eebus/eebus.go +++ b/server/eebus/eebus.go @@ -31,6 +31,7 @@ import ( shiputil "github.com/enbility/ship-go/util" spineapi "github.com/enbility/spine-go/api" "github.com/enbility/spine-go/model" + "github.com/enbility/spine-go/spine" "github.com/evcc-io/evcc/util" "github.com/evcc-io/evcc/util/machine" ) @@ -123,7 +124,7 @@ func NewServer(other Config) (*EEBus, error) { configuration, err := eebusapi.NewConfiguration( BrandName, BrandName, Model, serial, model.DeviceTypeTypeEnergyManagementSystem, - []model.EntityTypeType{model.EntityTypeTypeCEM, model.EntityTypeTypeControllableSystem, model.EntityTypeTypeGridGuard}, + []model.EntityTypeType{model.EntityTypeTypeCEM}, port, certificate, time.Second*4, ) if err != nil { @@ -155,10 +156,13 @@ func NewServer(other Config) (*EEBus, error) { return nil, err } - { - localEntity := c.service.LocalDevice().EntityForType(model.EntityTypeTypeCEM) + localDevice := c.service.LocalDevice() - // evse + { + // CEM entity for for connected EVSE and Meters + localEntity := localDevice.Entity([]model.AddressEntityType{1}) + + // customer energy management to EVSE c.cem = CustomerEnergyManagement{ EvseCC: evsecc.NewEVSECC(localEntity, c.ucCallback), EvCC: evcc.NewEVCC(c.service, localEntity, c.ucCallback), @@ -167,10 +171,19 @@ func NewServer(other Config) (*EEBus, error) { OscEV: oscev.NewOSCEV(localEntity, c.ucCallback), EvSoc: evsoc.NewEVSOC(localEntity, c.ucCallback), } + + // monitoring appliance to meters + c.ma = MonitoringAppliance{ + MaMGCPInterface: mgcp.NewMGCP(localEntity, c.ucCallback), + MaMPCInterface: mpc.NewMPC(localEntity, c.ucCallback), + } } { - localEntity := c.service.LocalDevice().EntityForType(model.EntityTypeTypeControllableSystem) + // CEM entity for connected SMGW + // LPC/LPP use a 60s heartbeat timeout, but some EVSE devices have then issues when not set to 4s right now even though they should not connect to this one anyway + localEntity := spine.NewEntityLocal(localDevice, model.EntityTypeTypeCEM, []model.AddressEntityType{2}, time.Second*4) + localDevice.AddEntity(localEntity) // controllable system c.cs = ControllableSystem{ @@ -180,13 +193,10 @@ func NewServer(other Config) (*EEBus, error) { } { - localEntity := c.service.LocalDevice().EntityForType(model.EntityTypeTypeGridGuard) - - // monitoring appliance - c.ma = MonitoringAppliance{ - MaMGCPInterface: mgcp.NewMGCP(localEntity, c.ucCallback), - MaMPCInterface: mpc.NewMPC(localEntity, c.ucCallback), - } + // GridGuard entity for connected Controllable Systems + // LPC/LPP use a 60s heartbeat timeout, but some EVSE devices have then issues when not set to 4s right now + localEntity := spine.NewEntityLocal(localDevice, model.EntityTypeTypeGridGuard, []model.AddressEntityType{3}, time.Second*4) + localDevice.AddEntity(localEntity) // energy guard c.eg = EnergyGuard{ From 43321ac0958ba966288a9644d74223f4175977db Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Sat, 3 Jan 2026 18:19:29 +0100 Subject: [PATCH 0023/1912] RCT: add curtailment api (#26252) --- meter/rct.go | 22 +- meter/rct_decorators.go | 463 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 464 insertions(+), 21 deletions(-) diff --git a/meter/rct.go b/meter/rct.go index f92336451..9d670d22f 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -33,7 +33,7 @@ func init() { registry.AddCtx("rct", NewRCTFromConfig) } -//go:generate go tool decorate -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate go tool decorate -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Curtailer,Curtail,func(bool) error,Curtailed,func() (bool, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatterySocLimiter,GetSocLimits,func() (float64, float64)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" -t "api.BatteryCapacity,Capacity,func() float64" // NewRCTFromConfig creates an RCT from generic config func NewRCTFromConfig(ctx context.Context, other map[string]any) (api.Meter, error) { @@ -100,6 +100,24 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL totalEnergy = m.totalEnergy } + // decorate api.Curtailer + var curtail func(bool) error + var curtailed func() (bool, error) + if usage == "pv" { + curtail = func(b bool) error { + r := float32(1) + if b { + r = 0 + } + return m.conn.Write(rct.BufVControlPowerReduction, m.floatVal(r)) + } + + curtailed = func() (bool, error) { + r, err := m.queryFloat(rct.BufVControlPowerReduction) + return r != 1, err + } + } + // decorate api.Battery var batterySoc func() (float64, error) var batterySocLimiter func() (float64, float64) @@ -191,7 +209,7 @@ func NewRCT(ctx context.Context, uri, usage string, batterySocLimits batterySocL } } - return decorateRCT(m, totalEnergy, batterySoc, batterySocLimiter, batteryMode, batteryCapacity), nil + return decorateRCT(m, totalEnergy, curtail, curtailed, batterySoc, batterySocLimiter, batteryMode, batteryCapacity), nil } func (m *RCT) floatVal(f float32) []byte { diff --git a/meter/rct_decorators.go b/meter/rct_decorators.go index b012360b4..0836d0914 100644 --- a/meter/rct_decorators.go +++ b/meter/rct_decorators.go @@ -6,12 +6,12 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error, batteryCapacity func() float64) api.Meter { +func decorateRCT(base *RCT, meterEnergy func() (float64, error), curtailer0 func(bool) error, curtailer1 func() (bool, error), battery func() (float64, error), batterySocLimiter func() (float64, float64), batteryController func(api.BatteryMode) error, batteryCapacity func() float64) api.Meter { switch { - case battery == nil && meterEnergy == nil: + case battery == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return base - case battery == nil && meterEnergy != nil: + case battery == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.MeterEnergy @@ -22,7 +22,35 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: + case battery == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Curtailer + }{ + RCT: base, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -33,7 +61,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -48,7 +76,43 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -63,7 +127,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -82,7 +146,51 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatterySocLimiter + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatterySocLimiter + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -97,7 +205,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -116,7 +224,51 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -135,7 +287,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -158,7 +310,59 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.BatterySocLimiter + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryController + api.BatterySocLimiter + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -173,7 +377,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -192,7 +396,51 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -211,7 +459,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -234,7 +482,59 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatterySocLimiter + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -253,7 +553,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -276,7 +576,59 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy == nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter == nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy == nil: return &struct { *RCT api.Battery @@ -299,7 +651,7 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } - case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && meterEnergy != nil: + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && curtailer0 == nil && curtailer1 == nil && meterEnergy != nil: return &struct { *RCT api.Battery @@ -325,6 +677,66 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() meterEnergy: meterEnergy, }, } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy == nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.Curtailer + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && batterySocLimiter != nil && curtailer0 != nil && curtailer1 != nil && meterEnergy != nil: + return &struct { + *RCT + api.Battery + api.BatteryCapacity + api.BatteryController + api.BatterySocLimiter + api.Curtailer + api.MeterEnergy + }{ + RCT: base, + Battery: &decorateRCTBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateRCTBatteryControllerImpl{ + batteryController: batteryController, + }, + BatterySocLimiter: &decorateRCTBatterySocLimiterImpl{ + batterySocLimiter: batterySocLimiter, + }, + Curtailer: &decorateRCTCurtailerImpl{ + curtailer0: curtailer0, + curtailer1: curtailer1, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } } return nil @@ -362,6 +774,19 @@ func (impl *decorateRCTBatterySocLimiterImpl) GetSocLimits() (float64, float64) return impl.batterySocLimiter() } +type decorateRCTCurtailerImpl struct { + curtailer0 func(bool) error + curtailer1 func() (bool, error) +} + +func (impl *decorateRCTCurtailerImpl) Curtail(p0 bool) error { + return impl.curtailer0(p0) +} + +func (impl *decorateRCTCurtailerImpl) Curtailed() (bool, error) { + return impl.curtailer1() +} + type decorateRCTMeterEnergyImpl struct { meterEnergy func() (float64, error) } From 478a055e9bd871df780e8d03a9f07e97fb23f595 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 4 Jan 2026 11:07:03 +0100 Subject: [PATCH 0024/1912] Templates: improve required and advanced handling (#26371) --- util/templates/template.go | 3 +- util/templates/types.go | 16 ++++++-- util/templates/types_test.go | 77 ++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 util/templates/types_test.go diff --git a/util/templates/template.go b/util/templates/template.go index 8a282e128..6c43ca441 100644 --- a/util/templates/template.go +++ b/util/templates/template.go @@ -366,8 +366,7 @@ func (t *Template) RenderResult(renderMode int, other map[string]any) ([]byte, m } // validate required fields from yaml - if s == "" && p.IsRequired() && !p.IsDeprecated() && (renderMode == RenderModeUnitTest || - renderMode == RenderModeInstance && !testing.Testing()) { + if s == "" && p.IsRequired() && (renderMode == RenderModeUnitTest || renderMode == RenderModeInstance && !testing.Testing()) { // validate required per usage if len(p.Usages) == 0 || slices.Contains(p.Usages, usage) { return nil, nil, fmt.Errorf("missing required `%s`", p.Name) diff --git a/util/templates/types.go b/util/templates/types.go index 50e26cbc7..5e55b4acf 100644 --- a/util/templates/types.go +++ b/util/templates/types.go @@ -137,7 +137,7 @@ func (t *TextLanguage) Update(new TextLanguage, always bool) { } // MarshalJSON implements the json.Marshaler interface -func (t *TextLanguage) MarshalJSON() (out []byte, err error) { +func (t TextLanguage) MarshalJSON() ([]byte, error) { mu.Lock() s := t.String(encoderLanguage) mu.Unlock() @@ -232,7 +232,7 @@ func (p *Param) OverwriteProperties(withParam Param) { } func (p *Param) IsAdvanced() bool { - return p.Advanced + return p.Advanced && !p.Required } func (p *Param) IsMasked() bool { @@ -244,7 +244,7 @@ func (p *Param) IsPrivate() bool { } func (p *Param) IsRequired() bool { - return p.Required + return p.Required && !p.Deprecated } func (p *Param) IsDeprecated() bool { @@ -264,6 +264,16 @@ func (p *Param) yamlQuote(value string) string { return yamlQuote(value) } +var _ json.Marshaler = (*Param)(nil) + +func (p Param) MarshalJSON() ([]byte, error) { + type param Param + pp := (param)(p) + pp.Required = p.IsRequired() + pp.Advanced = p.IsAdvanced() + return json.Marshal(pp) +} + // Product contains naming information about a product a template supports type Product struct { Brand string // product brand diff --git a/util/templates/types_test.go b/util/templates/types_test.go new file mode 100644 index 000000000..64afa69f0 --- /dev/null +++ b/util/templates/types_test.go @@ -0,0 +1,77 @@ +package templates + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestParamLogic(t *testing.T) { + { + p := Param{ + Advanced: true, // omitempty + Required: true, + } + require.False(t, p.IsAdvanced(), "can't be advanced when required") + + { + b, err := json.Marshal(p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"","Help":"","Required":true,"Type":"String"}`, string(b), "Marshal p advanced/required") + } + { + b, err := json.Marshal(&p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"","Help":"","Required":true,"Type":"String"}`, string(b), "Marshal *p advanced/required") + } + } + + { + p := Param{ + Deprecated: true, + Required: true, // omitempty + } + require.False(t, p.IsRequired(), "can't be required when deprecated") + + { + b, err := json.Marshal(p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"","Help":"","Deprecated":true,"Type":"String"}`, string(b), "Marshal p deprecated/required") + } + { + b, err := json.Marshal(&p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"","Help":"","Deprecated":true,"Type":"String"}`, string(b), "Marshal *p deprecated/required") + } + } + + b, err := json.Marshal(Param{ + Deprecated: true, + Advanced: true, // omitempty + Required: true, // omitempty + }) + require.NoError(t, err) + require.Equal(t, `{"Name":"","Description":"","Help":"","Deprecated":true,"Type":"String"}`, string(b)) +} + +func TestParamMarshal(t *testing.T) { + { + p := Param{ + Description: TextLanguage{Generic: "foo"}, + } + + { + b, err := json.Marshal(p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"foo","Help":"","Type":"String"}`, string(b)) + } + + { + b, err := json.Marshal(&p) + require.NoError(t, err) + assert.Equal(t, `{"Name":"","Description":"foo","Help":"","Type":"String"}`, string(b)) + } + } +} From ed9709e079f7b52bf48b93512ebb55b1869c0a31 Mon Sep 17 00:00:00 2001 From: Ingo <71161062+iseeberg79@users.noreply.github.com> Date: Sun, 4 Jan 2026 13:06:04 +0100 Subject: [PATCH 0025/1912] Planner: guard against incomplete rates (#26324) --- core/planner/planner.go | 24 ++++------------- core/planner/planner_continuous_test.go | 8 +++--- core/planner/planner_test.go | 34 +++++++++++++++++++------ 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/core/planner/planner.go b/core/planner/planner.go index c0bbe7ecb..fe34af7f7 100644 --- a/core/planner/planner.go +++ b/core/planner/planner.go @@ -154,6 +154,11 @@ func (t *Planner) Plan(requiredDuration, precondition time.Duration, targetTime rates = clampRates(rates, now, targetTime) + // check if rate coverage is sufficient for planning + if len(rates) == 0 || rates[len(rates)-1].End.Sub(rates[0].Start) < requiredDuration { + return simplePlan + } + // don't precondition longer than charging duration precondition = min(precondition, requiredDuration) @@ -175,25 +180,6 @@ func (t *Planner) Plan(requiredDuration, precondition time.Duration, targetTime // create plan unless only precond slots remaining var plan api.Rates if continuous { - // check if available tariff slots span is sufficient for sliding window algorithm - // verify that actual tariff data covers enough duration (may have gaps or start late) - if len(rates) > 0 { - start := rates[0].Start - if start.Before(now) { - start = now - } - - end := rates[len(rates)-1].End - if end.After(targetTime) { - end = targetTime - } - - // available window too small for sliding window - charge continuously from now to target - if end.Sub(start) < requiredDuration { - return continuousPlan(append(rates, precond...), now, targetTime.Add(precondition)) - } - } - // find cheapest continuous window plan = findContinuousWindow(rates, requiredDuration, targetTime) } else { diff --git a/core/planner/planner_continuous_test.go b/core/planner/planner_continuous_test.go index ff383ea87..4f9c97fc2 100644 --- a/core/planner/planner_continuous_test.go +++ b/core/planner/planner_continuous_test.go @@ -548,8 +548,8 @@ func TestContinuous_StartBeforeRates(t *testing.T) { // TestContinuous_StartBeforeRatesInsufficientTime tests that when current time // is before the first available rate AND there's not enough time after rates -// start to complete charging before target, the planner starts charging as soon -// as rates become available (best effort approach) +// start to complete charging before target, the planner starts at the latest +// possible time to reach target (best effort approach) func TestContinuous_StartBeforeRatesInsufficientTime(t *testing.T) { now := time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC) c := clock.NewMock() @@ -581,8 +581,8 @@ func TestContinuous_StartBeforeRatesInsufficientTime(t *testing.T) { require.NotEmpty(t, plan, "plan should not be empty") - // Best effort: start immediately to maximize charging time - assert.Equal(t, now, plan[0].Start, "should start immediately") + // Best effort: start at latest possible time to maximize charging time + assert.Equal(t, now.Add(1*time.Hour), plan[0].Start, "should start at latest possible time") assert.Equal(t, 0.0, plan[0].Value, "gap-filling slot before rates has no price") } diff --git a/core/planner/planner_test.go b/core/planner/planner_test.go index 011d7a473..e6db1640e 100644 --- a/core/planner/planner_test.go +++ b/core/planner/planner_test.go @@ -497,9 +497,8 @@ func TestStartBeforeRates(t *testing.T) { } // TestStartBeforeRatesInsufficientTime tests that when current time -// is before the first available rate AND there's not enough time after rates -// start to complete charging before target, the planner starts charging as soon -// as rates become available (best effort approach) +// is before the first available rate AND there's not enough rate coverage +// to complete charging, the planner falls back to simplePlan (ignoring rates) func TestStartBeforeRatesInsufficientTime(t *testing.T) { now := time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC) c := clock.NewMock() @@ -525,13 +524,32 @@ func TestStartBeforeRatesInsufficientTime(t *testing.T) { } targetTime := now.Add(4 * time.Hour) - requiredDuration := 3 * time.Hour // Need 3h but only 2h available after rates start + requiredDuration := 3 * time.Hour // Need 3h but only 2h rate coverage plan := planner.Plan(requiredDuration, 0, targetTime, false) // dispersed mode - require.NotEmpty(t, plan, "plan should not be empty - starts when rates become available") + require.NotEmpty(t, plan, "plan should not be empty") - // Best effort: start as soon as rates are available - assert.Equal(t, now.Add(2*time.Hour), plan[0].Start, "should start at first available rate") - assert.Equal(t, 0.10, plan[0].Value, "should use first available rate price") + // Insufficient rate coverage: fall back to simplePlan starting at latestStart + assert.Equal(t, now.Add(1*time.Hour), plan[0].Start, "should start at latestStart (target - required)") + assert.Equal(t, 0.0, plan[0].Value, "simplePlan has no price info") +} + +// TestEmptyRatesAfterClamping tests fallback to simplePlan when no rates cover [now, targetTime] +func TestEmptyRatesAfterClamping(t *testing.T) { + c := clock.NewMock() + ctrl := gomock.NewController(t) + + trf := api.NewMockTariff(ctrl) + trf.EXPECT().Rates().AnyTimes().Return(rates([]float64{0.20}, c.Now().Add(3*time.Hour), time.Hour), nil) + + p := &Planner{ + log: util.NewLogger("test"), + clock: c, + tariff: trf, + } + + plan := p.Plan(time.Hour, 0, c.Now().Add(90*time.Minute), false) + require.Len(t, plan, 1) + assert.Equal(t, c.Now().Add(30*time.Minute), plan[0].Start) } From dc9ff1d6c317e1c52b029dca238bc5a9522d4b70 Mon Sep 17 00:00:00 2001 From: Maschga <88616799+Maschga@users.noreply.github.com> Date: Sun, 4 Jan 2026 14:40:17 +0100 Subject: [PATCH 0026/1912] Loadpoint UI: improve title visibility (#26248) --- assets/js/components/Loadpoints/Loadpoint.vue | 16 +++++++- .../js/components/Loadpoints/Loadpoints.vue | 39 ++++++++++++------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/assets/js/components/Loadpoints/Loadpoint.vue b/assets/js/components/Loadpoints/Loadpoint.vue index 907136581..2106966a1 100644 --- a/assets/js/components/Loadpoints/Loadpoint.vue +++ b/assets/js/components/Loadpoints/Loadpoint.vue @@ -1,6 +1,9 @@