Default --artnet-broadcast to auto, clean up log prefixes
- Make --artnet-broadcast default to "auto" so broadcast works out of box - Add consistent [category] prefixes to all log messages - Change discovery logs from [discovery] to [artnet] since it's protocol-specific 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -95,7 +95,7 @@ func (d *Discovery) cleanup() {
|
|||||||
cutoff := time.Now().Add(-60 * time.Second)
|
cutoff := time.Now().Add(-60 * time.Second)
|
||||||
for ip, node := range d.nodes {
|
for ip, node := range d.nodes {
|
||||||
if node.LastSeen.Before(cutoff) {
|
if node.LastSeen.Before(cutoff) {
|
||||||
log.Printf("discovery timeout: ip=%s name=%s", ip, node.ShortName)
|
log.Printf("[artnet] node timeout ip=%s name=%s", ip, node.ShortName)
|
||||||
delete(d.nodes, ip)
|
delete(d.nodes, ip)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ func (d *Discovery) HandlePollReply(src *net.UDPAddr, pkt *PollReplyPacket) {
|
|||||||
Port: uint16(src.Port),
|
Port: uint16(src.Port),
|
||||||
}
|
}
|
||||||
d.nodes[ip] = node
|
d.nodes[ip] = node
|
||||||
log.Printf("discovery found: ip=%s name=%s universes=%v", ip, shortName, universes)
|
log.Printf("[artnet] discovered ip=%s name=%s universes=%v", ip, shortName, universes)
|
||||||
}
|
}
|
||||||
|
|
||||||
node.ShortName = shortName
|
node.ShortName = shortName
|
||||||
|
|||||||
18
main.go
18
main.go
@@ -34,7 +34,7 @@ type App struct {
|
|||||||
func main() {
|
func main() {
|
||||||
configPath := flag.String("config", "config.toml", "path to config file")
|
configPath := flag.String("config", "config.toml", "path to config file")
|
||||||
artnetListen := flag.String("artnet-listen", ":6454", "artnet listen address (empty to disable)")
|
artnetListen := flag.String("artnet-listen", ":6454", "artnet listen address (empty to disable)")
|
||||||
artnetBroadcast := flag.String("artnet-broadcast", "", "artnet broadcast addresses (comma-separated, or 'auto')")
|
artnetBroadcast := flag.String("artnet-broadcast", "auto", "artnet broadcast addresses (comma-separated, or 'auto')")
|
||||||
sacnPcap := flag.String("sacn-pcap", "", "use pcap for sacn on interface (e.g. en0, eth0)")
|
sacnPcap := flag.String("sacn-pcap", "", "use pcap for sacn on interface (e.g. en0, eth0)")
|
||||||
debug := flag.Bool("debug", false, "log incoming/outgoing dmx packets")
|
debug := flag.Bool("debug", false, "log incoming/outgoing dmx packets")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
@@ -45,14 +45,14 @@ func main() {
|
|||||||
log.Fatalf("config error: %v", err)
|
log.Fatalf("config error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("loaded mappings=%d", len(cfg.Mappings))
|
log.Printf("[config] loaded mappings=%d", len(cfg.Mappings))
|
||||||
|
|
||||||
// Create remapping engine
|
// Create remapping engine
|
||||||
engine := remap.NewEngine(cfg.Normalize())
|
engine := remap.NewEngine(cfg.Normalize())
|
||||||
|
|
||||||
// Log mappings
|
// Log mappings
|
||||||
for _, m := range cfg.Mappings {
|
for _, m := range cfg.Mappings {
|
||||||
log.Printf(" %s -> %s", m.From, m.To)
|
log.Printf("[config] %s -> %s", m.From, m.To)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse targets
|
// Parse targets
|
||||||
@@ -68,7 +68,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
targets[t.Universe.Universe] = addr
|
targets[t.Universe.Universe] = addr
|
||||||
pollTargets[addr.String()] = addr
|
pollTargets[addr.String()] = addr
|
||||||
log.Printf(" target %s -> %s", t.Universe, addr)
|
log.Printf("[config] target %s -> %s", t.Universe, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse broadcast addresses
|
// Parse broadcast addresses
|
||||||
@@ -88,7 +88,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
for _, addr := range broadcasts {
|
for _, addr := range broadcasts {
|
||||||
pollTargets[addr.String()] = addr
|
pollTargets[addr.String()] = addr
|
||||||
log.Printf(" broadcast %s", addr)
|
log.Printf("[config] broadcast %s", addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
app.artReceiver = artReceiver
|
app.artReceiver = artReceiver
|
||||||
artReceiver.Start()
|
artReceiver.Start()
|
||||||
log.Printf("artnet listening addr=%s", addr)
|
log.Printf("[artnet] listening addr=%s", addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create sACN receiver if needed
|
// Create sACN receiver if needed
|
||||||
@@ -158,7 +158,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
app.sacnPcapReceiver = pcapReceiver
|
app.sacnPcapReceiver = pcapReceiver
|
||||||
pcapReceiver.Start()
|
pcapReceiver.Start()
|
||||||
log.Printf("sacn pcap listening iface=%s universes=%v", iface, sacnUniverses)
|
log.Printf("[sacn] pcap listening iface=%s universes=%v", iface, sacnUniverses)
|
||||||
} else {
|
} else {
|
||||||
// Use standard UDP receiver
|
// Use standard UDP receiver
|
||||||
sacnReceiver, err := sacn.NewReceiver(sacnUniverses, app.HandleSACN)
|
sacnReceiver, err := sacn.NewReceiver(sacnUniverses, app.HandleSACN)
|
||||||
@@ -167,7 +167,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
app.sacnReceiver = sacnReceiver
|
app.sacnReceiver = sacnReceiver
|
||||||
sacnReceiver.Start()
|
sacnReceiver.Start()
|
||||||
log.Printf("sacn listening universes=%v", sacnUniverses)
|
log.Printf("[sacn] listening universes=%v", sacnUniverses)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ func main() {
|
|||||||
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||||
<-sigChan
|
<-sigChan
|
||||||
|
|
||||||
log.Println("shutting down")
|
log.Println("[main] shutting down")
|
||||||
if app.artReceiver != nil {
|
if app.artReceiver != nil {
|
||||||
app.artReceiver.Stop()
|
app.artReceiver.Stop()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user