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) } }