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 decorateHomeAssistant(base *HomeAssistant, meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error)) api.Charger { switch { case meter == nil: return base case meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Meter }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, } case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Meter api.MeterEnergy }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Meter api.PhaseCurrents }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *HomeAssistant api.Meter api.MeterEnergy api.PhaseCurrents }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Meter api.PhaseVoltages }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Meter api.MeterEnergy api.PhaseVoltages }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Meter api.PhaseCurrents api.PhaseVoltages }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *HomeAssistant api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ HomeAssistant: base, Meter: &decorateHomeAssistantMeterImpl{ meter: meter, }, MeterEnergy: &decorateHomeAssistantMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateHomeAssistantPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateHomeAssistantPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } } return nil } type decorateHomeAssistantMeterImpl struct { meter func() (float64, error) } func (impl *decorateHomeAssistantMeterImpl) CurrentPower() (float64, error) { return impl.meter() } type decorateHomeAssistantMeterEnergyImpl struct { meterEnergy func() (float64, error) } func (impl *decorateHomeAssistantMeterEnergyImpl) TotalEnergy() (float64, error) { return impl.meterEnergy() } type decorateHomeAssistantPhaseCurrentsImpl struct { phaseCurrents func() (float64, float64, float64, error) } func (impl *decorateHomeAssistantPhaseCurrentsImpl) Currents() (float64, float64, float64, error) { return impl.phaseCurrents() } type decorateHomeAssistantPhaseVoltagesImpl struct { phaseVoltages func() (float64, float64, float64, error) } func (impl *decorateHomeAssistantPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) { return impl.phaseVoltages() }