1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package main
- /*
- HDS-Audio
- Author: tobychui
- Experimental HDS based iot device for Audio playback in local area network
- */
- import (
- "flag"
- "log"
- "net/http"
- "strconv"
- "strings"
- "time"
- "imuslab.com/hds/audio/mod/mdns"
- )
- var (
- port = flag.Int("port", 12110, "The port for the HDS device API")
- MDNS *mdns.MDNSHost
- deviceStatus *Status
- deviceUUID = ""
- )
- func main() {
- //Parse flag
- flag.Parse()
- //Get system UUID by MAC addr
- macAddr, _ := getMacAddr()
- if len(macAddr) > 0 {
- deviceUUID = strings.ReplaceAll(macAddr[0], ":", "-")
- } else {
- //Just generate one randomly
- deviceUUID = strconv.Itoa(int(time.Now().Unix()))
- }
- //Start MDNS broadcast
- hostController, err := mdns.NewMDNS(mdns.NetworkHost{
- HostName: "hdsAudio_" + deviceUUID,
- Port: *port,
- Domain: "hds.arozos.com",
- Model: "Audio Device",
- UUID: deviceUUID,
- Vendor: "Home Dynamic Project",
- BuildVersion: "1.0",
- MinorVersion: "0.00",
- })
- if err != nil {
- panic(err)
- }
- MDNS = hostController
- //Create a new status objecty
- currentStatus := Status{
- Playing: false,
- Status: "ready",
- }
- deviceStatus = ¤tStatus
- //Register all required APIs for HDSv2
- http.HandleFunc("/", handleIndex)
- http.HandleFunc("/status", handleStatus)
- http.HandleFunc("/eps", handleEndpoints)
- //Start web server
- log.Println("Web API Started on port ", *port)
- err = http.ListenAndServe(":"+strconv.Itoa(*port), nil)
- if err != nil {
- panic(err)
- }
- }
|