package types import ( "encoding/json" "fmt" ) type ANCMode int const ( ANCModeUnknown ANCMode = iota ANCModeOff ANCModeTransparency ANCModeAdaptive ANCModeOn ) func (ancMode *ANCMode) Set(value string) (err error) { *ancMode, err = ParseANCMode(value) return } func (ancMode ANCMode) String() string { switch ancMode { case ANCModeOff: return "Off" case ANCModeOn: return "On" case ANCModeTransparency: return "Transparency" case ANCModeAdaptive: return "Adaptive" } return "" } func (ancMode *ANCMode) UnmarshalJSON(data []byte) error { var ancModeStr string if err := json.Unmarshal(data, &ancModeStr); err != nil { return err } var err error *ancMode, err = ParseANCMode(ancModeStr) return err } func (ancMode ANCMode) GetValue() string { switch ancMode { case ANCModeOff: return "off" case ANCModeOn: return "anc" case ANCModeTransparency: return "transparency" case ANCModeAdaptive: return "adaptive" } return "" } func ParseANCMode(ancModeStr string) (ANCMode, error) { switch ancModeStr { case "off": return ANCModeOff, nil case "on": return ANCModeOn, nil case "anc": return ANCModeOn, nil case "transparency": return ANCModeTransparency, nil case "adaptive": return ANCModeAdaptive, nil } return ANCModeUnknown, fmt.Errorf("Faild to parse ANC-Mode: %s", ancModeStr) }