evcc-io/charger/bender_decorators.go

137 lines
3.7 KiB
Go

package charger
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"reflect"
"github.com/evcc-io/evcc/api"
)
func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), meterEnergy func() (float64, error), battery func() (float64, error), identifier func() (string, error), chargerEx func(float64) error, phaseSwitcher func(int) error, phaseGetter func() (int, error)) api.Charger {
caps := make(map[reflect.Type]any)
if meter != nil {
caps[reflect.TypeFor[api.Meter]()] = &decorateBenderCCMeterImpl{meter: meter}
}
if phaseCurrents != nil {
caps[reflect.TypeFor[api.PhaseCurrents]()] = &decorateBenderCCPhaseCurrentsImpl{phaseCurrents: phaseCurrents}
}
if phaseVoltages != nil {
caps[reflect.TypeFor[api.PhaseVoltages]()] = &decorateBenderCCPhaseVoltagesImpl{phaseVoltages: phaseVoltages}
}
if meterEnergy != nil {
caps[reflect.TypeFor[api.MeterEnergy]()] = &decorateBenderCCMeterEnergyImpl{meterEnergy: meterEnergy}
}
if battery != nil {
caps[reflect.TypeFor[api.Battery]()] = &decorateBenderCCBatteryImpl{battery: battery}
}
if identifier != nil {
caps[reflect.TypeFor[api.Identifier]()] = &decorateBenderCCIdentifierImpl{identifier: identifier}
}
if chargerEx != nil {
caps[reflect.TypeFor[api.ChargerEx]()] = &decorateBenderCCChargerExImpl{chargerEx: chargerEx}
}
if phaseSwitcher != nil {
caps[reflect.TypeFor[api.PhaseSwitcher]()] = &decorateBenderCCPhaseSwitcherImpl{phaseSwitcher: phaseSwitcher}
}
if phaseGetter != nil {
caps[reflect.TypeFor[api.PhaseGetter]()] = &decorateBenderCCPhaseGetterImpl{phaseGetter: phaseGetter}
}
if len(caps) == 0 {
return base
}
return &decorateBenderCCCapable{BenderCC: base, caps: caps}
}
type decorateBenderCCCapable struct {
*BenderCC
caps map[reflect.Type]any
}
func (d *decorateBenderCCCapable) Capability(typ reflect.Type) (any, bool) {
c, ok := d.caps[typ]
return c, ok
}
type decorateBenderCCBatteryImpl struct {
battery func() (float64, error)
}
func (impl *decorateBenderCCBatteryImpl) Soc() (float64, error) {
return impl.battery()
}
type decorateBenderCCChargerExImpl struct {
chargerEx func(float64) error
}
func (impl *decorateBenderCCChargerExImpl) MaxCurrentMillis(p0 float64) error {
return impl.chargerEx(p0)
}
type decorateBenderCCIdentifierImpl struct {
identifier func() (string, error)
}
func (impl *decorateBenderCCIdentifierImpl) Identify() (string, error) {
return impl.identifier()
}
type decorateBenderCCMeterImpl struct {
meter func() (float64, error)
}
func (impl *decorateBenderCCMeterImpl) CurrentPower() (float64, error) {
return impl.meter()
}
type decorateBenderCCMeterEnergyImpl struct {
meterEnergy func() (float64, error)
}
func (impl *decorateBenderCCMeterEnergyImpl) TotalEnergy() (float64, error) {
return impl.meterEnergy()
}
type decorateBenderCCPhaseCurrentsImpl struct {
phaseCurrents func() (float64, float64, float64, error)
}
func (impl *decorateBenderCCPhaseCurrentsImpl) Currents() (float64, float64, float64, error) {
return impl.phaseCurrents()
}
type decorateBenderCCPhaseGetterImpl struct {
phaseGetter func() (int, error)
}
func (impl *decorateBenderCCPhaseGetterImpl) GetPhases() (int, error) {
return impl.phaseGetter()
}
type decorateBenderCCPhaseSwitcherImpl struct {
phaseSwitcher func(int) error
}
func (impl *decorateBenderCCPhaseSwitcherImpl) Phases1p3p(p0 int) error {
return impl.phaseSwitcher(p0)
}
type decorateBenderCCPhaseVoltagesImpl struct {
phaseVoltages func() (float64, float64, float64, error)
}
func (impl *decorateBenderCCPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) {
return impl.phaseVoltages()
}