113 lines
3 KiB
Go
113 lines
3 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 decorateWarpWS(base *WarpWS, meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), identifier func() (string, 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]()] = &decorateWarpWSMeterImpl{meter: meter}
|
|
}
|
|
|
|
if meterEnergy != nil {
|
|
caps[reflect.TypeFor[api.MeterEnergy]()] = &decorateWarpWSMeterEnergyImpl{meterEnergy: meterEnergy}
|
|
}
|
|
|
|
if phaseCurrents != nil {
|
|
caps[reflect.TypeFor[api.PhaseCurrents]()] = &decorateWarpWSPhaseCurrentsImpl{phaseCurrents: phaseCurrents}
|
|
}
|
|
|
|
if phaseVoltages != nil {
|
|
caps[reflect.TypeFor[api.PhaseVoltages]()] = &decorateWarpWSPhaseVoltagesImpl{phaseVoltages: phaseVoltages}
|
|
}
|
|
|
|
if identifier != nil {
|
|
caps[reflect.TypeFor[api.Identifier]()] = &decorateWarpWSIdentifierImpl{identifier: identifier}
|
|
}
|
|
|
|
if phaseSwitcher != nil {
|
|
caps[reflect.TypeFor[api.PhaseSwitcher]()] = &decorateWarpWSPhaseSwitcherImpl{phaseSwitcher: phaseSwitcher}
|
|
}
|
|
|
|
if phaseGetter != nil {
|
|
caps[reflect.TypeFor[api.PhaseGetter]()] = &decorateWarpWSPhaseGetterImpl{phaseGetter: phaseGetter}
|
|
}
|
|
|
|
if len(caps) == 0 {
|
|
return base
|
|
}
|
|
|
|
return &decorateWarpWSCapable{WarpWS: base, caps: caps}
|
|
}
|
|
|
|
type decorateWarpWSCapable struct {
|
|
*WarpWS
|
|
caps map[reflect.Type]any
|
|
}
|
|
|
|
func (d *decorateWarpWSCapable) Capability(typ reflect.Type) (any, bool) {
|
|
c, ok := d.caps[typ]
|
|
return c, ok
|
|
}
|
|
|
|
type decorateWarpWSIdentifierImpl struct {
|
|
identifier func() (string, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSIdentifierImpl) Identify() (string, error) {
|
|
return impl.identifier()
|
|
}
|
|
|
|
type decorateWarpWSMeterImpl struct {
|
|
meter func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSMeterImpl) CurrentPower() (float64, error) {
|
|
return impl.meter()
|
|
}
|
|
|
|
type decorateWarpWSMeterEnergyImpl struct {
|
|
meterEnergy func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSMeterEnergyImpl) TotalEnergy() (float64, error) {
|
|
return impl.meterEnergy()
|
|
}
|
|
|
|
type decorateWarpWSPhaseCurrentsImpl struct {
|
|
phaseCurrents func() (float64, float64, float64, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSPhaseCurrentsImpl) Currents() (float64, float64, float64, error) {
|
|
return impl.phaseCurrents()
|
|
}
|
|
|
|
type decorateWarpWSPhaseGetterImpl struct {
|
|
phaseGetter func() (int, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSPhaseGetterImpl) GetPhases() (int, error) {
|
|
return impl.phaseGetter()
|
|
}
|
|
|
|
type decorateWarpWSPhaseSwitcherImpl struct {
|
|
phaseSwitcher func(int) error
|
|
}
|
|
|
|
func (impl *decorateWarpWSPhaseSwitcherImpl) Phases1p3p(p0 int) error {
|
|
return impl.phaseSwitcher(p0)
|
|
}
|
|
|
|
type decorateWarpWSPhaseVoltagesImpl struct {
|
|
phaseVoltages func() (float64, float64, float64, error)
|
|
}
|
|
|
|
func (impl *decorateWarpWSPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) {
|
|
return impl.phaseVoltages()
|
|
}
|