From 8cb70a1cb7ff0db28c2e443315575a8f4012aa30 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 5 Mar 2025 15:58:49 +0100 Subject: [PATCH] chore: limit SocLimiter to devices providing Soc --- charger/heatpump_decorators.go | 51 ++-------------------------------- charger/sgready_decorators.go | 51 ++-------------------------------- cmd/decorate/decorate.go | 3 +- 3 files changed, 8 insertions(+), 97 deletions(-) diff --git a/charger/heatpump_decorators.go b/charger/heatpump_decorators.go index 9a44bb2a6..c5c0aef81 100644 --- a/charger/heatpump_decorators.go +++ b/charger/heatpump_decorators.go @@ -8,10 +8,10 @@ import ( func decorateHeatpump(base *Heatpump, meter func() (float64, error), meterEnergy func() (float64, error), battery func() (float64, error), socLimiter func() (int64, error)) api.Charger { switch { - case battery == nil && meter == nil && socLimiter == nil: + case battery == nil && meter == nil: return base - case battery == nil && meter != nil && meterEnergy == nil && socLimiter == nil: + case battery == nil && meter != nil && meterEnergy == nil: return &struct { *Heatpump api.Meter @@ -22,7 +22,7 @@ func decorateHeatpump(base *Heatpump, meter func() (float64, error), meterEnergy }, } - case battery == nil && meter != nil && meterEnergy != nil && socLimiter == nil: + case battery == nil && meter != nil && meterEnergy != nil: return &struct { *Heatpump api.Meter @@ -82,51 +82,6 @@ func decorateHeatpump(base *Heatpump, meter func() (float64, error), meterEnergy }, } - case battery == nil && meter == nil && socLimiter != nil: - return &struct { - *Heatpump - api.SocLimiter - }{ - Heatpump: base, - SocLimiter: &decorateHeatpumpSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case battery == nil && meter != nil && meterEnergy == nil && socLimiter != nil: - return &struct { - *Heatpump - api.Meter - api.SocLimiter - }{ - Heatpump: base, - Meter: &decorateHeatpumpMeterImpl{ - meter: meter, - }, - SocLimiter: &decorateHeatpumpSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case battery == nil && meter != nil && meterEnergy != nil && socLimiter != nil: - return &struct { - *Heatpump - api.Meter - api.MeterEnergy - api.SocLimiter - }{ - Heatpump: base, - Meter: &decorateHeatpumpMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateHeatpumpMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - SocLimiter: &decorateHeatpumpSocLimiterImpl{ - socLimiter: socLimiter, - }, - } - case battery != nil && meter == nil && socLimiter != nil: return &struct { *Heatpump diff --git a/charger/sgready_decorators.go b/charger/sgready_decorators.go index c127e30b9..fad6c1c30 100644 --- a/charger/sgready_decorators.go +++ b/charger/sgready_decorators.go @@ -8,10 +8,10 @@ import ( func decorateSgReady(base *SgReady, meter func() (float64, error), meterEnergy func() (float64, error), battery func() (float64, error), socLimiter func() (int64, error)) api.Charger { switch { - case battery == nil && meter == nil && socLimiter == nil: + case battery == nil && meter == nil: return base - case battery == nil && meter != nil && meterEnergy == nil && socLimiter == nil: + case battery == nil && meter != nil && meterEnergy == nil: return &struct { *SgReady api.Meter @@ -22,7 +22,7 @@ func decorateSgReady(base *SgReady, meter func() (float64, error), meterEnergy f }, } - case battery == nil && meter != nil && meterEnergy != nil && socLimiter == nil: + case battery == nil && meter != nil && meterEnergy != nil: return &struct { *SgReady api.Meter @@ -82,51 +82,6 @@ func decorateSgReady(base *SgReady, meter func() (float64, error), meterEnergy f }, } - case battery == nil && meter == nil && socLimiter != nil: - return &struct { - *SgReady - api.SocLimiter - }{ - SgReady: base, - SocLimiter: &decorateSgReadySocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case battery == nil && meter != nil && meterEnergy == nil && socLimiter != nil: - return &struct { - *SgReady - api.Meter - api.SocLimiter - }{ - SgReady: base, - Meter: &decorateSgReadyMeterImpl{ - meter: meter, - }, - SocLimiter: &decorateSgReadySocLimiterImpl{ - socLimiter: socLimiter, - }, - } - - case battery == nil && meter != nil && meterEnergy != nil && socLimiter != nil: - return &struct { - *SgReady - api.Meter - api.MeterEnergy - api.SocLimiter - }{ - SgReady: base, - Meter: &decorateSgReadyMeterImpl{ - meter: meter, - }, - MeterEnergy: &decorateSgReadyMeterEnergyImpl{ - meterEnergy: meterEnergy, - }, - SocLimiter: &decorateSgReadySocLimiterImpl{ - socLimiter: socLimiter, - }, - } - case battery != nil && meter == nil && socLimiter != nil: return &struct { *SgReady diff --git a/cmd/decorate/decorate.go b/cmd/decorate/decorate.go index 5f4a5f2b3..8e12611b8 100644 --- a/cmd/decorate/decorate.go +++ b/cmd/decorate/decorate.go @@ -48,6 +48,7 @@ var a struct { api.Battery api.BatteryCapacity api.BatteryController + api.SocLimiter } func typ(i any) string { @@ -58,7 +59,7 @@ var dependents = map[string][]string{ typ(&a.Meter): {typ(&a.MeterEnergy), typ(&a.PhaseCurrents), typ(&a.PhaseVoltages), typ(&a.PhasePowers), typ(&a.MaxACPowerGetter)}, typ(&a.PhaseCurrents): {typ(&a.PhasePowers)}, // phase powers are only used to determine currents sign typ(&a.PhaseSwitcher): {typ(&a.PhaseGetter)}, - typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.BatteryController)}, + typ(&a.Battery): {typ(&a.BatteryCapacity), typ(&a.BatteryController), typ(&a.SocLimiter)}, } // hasIntersection returns if the slices intersect