Revert "chore: make decorate dependency-aware (#15434)"
Some checks failed
Release / call-build-workflow (push) Has been cancelled
Release / Publish Docker :release (push) Has been cancelled
Release / Github & APT (push) Has been cancelled
Release / Demo (push) Has been cancelled
Release / Hassio Addon (push) Has been cancelled

This reverts commit 15a3deef0a.
This commit is contained in:
andig 2024-08-20 20:51:59 +02:00
parent d9dd50155f
commit d8aab205b1
30 changed files with 7149 additions and 5049 deletions

View file

@ -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

View file

@ -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

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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

View file

@ -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