Implemented new datasources (modbus,scpi)
This commit is contained in:
@@ -21,7 +21,9 @@ import (
|
||||
"github.com/uopi/uopi/internal/confmgr"
|
||||
"github.com/uopi/uopi/internal/controllogic"
|
||||
"github.com/uopi/uopi/internal/datasource/epics"
|
||||
"github.com/uopi/uopi/internal/datasource/modbus"
|
||||
"github.com/uopi/uopi/internal/datasource/pva"
|
||||
"github.com/uopi/uopi/internal/datasource/scpi"
|
||||
"github.com/uopi/uopi/internal/datasource/servervar"
|
||||
"github.com/uopi/uopi/internal/datasource/stub"
|
||||
"github.com/uopi/uopi/internal/datasource/synthetic"
|
||||
@@ -146,6 +148,35 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
// Modbus TCP data source: polls configured holding/input/coil/discrete
|
||||
// registers on one or more devices. Disabled unless [datasource.modbus] is
|
||||
// configured with devices.
|
||||
if cfg.Datasource.Modbus.Enabled {
|
||||
mbDS, err := modbus.New(cfg.Datasource.Modbus)
|
||||
if err != nil {
|
||||
log.Error("modbus init", "err", err)
|
||||
} else if err := mbDS.Connect(ctx); err != nil {
|
||||
log.Error("modbus connect", "err", err)
|
||||
} else {
|
||||
brk.Register(mbDS)
|
||||
context.AfterFunc(ctx, mbDS.Close)
|
||||
}
|
||||
}
|
||||
|
||||
// SCPI data source: polls instrument channels over raw TCP sockets.
|
||||
// Disabled unless [datasource.scpi] is configured with instruments.
|
||||
if cfg.Datasource.SCPI.Enabled {
|
||||
scpiDS, err := scpi.New(cfg.Datasource.SCPI)
|
||||
if err != nil {
|
||||
log.Error("scpi init", "err", err)
|
||||
} else if err := scpiDS.Connect(ctx); err != nil {
|
||||
log.Error("scpi connect", "err", err)
|
||||
} else {
|
||||
brk.Register(scpiDS)
|
||||
context.AfterFunc(ctx, scpiDS.Close)
|
||||
}
|
||||
}
|
||||
|
||||
// Server variables: a small persistent key/value source ("srv") that the
|
||||
// control-logic engine writes (e.g. sequence state) and panels can read.
|
||||
srvVars, err := servervar.New(cfg.Server.StorageDir)
|
||||
|
||||
Reference in New Issue
Block a user