69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
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)
|
|
}
|
|
|
|
}
|