116 lines
3 KiB
Go
116 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 decorateOCPP(base *OCPP, meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), currentGetter func() (float64, error), phaseSwitcher func(int) error, battery func() (float64, error)) api.Charger {
|
|
caps := make(map[reflect.Type]any)
|
|
|
|
if meter != nil {
|
|
caps[reflect.TypeFor[api.Meter]()] = &decorateOCPPMeterImpl{meter: meter}
|
|
}
|
|
|
|
if meterEnergy != nil {
|
|
caps[reflect.TypeFor[api.MeterEnergy]()] = &decorateOCPPMeterEnergyImpl{meterEnergy: meterEnergy}
|
|
}
|
|
|
|
if phaseCurrents != nil {
|
|
caps[reflect.TypeFor[api.PhaseCurrents]()] = &decorateOCPPPhaseCurrentsImpl{phaseCurrents: phaseCurrents}
|
|
}
|
|
|
|
if phaseVoltages != nil {
|
|
caps[reflect.TypeFor[api.PhaseVoltages]()] = &decorateOCPPPhaseVoltagesImpl{phaseVoltages: phaseVoltages}
|
|
}
|
|
|
|
if currentGetter != nil {
|
|
caps[reflect.TypeFor[api.CurrentGetter]()] = &decorateOCPPCurrentGetterImpl{currentGetter: currentGetter}
|
|
}
|
|
|
|
if phaseSwitcher != nil {
|
|
caps[reflect.TypeFor[api.PhaseSwitcher]()] = &decorateOCPPPhaseSwitcherImpl{phaseSwitcher: phaseSwitcher}
|
|
}
|
|
|
|
if battery != nil {
|
|
caps[reflect.TypeFor[api.Battery]()] = &decorateOCPPBatteryImpl{battery: battery}
|
|
}
|
|
|
|
if len(caps) == 0 {
|
|
return base
|
|
}
|
|
|
|
return &decorateOCPPCapable{OCPP: base, caps: caps}
|
|
}
|
|
|
|
type decorateOCPPCapable struct {
|
|
*OCPP
|
|
caps map[reflect.Type]any
|
|
}
|
|
|
|
func (d *decorateOCPPCapable) Capability(typ reflect.Type) (any, bool) {
|
|
c, ok := d.caps[typ]
|
|
if !ok && reflect.TypeOf(d).Implements(typ) {
|
|
return d, true
|
|
}
|
|
return c, ok
|
|
}
|
|
|
|
type decorateOCPPBatteryImpl struct {
|
|
battery func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPBatteryImpl) Soc() (float64, error) {
|
|
return impl.battery()
|
|
}
|
|
|
|
type decorateOCPPCurrentGetterImpl struct {
|
|
currentGetter func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPCurrentGetterImpl) GetMaxCurrent() (float64, error) {
|
|
return impl.currentGetter()
|
|
}
|
|
|
|
type decorateOCPPMeterImpl struct {
|
|
meter func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPMeterImpl) CurrentPower() (float64, error) {
|
|
return impl.meter()
|
|
}
|
|
|
|
type decorateOCPPMeterEnergyImpl struct {
|
|
meterEnergy func() (float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPMeterEnergyImpl) TotalEnergy() (float64, error) {
|
|
return impl.meterEnergy()
|
|
}
|
|
|
|
type decorateOCPPPhaseCurrentsImpl struct {
|
|
phaseCurrents func() (float64, float64, float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPPhaseCurrentsImpl) Currents() (float64, float64, float64, error) {
|
|
return impl.phaseCurrents()
|
|
}
|
|
|
|
type decorateOCPPPhaseSwitcherImpl struct {
|
|
phaseSwitcher func(int) error
|
|
}
|
|
|
|
func (impl *decorateOCPPPhaseSwitcherImpl) Phases1p3p(p0 int) error {
|
|
return impl.phaseSwitcher(p0)
|
|
}
|
|
|
|
type decorateOCPPPhaseVoltagesImpl struct {
|
|
phaseVoltages func() (float64, float64, float64, error)
|
|
}
|
|
|
|
func (impl *decorateOCPPPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) {
|
|
return impl.phaseVoltages()
|
|
}
|