diff options
Diffstat (limited to 'src/rhctl/audio_switch_command.go')
-rw-r--r-- | src/rhctl/audio_switch_command.go | 217 |
1 files changed, 205 insertions, 12 deletions
diff --git a/src/rhctl/audio_switch_command.go b/src/rhctl/audio_switch_command.go index 84b7052..53da812 100644 --- a/src/rhctl/audio_switch_command.go +++ b/src/rhctl/audio_switch_command.go @@ -36,13 +36,32 @@ const ( SwitchOCNumMax SwitchOCNum = 8 ) +// +// Unit ID +// + type SwitchUnitID uint func (u SwitchUnitID) String() string { return strconv.FormatUint(uint64(u), 10) } -func (u *SwitchUnitID) FromString(str string) error { +func (u SwitchUnitID) MarshalText() (data []byte, err error) { + data = []byte(u.String()) + return +} + +func (u SwitchUnitID) MarshalJSON() (data []byte, err error) { + data = []byte(u.String()) + return +} + +func (u SwitchUnitID) MarshalTOML() (data []byte, err error) { + data = []byte(u.String()) + return +} + +func (u *SwitchUnitID) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -54,17 +73,44 @@ func (u *SwitchUnitID) FromString(str string) error { return nil } +func (u *SwitchUnitID) UnmarshalText(data []byte) error { + return u.fromString(string(data)) +} + +func (u *SwitchUnitID) UnmarshalJSON(data []byte) error { + return u.fromString(string(data)) +} + func (u *SwitchUnitID) UnmarshalTOML(data []byte) error { - return u.FromString(string(data)) + return u.fromString(string(data)) } +// +// Audio Input +// + type SwitchInputNum uint func (i SwitchInputNum) String() string { return strconv.FormatUint(uint64(i), 10) } -func (i *SwitchInputNum) FromString(str string) error { +func (i SwitchInputNum) MarshalText() (data []byte, err error) { + data = []byte(i.String()) + return +} + +func (i SwitchInputNum) MarshalJSON() (data []byte, err error) { + data = []byte(i.String()) + return +} + +func (i SwitchInputNum) MarshalTOML() (data []byte, err error) { + data = []byte(i.String()) + return +} + +func (i *SwitchInputNum) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -76,17 +122,44 @@ func (i *SwitchInputNum) FromString(str string) error { return nil } +func (i *SwitchInputNum) UnmarshalText(data []byte) error { + return i.fromString(string(data)) +} + +func (i *SwitchInputNum) UnmarshalJSON(data []byte) error { + return i.fromString(string(data)) +} + func (i *SwitchInputNum) UnmarshalTOML(data []byte) error { - return i.FromString(string(data)) + return i.fromString(string(data)) } +// +// Audio Output +// + type SwitchOutputNum uint func (o SwitchOutputNum) String() string { return strconv.FormatUint(uint64(o), 10) } -func (o *SwitchOutputNum) FromString(str string) error { +func (o SwitchOutputNum) MarshalText() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o SwitchOutputNum) MarshalJSON() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o SwitchOutputNum) MarshalTOML() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o *SwitchOutputNum) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -98,13 +171,44 @@ func (o *SwitchOutputNum) FromString(str string) error { return nil } +func (o *SwitchOutputNum) UnmarshalText(data []byte) error { + return o.fromString(string(data)) +} + +func (o *SwitchOutputNum) UnmarshalJSON(data []byte) error { + return o.fromString(string(data)) +} + +func (o *SwitchOutputNum) UnmarshalTOML(data []byte) error { + return o.fromString(string(data)) +} + +// +// General-Purpose Input +// + type SwitchGPINum uint func (g SwitchGPINum) String() string { return strconv.FormatUint(uint64(g), 10) } -func (g *SwitchGPINum) FromString(str string) error { +func (g SwitchGPINum) MarshalText() (data []byte, err error) { + data = []byte(g.String()) + return +} + +func (g SwitchGPINum) MarshalJSON() (data []byte, err error) { + data = []byte(g.String()) + return +} + +func (g SwitchGPINum) MarshalTOML() (data []byte, err error) { + data = []byte(g.String()) + return +} + +func (g *SwitchGPINum) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -116,13 +220,44 @@ func (g *SwitchGPINum) FromString(str string) error { return nil } +func (g *SwitchGPINum) UnmarshalText(data []byte) error { + return g.fromString(string(data)) +} + +func (g *SwitchGPINum) UnmarshalJSON(data []byte) error { + return g.fromString(string(data)) +} + +func (g *SwitchGPINum) UnmarshalTOML(data []byte) error { + return g.fromString(string(data)) +} + +// +// Relay Output +// + type SwitchRelayNum uint func (r SwitchRelayNum) String() string { return strconv.FormatUint(uint64(r), 10) } -func (r *SwitchRelayNum) FromString(str string) error { +func (r SwitchRelayNum) MarshalText() (data []byte, err error) { + data = []byte(r.String()) + return +} + +func (r SwitchRelayNum) MarshalJSON() (data []byte, err error) { + data = []byte(r.String()) + return +} + +func (r SwitchRelayNum) MarshalTOML() (data []byte, err error) { + data = []byte(r.String()) + return +} + +func (r *SwitchRelayNum) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -134,13 +269,44 @@ func (r *SwitchRelayNum) FromString(str string) error { return nil } +func (r *SwitchRelayNum) UnmarshalText(data []byte) error { + return r.fromString(string(data)) +} + +func (r *SwitchRelayNum) UnmarshalJSON(data []byte) error { + return r.fromString(string(data)) +} + +func (r *SwitchRelayNum) UnmarshalTOML(data []byte) error { + return r.fromString(string(data)) +} + +// +// Open-Collector Output +// + type SwitchOCNum uint func (o SwitchOCNum) String() string { return strconv.FormatUint(uint64(o), 10) } -func (o *SwitchOCNum) FromString(str string) error { +func (o SwitchOCNum) MarshalText() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o SwitchOCNum) MarshalJSON() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o SwitchOCNum) MarshalTOML() (data []byte, err error) { + data = []byte(o.String()) + return +} + +func (o *SwitchOCNum) fromString(str string) error { vuint, err := strconv.ParseUint(str, 10, 32) if err != nil { return err @@ -152,6 +318,29 @@ func (o *SwitchOCNum) FromString(str string) error { return nil } +func (o *SwitchOCNum) UnmarshalText(data []byte) error { + return o.fromString(string(data)) +} + +func (o *SwitchOCNum) UnmarshalJSON(data []byte) error { + return o.fromString(string(data)) +} + +func (o *SwitchOCNum) UnmarshalTOML(data []byte) error { + return o.fromString(string(data)) +} + +// +// Command Mnemonic +// '*' and Caps are untouched, smaller letters will be replaced: +// u ... Unit ID +// ii ... Audio Input +// o ... Audio Output +// gg ... General-Purpose Input +// r ... Relay Output +// c ... Open-Collector Output +// + type SwitchCmdString string const ( @@ -223,6 +412,10 @@ func (c SwitchCmdString) Generate(args ...interface{}) (string, error) { return s, nil } +// +// Command +// + type SwitchCommand struct { Cmd SwitchCmdString Args []interface{} @@ -260,7 +453,7 @@ func SwitchCommandParseAudio(args []string) (cmdstr SwitchCmdString, cmdargs []i onum := SwitchOutputNum(0) if strings.ToLower(args[0]) != "all" { - if err = onum.FromString(args[0]); err != nil { + if err = onum.fromString(args[0]); err != nil { return } cmdargs = append(cmdargs, onum) @@ -268,7 +461,7 @@ func SwitchCommandParseAudio(args []string) (cmdstr SwitchCmdString, cmdargs []i inum := SwitchInputNum(0) if len(args) == 3 { - if err = inum.FromString(args[2]); err != nil { + if err = inum.fromString(args[2]); err != nil { return } cmdargs = append(cmdargs, inum) @@ -360,7 +553,7 @@ func SwitchCommandParseRelay(args []string) (cmdstr SwitchCmdString, cmdargs []i return } var num SwitchRelayNum - if err = num.FromString(args[0]); err != nil { + if err = num.fromString(args[0]); err != nil { return } cmdargs = append(cmdargs, num) @@ -384,7 +577,7 @@ func SwitchCommandParseOC(args []string) (cmdstr SwitchCmdString, cmdargs []inte return } var num SwitchOCNum - if err = num.FromString(args[0]); err != nil { + if err = num.fromString(args[0]); err != nil { return } cmdargs = append(cmdargs, num) |