evcc-io/charger/shelly_decorators.go
2025-04-18 17:01:46 +02:00

111 lines
2.7 KiB
Go

package charger
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"
)
func decorateShelly(base *Shelly, phaseVoltages func() (float64, float64, float64, error), phaseCurrents func() (float64, float64, float64, error), phasePowers func() (float64, float64, float64, error)) api.Charger {
switch {
case phaseCurrents == nil && phaseVoltages == nil:
return base
case phaseCurrents == nil && phaseVoltages != nil:
return &struct {
*Shelly
api.PhaseVoltages
}{
Shelly: base,
PhaseVoltages: &decorateShellyPhaseVoltagesImpl{
phaseVoltages: phaseVoltages,
},
}
case phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil:
return &struct {
*Shelly
api.PhaseCurrents
}{
Shelly: base,
PhaseCurrents: &decorateShellyPhaseCurrentsImpl{
phaseCurrents: phaseCurrents,
},
}
case phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil:
return &struct {
*Shelly
api.PhaseCurrents
api.PhaseVoltages
}{
Shelly: base,
PhaseCurrents: &decorateShellyPhaseCurrentsImpl{
phaseCurrents: phaseCurrents,
},
PhaseVoltages: &decorateShellyPhaseVoltagesImpl{
phaseVoltages: phaseVoltages,
},
}
case phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil:
return &struct {
*Shelly
api.PhaseCurrents
api.PhasePowers
}{
Shelly: base,
PhaseCurrents: &decorateShellyPhaseCurrentsImpl{
phaseCurrents: phaseCurrents,
},
PhasePowers: &decorateShellyPhasePowersImpl{
phasePowers: phasePowers,
},
}
case phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil:
return &struct {
*Shelly
api.PhaseCurrents
api.PhasePowers
api.PhaseVoltages
}{
Shelly: base,
PhaseCurrents: &decorateShellyPhaseCurrentsImpl{
phaseCurrents: phaseCurrents,
},
PhasePowers: &decorateShellyPhasePowersImpl{
phasePowers: phasePowers,
},
PhaseVoltages: &decorateShellyPhaseVoltagesImpl{
phaseVoltages: phaseVoltages,
},
}
}
return nil
}
type decorateShellyPhaseCurrentsImpl struct {
phaseCurrents func() (float64, float64, float64, error)
}
func (impl *decorateShellyPhaseCurrentsImpl) Currents() (float64, float64, float64, error) {
return impl.phaseCurrents()
}
type decorateShellyPhasePowersImpl struct {
phasePowers func() (float64, float64, float64, error)
}
func (impl *decorateShellyPhasePowersImpl) Powers() (float64, float64, float64, error) {
return impl.phasePowers()
}
type decorateShellyPhaseVoltagesImpl struct {
phaseVoltages func() (float64, float64, float64, error)
}
func (impl *decorateShellyPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) {
return impl.phaseVoltages()
}