You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/08/07 12:40:56 UTC
[plc4x] 02/08: feat(plc4go/plc4xbrowser): add support for opcua
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 2fea4804601ddcbab52a6235784b36cadf5801cd
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Aug 7 11:43:10 2023 +0200
feat(plc4go/plc4xbrowser): add support for opcua
---
plc4go/pkg/api/drivers/drivers.go | 6 ++++++
plc4go/tools/plc4xbrowser/ui/actions.go | 8 ++++++++
plc4go/tools/plc4xbrowser/ui/common.go | 2 +-
plc4go/tools/plc4xbrowser/ui/config.go | 5 +++++
4 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/plc4go/pkg/api/drivers/drivers.go b/plc4go/pkg/api/drivers/drivers.go
index 8fc164b540..f0e72cc46b 100644
--- a/plc4go/pkg/api/drivers/drivers.go
+++ b/plc4go/pkg/api/drivers/drivers.go
@@ -26,6 +26,7 @@ import (
"github.com/apache/plc4x/plc4go/internal/eip"
"github.com/apache/plc4x/plc4go/internal/knxnetip"
modbus2 "github.com/apache/plc4x/plc4go/internal/modbus"
+ "github.com/apache/plc4x/plc4go/internal/opcua"
"github.com/apache/plc4x/plc4go/internal/s7"
"github.com/apache/plc4x/plc4go/pkg/api"
"github.com/apache/plc4x/plc4go/pkg/api/config"
@@ -75,6 +76,11 @@ func RegisterModbusAsciiDriver(driverManager plc4go.PlcDriverManager, _options .
transports.RegisterTcpTransport(driverManager)
}
+func RegisterOpcuaDriver(driverManager plc4go.PlcDriverManager, _options ...config.WithOption) {
+ driverManager.RegisterDriver(opcua.NewDriver(converter.WithOptionToInternal(_options...)...))
+ transports.RegisterTcpTransport(driverManager)
+}
+
func RegisterS7Driver(driverManager plc4go.PlcDriverManager, _options ...config.WithOption) {
driverManager.RegisterDriver(s7.NewDriver(converter.WithOptionToInternal(_options...)...))
transports.RegisterTcpTransport(driverManager)
diff --git a/plc4go/tools/plc4xbrowser/ui/actions.go b/plc4go/tools/plc4xbrowser/ui/actions.go
index 9f6531f78c..a836318fbe 100644
--- a/plc4go/tools/plc4xbrowser/ui/actions.go
+++ b/plc4go/tools/plc4xbrowser/ui/actions.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/internal/ads"
"github.com/apache/plc4x/plc4go/internal/bacnetip"
"github.com/apache/plc4x/plc4go/internal/cbus"
+ "github.com/apache/plc4x/plc4go/internal/opcua"
"github.com/apache/plc4x/plc4go/internal/s7"
plc4go "github.com/apache/plc4x/plc4go/pkg/api"
"github.com/apache/plc4x/plc4go/pkg/api/transports"
@@ -117,6 +118,13 @@ func registerDriver(driverId string) error {
transports.RegisterTcpTransport(driverManager)
tcpRegistered = true
}
+ case "opcua":
+ driver = opcua.NewDriver()
+ driverManager.RegisterDriver(driver)
+ if !tcpRegistered {
+ transports.RegisterTcpTransport(driverManager)
+ tcpRegistered = true
+ }
default:
return errors.Errorf("Unknown driver %s", driverId)
}
diff --git a/plc4go/tools/plc4xbrowser/ui/common.go b/plc4go/tools/plc4xbrowser/ui/common.go
index ee7b61a591..c052901f5d 100644
--- a/plc4go/tools/plc4xbrowser/ui/common.go
+++ b/plc4go/tools/plc4xbrowser/ui/common.go
@@ -29,7 +29,7 @@ import (
"time"
)
-const protocols = "ads,bacnetip,c-bus,s7"
+const protocols = "ads,bacnetip,c-bus,opcua,s7"
var protocolList = strings.Split(protocols, ",")
diff --git a/plc4go/tools/plc4xbrowser/ui/config.go b/plc4go/tools/plc4xbrowser/ui/config.go
index 4658a97492..47a325b46d 100644
--- a/plc4go/tools/plc4xbrowser/ui/config.go
+++ b/plc4go/tools/plc4xbrowser/ui/config.go
@@ -26,6 +26,7 @@ import (
"gopkg.in/yaml.v3"
"os"
"path"
+ "sync"
"time"
)
@@ -83,7 +84,11 @@ func LoadConfig() {
}
}
+var saveMutex sync.Mutex
+
func saveConfig() {
+ saveMutex.Lock()
+ defer saveMutex.Unlock()
config.LastUpdated = time.Now()
f, err := os.OpenFile(configFile, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {