This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git


The following commit(s) were added to refs/heads/main by this push:
     new ae0b52b  fix(plc4go): compile errors
ae0b52b is described below

commit ae0b52b7b15e5fb2b132e9e04d79f9bc9120e48a
Author: Sebastian Rühl <sru...@apache.org>
AuthorDate: Mon Apr 8 09:10:20 2024 +0200

    fix(plc4go): compile errors
---
 plc4go/examples/ads/discovery/Discovery.go         | 36 -------------
 plc4go/tools/plc4xbrowser/ui/actions.go            | 21 +++-----
 .../internal/cbusanalyzer/analyzer.go              | 63 ++++++++++++++++++----
 plc4go/tools/plc4xpcapanalyzer/ui/actions.go       | 13 ++---
 4 files changed, 63 insertions(+), 70 deletions(-)

diff --git a/plc4go/examples/ads/discovery/Discovery.go 
b/plc4go/examples/ads/discovery/Discovery.go
deleted file mode 100644
index e19cc19..0000000
--- a/plc4go/examples/ads/discovery/Discovery.go
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package main
-
-import (
-       "context"
-       "time"
-
-       "github.com/apache/plc4x/plc4go/internal/ads"
-       apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
-)
-
-func main() {
-       discoverer := ads.NewDiscoverer()
-       _ = discoverer.Discover(context.Background(), func(event 
apiModel.PlcDiscoveryItem) {
-               print(event)
-       })
-       time.Sleep(time.Second * 5)
-}
diff --git a/plc4go/tools/plc4xbrowser/ui/actions.go 
b/plc4go/tools/plc4xbrowser/ui/actions.go
index ef6ca83..7902fff 100644
--- a/plc4go/tools/plc4xbrowser/ui/actions.go
+++ b/plc4go/tools/plc4xbrowser/ui/actions.go
@@ -22,13 +22,9 @@ package ui
 import (
        "bytes"
        "fmt"
+       "github.com/apache/plc4x/plc4go/pkg/api/drivers"
        "strings"
 
-       "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"
 
@@ -118,36 +114,31 @@ func registerDriver(driverId string) error {
        var driver plc4go.PlcDriver
        switch driverId {
        case "ads":
-               driver = ads.NewDriver()
-               driverManager.RegisterDriver(driver)
+               drivers.RegisterAdsDriver(driverManager)
                if !tcpRegistered {
                        transports.RegisterTcpTransport(driverManager)
                        tcpRegistered = true
                }
        case "bacnetip":
-               driver = bacnetip.NewDriver()
-               driverManager.RegisterDriver(driver)
+               drivers.RegisterBacnetDriver(driverManager)
                if !udpRegistered {
                        transports.RegisterUdpTransport(driverManager)
                        udpRegistered = true
                }
        case "c-bus":
-               driver = cbus.NewDriver()
-               driverManager.RegisterDriver(driver)
+               drivers.RegisterCBusDriver(driverManager)
                if !tcpRegistered {
                        transports.RegisterTcpTransport(driverManager)
                        tcpRegistered = true
                }
        case "s7":
-               driver = s7.NewDriver()
-               driverManager.RegisterDriver(driver)
+               drivers.RegisterS7Driver(driverManager)
                if !tcpRegistered {
                        transports.RegisterTcpTransport(driverManager)
                        tcpRegistered = true
                }
        case "opcua":
-               driver = opcua.NewDriver()
-               driverManager.RegisterDriver(driver)
+               drivers.RegisterOpcuaDriver(driverManager)
                if !tcpRegistered {
                        transports.RegisterTcpTransport(driverManager)
                        tcpRegistered = true
diff --git a/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go 
b/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go
index 7583239..6b40f20 100644
--- a/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go
+++ b/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go
@@ -27,8 +27,7 @@ import (
 
        "github.com/apache/plc4x/plc4go-extras/tools/plc4xpcapanalyzer/config"
        
"github.com/apache/plc4x/plc4go-extras/tools/plc4xpcapanalyzer/internal/common"
-       "github.com/apache/plc4x/plc4go/internal/cbus"
-       "github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
+       readWriteModel 
"github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
        "github.com/apache/plc4x/plc4go/spi"
 
        "github.com/gopacket/gopacket"
@@ -39,8 +38,8 @@ import (
 
 type Analyzer struct {
        Client                          net.IP
-       requestContext                  model.RequestContext
-       cBusOptions                     model.CBusOptions
+       requestContext                  readWriteModel.RequestContext
+       cBusOptions                     readWriteModel.CBusOptions
        initialized                     bool
        currentInboundPayloads          map[string][]byte
        currentPrefilterInboundPayloads map[string][]byte
@@ -54,8 +53,8 @@ func (a *Analyzer) Init() {
        if a.initialized {
                return
        }
-       a.requestContext = model.NewRequestContext(false)
-       a.cBusOptions = model.NewCBusOptions(config.CBusConfigInstance.Connect, 
config.CBusConfigInstance.Smart, config.CBusConfigInstance.Idmon, 
config.CBusConfigInstance.Exstat, config.CBusConfigInstance.Monitor, 
config.CBusConfigInstance.Monall, config.CBusConfigInstance.Pun, 
config.CBusConfigInstance.Pcn, config.CBusConfigInstance.Srchk)
+       a.requestContext = readWriteModel.NewRequestContext(false)
+       a.cBusOptions = 
readWriteModel.NewCBusOptions(config.CBusConfigInstance.Connect, 
config.CBusConfigInstance.Smart, config.CBusConfigInstance.Idmon, 
config.CBusConfigInstance.Exstat, config.CBusConfigInstance.Monitor, 
config.CBusConfigInstance.Monall, config.CBusConfigInstance.Pun, 
config.CBusConfigInstance.Pcn, config.CBusConfigInstance.Srchk)
        a.currentInboundPayloads = make(map[string][]byte)
        a.currentPrefilterInboundPayloads = make(map[string][]byte)
        a.initialized = true
@@ -76,7 +75,7 @@ func (a *Analyzer) PackageParse(packetInformation 
common.PacketInformation, payl
        isResponse := a.isResponse(packetInformation)
        if isResponse {
                // Responses should have a checksum
-               cBusOptions = model.NewCBusOptions(
+               cBusOptions = readWriteModel.NewCBusOptions(
                        cBusOptions.GetConnect(),
                        cBusOptions.GetSmart(),
                        cBusOptions.GetIdmon(),
@@ -99,9 +98,9 @@ func (a *Analyzer) PackageParse(packetInformation 
common.PacketInformation, payl
                return nil, common.ErrEcho
        }
        a.lastParsePayload = currentPayload
-       parse, err := model.CBusMessageParse(context.TODO(), currentPayload, 
isResponse, a.requestContext, cBusOptions)
+       parse, err := readWriteModel.CBusMessageParse(context.TODO(), 
currentPayload, isResponse, a.requestContext, cBusOptions)
        if err != nil {
-               if secondParse, err := model.CBusMessageParse(context.TODO(), 
currentPayload, isResponse, model.NewRequestContext(false), 
model.NewCBusOptions(false, false, false, false, false, false, false, false, 
false)); err != nil {
+               if secondParse, err := 
readWriteModel.CBusMessageParse(context.TODO(), currentPayload, isResponse, 
readWriteModel.NewRequestContext(false), readWriteModel.NewCBusOptions(false, 
false, false, false, false, false, false, false, false)); err != nil {
                        log.Debug().Err(err).Msg("Second parse failed too")
                        return nil, errors.Wrap(err, "Error parsing 
CBusCommand")
                } else {
@@ -112,7 +111,7 @@ func (a *Analyzer) PackageParse(packetInformation 
common.PacketInformation, payl
                        parse = secondParse
                }
        }
-       a.requestContext = cbus.CreateRequestContextWithInfoCallback(parse, 
func(infoString string) {
+       a.requestContext = CreateRequestContextWithInfoCallback(parse, 
func(infoString string) {
                log.Debug().
                        Int("packetNumber", packetInformation.PacketNumber).
                        Str("infoString", infoString).
@@ -265,7 +264,7 @@ func filterOneServerError(unfilteredPayload []byte) 
(filteredPayload []byte, con
 }
 
 func (a *Analyzer) SerializePackage(message spi.Message) ([]byte, error) {
-       if message, ok := message.(model.CBusMessage); !ok {
+       if message, ok := message.(readWriteModel.CBusMessage); !ok {
                log.Fatal().Type("message", message).Msg("Unsupported type 
supplied")
                panic("unreachable statement")
        } else {
@@ -339,3 +338,45 @@ func (p *manipulatedPackage) SetApplicationLayer(l 
gopacket.ApplicationLayer) {
 func (p *manipulatedPackage) ApplicationLayer() gopacket.ApplicationLayer {
        return p.newApplicationLayer
 }
+
+func CreateRequestContextWithInfoCallback(cBusMessage 
readWriteModel.CBusMessage, infoCallBack func(string)) 
readWriteModel.RequestContext {
+       if infoCallBack == nil {
+               infoCallBack = func(_ string) {}
+       }
+       switch cBusMessage := cBusMessage.(type) {
+       case readWriteModel.CBusMessageToServerExactly:
+               switch request := cBusMessage.GetRequest().(type) {
+               case readWriteModel.RequestDirectCommandAccessExactly:
+                       sendIdentifyRequestBefore := false
+                       infoCallBack("CAL request detected")
+                       switch request.GetCalData().(type) {
+                       case readWriteModel.CALDataIdentifyExactly:
+                               sendIdentifyRequestBefore = true
+                       }
+                       return 
readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
+               case readWriteModel.RequestCommandExactly:
+                       switch command := request.GetCbusCommand().(type) {
+                       case readWriteModel.CBusCommandPointToPointExactly:
+                               sendIdentifyRequestBefore := false
+                               infoCallBack("CAL request detected")
+                               switch command.GetCommand().GetCalData().(type) 
{
+                               case readWriteModel.CALDataIdentifyExactly:
+                                       sendIdentifyRequestBefore = true
+                               }
+                               return 
readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
+                       }
+               case readWriteModel.RequestObsoleteExactly:
+                       sendIdentifyRequestBefore := false
+                       infoCallBack("CAL request detected")
+                       switch request.GetCalData().(type) {
+                       case readWriteModel.CALDataIdentifyExactly:
+                               sendIdentifyRequestBefore = true
+                       }
+                       return 
readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
+               }
+       case readWriteModel.CBusMessageToClientExactly:
+               // We received a request, so we need to reset our flags
+               return readWriteModel.NewRequestContext(false)
+       }
+       return readWriteModel.NewRequestContext(false)
+}
diff --git a/plc4go/tools/plc4xpcapanalyzer/ui/actions.go 
b/plc4go/tools/plc4xpcapanalyzer/ui/actions.go
index 117dae0..3e35cf7 100644
--- a/plc4go/tools/plc4xpcapanalyzer/ui/actions.go
+++ b/plc4go/tools/plc4xpcapanalyzer/ui/actions.go
@@ -22,14 +22,11 @@ package ui
 import (
        "bytes"
        "fmt"
+       "github.com/apache/plc4x/plc4go/pkg/api/drivers"
        "os"
        "path"
        "strings"
 
-       "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/s7"
        plc4go "github.com/apache/plc4x/plc4go/pkg/api"
        "github.com/apache/plc4x/plc4go/spi"
        "github.com/apache/plc4x/plc4go/spi/transports/pcap"
@@ -139,13 +136,13 @@ func validateDriverParam(driver string) error {
 func registerDriver(driver string) error {
        switch driver {
        case "ads":
-               driverManager.RegisterDriver(ads.NewDriver())
+               drivers.RegisterAdsDriver(driverManager)
        case "bacnetip":
-               driverManager.RegisterDriver(bacnetip.NewDriver())
+               drivers.RegisterBacnetDriver(driverManager)
        case "c-bus":
-               driverManager.RegisterDriver(cbus.NewDriver())
+               drivers.RegisterCBusDriver(driverManager)
        case "s7":
-               driverManager.RegisterDriver(s7.NewDriver())
+               drivers.RegisterS7Driver(driverManager)
        default:
                return errors.Errorf("Unknown driver %s", driver)
        }

Reply via email to