Warp2: add voltages (#10168)
This commit is contained in:
parent
5fbcec599f
commit
54f9ec36d5
3 changed files with 748 additions and 48 deletions
|
|
@ -1,9 +1,10 @@
|
|||
package warp
|
||||
|
||||
const (
|
||||
FeatureMeter = "meter"
|
||||
FeatureMeterPhases = "meter_phases"
|
||||
FeatureNfc = "nfc"
|
||||
FeatureMeter = "meter"
|
||||
FeatureMeterAllValues = "meter_all_values"
|
||||
FeatureMeterPhases = "meter_phases"
|
||||
FeatureNfc = "nfc"
|
||||
)
|
||||
|
||||
// https://www.warp-charger.com/api.html#evse_state
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func init() {
|
|||
registry.Add("warp-fw2", NewWarp2FromConfig) // deprecated
|
||||
}
|
||||
|
||||
// go:generate go run ../cmd/tools/decorate.go -f decorateWarp2 -b *Warp2 -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error"
|
||||
// go:generate go run ../cmd/tools/decorate.go -f decorateWarp2 -b *Warp2 -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error"
|
||||
|
||||
// NewWarpFromConfig creates a new configurable charger
|
||||
func NewWarp2FromConfig(other map[string]interface{}) (api.Charger, error) {
|
||||
|
|
@ -66,9 +66,10 @@ func NewWarp2FromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
totalEnergy = wb.totalEnergy
|
||||
}
|
||||
|
||||
var currents func() (float64, float64, float64, error)
|
||||
var currents, voltages func() (float64, float64, float64, error)
|
||||
if wb.hasFeature(cc.Topic, warp.FeatureMeterPhases) {
|
||||
currents = wb.currents
|
||||
voltages = wb.voltages
|
||||
}
|
||||
|
||||
var identity func() (string, error)
|
||||
|
|
@ -83,7 +84,7 @@ func NewWarp2FromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
}
|
||||
}
|
||||
|
||||
return decorateWarp2(wb, currentPower, totalEnergy, currents, identity, phases), err
|
||||
return decorateWarp2(wb, currentPower, totalEnergy, currents, voltages, identity, phases), err
|
||||
}
|
||||
|
||||
// NewWarp2 creates a new configurable charger
|
||||
|
|
@ -239,24 +240,42 @@ func (wb *Warp2) totalEnergy() (float64, error) {
|
|||
return res.EnergyAbs, err
|
||||
}
|
||||
|
||||
func (wb *Warp2) meterValues() ([]float64, error) {
|
||||
s, err := wb.meterDetailsG()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res []float64
|
||||
if err := json.Unmarshal([]byte(s), &res); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(res) <= 5 {
|
||||
return nil, errors.New("invalid length")
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// currents implements the api.MeterCurrrents interface
|
||||
func (wb *Warp2) currents() (float64, float64, float64, error) {
|
||||
var res []float64
|
||||
|
||||
s, err := wb.meterDetailsG()
|
||||
res, err := wb.meterValues()
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal([]byte(s), &res); err != nil {
|
||||
return res[3], res[4], res[5], nil
|
||||
}
|
||||
|
||||
// voltages implements the api.MeterVoltages interface
|
||||
func (wb *Warp2) voltages() (float64, float64, float64, error) {
|
||||
res, err := wb.meterValues()
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
|
||||
if len(res) <= 5 {
|
||||
return 0, 0, 0, errors.New("invalid length")
|
||||
}
|
||||
|
||||
return res[3], res[4], res[5], nil
|
||||
return res[0], res[1], res[2], nil
|
||||
}
|
||||
|
||||
func (wb *Warp2) identify() (string, error) {
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import (
|
|||
"github.com/evcc-io/evcc/api"
|
||||
)
|
||||
|
||||
func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), identifier func() (string, error), phaseSwitcher func(int) error) api.Charger {
|
||||
func decorateWarp2(base *Warp2, 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) api.Charger {
|
||||
switch {
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return base
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -22,7 +22,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
|
|
@ -33,7 +33,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -48,7 +48,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseCurrents
|
||||
|
|
@ -59,7 +59,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -74,7 +74,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
|
|
@ -89,7 +89,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -108,7 +108,143 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -119,7 +255,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -134,7 +270,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -149,7 +285,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -168,7 +304,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -183,7 +319,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -202,7 +338,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -221,7 +357,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -244,7 +380,175 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher == nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseSwitcher
|
||||
|
|
@ -255,7 +559,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -270,7 +574,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
|
|
@ -285,7 +589,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -304,7 +608,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseCurrents
|
||||
|
|
@ -319,7 +623,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -338,7 +642,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
|
|
@ -357,7 +661,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
|
|
@ -380,7 +684,175 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -395,7 +867,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -414,7 +886,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -433,7 +905,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -456,7 +928,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -475,7 +947,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -498,7 +970,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -521,7 +993,7 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil:
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages == nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
|
|
@ -547,6 +1019,206 @@ func decorateWarp2(base *Warp2, meter func() (float64, error), meterEnergy func(
|
|||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter == nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
|
||||
case identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseSwitcher != nil && phaseVoltages != nil:
|
||||
return &struct {
|
||||
*Warp2
|
||||
api.Identifier
|
||||
api.Meter
|
||||
api.MeterEnergy
|
||||
api.PhaseCurrents
|
||||
api.PhaseSwitcher
|
||||
api.PhaseVoltages
|
||||
}{
|
||||
Warp2: base,
|
||||
Identifier: &decorateWarp2IdentifierImpl{
|
||||
identifier: identifier,
|
||||
},
|
||||
Meter: &decorateWarp2MeterImpl{
|
||||
meter: meter,
|
||||
},
|
||||
MeterEnergy: &decorateWarp2MeterEnergyImpl{
|
||||
meterEnergy: meterEnergy,
|
||||
},
|
||||
PhaseCurrents: &decorateWarp2PhaseCurrentsImpl{
|
||||
phaseCurrents: phaseCurrents,
|
||||
},
|
||||
PhaseSwitcher: &decorateWarp2PhaseSwitcherImpl{
|
||||
phaseSwitcher: phaseSwitcher,
|
||||
},
|
||||
PhaseVoltages: &decorateWarp2PhaseVoltagesImpl{
|
||||
phaseVoltages: phaseVoltages,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -591,3 +1263,11 @@ type decorateWarp2PhaseSwitcherImpl struct {
|
|||
func (impl *decorateWarp2PhaseSwitcherImpl) Phases1p3p(phases int) error {
|
||||
return impl.phaseSwitcher(phases)
|
||||
}
|
||||
|
||||
type decorateWarp2PhaseVoltagesImpl struct {
|
||||
phaseVoltages func() (float64, float64, float64, error)
|
||||
}
|
||||
|
||||
func (impl *decorateWarp2PhaseVoltagesImpl) Voltages() (float64, float64, float64, error) {
|
||||
return impl.phaseVoltages()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue