diff options
Diffstat (limited to 'client.go')
-rw-r--r-- | client.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/client.go b/client.go new file mode 100644 index 0000000..27e5d54 --- /dev/null +++ b/client.go @@ -0,0 +1,31 @@ +package soundbox + +import ( + "fmt" + "net" +) + +// Port is the default network port a soundbox is listening to for incoming +// audio stream data. +const Port = 5316 + +type Client struct { + HardwareAddr net.HardwareAddr +} + +func NewClient(mac string) (Client, error) { + hardwareAddr, err := net.ParseMAC(mac) + if err != nil { + return Client{}, err + } + + return fromHardwareAddr(hardwareAddr) +} + +func fromHardwareAddr(addr net.HardwareAddr) (Client, error) { + if len(addr) != 6 { + return Client{}, fmt.Errorf("Only IEEE 802 MAC-48 addresses supported") + } + + return Client{HardwareAddr: addr}, nil +} |