package main import ( "artNet/driver" "artNet/server" "flag" "fmt" "os" "time" "github.com/gin-gonic/gin" ) const DriverName string = "ArtNetDriver" func main() { // cli flags cfgDir := flag.String("cfg", "./cfg", "config directory") workingDir := flag.String("workingDirectory", ".", "current working directory") serverIp := flag.String("serverIp", "127.0.0.1", "ip address of server") serverPort := flag.Uint("serverPort", 8100, "port of server") wsPort := flag.Uint("port", 8200, "websocket port") debug := flag.Bool("debug", false, "debug logging") flag.Parse() //change working directory only if value is given if *workingDir != "." && *workingDir != "" { os.Chdir(*workingDir) } //initialize new ArtNet driver artNetDriver, err := driver.NewDriver(*cfgDir, DriverName, *debug) if err != nil { artNetDriver.Log.Error("main", "error initialize new artnet driver "+err.Error()) panic(err) } //initialize new server artNetDriver.Log.Debug("main", "initialize new server instance") s := server.NewServer() //set routes artNetDriver.Log.Debug("main", "setting routes") s.Routes.GET("/buses/all", artNetDriver.GetAllBuses) s.Routes.POST("/buses/create", artNetDriver.CreateBus) s.Routes.POST("/buses/remove", artNetDriver.RemoveBus) s.Routes.POST("/buses/start", artNetDriver.Start) s.Routes.POST("/buses/status", artNetDriver.Status) s.Routes.POST("/buses/stop", artNetDriver.Stop) s.Routes.GET("/", func(c *gin.Context) { c.String(200, "ArtNet Driver WebSocket Server is running!") }) go func() { if err := s.ServeHttp(*wsPort); err != nil { artNetDriver.Log.Error("main", err.Error()) } }() artNetDriver.Log.Info("main", fmt.Sprintf("connect to server ws://%s:%d with id %s", *serverIp, serverPort, DriverName)) // connect to server for { artNetDriver.Log.Error("main", artNetDriver.Connect(*serverIp, DriverName, *serverPort)) time.Sleep(10 * time.Second) } }