summaryrefslogtreecommitdiff
path: root/client.go
diff options
context:
space:
mode:
authorxegineering <me@xegineering.eu>2024-10-02 21:18:51 +0200
committerxegineering <me@xegineering.eu>2024-10-02 21:18:51 +0200
commit07741b358ba75350e7be36ee76f45afa18b0461b (patch)
treee9dccde0151f9afdc8703c09f665d043149ddce7 /client.go
parentcdd23b4b0a7c14dba738f035e75ac640f1ca3e85 (diff)
downloadsoundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.tar
soundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.tar.zst
soundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.zip
Rename Soundbox to Client
Since the module name is `soundbox` naming the primary type of the module also `Soundbox` is redundant. Following similar code from the Go standard library this struct is renamed to `Client`.
Diffstat (limited to 'client.go')
-rw-r--r--client.go31
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
+}