add persistent flag --kind

use it to configure the client
This commit is contained in:
2026-01-31 01:29:14 +00:00
parent ddbf52430a
commit d5c88f31e0
6 changed files with 52 additions and 22 deletions

View File

@@ -7,3 +7,12 @@ var xairAddressMap = map[string]string{
var x32AddressMap = map[string]string{
"bus": "/bus/%02d",
}
func addressMapForMixerKind(kind MixerKind) map[string]string {
switch kind {
case KindX32:
return x32AddressMap
default:
return xairAddressMap
}
}

View File

@@ -18,7 +18,7 @@ type parser interface {
}
type engine struct {
Kind string
Kind MixerKind
conn *net.UDPConn
mixerAddr *net.UDPAddr
@@ -54,12 +54,13 @@ func NewClient(mixerIP string, mixerPort int, opts ...Option) (*Client, error) {
log.Debugf("Local UDP connection: %s ", conn.LocalAddr().String())
e := &engine{
Kind: "xair",
conn: conn,
mixerAddr: mixerAddr,
parser: newParser(),
done: make(chan bool),
respChan: make(chan *osc.Message, 100),
Kind: KindXAir,
conn: conn,
mixerAddr: mixerAddr,
parser: newParser(),
addressMap: addressMapForMixerKind(KindXAir),
done: make(chan bool),
respChan: make(chan *osc.Message, 100),
}
for _, opt := range opts {

19
internal/xair/kinds.go Normal file
View File

@@ -0,0 +1,19 @@
package xair
type MixerKind string
const (
KindXAir MixerKind = "xair"
KindX32 MixerKind = "x32"
)
func NewMixerKind(kind string) MixerKind {
switch kind {
case "xair":
return KindXAir
case "x32":
return KindX32
default:
return KindXAir
}
}

View File

@@ -1,18 +1,10 @@
package xair
import "strings"
type Option func(*engine)
func WithKind(kind string) Option {
if strings.EqualFold(kind, "x32") {
return func(c *engine) {
c.Kind = kind
c.addressMap = x32AddressMap
}
}
return func(c *engine) {
c.Kind = "xair"
c.addressMap = xairAddressMap
return func(e *engine) {
e.Kind = MixerKind(kind)
e.addressMap = addressMapForMixerKind(e.Kind)
}
}