You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
981 B
48 lines
981 B
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"git.aiterp.net/lucifer3/server/device"
|
|
"strings"
|
|
)
|
|
|
|
type SetState struct {
|
|
ID string
|
|
State device.State
|
|
}
|
|
|
|
func (c SetState) Matches(driver string) (sub string, ok bool) {
|
|
if strings.HasPrefix(c.ID, driver) && strings.HasPrefix(c.ID[len(driver):], ":") {
|
|
return strings.SplitN(c.ID[len(driver)+1:], ":", 2)[0], true
|
|
} else {
|
|
return "", false
|
|
}
|
|
}
|
|
|
|
func (c SetState) CommandDescription() string {
|
|
return fmt.Sprintf("SetState(%s, %s)", c.ID, c.State)
|
|
}
|
|
|
|
func (c SetState) VerboseKey() string {
|
|
return "SetState"
|
|
}
|
|
|
|
type SetStateBatch map[string]device.State
|
|
|
|
func (c SetStateBatch) CommandDescription() string {
|
|
b := strings.Builder{}
|
|
b.WriteByte('\n')
|
|
for key, value := range c {
|
|
b.WriteString(" ")
|
|
b.WriteString(key)
|
|
b.WriteString(": ")
|
|
b.WriteString(value.String())
|
|
b.WriteRune('\n')
|
|
}
|
|
|
|
return fmt.Sprintf("SetStateBatch(%s)", b.String())
|
|
}
|
|
|
|
func (c SetStateBatch) VerboseKey() string {
|
|
return "SetStateBatch"
|
|
}
|