chore: limit SocLimiter to devices providing Soc
This commit is contained in:
parent
04223e501d
commit
8cb70a1cb7
3 changed files with 8 additions and 97 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue