Configured targets take priority over discovery

If a target address is configured for a universe, use it directly
instead of looking for discovered nodes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ian Gulliver
2025-12-24 13:01:22 -08:00
parent 5019f7c060
commit 42b1e63ebc

19
main.go
View File

@@ -257,9 +257,15 @@ func (a *App) sendOutputs(outputs []remap.Output) {
}
default: // ArtNet
nodes := a.discovery.GetNodesForUniverse(out.Universe)
if len(nodes) > 0 {
// Configured target takes priority over discovery
if target, ok := a.targets[out.Universe]; ok {
if a.debug {
log.Printf("[->artnet] dst=%s universe=%s", target.IP, out.Universe)
}
if err := a.artSender.SendDMX(target, out.Universe, out.Data[:]); err != nil {
log.Printf("[->artnet] error: dst=%s err=%v", target.IP, err)
}
} else if nodes := a.discovery.GetNodesForUniverse(out.Universe); len(nodes) > 0 {
for _, node := range nodes {
addr := &net.UDPAddr{
IP: node.IP,
@@ -272,13 +278,6 @@ func (a *App) sendOutputs(outputs []remap.Output) {
log.Printf("[->artnet] error: dst=%s err=%v", node.IP, err)
}
}
} else if target, ok := a.targets[out.Universe]; ok {
if a.debug {
log.Printf("[->artnet] dst=%s universe=%s", target.IP, out.Universe)
}
if err := a.artSender.SendDMX(target, out.Universe, out.Data[:]); err != nil {
log.Printf("[->artnet] error: dst=%s err=%v", target.IP, err)
}
} else if len(a.broadcasts) > 0 {
for _, bcast := range a.broadcasts {
if a.debug {