From 8727252f60e63e10b98667efbf561b22b8018d12 Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 6 Jul 2024 16:47:13 +0200 Subject: [PATCH] Fix session energy reset by some chargers (Go-E, Wattpilot, Bender) (#14730) --- charger/bender.go | 68 +- charger/bender_decorators.go | 1610 ++-------------------------------- charger/fronius-wattpilot.go | 12 +- charger/go-e.go | 13 +- 4 files changed, 95 insertions(+), 1608 deletions(-) diff --git a/charger/bender.go b/charger/bender.go index 6f4b116e7..b02fac53d 100644 --- a/charger/bender.go +++ b/charger/bender.go @@ -43,26 +43,28 @@ type BenderCC struct { const ( // all holding type registers - bendRegChargePointState = 122 // Vehicle (Control Pilot) state - bendRegPhaseEnergy = 200 // Phase energy from primary meter (Wh) - bendRegCurrents = 212 // Currents from primary meter (mA) - bendRegTotalEnergy = 218 // Total Energy from primary meter (Wh) - bendRegActivePower = 220 // Active Power from primary meter (W) - bendRegVoltages = 222 // Voltages of the ocpp meter (V) - bendRegChargedEnergyLegacy = 705 // Sum of charged energy for the current session (Wh) - bendRegChargingDurationLegacy = 709 // Duration since beginning of charge (Seconds) - bendRegChargedEnergy = 716 // Sum of charged energy for the current session (Wh) - bendRegChargingDuration = 718 // Duration since beginning of charge (Seconds) - bendRegUserID = 720 // User ID (OCPP IdTag) from the current session. Bytes 0 to 19. - bendRegEVBatteryState = 730 // EV Battery State (% 0-100) - bendRegEVCCID = 741 // ASCII representation of the Hex. Values corresponding to the EVCCID. Bytes 0 to 11. - bendRegHemsCurrentLimit = 1000 // Current limit of the HEMS module (A) + bendRegChargePointState = 122 // Vehicle (Control Pilot) state + bendRegPhaseEnergy = 200 // Phase energy from primary meter (Wh) + bendRegCurrents = 212 // Currents from primary meter (mA) + bendRegTotalEnergy = 218 // Total Energy from primary meter (Wh) + bendRegActivePower = 220 // Active Power from primary meter (W) + bendRegVoltages = 222 // Voltages of the ocpp meter (V) + bendRegUserID = 720 // User ID (OCPP IdTag) from the current session. Bytes 0 to 19. + bendRegEVBatteryState = 730 // EV Battery State (% 0-100) + bendRegEVCCID = 741 // ASCII representation of the Hex. Values corresponding to the EVCCID. Bytes 0 to 11. + bendRegHemsCurrentLimit = 1000 // Current limit of the HEMS module (A) bendRegFirmware = 100 // Application version number bendRegOcppCpStatus = 104 // Charge Point status according to the OCPP spec. enumaration bendRegProtocolVersion = 120 // Ebee Modbus TCP Server Protocol Version number bendRegChargePointModel = 142 // ChargePoint Model. Bytes 0 to 19. bendRegSmartVehicleDetected = 740 // Returns 1 if an EV currently connected is a smart vehicle, or 0 if no EV connected or it is not a smart vehicle + + // unused + // bendRegChargedEnergyLegacy = 705 // Sum of charged energy for the current session (Wh) + // bendRegChargingDurationLegacy = 709 // Duration since beginning of charge (Seconds) + // bendRegChargedEnergy = 716 // Sum of charged energy for the current session (Wh) + // bendRegChargingDuration = 718 // Duration since beginning of charge (Seconds) ) func init() { @@ -82,7 +84,7 @@ func NewBenderCCFromConfig(other map[string]interface{}) (api.Charger, error) { return NewBenderCC(cc.URI, cc.ID) } -//go:generate go run ../cmd/tools/decorate.go -f decorateBenderCC -b *BenderCC -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.ChargeRater,ChargedEnergy,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.Identifier,Identify,func() (string, error)" +//go:generate go run ../cmd/tools/decorate.go -f decorateBenderCC -b *BenderCC -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.Identifier,Identify,func() (string, error)" // NewBenderCC creates BenderCC charger func NewBenderCC(uri string, id uint8) (api.Charger, error) { @@ -109,13 +111,12 @@ func NewBenderCC(uri string, id uint8) (api.Charger, error) { } var ( - currentPower func() (float64, error) - currents func() (float64, float64, float64, error) - voltages func() (float64, float64, float64, error) - chargedEnergy func() (float64, error) - totalEnergy func() (float64, error) - soc func() (float64, error) - identify func() (string, error) + currentPower func() (float64, error) + currents func() (float64, float64, float64, error) + voltages func() (float64, float64, float64, error) + totalEnergy func() (float64, error) + soc func() (float64, error) + identify func() (string, error) ) // check presence of metering @@ -127,7 +128,6 @@ func NewBenderCC(uri string, id uint8) (api.Charger, error) { if b, err := wb.conn.ReadHoldingRegisters(reg, 2); err == nil && binary.BigEndian.Uint32(b) != math.MaxUint32 { currentPower = wb.currentPower currents = wb.currents - chargedEnergy = wb.chargedEnergy totalEnergy = wb.totalEnergy // check presence of "ocpp meter" @@ -147,7 +147,7 @@ func NewBenderCC(uri string, id uint8) (api.Charger, error) { identify = wb.identify } - return decorateBenderCC(wb, currentPower, currents, voltages, chargedEnergy, totalEnergy, soc, identify), nil + return decorateBenderCC(wb, currentPower, currents, voltages, totalEnergy, soc, identify), nil } // Status implements the api.Charger interface @@ -226,24 +226,8 @@ func (wb *BenderCC) currentPower() (float64, error) { return float64(binary.BigEndian.Uint32(b)), nil } -// ChargedEnergy implements the api.ChargeRater interface -func (wb *BenderCC) chargedEnergy() (float64, error) { - if wb.legacy { - b, err := wb.conn.ReadHoldingRegisters(bendRegChargedEnergyLegacy, 1) - if err != nil { - return 0, err - } - - return float64(binary.BigEndian.Uint16(b)) / 1e3, nil - } - - b, err := wb.conn.ReadHoldingRegisters(bendRegChargedEnergy, 2) - if err != nil { - return 0, err - } - - return float64(binary.BigEndian.Uint32(b)) / 1e3, nil -} +// removed: https://github.com/evcc-io/evcc/issues/13726 +// var _ api.ChargeRater = (*BenderCC)(nil) // TotalEnergy implements the api.MeterEnergy interface func (wb *BenderCC) totalEnergy() (float64, error) { diff --git a/charger/bender_decorators.go b/charger/bender_decorators.go index 2deb14b44..86097d84f 100644 --- a/charger/bender_decorators.go +++ b/charger/bender_decorators.go @@ -6,12 +6,12 @@ import ( "github.com/evcc-io/evcc/api" ) -func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), chargeRater func() (float64, error), meterEnergy func() (float64, error), battery func() (float64, error), identifier func() (string, error)) api.Charger { +func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), meterEnergy func() (float64, error), battery func() (float64, error), identifier func() (string, error)) api.Charger { switch { - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return base - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter @@ -22,7 +22,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.PhaseCurrents @@ -33,7 +33,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter @@ -48,7 +48,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.PhaseVoltages @@ -59,7 +59,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter @@ -74,7 +74,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.PhaseCurrents @@ -89,7 +89,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter @@ -108,143 +108,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.MeterEnergy @@ -255,7 +119,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter @@ -270,7 +134,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.MeterEnergy @@ -285,7 +149,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter @@ -304,7 +168,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.MeterEnergy @@ -319,7 +183,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter @@ -338,7 +202,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.MeterEnergy @@ -357,7 +221,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter @@ -380,175 +244,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.MeterEnergy - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.MeterEnergy - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -559,7 +255,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -574,7 +270,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -589,7 +285,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -608,7 +304,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -623,7 +319,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -642,7 +338,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -661,7 +357,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -684,175 +380,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -867,7 +395,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -886,7 +414,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -905,7 +433,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -928,7 +456,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -947,7 +475,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -970,7 +498,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -993,7 +521,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -1020,207 +548,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.MeterEnergy - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.MeterEnergy - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1231,7 +559,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1246,7 +574,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1261,7 +589,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1280,7 +608,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1295,7 +623,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1314,7 +642,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1333,7 +661,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1356,175 +684,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1539,7 +699,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1558,7 +718,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1577,7 +737,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier @@ -1600,7 +760,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1619,7 +779,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1642,7 +802,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1665,7 +825,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier @@ -1692,207 +852,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.MeterEnergy - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery == nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -1907,7 +867,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -1926,7 +886,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -1945,7 +905,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -1968,7 +928,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -1987,7 +947,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2010,7 +970,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2033,7 +993,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2060,207 +1020,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -2279,7 +1039,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -2302,7 +1062,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -2325,7 +1085,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery @@ -2352,7 +1112,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2375,7 +1135,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2402,7 +1162,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2429,7 +1189,7 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren }, } - case battery != nil && chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: + case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery @@ -2459,238 +1219,6 @@ func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurren phaseVoltages: phaseVoltages, }, } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.MeterEnergy - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } - - case battery != nil && chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: - return &struct { - *BenderCC - api.Battery - api.ChargeRater - api.Identifier - api.Meter - api.MeterEnergy - api.PhaseCurrents - api.PhaseVoltages - }{ - BenderCC: base, - Battery: &decorateBenderCCBatteryImpl{ - battery: battery, - }, - ChargeRater: &decorateBenderCCChargeRaterImpl{ - chargeRater: chargeRater, - }, - Identifier: &decorateBenderCCIdentifierImpl{ - identifier: identifier, - }, - Meter: &decorateBenderCCMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateBenderCCMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ - phaseCurrents: phaseCurrents, - }, - PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ - phaseVoltages: phaseVoltages, - }, - } } return nil @@ -2704,14 +1232,6 @@ func (impl *decorateBenderCCBatteryImpl) Soc() (float64, error) { return impl.battery() } -type decorateBenderCCChargeRaterImpl struct { - chargeRater func() (float64, error) -} - -func (impl *decorateBenderCCChargeRaterImpl) ChargedEnergy() (float64, error) { - return impl.chargeRater() -} - type decorateBenderCCIdentifierImpl struct { identifier func() (string, error) } diff --git a/charger/fronius-wattpilot.go b/charger/fronius-wattpilot.go index 2a39cf015..994e3f73a 100644 --- a/charger/fronius-wattpilot.go +++ b/charger/fronius-wattpilot.go @@ -100,16 +100,8 @@ func (c *Wattpilot) CurrentPower() (float64, error) { return c.api.GetPower() } -var _ api.ChargeRater = (*Wattpilot)(nil) - -// ChargedEnergy implements the api.ChargeRater interface -func (c *Wattpilot) ChargedEnergy() (float64, error) { - resp, err := c.api.GetProperty("wh") - if err != nil { - return 0, err - } - return resp.(float64) / 1e3, err -} +// removed: https://github.com/evcc-io/evcc/issues/13726 +// var _ api.ChargeRater = (*Wattpilot)(nil) var _ api.PhaseCurrents = (*Wattpilot)(nil) diff --git a/charger/go-e.go b/charger/go-e.go index 02fbaf5c2..b920f42e9 100644 --- a/charger/go-e.go +++ b/charger/go-e.go @@ -149,17 +149,8 @@ func (c *GoE) CurrentPower() (float64, error) { return resp.CurrentPower(), err } -var _ api.ChargeRater = (*GoE)(nil) - -// ChargedEnergy implements the api.ChargeRater interface -func (c *GoE) ChargedEnergy() (float64, error) { - resp, err := c.api.Status() - if err != nil { - return 0, err - } - - return resp.ChargedEnergy(), err -} +// removed: https://github.com/evcc-io/evcc/issues/13726 +// var _ api.ChargeRater = (*GoE)(nil) var _ api.PhaseCurrents = (*GoE)(nil)