From d8aab205b1983d71b65a774741e4fc9a0793916d Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 20 Aug 2024 20:51:59 +0200 Subject: [PATCH] Revert "chore: make decorate dependency-aware (#15434)" This reverts commit 15a3deef0af5284dbd4f5049ed81281755f35a77. --- charger/abl_decorators.go | 11 + charger/alfen_decorators.go | 11 + charger/bender_decorators.go | 500 +++ charger/cfos_decorators.go | 86 + charger/charger.go | 12 +- charger/charger_decorators.go | 5230 +----------------------- charger/eebus_decorators.go | 26 + charger/em2go_decorators.go | 26 + charger/evsewifi_decorators.go | 500 +++ charger/hardybarth-salia_decorators.go | 37 + charger/innogy_decorators.go | 37 + charger/keba-modbus_decorators.go | 634 +++ charger/keba-udp_decorators.go | 37 + charger/kse_decorators.go | 26 + charger/ocpp_decorators.go | 500 +++ charger/pcelectric_decorators.go | 37 + charger/phoenix-charx_decorators.go | 97 + charger/phoenix-em-eth_decorators.go | 97 + charger/phoenix-ev-eth_decorators.go | 500 +++ charger/tasmota_decorators.go | 37 + charger/wallbe_decorators.go | 86 + charger/warp2_decorators.go | 1506 +++++++ cmd/tools/decorate.go | 43 +- meter/e3dc_decorators.go | 37 + meter/lgess_decorators.go | 26 + meter/mbmd_decorators.go | 532 +++ meter/meter_decorators.go | 1404 +++++++ meter/powerwall_decorators.go | 86 + meter/rct_decorators.go | 26 + meter/sma_decorators.go | 11 + 30 files changed, 7149 insertions(+), 5049 deletions(-) diff --git a/charger/abl_decorators.go b/charger/abl_decorators.go index 334f297c6..ce80354ab 100644 --- a/charger/abl_decorators.go +++ b/charger/abl_decorators.go @@ -22,6 +22,17 @@ func decorateABLeMH(base *ABLeMH, meter func() (float64, error), phaseCurrents f }, } + case meter == nil && phaseCurrents != nil: + return &struct { + *ABLeMH + api.PhaseCurrents + }{ + ABLeMH: base, + PhaseCurrents: &decorateABLeMHPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && phaseCurrents != nil: return &struct { *ABLeMH diff --git a/charger/alfen_decorators.go b/charger/alfen_decorators.go index b018b697d..6fedbfe71 100644 --- a/charger/alfen_decorators.go +++ b/charger/alfen_decorators.go @@ -22,6 +22,17 @@ func decorateAlfen(base *Alfen, phaseSwitcher func(int) error, phaseGetter func( }, } + case phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Alfen + api.PhaseGetter + }{ + Alfen: base, + PhaseGetter: &decorateAlfenPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + case phaseGetter != nil && phaseSwitcher != nil: return &struct { *Alfen diff --git a/charger/bender_decorators.go b/charger/bender_decorators.go index 92487f24d..86097d84f 100644 --- a/charger/bender_decorators.go +++ b/charger/bender_decorators.go @@ -22,6 +22,17 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.PhaseCurrents + }{ + BenderCC: base, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -37,6 +48,17 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.PhaseVoltages + }{ + BenderCC: base, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -52,6 +74,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -71,6 +108,17 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.MeterEnergy + }{ + BenderCC: base, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC @@ -86,6 +134,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.MeterEnergy + api.PhaseCurrents + }{ + BenderCC: base, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -105,6 +168,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.MeterEnergy + api.PhaseVoltages + }{ + BenderCC: base, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -124,6 +202,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -173,6 +270,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.PhaseCurrents + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -192,6 +304,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -211,6 +338,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -234,6 +380,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.MeterEnergy + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC @@ -253,6 +414,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.MeterEnergy + api.PhaseCurrents + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -276,6 +456,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.MeterEnergy + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -299,6 +498,29 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -352,6 +574,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Identifier + api.PhaseCurrents + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -371,6 +608,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Identifier + api.PhaseVoltages + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -390,6 +642,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -413,6 +684,21 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Identifier + api.MeterEnergy + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC @@ -432,6 +718,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -455,6 +760,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -478,6 +802,29 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -539,6 +886,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.PhaseCurrents + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -562,6 +928,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -585,6 +970,29 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC @@ -612,6 +1020,25 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.MeterEnergy + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC @@ -635,6 +1062,29 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC @@ -662,6 +1112,29 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC @@ -689,6 +1162,33 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *BenderCC + api.Battery + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + BenderCC: base, + Battery: &decorateBenderCCBatteryImpl{ + battery: battery, + }, + Identifier: &decorateBenderCCIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateBenderCCMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC diff --git a/charger/cfos_decorators.go b/charger/cfos_decorators.go index 8ebc416fd..54ab8acdd 100644 --- a/charger/cfos_decorators.go +++ b/charger/cfos_decorators.go @@ -22,6 +22,17 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil: + return &struct { + *CfosPowerBrain + api.MeterEnergy + }{ + CfosPowerBrain: base, + MeterEnergy: &decorateCfosMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil: return &struct { *CfosPowerBrain @@ -37,6 +48,17 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil: + return &struct { + *CfosPowerBrain + api.PhaseCurrents + }{ + CfosPowerBrain: base, + PhaseCurrents: &decorateCfosPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil: return &struct { *CfosPowerBrain @@ -52,6 +74,21 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil: + return &struct { + *CfosPowerBrain + api.MeterEnergy + api.PhaseCurrents + }{ + CfosPowerBrain: base, + MeterEnergy: &decorateCfosMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateCfosPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil: return &struct { *CfosPowerBrain @@ -97,6 +134,21 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil: + return &struct { + *CfosPowerBrain + api.MeterEnergy + api.PhaseSwitcher + }{ + CfosPowerBrain: base, + MeterEnergy: &decorateCfosMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateCfosPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil: return &struct { *CfosPowerBrain @@ -116,6 +168,21 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil: + return &struct { + *CfosPowerBrain + api.PhaseCurrents + api.PhaseSwitcher + }{ + CfosPowerBrain: base, + PhaseCurrents: &decorateCfosPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateCfosPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil: return &struct { *CfosPowerBrain @@ -135,6 +202,25 @@ func decorateCfos(base *CfosPowerBrain, meter func() (float64, error), meterEner }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil: + return &struct { + *CfosPowerBrain + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + CfosPowerBrain: base, + MeterEnergy: &decorateCfosMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateCfosPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateCfosPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil: return &struct { *CfosPowerBrain diff --git a/charger/charger.go b/charger/charger.go index d75ea0514..070630921 100644 --- a/charger/charger.go +++ b/charger/charger.go @@ -23,7 +23,7 @@ func init() { registry.Add(api.Custom, NewConfigurableFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateCustom -b *Charger -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Resurrector,WakeUp,func() error" -t "api.Battery,Soc,func() (float64, error)" -t "api.Meter,CurrentPower,func() (float64, error)" -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)" +//go:generate go run ../cmd/tools/decorate.go -f decorateCustom -b *Charger -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Resurrector,WakeUp,func() error" -t "api.Battery,Soc,func() (float64, error)" -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" // NewConfigurableFromConfig creates a new configurable charger func NewConfigurableFromConfig(other map[string]interface{}) (api.Charger, error) { @@ -40,7 +40,8 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Charger, error Power *provider.Config Energy *provider.Config - Currents, Voltages, Powers []provider.Config + // phase values, currently not supported (https://github.com/evcc-io/evcc/pull/14546) + // Currents, Voltages, Powers []provider.Config } if err := util.DecodeOther(other, &cc); err != nil { @@ -136,12 +137,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Charger, error return nil, err } - currentsG, voltagesG, _, err := meter.BuildPhaseMeasurements(cc.Currents, cc.Voltages, nil) - if err != nil { - return nil, err - } - - return decorateCustom(c, maxcurrentmillis, identify, phases1p3p, wakeup, soc, powerG, energyG, currentsG, voltagesG), nil + return decorateCustom(c, maxcurrentmillis, identify, phases1p3p, wakeup, soc, powerG, energyG), nil } // NewConfigurable creates a new charger diff --git a/charger/charger_decorators.go b/charger/charger_decorators.go index a90bf9d14..a2ecb3644 100644 --- a/charger/charger_decorators.go +++ b/charger/charger_decorators.go @@ -6,12 +6,12 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateCustom(base *Charger, chargerEx func(float64) error, identifier func() (string, error), phaseSwitcher func(int) error, resurrector func() error, battery func() (float64, error), meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error)) api.Charger { +func decorateCustom(base *Charger, chargerEx func(float64) error, identifier func() (string, error), phaseSwitcher func(int) error, resurrector func() error, battery func() (float64, error), meter func() (float64, error), meterEnergy func() (float64, error)) api.Charger { switch { - case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return base - case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -22,7 +22,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Identifier @@ -33,7 +33,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -48,7 +48,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.PhaseSwitcher @@ -59,7 +59,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -74,7 +74,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Identifier @@ -89,7 +89,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -108,7 +108,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Resurrector @@ -119,7 +119,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -134,7 +134,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Identifier @@ -149,7 +149,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -168,7 +168,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.PhaseSwitcher @@ -183,7 +183,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -202,7 +202,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Identifier @@ -221,7 +221,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -244,7 +244,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -255,7 +255,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -270,7 +270,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -285,7 +285,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -304,7 +304,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -319,7 +319,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -338,7 +338,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -357,7 +357,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -380,7 +380,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -395,7 +395,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -414,7 +414,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -433,7 +433,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -456,7 +456,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -475,7 +475,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -498,7 +498,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -521,7 +521,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -548,7 +548,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Meter @@ -559,7 +559,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -574,7 +574,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Identifier @@ -589,7 +589,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -608,7 +608,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Meter @@ -623,7 +623,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -642,7 +642,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Identifier @@ -661,7 +661,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx @@ -684,7 +684,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Meter @@ -699,7 +699,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -718,7 +718,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Identifier @@ -737,7 +737,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -760,7 +760,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Meter @@ -779,7 +779,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -802,7 +802,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Identifier @@ -825,7 +825,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx @@ -852,7 +852,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -867,7 +867,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -886,7 +886,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -905,7 +905,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery @@ -928,7 +928,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -947,7 +947,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -970,7 +970,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -993,7 +993,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery @@ -1020,7 +1020,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1039,7 +1039,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1062,7 +1062,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1085,7 +1085,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1112,7 +1112,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1135,7 +1135,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1162,7 +1162,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1189,7 +1189,7 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery @@ -1220,65 +1220,52 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger - api.Meter api.MeterEnergy }{ Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx - api.Meter api.MeterEnergy }{ Charger: base, ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Identifier - api.Meter api.MeterEnergy }{ Charger: base, Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Identifier - api.Meter api.MeterEnergy }{ Charger: base, @@ -1288,25 +1275,18 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger - api.Meter api.MeterEnergy api.PhaseSwitcher }{ Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1315,11 +1295,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1327,9 +1306,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1338,11 +1314,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1350,9 +1325,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1361,12 +1333,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1377,9 +1348,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1388,17 +1356,13 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger - api.Meter api.MeterEnergy api.Resurrector }{ Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1407,11 +1371,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1419,9 +1382,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1430,11 +1390,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Identifier - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1442,9 +1401,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1453,12 +1409,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1469,9 +1424,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1480,18 +1432,14 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1503,11 +1451,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1516,9 +1463,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1530,11 +1474,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1543,9 +1486,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1557,12 +1497,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1574,9 +1513,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1588,31 +1524,26 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery - api.Meter api.MeterEnergy }{ Charger: base, Battery: &decorateCustomBatteryImpl{ battery: battery, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx - api.Meter api.MeterEnergy }{ Charger: base, @@ -1622,20 +1553,16 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.Identifier - api.Meter api.MeterEnergy }{ Charger: base, @@ -1645,21 +1572,17 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier - api.Meter api.MeterEnergy }{ Charger: base, @@ -1672,19 +1595,15 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1692,9 +1611,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Battery: &decorateCustomBatteryImpl{ battery: battery, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1703,12 +1619,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1719,9 +1634,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1730,12 +1642,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1746,9 +1657,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1757,13 +1665,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher }{ @@ -1777,9 +1684,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1788,11 +1692,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1800,9 +1703,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Battery: &decorateCustomBatteryImpl{ battery: battery, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1811,12 +1711,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1827,9 +1726,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1838,12 +1734,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.Identifier - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1854,9 +1749,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1865,13 +1757,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.Resurrector }{ @@ -1885,9 +1776,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1896,11 +1784,10 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1909,9 +1796,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Battery: &decorateCustomBatteryImpl{ battery: battery, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1923,12 +1807,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1940,9 +1823,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun ChargerEx: &decorateCustomChargerExImpl{ chargerEx: chargerEx, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1954,12 +1834,11 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -1971,9 +1850,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -1985,13 +1861,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier - api.Meter api.MeterEnergy api.PhaseSwitcher api.Resurrector @@ -2006,9 +1881,6 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Identifier: &decorateCustomIdentifierImpl{ identifier: identifier, }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, @@ -2020,27 +1892,27 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, ChargerEx: &decorateCustomChargerExImpl{ @@ -2049,17 +1921,17 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Identifier: &decorateCustomIdentifierImpl{ @@ -2068,18 +1940,18 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, ChargerEx: &decorateCustomChargerExImpl{ @@ -2091,36 +1963,36 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2130,20 +2002,20 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2153,21 +2025,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2180,39 +2052,39 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2222,20 +2094,20 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2245,21 +2117,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2272,19 +2144,19 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2292,8 +2164,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2303,12 +2175,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2319,8 +2191,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2330,12 +2202,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2346,8 +2218,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2357,13 +2229,13 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2377,8 +2249,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2388,12 +2260,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Battery: &decorateCustomBatteryImpl{ @@ -2402,18 +2274,18 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Battery: &decorateCustomBatteryImpl{ @@ -2425,18 +2297,18 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Battery: &decorateCustomBatteryImpl{ @@ -2448,19 +2320,19 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy }{ Charger: base, Battery: &decorateCustomBatteryImpl{ @@ -2475,17 +2347,17 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2495,21 +2367,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2522,21 +2394,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2549,22 +2421,22 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector == nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher }{ Charger: base, @@ -2580,20 +2452,20 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2603,21 +2475,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2630,21 +2502,21 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2657,22 +2529,22 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher == nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.Resurrector }{ Charger: base, @@ -2688,20 +2560,20 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, } - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2712,8 +2584,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2723,13 +2595,13 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2743,8 +2615,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2754,13 +2626,13 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2774,8 +2646,8 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, + MeterEnergy: &decorateCustomMeterEnergyImpl{ + meterEnergy: meterEnergy, }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, @@ -2785,14 +2657,14 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun }, } - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: + case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseSwitcher != nil && resurrector != nil: return &struct { *Charger api.Battery api.ChargerEx api.Identifier api.Meter - api.PhaseCurrents + api.MeterEnergy api.PhaseSwitcher api.Resurrector }{ @@ -2809,4652 +2681,12 @@ func decorateCustom(base *Charger, chargerEx func(float64) error, identifier fun Meter: &decorateCustomMeterImpl{ meter: meter, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, MeterEnergy: &decorateCustomMeterEnergyImpl{ meterEnergy: meterEnergy, }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery == nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector == nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ - phaseSwitcher: phaseSwitcher, - }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - Resurrector: &decorateCustomResurrectorImpl{ - resurrector: resurrector, - }, - } - - case battery != nil && chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil && resurrector != nil: - return &struct { - *Charger - api.Battery - api.ChargerEx - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseSwitcher - api.PhaseVoltages - api.Resurrector - }{ - Charger: base, - Battery: &decorateCustomBatteryImpl{ - battery: battery, - }, - ChargerEx: &decorateCustomChargerExImpl{ - chargerEx: chargerEx, - }, - Identifier: &decorateCustomIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateCustomMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateCustomMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateCustomPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, PhaseSwitcher: &decorateCustomPhaseSwitcherImpl{ phaseSwitcher: phaseSwitcher, }, - PhaseVoltages: &decorateCustomPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, Resurrector: &decorateCustomResurrectorImpl{ resurrector: resurrector, }, @@ -7504,14 +2736,6 @@ func (impl *decorateCustomMeterEnergyImpl) TotalEnergy() (float64, error) { return impl.meterEnergy() } -type decorateCustomPhaseCurrentsImpl struct { - phaseCurrents func() (float64, float64, float64, error) -} - -func (impl *decorateCustomPhaseCurrentsImpl) Currents() (float64, float64, float64, error) { - return impl.phaseCurrents() -} - type decorateCustomPhaseSwitcherImpl struct { phaseSwitcher func(int) error } @@ -7520,14 +2744,6 @@ func (impl *decorateCustomPhaseSwitcherImpl) Phases1p3p(p0 int) error { return impl.phaseSwitcher(p0) } -type decorateCustomPhaseVoltagesImpl struct { - phaseVoltages func() (float64, float64, float64, error) -} - -func (impl *decorateCustomPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) { - return impl.phaseVoltages() -} - type decorateCustomResurrectorImpl struct { resurrector func() error } diff --git a/charger/eebus_decorators.go b/charger/eebus_decorators.go index de010954d..8ecd8d501 100644 --- a/charger/eebus_decorators.go +++ b/charger/eebus_decorators.go @@ -22,6 +22,17 @@ func decorateEEBus(base *EEBus, meter func() (float64, error), phaseCurrents fun }, } + case chargeRater == nil && meter == nil && phaseCurrents != nil: + return &struct { + *EEBus + api.PhaseCurrents + }{ + EEBus: base, + PhaseCurrents: &decorateEEBusPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargeRater == nil && meter != nil && phaseCurrents != nil: return &struct { *EEBus @@ -63,6 +74,21 @@ func decorateEEBus(base *EEBus, meter func() (float64, error), phaseCurrents fun }, } + case chargeRater != nil && meter == nil && phaseCurrents != nil: + return &struct { + *EEBus + api.ChargeRater + api.PhaseCurrents + }{ + EEBus: base, + ChargeRater: &decorateEEBusChargeRaterImpl{ + chargeRater: chargeRater, + }, + PhaseCurrents: &decorateEEBusPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargeRater != nil && meter != nil && phaseCurrents != nil: return &struct { *EEBus diff --git a/charger/em2go_decorators.go b/charger/em2go_decorators.go index c28987e95..96c4efc79 100644 --- a/charger/em2go_decorators.go +++ b/charger/em2go_decorators.go @@ -48,6 +48,32 @@ func decorateEm2Go(base *Em2Go, chargerEx func(float64) error, phaseSwitcher fun }, } + case chargerEx == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Em2Go + api.PhaseGetter + }{ + Em2Go: base, + PhaseGetter: &decorateEm2GoPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case chargerEx != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Em2Go + api.ChargerEx + api.PhaseGetter + }{ + Em2Go: base, + ChargerEx: &decorateEm2GoChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseGetter: &decorateEm2GoPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + case chargerEx == nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Em2Go diff --git a/charger/evsewifi_decorators.go b/charger/evsewifi_decorators.go index cbd1e9f0a..ae4da2a9d 100644 --- a/charger/evsewifi_decorators.go +++ b/charger/evsewifi_decorators.go @@ -22,6 +22,17 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.MeterEnergy + }{ + EVSEWifi: base, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -37,6 +48,17 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.PhaseCurrents + }{ + EVSEWifi: base, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -52,6 +74,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.MeterEnergy + api.PhaseCurrents + }{ + EVSEWifi: base, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -71,6 +108,17 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.PhaseVoltages + }{ + EVSEWifi: base, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -86,6 +134,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.MeterEnergy + api.PhaseVoltages + }{ + EVSEWifi: base, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -105,6 +168,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -124,6 +202,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -173,6 +270,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.MeterEnergy + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -192,6 +304,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.PhaseCurrents + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -211,6 +338,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.MeterEnergy + api.PhaseCurrents + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -234,6 +380,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -253,6 +414,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.MeterEnergy + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -276,6 +456,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -299,6 +498,29 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -352,6 +574,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.Identifier + api.MeterEnergy + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -371,6 +608,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.Identifier + api.PhaseCurrents + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -390,6 +642,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -413,6 +684,21 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.Identifier + api.PhaseVoltages + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -432,6 +718,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -455,6 +760,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -478,6 +802,29 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -539,6 +886,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.MeterEnergy + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -562,6 +928,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.PhaseCurrents + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -585,6 +970,29 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *EVSEWifi @@ -612,6 +1020,25 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -635,6 +1062,29 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -662,6 +1112,29 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi @@ -689,6 +1162,33 @@ func decorateEVSE(base *EVSEWifi, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *EVSEWifi + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + EVSEWifi: base, + ChargerEx: &decorateEVSEChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decorateEVSEIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateEVSEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateEVSEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateEVSEPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *EVSEWifi diff --git a/charger/hardybarth-salia_decorators.go b/charger/hardybarth-salia_decorators.go index c45222734..f54b212dc 100644 --- a/charger/hardybarth-salia_decorators.go +++ b/charger/hardybarth-salia_decorators.go @@ -22,6 +22,17 @@ func decorateSalia(base *Salia, meter func() (float64, error), meterEnergy func( }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil: + return &struct { + *Salia + api.MeterEnergy + }{ + Salia: base, + MeterEnergy: &decorateSaliaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil: return &struct { *Salia @@ -37,6 +48,17 @@ func decorateSalia(base *Salia, meter func() (float64, error), meterEnergy func( }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil: + return &struct { + *Salia + api.PhaseCurrents + }{ + Salia: base, + PhaseCurrents: &decorateSaliaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil: return &struct { *Salia @@ -52,6 +74,21 @@ func decorateSalia(base *Salia, meter func() (float64, error), meterEnergy func( }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil: + return &struct { + *Salia + api.MeterEnergy + api.PhaseCurrents + }{ + Salia: base, + MeterEnergy: &decorateSaliaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateSaliaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil: return &struct { *Salia diff --git a/charger/innogy_decorators.go b/charger/innogy_decorators.go index 77a57258d..916f20836 100644 --- a/charger/innogy_decorators.go +++ b/charger/innogy_decorators.go @@ -10,6 +10,43 @@ func decorateInnogy(base *Innogy, meterEnergy func() (float64, error), phaseVolt switch { case meterEnergy == nil && phaseVoltages == nil: return base + + case meterEnergy != nil && phaseVoltages == nil: + return &struct { + *Innogy + api.MeterEnergy + }{ + Innogy: base, + MeterEnergy: &decorateInnogyMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case meterEnergy == nil && phaseVoltages != nil: + return &struct { + *Innogy + api.PhaseVoltages + }{ + Innogy: base, + PhaseVoltages: &decorateInnogyPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case meterEnergy != nil && phaseVoltages != nil: + return &struct { + *Innogy + api.MeterEnergy + api.PhaseVoltages + }{ + Innogy: base, + MeterEnergy: &decorateInnogyMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateInnogyPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } } return nil diff --git a/charger/keba-modbus_decorators.go b/charger/keba-modbus_decorators.go index e069b2a90..4fd330a8b 100644 --- a/charger/keba-modbus_decorators.go +++ b/charger/keba-modbus_decorators.go @@ -22,6 +22,17 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.MeterEnergy + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -37,6 +48,17 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.PhaseCurrents + }{ + Keba: base, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -52,6 +74,21 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseCurrents + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -97,6 +134,21 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -116,6 +168,21 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.PhaseCurrents + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -135,6 +202,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil: return &struct { *Keba @@ -184,6 +270,21 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseSwitcher + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -203,6 +304,21 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.PhaseCurrents + api.PhaseSwitcher + }{ + Keba: base, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -222,6 +338,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -279,6 +414,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -302,6 +456,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.PhaseCurrents + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -325,6 +498,29 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil: return &struct { *Keba @@ -352,6 +548,310 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.PhaseGetter + }{ + Keba: base, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Meter + api.PhaseGetter + }{ + Keba: base, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseGetter + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Meter + api.MeterEnergy + api.PhaseGetter + }{ + Keba: base, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Meter + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.Meter + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.Meter + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *Keba + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateKebaMeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -386,6 +886,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -409,6 +928,25 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -432,6 +970,29 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -501,6 +1062,29 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -528,6 +1112,29 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba @@ -555,6 +1162,33 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: + return &struct { + *Keba + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Keba: base, + Identifier: &decorateKebaIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateKebaMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateKebaPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *Keba diff --git a/charger/keba-udp_decorators.go b/charger/keba-udp_decorators.go index a2ad50b3f..ce6597dc3 100644 --- a/charger/keba-udp_decorators.go +++ b/charger/keba-udp_decorators.go @@ -22,6 +22,17 @@ func decorateKebaUdp(base *KebaUdp, meter func() (float64, error), meterEnergy f }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil: + return &struct { + *KebaUdp + api.MeterEnergy + }{ + KebaUdp: base, + MeterEnergy: &decorateKebaUdpMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil: return &struct { *KebaUdp @@ -37,6 +48,17 @@ func decorateKebaUdp(base *KebaUdp, meter func() (float64, error), meterEnergy f }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil: + return &struct { + *KebaUdp + api.PhaseCurrents + }{ + KebaUdp: base, + PhaseCurrents: &decorateKebaUdpPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil: return &struct { *KebaUdp @@ -52,6 +74,21 @@ func decorateKebaUdp(base *KebaUdp, meter func() (float64, error), meterEnergy f }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil: + return &struct { + *KebaUdp + api.MeterEnergy + api.PhaseCurrents + }{ + KebaUdp: base, + MeterEnergy: &decorateKebaUdpMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateKebaUdpPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil: return &struct { *KebaUdp diff --git a/charger/kse_decorators.go b/charger/kse_decorators.go index 62bf220a0..f6b46be71 100644 --- a/charger/kse_decorators.go +++ b/charger/kse_decorators.go @@ -22,6 +22,17 @@ func decorateKSE(base *KSE, phaseSwitcher func(int) error, phaseGetter func() (i }, } + case identifier == nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *KSE + api.PhaseGetter + }{ + KSE: base, + PhaseGetter: &decorateKSEPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + case identifier == nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *KSE @@ -63,6 +74,21 @@ func decorateKSE(base *KSE, phaseSwitcher func(int) error, phaseGetter func() (i }, } + case identifier != nil && phaseGetter != nil && phaseSwitcher == nil: + return &struct { + *KSE + api.Identifier + api.PhaseGetter + }{ + KSE: base, + Identifier: &decorateKSEIdentifierImpl{ + identifier: identifier, + }, + PhaseGetter: &decorateKSEPhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + case identifier != nil && phaseGetter != nil && phaseSwitcher != nil: return &struct { *KSE diff --git a/charger/ocpp_decorators.go b/charger/ocpp_decorators.go index e347212f3..0f84169b1 100644 --- a/charger/ocpp_decorators.go +++ b/charger/ocpp_decorators.go @@ -22,6 +22,17 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.MeterEnergy + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -37,6 +48,17 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.PhaseCurrents + }{ + OCPP: base, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -52,6 +74,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseCurrents + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -71,6 +108,17 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.PhaseVoltages + }{ + OCPP: base, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -86,6 +134,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseVoltages + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -105,6 +168,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.PhaseCurrents + api.PhaseVoltages + }{ + OCPP: base, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -124,6 +202,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -173,6 +270,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseSwitcher + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -192,6 +304,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.PhaseCurrents + api.PhaseSwitcher + }{ + OCPP: base, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -211,6 +338,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -234,6 +380,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -253,6 +414,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -276,6 +456,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -299,6 +498,29 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -352,6 +574,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -371,6 +608,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.PhaseCurrents + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -390,6 +642,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseCurrents + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *OCPP @@ -413,6 +684,21 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -432,6 +718,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -455,6 +760,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.PhaseCurrents + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -478,6 +802,29 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *OCPP @@ -539,6 +886,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseSwitcher + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -562,6 +928,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.PhaseCurrents + api.PhaseSwitcher + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -585,6 +970,29 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *OCPP @@ -612,6 +1020,25 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -635,6 +1062,29 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -662,6 +1112,29 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP @@ -689,6 +1162,33 @@ func decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() }, } + case battery != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *OCPP + api.Battery + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + OCPP: base, + Battery: &decorateOCPPBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateOCPPMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateOCPPPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateOCPPPhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateOCPPPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *OCPP diff --git a/charger/pcelectric_decorators.go b/charger/pcelectric_decorators.go index 95b24dcc1..fbab13ca7 100644 --- a/charger/pcelectric_decorators.go +++ b/charger/pcelectric_decorators.go @@ -22,6 +22,17 @@ func decoratePCE(base *PCElectric, meter func() (float64, error), meterEnergy fu }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil: + return &struct { + *PCElectric + api.MeterEnergy + }{ + PCElectric: base, + MeterEnergy: &decoratePCEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil: return &struct { *PCElectric @@ -37,6 +48,17 @@ func decoratePCE(base *PCElectric, meter func() (float64, error), meterEnergy fu }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil: + return &struct { + *PCElectric + api.PhaseCurrents + }{ + PCElectric: base, + PhaseCurrents: &decoratePCEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil: return &struct { *PCElectric @@ -52,6 +74,21 @@ func decoratePCE(base *PCElectric, meter func() (float64, error), meterEnergy fu }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil: + return &struct { + *PCElectric + api.MeterEnergy + api.PhaseCurrents + }{ + PCElectric: base, + MeterEnergy: &decoratePCEMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePCEPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil: return &struct { *PCElectric diff --git a/charger/phoenix-charx_decorators.go b/charger/phoenix-charx_decorators.go index 1b182ac60..90ed0d3f1 100644 --- a/charger/phoenix-charx_decorators.go +++ b/charger/phoenix-charx_decorators.go @@ -22,6 +22,17 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixCharx + api.MeterEnergy + }{ + PhoenixCharx: base, + MeterEnergy: &decoratePhoenixCharxMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixCharx @@ -37,6 +48,17 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixCharx + api.PhaseCurrents + }{ + PhoenixCharx: base, + PhaseCurrents: &decoratePhoenixCharxPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixCharx @@ -52,6 +74,21 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixCharx + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixCharx: base, + MeterEnergy: &decoratePhoenixCharxMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixCharxPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixCharx @@ -71,6 +108,17 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixCharx + api.PhaseVoltages + }{ + PhoenixCharx: base, + PhaseVoltages: &decoratePhoenixCharxPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixCharx @@ -86,6 +134,21 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixCharx + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixCharx: base, + MeterEnergy: &decoratePhoenixCharxMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixCharxPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixCharx @@ -105,6 +168,21 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixCharx + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixCharx: base, + PhaseCurrents: &decoratePhoenixCharxPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixCharxPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixCharx @@ -124,6 +202,25 @@ func decoratePhoenixCharx(base *PhoenixCharx, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixCharx + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixCharx: base, + MeterEnergy: &decoratePhoenixCharxMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixCharxPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixCharxPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixCharx diff --git a/charger/phoenix-em-eth_decorators.go b/charger/phoenix-em-eth_decorators.go index 237b7e114..5ceae4714 100644 --- a/charger/phoenix-em-eth_decorators.go +++ b/charger/phoenix-em-eth_decorators.go @@ -22,6 +22,17 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixEMEth + api.MeterEnergy + }{ + PhoenixEMEth: base, + MeterEnergy: &decoratePhoenixEMEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixEMEth @@ -37,6 +48,17 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEMEth + api.PhaseCurrents + }{ + PhoenixEMEth: base, + PhaseCurrents: &decoratePhoenixEMEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEMEth @@ -52,6 +74,21 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEMEth + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixEMEth: base, + MeterEnergy: &decoratePhoenixEMEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEMEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEMEth @@ -71,6 +108,17 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEMEth + api.PhaseVoltages + }{ + PhoenixEMEth: base, + PhaseVoltages: &decoratePhoenixEMEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEMEth @@ -86,6 +134,21 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEMEth + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixEMEth: base, + MeterEnergy: &decoratePhoenixEMEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixEMEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEMEth @@ -105,6 +168,21 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEMEth + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEMEth: base, + PhaseCurrents: &decoratePhoenixEMEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEMEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEMEth @@ -124,6 +202,25 @@ func decoratePhoenixEMEth(base *PhoenixEMEth, meter func() (float64, error), met }, } + case meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEMEth + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEMEth: base, + MeterEnergy: &decoratePhoenixEMEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEMEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEMEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEMEth diff --git a/charger/phoenix-ev-eth_decorators.go b/charger/phoenix-ev-eth_decorators.go index 5e861935b..75b52d0af 100644 --- a/charger/phoenix-ev-eth_decorators.go +++ b/charger/phoenix-ev-eth_decorators.go @@ -22,6 +22,17 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.MeterEnergy + }{ + PhoenixEVEth: base, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -37,6 +48,17 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.PhaseCurrents + }{ + PhoenixEVEth: base, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -52,6 +74,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixEVEth: base, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -71,6 +108,17 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.PhaseVoltages + }{ + PhoenixEVEth: base, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -86,6 +134,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixEVEth: base, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -105,6 +168,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -124,6 +202,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -173,6 +270,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.MeterEnergy + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -192,6 +304,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.PhaseCurrents + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -211,6 +338,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -234,6 +380,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -253,6 +414,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -276,6 +456,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -299,6 +498,29 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -352,6 +574,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.MeterEnergy + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -371,6 +608,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.PhaseCurrents + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -390,6 +642,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -413,6 +684,21 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.PhaseVoltages + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -432,6 +718,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -455,6 +760,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -478,6 +802,29 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -539,6 +886,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.MeterEnergy + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -562,6 +928,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.PhaseCurrents + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -585,6 +970,29 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *PhoenixEVEth @@ -612,6 +1020,25 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -635,6 +1062,29 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -662,6 +1112,29 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth @@ -689,6 +1162,33 @@ func decoratePhoenixEVEth(base *PhoenixEVEth, meter func() (float64, error), met }, } + case chargerEx != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *PhoenixEVEth + api.ChargerEx + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + PhoenixEVEth: base, + ChargerEx: &decoratePhoenixEVEthChargerExImpl{ + chargerEx: chargerEx, + }, + Identifier: &decoratePhoenixEVEthIdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decoratePhoenixEVEthMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decoratePhoenixEVEthPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decoratePhoenixEVEthPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case chargerEx != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *PhoenixEVEth diff --git a/charger/tasmota_decorators.go b/charger/tasmota_decorators.go index c20112b20..2b7cd21eb 100644 --- a/charger/tasmota_decorators.go +++ b/charger/tasmota_decorators.go @@ -10,6 +10,43 @@ func decorateTasmota(base *Tasmota, phaseVoltages func() (float64, float64, floa switch { case phaseCurrents == nil && phaseVoltages == nil: return base + + case phaseCurrents == nil && phaseVoltages != nil: + return &struct { + *Tasmota + api.PhaseVoltages + }{ + Tasmota: base, + PhaseVoltages: &decorateTasmotaPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case phaseCurrents != nil && phaseVoltages == nil: + return &struct { + *Tasmota + api.PhaseCurrents + }{ + Tasmota: base, + PhaseCurrents: &decorateTasmotaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case phaseCurrents != nil && phaseVoltages != nil: + return &struct { + *Tasmota + api.PhaseCurrents + api.PhaseVoltages + }{ + Tasmota: base, + PhaseCurrents: &decorateTasmotaPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateTasmotaPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } } return nil diff --git a/charger/wallbe_decorators.go b/charger/wallbe_decorators.go index 1798b4eee..b932c5dc4 100644 --- a/charger/wallbe_decorators.go +++ b/charger/wallbe_decorators.go @@ -22,6 +22,17 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil: + return &struct { + *Wallbe + api.MeterEnergy + }{ + Wallbe: base, + MeterEnergy: &decorateWallbeMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil: return &struct { *Wallbe @@ -37,6 +48,17 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil: + return &struct { + *Wallbe + api.PhaseCurrents + }{ + Wallbe: base, + PhaseCurrents: &decorateWallbePhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil: return &struct { *Wallbe @@ -52,6 +74,21 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil: + return &struct { + *Wallbe + api.MeterEnergy + api.PhaseCurrents + }{ + Wallbe: base, + MeterEnergy: &decorateWallbeMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWallbePhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil: return &struct { *Wallbe @@ -97,6 +134,21 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil: + return &struct { + *Wallbe + api.ChargerEx + api.MeterEnergy + }{ + Wallbe: base, + ChargerEx: &decorateWallbeChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateWallbeMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case chargerEx != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil: return &struct { *Wallbe @@ -116,6 +168,21 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil: + return &struct { + *Wallbe + api.ChargerEx + api.PhaseCurrents + }{ + Wallbe: base, + ChargerEx: &decorateWallbeChargerExImpl{ + chargerEx: chargerEx, + }, + PhaseCurrents: &decorateWallbePhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil: return &struct { *Wallbe @@ -135,6 +202,25 @@ func decorateWallbe(base *Wallbe, meter func() (float64, error), meterEnergy fun }, } + case chargerEx != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil: + return &struct { + *Wallbe + api.ChargerEx + api.MeterEnergy + api.PhaseCurrents + }{ + Wallbe: base, + ChargerEx: &decorateWallbeChargerExImpl{ + chargerEx: chargerEx, + }, + MeterEnergy: &decorateWallbeMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWallbePhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case chargerEx != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil: return &struct { *Wallbe diff --git a/charger/warp2_decorators.go b/charger/warp2_decorators.go index 017ee29ce..eb80a3b50 100644 --- a/charger/warp2_decorators.go +++ b/charger/warp2_decorators.go @@ -22,6 +22,17 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -37,6 +48,17 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.PhaseCurrents + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -52,6 +74,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -71,6 +108,17 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseVoltages + }{ + Warp2: base, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -86,6 +134,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -105,6 +168,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseVoltages + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -124,6 +202,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -173,6 +270,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -192,6 +304,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -211,6 +338,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages == nil: return &struct { *Warp2 @@ -234,6 +380,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -253,6 +414,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -276,6 +456,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -299,6 +498,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher == nil && phaseVoltages != nil: return &struct { *Warp2 @@ -352,6 +574,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseSwitcher + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -371,6 +608,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseSwitcher + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -390,6 +642,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -413,6 +684,21 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -432,6 +718,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -455,6 +760,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -478,6 +802,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -539,6 +886,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -562,6 +928,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -585,6 +970,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -612,6 +1020,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -635,6 +1062,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -662,6 +1112,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -689,6 +1162,33 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter == nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -720,6 +1220,678 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.PhaseGetter + }{ + Warp2: base, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Meter + api.PhaseGetter + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseGetter + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Meter + api.MeterEnergy + api.PhaseGetter + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Meter + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Meter + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Meter + api.MeterEnergy + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Meter + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher == nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.Meter + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + Meter: &decorateWarp2MeterImpl{ + meter: meter, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -754,6 +1926,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -777,6 +1968,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -800,6 +2010,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -827,6 +2060,25 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -850,6 +2102,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -877,6 +2152,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -904,6 +2202,33 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -977,6 +2302,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -1004,6 +2352,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -1031,6 +2402,33 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages == nil: return &struct { *Warp2 @@ -1062,6 +2460,29 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -1089,6 +2510,33 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -1120,6 +2568,33 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 @@ -1151,6 +2626,37 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func( }, } + case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: + return &struct { + *Warp2 + api.Identifier + api.MeterEnergy + api.PhaseCurrents + api.PhaseGetter + api.PhaseSwitcher + api.PhaseVoltages + }{ + Warp2: base, + Identifier: &decorateWarp2IdentifierImpl{ + identifier: identifier, + }, + MeterEnergy: &decorateWarp2MeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseGetter: &decorateWarp2PhaseGetterImpl{ + phaseGetter: phaseGetter, + }, + PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{ + phaseSwitcher: phaseSwitcher, + }, + PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseGetter != nil && phaseSwitcher != nil && phaseVoltages != nil: return &struct { *Warp2 diff --git a/cmd/tools/decorate.go b/cmd/tools/decorate.go index 97780b036..a4d013f06 100644 --- a/cmd/tools/decorate.go +++ b/cmd/tools/decorate.go @@ -29,23 +29,6 @@ type typeStruct struct { Params []string } -var dependents = map[string][]string{ - "api.Meter": {"api.MeterEnergy", "api.PhaseCurrents", "api.PhaseVoltages", "api.PhasePowers"}, - "api.PhaseCurrents": {"api.PhasePowers"}, // phase powers are only used to determine currents sign - "api.PhaseSwitcher": {"api.PhaseGetter"}, - "api.Battery": {"api.BatteryCapacity", "api.BatteryController"}, -} - -// hasIntersection returns if the slices intersect -func hasIntersection[T comparable](a, b []T) bool { - for _, el := range a { - if slices.Contains(b, el) { - return true - } - } - return false -} - func generate(out io.Writer, packageName, functionName, baseType string, dynamicTypes ...dynamicType) error { types := make(map[string]typeStruct, len(dynamicTypes)) combos := make([]string, 0) @@ -69,25 +52,28 @@ func generate(out io.Writer, packageName, functionName, baseType string, dynamic for _, dt := range dynamicTypes { 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] + paramsStr = strings.TrimSpace(paramsStr) + var params []string - if paramsStr = strings.TrimSpace(paramsStr); len(paramsStr) > 0 { + if len(paramsStr) > 0 { params = strings.Split(paramsStr, ",") } + returnValuesStr := dt.signature[closingBrace+1:] + types[dt.typ] = typeStruct{ Type: dt.typ, - ShortType: lastPart, - VarName: strings.ToLower(lastPart[:1]) + lastPart[1:], + ShortType: parts[1], + VarName: strings.ToLower(parts[1][:1]) + parts[1][1:], Signature: dt.signature, Function: dt.function, Params: params, - ReturnTypes: dt.signature[closingBrace+1:], + ReturnTypes: returnValuesStr, } combos = append(combos, dt.typ) @@ -103,17 +89,6 @@ func generate(out io.Writer, packageName, functionName, baseType string, dynamic shortBase = baseTypeParts[1] } - validCombos := make([][]string, 0) -COMBO: - for _, c := range combinations.All(combos) { - for master, details := range dependents { - if returnType != master && !slices.Contains(c, master) && hasIntersection(c, details) { - continue COMBO - } - } - validCombos = append(validCombos, c) - } - vars := struct { API string Package, Function string @@ -129,7 +104,7 @@ COMBO: ShortBase: shortBase, ReturnType: returnType, Types: types, - Combinations: validCombos, + Combinations: combinations.All(combos), } return tmpl.Execute(out, vars) diff --git a/meter/e3dc_decorators.go b/meter/e3dc_decorators.go index 918b72bcc..5e7e3e478 100644 --- a/meter/e3dc_decorators.go +++ b/meter/e3dc_decorators.go @@ -11,6 +11,17 @@ func decorateE3dc(base *E3dc, batteryCapacity func() float64, battery func() (fl case battery == nil && batteryCapacity == nil && batteryController == nil: return base + case battery == nil && batteryCapacity != nil && batteryController == nil: + return &struct { + *E3dc + api.BatteryCapacity + }{ + E3dc: base, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + case battery != nil && batteryCapacity == nil && batteryController == nil: return &struct { *E3dc @@ -37,6 +48,32 @@ func decorateE3dc(base *E3dc, batteryCapacity func() float64, battery func() (fl }, } + case battery == nil && batteryCapacity == nil && batteryController != nil: + return &struct { + *E3dc + api.BatteryController + }{ + E3dc: base, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil: + return &struct { + *E3dc + api.BatteryCapacity + api.BatteryController + }{ + E3dc: base, + BatteryCapacity: &decorateE3dcBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateE3dcBatteryControllerImpl{ + batteryController: batteryController, + }, + } + case battery != nil && batteryCapacity == nil && batteryController != nil: return &struct { *E3dc diff --git a/meter/lgess_decorators.go b/meter/lgess_decorators.go index eb5f83b87..187e9a216 100644 --- a/meter/lgess_decorators.go +++ b/meter/lgess_decorators.go @@ -48,6 +48,32 @@ func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery fun }, } + case battery == nil && batteryCapacity != nil && meterEnergy == nil: + return &struct { + *LgEss + api.BatteryCapacity + }{ + LgEss: base, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil: + return &struct { + *LgEss + api.BatteryCapacity + api.MeterEnergy + }{ + LgEss: base, + BatteryCapacity: &decorateLgEssBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateLgEssMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && batteryCapacity != nil && meterEnergy == nil: return &struct { *LgEss diff --git a/meter/mbmd_decorators.go b/meter/mbmd_decorators.go index 2b7b9a335..9ee5e4d98 100644 --- a/meter/mbmd_decorators.go +++ b/meter/mbmd_decorators.go @@ -108,6 +108,32 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery == nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.PhasePowers + }{ + Meter: base, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery == nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -142,6 +168,40 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery == nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -320,6 +380,40 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery != nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.PhasePowers + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -362,6 +456,48 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery != nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -412,6 +548,310 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateModbusMbmdPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter @@ -580,6 +1020,48 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery != nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.PhasePowers + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -630,6 +1112,56 @@ func decorateModbusMbmd(base api.Meter, meterEnergy func() (float64, error), pha }, } + case battery != nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateModbusMbmdBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateModbusMbmdBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateModbusMbmdMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateModbusMbmdPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateModbusMbmdPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter diff --git a/meter/meter_decorators.go b/meter/meter_decorators.go index dc38d2ac4..c53e1516b 100644 --- a/meter/meter_decorators.go +++ b/meter/meter_decorators.go @@ -108,6 +108,32 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.PhasePowers + }{ + Meter: base, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -142,6 +168,40 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery == nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -320,6 +380,40 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -362,6 +456,48 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity == nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -412,6 +548,310 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + 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 && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter @@ -580,6 +1020,48 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -630,6 +1112,56 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -688,6 +1220,310 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.PhaseCurrents + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.PhasePowers + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + 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 && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter @@ -856,6 +1692,48 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -906,6 +1784,56 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryController + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter @@ -964,6 +1892,374 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhaseVoltages + }{ + Meter: base, + 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 && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ + phaseCurrents: phaseCurrents, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + }{ + Meter: base, + 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 && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + 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 && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhaseCurrents + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + 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 && meterEnergy == nil && phaseCurrents == nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter @@ -1164,6 +2460,56 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages == nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhasePowers + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + } + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter @@ -1222,6 +2568,64 @@ func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCur }, } + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil && phaseCurrents == nil && phasePowers != nil && phaseVoltages != nil: + return &struct { + api.Meter + api.Battery + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + api.PhasePowers + api.PhaseVoltages + }{ + Meter: base, + Battery: &decorateMeterBatteryImpl{ + battery: battery, + }, + BatteryCapacity: &decorateMeterBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decorateMeterBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decorateMeterMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + PhasePowers: &decorateMeterPhasePowersImpl{ + phasePowers: phasePowers, + }, + PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ + phaseVoltages: phaseVoltages, + }, + } + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter diff --git a/meter/powerwall_decorators.go b/meter/powerwall_decorators.go index 448d09214..daef29c61 100644 --- a/meter/powerwall_decorators.go +++ b/meter/powerwall_decorators.go @@ -48,6 +48,32 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil: + return &struct { + *PowerWall + api.BatteryCapacity + }{ + PowerWall: base, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController == nil && meterEnergy != nil: + return &struct { + *PowerWall + api.BatteryCapacity + api.MeterEnergy + }{ + PowerWall: base, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && batteryCapacity != nil && batteryController == nil && meterEnergy == nil: return &struct { *PowerWall @@ -82,6 +108,32 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.BatteryController + }{ + PowerWall: base, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery == nil && batteryCapacity == nil && batteryController != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.BatteryController + api.MeterEnergy + }{ + PowerWall: base, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && batteryCapacity == nil && batteryController != nil && meterEnergy == nil: return &struct { *PowerWall @@ -116,6 +168,40 @@ func decoratePowerWall(base *PowerWall, meterEnergy func() (float64, error), bat }, } + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil: + return &struct { + *PowerWall + api.BatteryCapacity + api.BatteryController + }{ + PowerWall: base, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + } + + case battery == nil && batteryCapacity != nil && batteryController != nil && meterEnergy != nil: + return &struct { + *PowerWall + api.BatteryCapacity + api.BatteryController + api.MeterEnergy + }{ + PowerWall: base, + BatteryCapacity: &decoratePowerWallBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + BatteryController: &decoratePowerWallBatteryControllerImpl{ + batteryController: batteryController, + }, + MeterEnergy: &decoratePowerWallMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && batteryCapacity != nil && batteryController != nil && meterEnergy == nil: return &struct { *PowerWall diff --git a/meter/rct_decorators.go b/meter/rct_decorators.go index 9dc39467b..ac210928c 100644 --- a/meter/rct_decorators.go +++ b/meter/rct_decorators.go @@ -48,6 +48,32 @@ func decorateRCT(base *RCT, meterEnergy func() (float64, error), battery func() }, } + case battery == nil && batteryCapacity != nil && meterEnergy == nil: + return &struct { + *RCT + api.BatteryCapacity + }{ + RCT: base, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + + case battery == nil && batteryCapacity != nil && meterEnergy != nil: + return &struct { + *RCT + api.BatteryCapacity + api.MeterEnergy + }{ + RCT: base, + BatteryCapacity: &decorateRCTBatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + MeterEnergy: &decorateRCTMeterEnergyImpl{ + meterEnergy: meterEnergy, + }, + } + case battery != nil && batteryCapacity != nil && meterEnergy == nil: return &struct { *RCT diff --git a/meter/sma_decorators.go b/meter/sma_decorators.go index 352ccf670..ed940f027 100644 --- a/meter/sma_decorators.go +++ b/meter/sma_decorators.go @@ -22,6 +22,17 @@ func decorateSMA(base *SMA, battery func() (float64, error), batteryCapacity fun }, } + case battery == nil && batteryCapacity != nil: + return &struct { + *SMA + api.BatteryCapacity + }{ + SMA: base, + BatteryCapacity: &decorateSMABatteryCapacityImpl{ + batteryCapacity: batteryCapacity, + }, + } + case battery != nil && batteryCapacity != nil: return &struct { *SMA