Keba: fix wrong session energy (#8593)
This commit is contained in:
parent
f577724c52
commit
323defd525
2 changed files with 39 additions and 728 deletions
|
|
@ -64,7 +64,7 @@ func init() {
|
|||
registry.Add("keba-modbus", NewKebaFromConfig)
|
||||
}
|
||||
|
||||
// go:generate go run ../cmd/tools/decorate.go -f decorateKeba -b *Keba -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.ChargeRater,ChargedEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error"
|
||||
// go:generate go run ../cmd/tools/decorate.go -f decorateKeba -b *Keba -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error"
|
||||
|
||||
// NewKebaFromConfig creates a new Keba ModbusTCP charger
|
||||
func NewKebaFromConfig(other map[string]interface{}) (api.Charger, error) {
|
||||
|
|
@ -83,9 +83,9 @@ func NewKebaFromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
|
||||
// features
|
||||
var (
|
||||
currentPower, totalEnergy, chargedEnergy func() (float64, error)
|
||||
currents func() (float64, float64, float64, error)
|
||||
identify func() (string, error)
|
||||
currentPower, totalEnergy func() (float64, error)
|
||||
currents func() (float64, float64, float64, error)
|
||||
identify func() (string, error)
|
||||
)
|
||||
|
||||
b, err := wb.conn.ReadHoldingRegisters(kebaRegProduct, 2)
|
||||
|
|
@ -96,7 +96,6 @@ func NewKebaFromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
if features := binary.BigEndian.Uint32(b); (features/10)%10 > 0 {
|
||||
currentPower = wb.currentPower
|
||||
totalEnergy = wb.totalEnergy
|
||||
chargedEnergy = wb.chargedEnergy
|
||||
currents = wb.currents
|
||||
}
|
||||
|
||||
|
|
@ -125,7 +124,7 @@ func NewKebaFromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
go wb.heartbeat(900 * time.Millisecond * time.Duration(timeout))
|
||||
}
|
||||
|
||||
return decorateKeba(wb, currentPower, totalEnergy, chargedEnergy, currents, identify, phases), nil
|
||||
return decorateKeba(wb, currentPower, totalEnergy, currents, identify, phases), nil
|
||||
}
|
||||
|
||||
// NewKeba creates a new charger
|
||||
|
|
@ -244,15 +243,7 @@ func (wb *Keba) totalEnergy() (float64, error) {
|
|||
return float64(binary.BigEndian.Uint32(b)) / 1e4, nil
|
||||
}
|
||||
|
||||
// chargedEnergy implements the api.ChargeRater interface
|
||||
func (wb *Keba) chargedEnergy() (float64, error) {
|
||||
b, err := wb.conn.ReadHoldingRegisters(kebaRegSessionEnergy, 2)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return float64(binary.BigEndian.Uint32(b)) / 1e4, nil
|
||||
}
|
||||
// chargedEnergy is not supported since Keba does not reset it when plugging in a new car
|
||||
|
||||
// currents implements the api.PhaseCurrents interface
|
||||
func (wb *Keba) currents() (float64, float64, float64, error) {
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import (
|
|||
"github.com/evcc-io/evcc/api"
|
||||
)
|
||||
|
||||
func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() (float64, error), chargeRater func() (float64, error), phaseCurrents func() (float64, float64, float64, error), identifier func() (string, error), phaseSwitcher func(int) error) api.Charger {
|
||||
func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), identifier func() (string, error), phaseSwitcher func(int) error) api.Charger {
|
||||
switch {
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return base
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -22,7 +22,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.MeterEnergy
|
||||
|
|
@ -33,7 +33,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -48,67 +48,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.MeterEnergy
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.PhaseCurrents
|
||||
|
|
@ -119,7 +59,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -134,7 +74,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.MeterEnergy
|
||||
|
|
@ -149,7 +89,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -168,83 +108,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -255,7 +119,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -270,7 +134,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -285,7 +149,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -304,83 +168,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -395,7 +183,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -414,7 +202,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -433,7 +221,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -456,99 +244,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.PhaseSwitcher
|
||||
|
|
@ -559,7 +255,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -574,7 +270,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.MeterEnergy
|
||||
|
|
@ -589,7 +285,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -608,83 +304,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.PhaseCurrents
|
||||
|
|
@ -699,7 +319,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -718,7 +338,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.MeterEnergy
|
||||
|
|
@ -737,7 +357,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Meter
|
||||
|
|
@ -760,99 +380,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -867,7 +395,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -886,7 +414,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -905,7 +433,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -928,99 +456,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -1039,7 +475,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -1062,7 +498,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -1085,7 +521,7 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
},
|
||||
}
|
||||
|
||||
case chargeRater == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.Identifier
|
||||
|
|
@ -1111,127 +547,11 @@ func decorateKeba(base *Keba, meter func() (float64, error), meterEnergy func()
|
|||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case chargeRater != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
return &struct {
|
||||
*Keba
|
||||
api.ChargeRater
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
}{
|
||||
Keba: base,
|
||||
ChargeRater: &decorateKebaChargeRaterImpl{
|
||||
chargeRater: chargeRater,
|
||||
},
|
||||
Identifier: &decorateKebaIdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateKebaMeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateKebaMeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateKebaPhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateKebaPhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type decorateKebaChargeRaterImpl struct {
|
||||
chargeRater func() (float64, error)
|
||||
}
|
||||
|
||||
func (impl *decorateKebaChargeRaterImpl) ChargedEnergy() (float64, error) {
|
||||
return impl.chargeRater()
|
||||
}
|
||||
|
||||
type decorateKebaIdentifierImpl struct {
|
||||
identifier func() (string, error)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue