38 lines
723 B
Go
38 lines
723 B
Go
package api
|
|
|
|
import (
|
|
"encoding"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// ChargeModeString converts string to ChargeMode
|
|
func ChargeModeString(mode string) (ChargeMode, error) {
|
|
switch strings.ToLower(mode) {
|
|
case string(ModeEmpty):
|
|
return ModeEmpty, nil // undefined
|
|
case string(ModeNow):
|
|
return ModeNow, nil
|
|
case string(ModeMinPV):
|
|
return ModeMinPV, nil
|
|
case string(ModePV):
|
|
return ModePV, nil
|
|
case string(ModeOff):
|
|
return ModeOff, nil
|
|
default:
|
|
return "", fmt.Errorf("invalid value: %s", mode)
|
|
}
|
|
}
|
|
|
|
var _ encoding.TextUnmarshaler = (*ChargeMode)(nil)
|
|
|
|
func (c *ChargeMode) UnmarshalText(text []byte) error {
|
|
casted, err := ChargeModeString(string(text))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
*c = casted
|
|
|
|
return nil
|
|
}
|