Files
tendrils/yamaha.go
2026-01-23 22:21:35 -08:00

37 lines
786 B
Go

package tendrils
import (
"bufio"
"log"
"net"
"regexp"
"time"
)
var yamahaModelRegex = regexp.MustCompile(`PA-Platform:ModelId\s*=\s*0x[0-9a-fA-F]+\(([^)]+)\)`)
func (t *Tendrils) probeYamahaDevice(ip net.IP) string {
conn, err := net.DialTimeout("tcp", net.JoinHostPort(ip.String(), "50000"), 2*time.Second)
if err != nil {
return ""
}
defer conn.Close()
conn.SetReadDeadline(time.Now().Add(2 * time.Second))
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
line := scanner.Text()
if match := yamahaModelRegex.FindStringSubmatch(line); match != nil {
model := match[1]
if t.DebugYamaha {
log.Printf("[yamaha] %s: found model %s", ip, model)
}
t.nodes.Update(nil, nil, []net.IP{ip}, "", model, "yamaha")
return model
}
}
return ""
}