Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
05409c2544 | ||
![]() |
b484745ed1 | ||
![]() |
04e306c6da |
@@ -141,9 +141,6 @@ func (d *ArtNetDriver) Connect(ip, id string, port uint) error {
|
||||
// send data to all buses that the send flage is true
|
||||
func (d *ArtNetDriver) SendData() {
|
||||
for _, bus := range d.Buses {
|
||||
if !bus.Reachable {
|
||||
continue
|
||||
}
|
||||
bus.Send <- bus.Data
|
||||
bus.Send = bus.Reachable
|
||||
}
|
||||
}
|
||||
|
2
go.mod
2
go.mod
@@ -9,7 +9,7 @@ require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e
|
||||
github.com/tecamino/tecamino-json_data v0.0.16
|
||||
github.com/tecamino/tecamino-json_data v0.0.20
|
||||
github.com/tecamino/tecamino-logger v0.2.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
)
|
||||
|
4
go.sum
4
go.sum
@@ -65,8 +65,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e h1:nt2877sKfojlHCTOBXbpWjBkuWKritFaGIfgQwbQUls=
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e/go.mod h1:B4+Kq1u5FlULTjFSM707Q6e/cOHFv0z/6QRoxubDIQ8=
|
||||
github.com/tecamino/tecamino-json_data v0.0.16 h1:aZFxnhm4g6WMDPoqy4HosUk7vl0DB0iIcVs8bbT4MzU=
|
||||
github.com/tecamino/tecamino-json_data v0.0.16/go.mod h1:LLlyD7Wwqplb2BP4PeO86EokEcTRidlW5MwgPd1T2JY=
|
||||
github.com/tecamino/tecamino-json_data v0.0.20 h1:0YHjcGq4T37Z0mu24CMbFA5zgYiUXZNrI5C44nvWexU=
|
||||
github.com/tecamino/tecamino-json_data v0.0.20/go.mod h1:LLlyD7Wwqplb2BP4PeO86EokEcTRidlW5MwgPd1T2JY=
|
||||
github.com/tecamino/tecamino-logger v0.2.0 h1:NPH/Gg9qRhmVoW8b39i1eXu/LEftHc74nyISpcRG+XU=
|
||||
github.com/tecamino/tecamino-logger v0.2.0/go.mod h1:0M1E9Uei/qw3e3WA1x3lBo1eP3H5oeYE7GjYrMahnj8=
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||
|
@@ -29,7 +29,7 @@ type Bus struct {
|
||||
Resubscribe *[]json_dataModels.Subscription `yaml:"-" json:"resubscribe"`
|
||||
Watchdog context.CancelFunc `yaml:"-" json:"-"`
|
||||
Reachable bool `yaml:"-" json:"-"`
|
||||
Send chan *DMX `yaml:"-" json:"-"`
|
||||
Send bool `yaml:"-" json:"-"`
|
||||
}
|
||||
|
||||
// adds new Art-Net interface to driver port 0 = 6454 (default art-net)
|
||||
@@ -107,8 +107,6 @@ func (b *Bus) Start(log *logging.Logger) error {
|
||||
var ctx context.Context
|
||||
ctx, b.Watchdog = context.WithCancel(context.Background())
|
||||
|
||||
b.Send = make(chan *DMX, 1024)
|
||||
|
||||
go func() {
|
||||
var interval time.Duration = 10 * time.Second
|
||||
log.Info("bus.Start", fmt.Sprintf("device:%s ip:%s watchdog starting", b.Name, b.Ip))
|
||||
@@ -129,7 +127,7 @@ func (b *Bus) Start(log *logging.Logger) error {
|
||||
} else {
|
||||
b.Reachable = true
|
||||
// send data as a heartbeat for she ArtNet Protocol
|
||||
b.Send <- b.Data
|
||||
b.Send = true
|
||||
log.Info("bus.Start", fmt.Sprintf("device:%s ip:%s watchdog running", b.Name, b.Ip))
|
||||
interval = 30 * time.Second
|
||||
}
|
||||
@@ -148,17 +146,26 @@ func (b *Bus) Start(log *logging.Logger) error {
|
||||
}
|
||||
|
||||
go func() {
|
||||
defer conn.Close()
|
||||
//close send channel
|
||||
defer close(b.Send)
|
||||
ticker := time.NewTicker(23 * time.Millisecond)
|
||||
|
||||
for send := range b.Send {
|
||||
_, err = conn.Write(NewArtNetPackage(send))
|
||||
defer func() {
|
||||
b.Send = false
|
||||
conn.Close()
|
||||
ticker.Stop()
|
||||
}()
|
||||
|
||||
for range ticker.C {
|
||||
if !b.Send {
|
||||
continue
|
||||
}
|
||||
|
||||
b.Send = false
|
||||
|
||||
_, err = conn.Write(NewArtNetPackage(b.Data))
|
||||
if err != nil {
|
||||
log.Error("bus.Start", err)
|
||||
return
|
||||
}
|
||||
time.Sleep(23 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
@@ -169,8 +176,8 @@ func (b *Bus) Stop() {
|
||||
if b.Watchdog != nil {
|
||||
//cancels context
|
||||
b.Watchdog()
|
||||
//close send channel
|
||||
close(b.Send)
|
||||
|
||||
b.Send = false
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -12,10 +12,10 @@ import (
|
||||
|
||||
const (
|
||||
// Time allowed to write a message to the peer.
|
||||
writeWait = 10 * time.Second
|
||||
writeWait = 40 * time.Second
|
||||
|
||||
// Time allowed to read the next pong message from the peer.
|
||||
pongWait = 10 * time.Second
|
||||
pongWait = 40 * time.Second
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
|
Reference in New Issue
Block a user