You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2019/11/22 18:16:08 UTC

[plc4x] branch feature/knxnet-ip updated: - Refactored the knxnetip protocol to have the ETS5 parts in a separate mspec file - Moded the ETS5 code into a shared module - Renamed the generated knxnetip and s7 driver modules to have the "passive" at the end

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

cdutz pushed a commit to branch feature/knxnet-ip
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/knxnet-ip by this push:
     new e6bb369  - Refactored the knxnetip protocol to have the ETS5 parts in a separate mspec file - Moded the ETS5 code into a shared module - Renamed the generated knxnetip and s7 driver modules to have the "passive" at the end
e6bb369 is described below

commit e6bb369bde5455b70b170769c1898d0a4b9362c2
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Nov 22 19:16:01 2019 +0100

    - Refactored the knxnetip protocol to have the ETS5 parts in a separate mspec file
    - Moded the ETS5 code into a shared module
    - Renamed the generated knxnetip and s7 driver modules to have the "passive" at the end
---
 .../apache/plc4x/protocol/knxnetip/Ets5Types.java  |  46 ++++++
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |   3 +-
 .../main/resources/protocols/knxnetip/ets5.mspec   | 162 +++++++++++++++++++++
 .../resources/protocols/knxnetip/knxnetip.mspec    | 144 ------------------
 sandbox/pom.xml                                    |  10 +-
 .../pom.xml                                        |   2 +-
 .../passive/knxnetip/PassiveKnxNetIpDriver.java    |   0
 .../knxnetip/connection/KnxNetIpFieldHandler.java  |   0
 .../connection/PassiveKnxNetIpPlcConnection.java   |   0
 .../java/passive/knxnetip/model/KnxNetIpField.java |   0
 .../knxnetip/protocol/HelloWorldProtocol.java      |   0
 .../knxnetip/protocol/KnxNetIpProtocol.java        |   0
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   0
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |   0
 .../apache/plc4x/java/knxnetip/KNXNetIpTest.java   |   0
 .../apache/plc4x/java/knxnetip/ManualKnxNetIp.java |   0
 .../test/resources/testsuite/KNXNetIPTestsuite.xml |   0
 .../pom.xml                                        |  26 +---
 .../plc4x/java/knxnetip/ets5}/Ets5Parser.java      |  20 +--
 .../java/knxnetip}/ets5/model/AddressType.java     |   2 +-
 .../plc4x/java/knxnetip}/ets5/model/Ets5Model.java |   4 +-
 .../plc4x/java/knxnetip}/ets5/model/Function.java  |   2 +-
 .../java/knxnetip}/ets5/model/GroupAddress.java    |   6 +-
 .../pom.xml                                        |   2 +-
 .../plc4x/javapassive/s7/PassiveS7PlcDriver.java   |   0
 .../s7/connection/PassiveS7PlcConnection.java      |   0
 .../s7/protocol/HelloWorldProtocol.java            |   0
 .../javapassive/s7/protocol/PassiveS7Protocol.java |   0
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   0
 .../src/test/java/BenchmarkGeneratedPassiveS7.java |   0
 sandbox/test-streampipes-plc4x-processors/pom.xml  |  10 +-
 .../processors/ets5/Ets5DataEnrichment.java        |  22 ++-
 32 files changed, 259 insertions(+), 202 deletions(-)

diff --git a/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/Ets5Types.java b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/Ets5Types.java
new file mode 100644
index 0000000..0d4e526
--- /dev/null
+++ b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/Ets5Types.java
@@ -0,0 +1,46 @@
+/*
+ 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
+
+     http://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 org.apache.plc4x.protocol.knxnetip;
+
+import org.apache.plc4x.plugins.codegenerator.language.mspec.parser.MessageFormatParser;
+import org.apache.plc4x.plugins.codegenerator.protocol.Protocol;
+import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
+import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException;
+
+import java.io.InputStream;
+import java.util.Map;
+
+public class Ets5Types implements Protocol {
+
+    @Override
+    public String getName() {
+        return "ets5";
+    }
+
+    @Override
+    public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
+        InputStream schemaInputStream = Ets5Types.class.getResourceAsStream("/protocols/knxnetip/ets5.mspec");
+        if(schemaInputStream == null) {
+            throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
+        }
+        return new MessageFormatParser().parse(schemaInputStream);
+    }
+
+}
diff --git a/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol b/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
index 86b7da4..9fc9b82 100644
--- a/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
+++ b/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
@@ -16,4 +16,5 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-org.apache.plc4x.protocol.knxnetip.KnxNetIpProtocol
\ No newline at end of file
+org.apache.plc4x.protocol.knxnetip.KnxNetIpProtocol
+org.apache.plc4x.protocol.knxnetip.Ets5Types
\ No newline at end of file
diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/ets5.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/ets5.mspec
new file mode 100644
index 0000000..e85ca71
--- /dev/null
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/ets5.mspec
@@ -0,0 +1,162 @@
+//
+// 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
+//
+//     http://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.
+//
+
+[discriminatedType 'KNXGroupAddress' [uint 2 'numLevels']
+    [typeSwitch 'numLevels'
+        ['1' KNXGroupAddressFreeLevel
+            [simple uint 16 'subGroup']
+        ]
+        ['2' KNXGroupAddress2Level
+            [simple uint 5  'mainGroup']
+            [simple uint 11 'subGroup']
+        ]
+        ['3' KNXGroupAddress3Level
+            [simple uint 5 'mainGroup']
+            [simple uint 3 'middleGroup']
+            [simple uint 8 'subGroup']
+        ]
+    ]
+]
+
+[discriminatedType 'KnxDatapoint' [uint 10 'mainNumber', uint 10 'subNumber']
+    [typeSwitch 'mainNumber','subNumber'
+        ['1' KnxDatapointB1
+            [reserved uint 7 '0x0']
+            [simple   bit    'val']
+        ]
+        ['2' KnxDatapointB2
+            [reserved uint 6 '0x0']
+            [simple   bit    'control']
+            [simple   bit    'val']
+        ]
+        ['21' KnxDatapointB8
+            [simple   bit    'b7']
+            [simple   bit    'b6']
+            [simple   bit    'b5']
+            [simple   bit    'b4']
+            [simple   bit    'b3']
+            [simple   bit    'b2']
+            [simple   bit    'b1']
+            [simple   bit    'b0']
+        ]
+        ['3' KnxDatapointB1U3
+            [reserved uint 4 '0x0']
+            [simple   bit    'control']
+            [simple   uint 3 'val']
+        ]
+        ['18' KnxDatapointB1U6
+            [simple   bit    'control']
+            [reserved uint 1 '0x0']
+            [simple   uint 6 'val']
+        ]
+        ['17' KnxDatapointU6
+            [reserved uint 2 '0x0']
+            [simple   uint 6 'val']
+        ]
+        ['5' KnxDatapointU8
+            [simple   uint 8 'val']
+        ]
+        ['7' KnxDatapointU16
+            [simple uint 16 'val']
+        ]
+        ['12' KnxDatapointU32
+            [simple uint 32 'val']
+        ]
+        ['6','20' KnxDatapointB5I3
+            [simple   bit    'a']
+            [simple   bit    'b']
+            [simple   bit    'c']
+            [simple   bit    'd']
+            [simple   bit    'e']
+            [simple   int 8  'val']
+        ]
+        ['6' KnxDatapointI8
+            [simple int 8  'val']
+        ]
+        ['8' KnxDatapointI16
+            [simple int 16 'val']
+        ]
+        ['13' KnxDatapointI32
+            [simple int 32 'val']
+        ]
+        ['9' KnxDatapointF16
+            [simple float 16 'val']
+        ]
+        ['14' KnxDatapointF32
+            [simple float 32 'val']
+        ]
+        ['4' KnxDatapointA8
+            [simple int 8 'val']
+        ]
+        ['16' KnxDatapointA112
+            [array int 8 'val' count '14']
+        ]
+        ['10' KnxDatapointTime24
+            [simple   uint 3 'day']
+            [simple   uint 5 'hour']
+            [reserved uint 2 '0x0']
+            [simple   uint 6 'minutes']
+            [reserved uint 2 '0x0']
+            [simple   uint 6 'seconds']
+        ]
+        ['11' KnxDatapointDate24
+            [reserved uint 3 '0x0']
+            [simple   uint 5 'day']
+            [reserved uint 4 '0x0']
+            [simple   uint 4 'month']
+            [reserved uint 1 '0x0']
+            [simple   uint 6 'year']
+        ]
+        ['19' KnxDatapointDateTime64
+            [simple   uint 8 'year']
+            [reserved uint 4 '0x0']
+            [simple   uint 4 'month']
+            [reserved uint 3 '0x0']
+            [simple   uint 5 'dayOfMonth']
+            [simple   uint 3 'dayOfWeek']
+            [simple   uint 5 'hourOfDay']
+            [reserved uint 2 '0x0']
+            [simple   uint 6 'minutes']
+            [reserved uint 2 '0x0']
+            [simple   uint 6 'seconds']
+            [simple   bit    'fault']
+            [simple   bit    'workingDay']
+            [simple   bit    'workingDayValid']
+            [simple   bit    'yearValid']
+            [simple   bit    'dayAndMonthValid']
+            [simple   bit    'dayOfWeekValid']
+            [simple   bit    'timeValid']
+            [simple   bit    'standardSummerTime']
+            [simple   bit    'clockQuality']
+        ]
+        ['15' KnxDatapointDPT_Access_Data
+            [simple   uint 4 'D6']
+            [simple   uint 4 'D5']
+            [simple   uint 4 'D4']
+            [simple   uint 4 'D3']
+            [simple   uint 4 'D2']
+            [simple   uint 4 'D1']
+            [simple   bit    'BE']
+            [simple   bit    'BP']
+            [simple   bit    'BD']
+            [simple   bit    'BC']
+            [simple   uint 4 'index']
+        ]
+    ]
+]
diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
index f3eeb54..9535903 100644
--- a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
@@ -196,23 +196,6 @@
     [simple uint 8 'subGroup']
 ]
 
-[discriminatedType 'KNXGroupAddress' [uint 2 'numLevels']
-    [typeSwitch 'numLevels'
-        ['1' KNXGroupAddressFreeLevel
-            [simple uint 16 'subGroup']
-        ]
-        ['2' KNXGroupAddress2Level
-            [simple uint 5  'mainGroup']
-            [simple uint 11 'subGroup']
-        ]
-        ['3' KNXGroupAddress3Level
-            [simple uint 5 'mainGroup']
-            [simple uint 3 'middleGroup']
-            [simple uint 8 'subGroup']
-        ]
-    ]
-]
-
 [type 'DeviceStatus'
     [reserved uint 7 '0x00']
     [simple   bit    'programMode']
@@ -355,133 +338,6 @@
     [simple   uint 16 'timestamp']
 ]
 
-[discriminatedType 'KnxDatapoint' [uint 10 'mainNumber', uint 10 'subNumber']
-    [typeSwitch 'mainNumber','subNumber'
-        ['1' KnxDatapointB1
-            [reserved uint 7 '0x0']
-            [simple   bit    'val']
-        ]
-        ['2' KnxDatapointB2
-            [reserved uint 6 '0x0']
-            [simple   bit    'control']
-            [simple   bit    'val']
-        ]
-        ['21' KnxDatapointB8
-            [simple   bit    'b7']
-            [simple   bit    'b6']
-            [simple   bit    'b5']
-            [simple   bit    'b4']
-            [simple   bit    'b3']
-            [simple   bit    'b2']
-            [simple   bit    'b1']
-            [simple   bit    'b0']
-        ]
-        ['3' KnxDatapointB1U3
-            [reserved uint 4 '0x0']
-            [simple   bit    'control']
-            [simple   uint 3 'val']
-        ]
-        ['18' KnxDatapointB1U6
-            [simple   bit    'control']
-            [reserved uint 1 '0x0']
-            [simple   uint 6 'val']
-        ]
-        ['17' KnxDatapointU6
-            [reserved uint 2 '0x0']
-            [simple   uint 6 'val']
-        ]
-        ['5' KnxDatapointU8
-            [simple   uint 8 'val']
-        ]
-        ['7' KnxDatapointU16
-            [simple uint 16 'val']
-        ]
-        ['12' KnxDatapointU32
-            [simple uint 32 'val']
-        ]
-        ['6','20' KnxDatapointB5I3
-            [simple   bit    'a']
-            [simple   bit    'b']
-            [simple   bit    'c']
-            [simple   bit    'd']
-            [simple   bit    'e']
-            [simple   int 8  'val']
-        ]
-        ['6' KnxDatapointI8
-            [simple int 8  'val']
-        ]
-        ['8' KnxDatapointI16
-            [simple int 16 'val']
-        ]
-        ['13' KnxDatapointI32
-            [simple int 32 'val']
-        ]
-        ['9' KnxDatapointF16
-            [simple float 16 'val']
-        ]
-        ['14' KnxDatapointF32
-            [simple float 32 'val']
-        ]
-        ['4' KnxDatapointA8
-            [simple int 8 'val']
-        ]
-        ['16' KnxDatapointA112
-            [array int 8 'val' count '14']
-        ]
-        ['10' KnxDatapointTime24
-            [simple   uint 3 'day']
-            [simple   uint 5 'hour']
-            [reserved uint 2 '0x0']
-            [simple   uint 6 'minutes']
-            [reserved uint 2 '0x0']
-            [simple   uint 6 'seconds']
-        ]
-        ['11' KnxDatapointDate24
-            [reserved uint 3 '0x0']
-            [simple   uint 5 'day']
-            [reserved uint 4 '0x0']
-            [simple   uint 4 'month']
-            [reserved uint 1 '0x0']
-            [simple   uint 6 'year']
-        ]
-        ['19' KnxDatapointDateTime64
-            [simple   uint 8 'year']
-            [reserved uint 4 '0x0']
-            [simple   uint 4 'month']
-            [reserved uint 3 '0x0']
-            [simple   uint 5 'dayOfMonth']
-            [simple   uint 3 'dayOfWeek']
-            [simple   uint 5 'hourOfDay']
-            [reserved uint 2 '0x0']
-            [simple   uint 6 'minutes']
-            [reserved uint 2 '0x0']
-            [simple   uint 6 'seconds']
-            [simple   bit    'fault']
-            [simple   bit    'workingDay']
-            [simple   bit    'workingDayValid']
-            [simple   bit    'yearValid']
-            [simple   bit    'dayAndMonthValid']
-            [simple   bit    'dayOfWeekValid']
-            [simple   bit    'timeValid']
-            [simple   bit    'standardSummerTime']
-            [simple   bit    'clockQuality']
-        ]
-        ['15' KnxDatapointDPT_Access_Data
-            [simple   uint 4 'D6']
-            [simple   uint 4 'D5']
-            [simple   uint 4 'D4']
-            [simple   uint 4 'D3']
-            [simple   uint 4 'D2']
-            [simple   uint 4 'D1']
-            [simple   bit    'BE']
-            [simple   bit    'BP']
-            [simple   bit    'BD']
-            [simple   bit    'BC']
-            [simple   uint 4 'index']
-        ]
-    ]
-]
-
 [enum uint 2 'CEMIPriority'
     ['0x0' SYSTEM]
     ['0x1' NORMAL]
diff --git a/sandbox/pom.xml b/sandbox/pom.xml
index 9f98f76..10311f9 100644
--- a/sandbox/pom.xml
+++ b/sandbox/pom.xml
@@ -39,11 +39,15 @@
     <module>plc-simulator</module>
 
     <module>test-java-bacnetip-driver</module>
+
+    <module>test-java-df1-driver</module>
+
     <module>test-java-knxnetip-driver</module>
-    <module>test-java-passive-knxnetip-driver</module>
+    <module>test-java-knxnetip-driver-passive</module>
+    <module>test-java-knxnetip-shared</module>
+
     <module>test-java-s7-driver</module>
-    <module>test-java-passive-s7-driver</module>
-    <module>test-java-df1-driver</module>
+    <module>test-java-s7-driver-passive</module>
 
     <module>test-streampipes-plc4x-adapters</module>
     <module>test-streampipes-plc4x-processors</module>
diff --git a/sandbox/test-java-passive-knxnetip-driver/pom.xml b/sandbox/test-java-knxnetip-driver-passive/pom.xml
similarity index 98%
rename from sandbox/test-java-passive-knxnetip-driver/pom.xml
rename to sandbox/test-java-knxnetip-driver-passive/pom.xml
index ca9ac14..9a5a757 100644
--- a/sandbox/test-java-passive-knxnetip-driver/pom.xml
+++ b/sandbox/test-java-knxnetip-driver-passive/pom.xml
@@ -26,7 +26,7 @@
     <version>0.6.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>test-java-passive-knxnetip-driver</artifactId>
+  <artifactId>test-java-knxnetip-driver-passive</artifactId>
 
   <name>Sandbox: Test Generated KNXNet/IP Driver (Passive)</name>
 
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/PassiveKnxNetIpDriver.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/PassiveKnxNetIpDriver.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/PassiveKnxNetIpDriver.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/PassiveKnxNetIpDriver.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/KnxNetIpFieldHandler.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/KnxNetIpFieldHandler.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/KnxNetIpFieldHandler.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/KnxNetIpFieldHandler.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/PassiveKnxNetIpPlcConnection.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/PassiveKnxNetIpPlcConnection.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/PassiveKnxNetIpPlcConnection.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/connection/PassiveKnxNetIpPlcConnection.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/model/KnxNetIpField.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/model/KnxNetIpField.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/model/KnxNetIpField.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/model/KnxNetIpField.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/HelloWorldProtocol.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/HelloWorldProtocol.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/HelloWorldProtocol.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/HelloWorldProtocol.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocol.java b/sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocol.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocol.java
rename to sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocol.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver b/sandbox/test-java-knxnetip-driver-passive/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
rename to sandbox/test-java-knxnetip-driver-passive/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/IOTest.java b/sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/IOTest.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/IOTest.java
rename to sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/IOTest.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/KNXNetIpTest.java b/sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/KNXNetIpTest.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/KNXNetIpTest.java
rename to sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/KNXNetIpTest.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java b/sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
rename to sandbox/test-java-knxnetip-driver-passive/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
diff --git a/sandbox/test-java-passive-knxnetip-driver/src/test/resources/testsuite/KNXNetIPTestsuite.xml b/sandbox/test-java-knxnetip-driver-passive/src/test/resources/testsuite/KNXNetIPTestsuite.xml
similarity index 100%
rename from sandbox/test-java-passive-knxnetip-driver/src/test/resources/testsuite/KNXNetIPTestsuite.xml
rename to sandbox/test-java-knxnetip-driver-passive/src/test/resources/testsuite/KNXNetIPTestsuite.xml
diff --git a/sandbox/test-java-passive-s7-driver/pom.xml b/sandbox/test-java-knxnetip-shared/pom.xml
similarity index 80%
copy from sandbox/test-java-passive-s7-driver/pom.xml
copy to sandbox/test-java-knxnetip-shared/pom.xml
index 123d779..80b3f9b 100644
--- a/sandbox/test-java-passive-s7-driver/pom.xml
+++ b/sandbox/test-java-knxnetip-shared/pom.xml
@@ -26,9 +26,9 @@
     <version>0.6.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>test-java-passive-s7-driver</artifactId>
+  <artifactId>test-java-knxnetip-shared</artifactId>
 
-  <name>Sandbox: Test Generated S7 Driver (Passive)</name>
+  <name>Sandbox: Test Generated KNXNet/IP (Shared)</name>
 
   <build>
     <plugins>
@@ -43,7 +43,7 @@
               <goal>generate-driver</goal>
             </goals>
             <configuration>
-              <protocolName>s7</protocolName>
+              <protocolName>ets5</protocolName>
               <languageName>java</languageName>
               <outputFlavor>passive</outputFlavor>
             </configuration>
@@ -56,28 +56,18 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-api</artifactId>
-      <version>0.6.0-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-driver-base-java</artifactId>
       <version>0.6.0-SNAPSHOT</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-protocol-driver-base-raw-socket</artifactId>
-      <version>0.6.0-SNAPSHOT</version>
-    </dependency>
+
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
     </dependency>
-
     <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-      <scope>test</scope>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+      <version>1.19</version>
     </dependency>
 
     <dependency>
@@ -90,7 +80,7 @@
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4x-protocols-s7</artifactId>
+      <artifactId>plc4x-protocols-knxnetip</artifactId>
       <version>0.6.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/utils/Ets5Parser.java b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/Ets5Parser.java
similarity index 93%
rename from sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/utils/Ets5Parser.java
rename to sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/Ets5Parser.java
index 7244d4a..09d4d31 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/utils/Ets5Parser.java
+++ b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/Ets5Parser.java
@@ -16,20 +16,22 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.streampipes.processors.processors.ets5.utils;
+package org.apache.plc4x.java.knxnetip.ets5;
 
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipFile;
-import org.apache.plc4x.java.knxnetip.readwrite.KNXGroupAddress;
-import org.apache.plc4x.java.knxnetip.readwrite.io.KNXGroupAddressIO;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.AddressType;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.Ets5Model;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.Function;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.GroupAddress;
+import org.apache.plc4x.java.ets5.passive.KNXGroupAddress;
+import org.apache.plc4x.java.ets5.passive.io.KNXGroupAddressIO;
+import org.apache.plc4x.java.knxnetip.ets5.model.AddressType;
+import org.apache.plc4x.java.knxnetip.ets5.model.Ets5Model;
+import org.apache.plc4x.java.knxnetip.ets5.model.Function;
+import org.apache.plc4x.java.knxnetip.ets5.model.GroupAddress;
 import org.apache.plc4x.java.utils.ParseException;
 import org.apache.plc4x.java.utils.ReadBuffer;
-import org.mapdb.Fun;
-import org.w3c.dom.*;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
 import javax.xml.parsers.DocumentBuilder;
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/AddressType.java b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/AddressType.java
similarity index 97%
rename from sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/AddressType.java
rename to sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/AddressType.java
index 45a02d9..7b69344 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/AddressType.java
+++ b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/AddressType.java
@@ -16,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.streampipes.processors.processors.ets5.model;
+package org.apache.plc4x.java.knxnetip.ets5.model;
 
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Ets5Model.java b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Ets5Model.java
similarity index 94%
rename from sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Ets5Model.java
rename to sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Ets5Model.java
index 274b38f..1a9e4ef 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Ets5Model.java
+++ b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Ets5Model.java
@@ -16,13 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.streampipes.processors.processors.ets5.model;
+package org.apache.plc4x.java.knxnetip.ets5.model;
 
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.plc4x.java.knxnetip.readwrite.KNXGroupAddress;
+import org.apache.plc4x.java.ets5.passive.KNXGroupAddress;
 
 import java.util.Map;
 
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Function.java b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Function.java
similarity index 97%
rename from sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Function.java
rename to sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Function.java
index fdc9d9c..4c02b54 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/Function.java
+++ b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/Function.java
@@ -16,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.streampipes.processors.processors.ets5.model;
+package org.apache.plc4x.java.knxnetip.ets5.model;
 
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/GroupAddress.java b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/GroupAddress.java
similarity index 94%
rename from sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/GroupAddress.java
rename to sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/GroupAddress.java
index 42e4344..76f86ff 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/model/GroupAddress.java
+++ b/sandbox/test-java-knxnetip-shared/src/main/java/org/apache/plc4x/java/knxnetip/ets5/model/GroupAddress.java
@@ -16,15 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.streampipes.processors.processors.ets5.model;
+package org.apache.plc4x.java.knxnetip.ets5.model;
 
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.plc4x.java.knxnetip.readwrite.KNXGroupAddress;
-
-import java.util.Objects;
+import org.apache.plc4x.java.ets5.passive.KNXGroupAddress;
 
 public class GroupAddress {
 
diff --git a/sandbox/test-java-passive-s7-driver/pom.xml b/sandbox/test-java-s7-driver-passive/pom.xml
similarity index 98%
rename from sandbox/test-java-passive-s7-driver/pom.xml
rename to sandbox/test-java-s7-driver-passive/pom.xml
index 123d779..a47a6e8 100644
--- a/sandbox/test-java-passive-s7-driver/pom.xml
+++ b/sandbox/test-java-s7-driver-passive/pom.xml
@@ -26,7 +26,7 @@
     <version>0.6.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>test-java-passive-s7-driver</artifactId>
+  <artifactId>test-java-s7-driver-passive</artifactId>
 
   <name>Sandbox: Test Generated S7 Driver (Passive)</name>
 
diff --git a/sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/PassiveS7PlcDriver.java b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/PassiveS7PlcDriver.java
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/PassiveS7PlcDriver.java
rename to sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/PassiveS7PlcDriver.java
diff --git a/sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/connection/PassiveS7PlcConnection.java b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/connection/PassiveS7PlcConnection.java
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/connection/PassiveS7PlcConnection.java
rename to sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/connection/PassiveS7PlcConnection.java
diff --git a/sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/protocol/HelloWorldProtocol.java b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/protocol/HelloWorldProtocol.java
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/protocol/HelloWorldProtocol.java
rename to sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/protocol/HelloWorldProtocol.java
diff --git a/sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/protocol/PassiveS7Protocol.java b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/protocol/PassiveS7Protocol.java
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/main/java/org/apache/plc4x/javapassive/s7/protocol/PassiveS7Protocol.java
rename to sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/javapassive/s7/protocol/PassiveS7Protocol.java
diff --git a/sandbox/test-java-passive-s7-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver b/sandbox/test-java-s7-driver-passive/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
rename to sandbox/test-java-s7-driver-passive/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
diff --git a/sandbox/test-java-passive-s7-driver/src/test/java/BenchmarkGeneratedPassiveS7.java b/sandbox/test-java-s7-driver-passive/src/test/java/BenchmarkGeneratedPassiveS7.java
similarity index 100%
rename from sandbox/test-java-passive-s7-driver/src/test/java/BenchmarkGeneratedPassiveS7.java
rename to sandbox/test-java-s7-driver-passive/src/test/java/BenchmarkGeneratedPassiveS7.java
diff --git a/sandbox/test-streampipes-plc4x-processors/pom.xml b/sandbox/test-streampipes-plc4x-processors/pom.xml
index e836873..f83ea65 100644
--- a/sandbox/test-streampipes-plc4x-processors/pom.xml
+++ b/sandbox/test-streampipes-plc4x-processors/pom.xml
@@ -51,6 +51,11 @@
       <artifactId>test-java-knxnetip-driver</artifactId>
       <version>0.6.0-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x.sandbox</groupId>
+      <artifactId>test-java-knxnetip-shared</artifactId>
+      <version>0.6.0-SNAPSHOT</version>
+    </dependency>
 
     <dependency>
       <groupId>org.streampipes</groupId>
@@ -148,11 +153,6 @@
       <version>0.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <version>1.19</version>
-    </dependency>
-    <dependency>
       <groupId>javax.validation</groupId>
       <artifactId>validation-api</artifactId>
     </dependency>
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/Ets5DataEnrichment.java b/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/Ets5DataEnrichment.java
index b6dfcef..35e86f1 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/Ets5DataEnrichment.java
+++ b/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/processors/ets5/Ets5DataEnrichment.java
@@ -18,18 +18,15 @@ package org.apache.plc4x.java.streampipes.processors.processors.ets5;
 import org.apache.commons.codec.DecoderException;
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.plc4x.java.knxnetip.readwrite.*;
-import org.apache.plc4x.java.knxnetip.readwrite.io.KNXGroupAddressIO;
-import org.apache.plc4x.java.knxnetip.readwrite.io.KnxDatapointIO;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.Ets5Model;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.model.GroupAddress;
-import org.apache.plc4x.java.streampipes.processors.processors.ets5.utils.Ets5Parser;
+import org.apache.plc4x.java.ets5.passive.*;
+import org.apache.plc4x.java.ets5.passive.io.KNXGroupAddressIO;
+import org.apache.plc4x.java.ets5.passive.io.KnxDatapointIO;
+import org.apache.plc4x.java.knxnetip.ets5.Ets5Parser;
+import org.apache.plc4x.java.knxnetip.ets5.model.Ets5Model;
+import org.apache.plc4x.java.knxnetip.ets5.model.GroupAddress;
 import org.apache.plc4x.java.utils.ParseException;
 import org.apache.plc4x.java.utils.ReadBuffer;
-import org.streampipes.commons.exceptions.SpRuntimeException;
 import org.streampipes.model.runtime.Event;
-import org.streampipes.sdk.builder.PrimitivePropertyBuilder;
-import org.streampipes.sdk.utils.Datatypes;
 import org.streampipes.wrapper.context.EventProcessorRuntimeContext;
 import org.streampipes.wrapper.routing.SpOutputCollector;
 import org.streampipes.wrapper.runtime.EventProcessor;
@@ -44,13 +41,14 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
     private static final Ets5Model ets5Model = new Ets5Parser().parse(new File("/Users/christofer.dutz/Projects/Apache/PLC4X-Documents/KNX/Stettiner Str. 13/Stettiner Str.knxproj"));;
 
     @Override
-    public void onInvocation(Ets5DataEnrichmentParameters params, SpOutputCollector spOutputCollector, EventProcessorRuntimeContext eventProcessorRuntimeContext) throws SpRuntimeException {
+    public void onInvocation(Ets5DataEnrichmentParameters params, SpOutputCollector spOutputCollector,
+                             EventProcessorRuntimeContext eventProcessorRuntimeContext) {
         destinationIdFieldName = params.getDestinationIdFieldName();
         payloadIdFieldName = params.getPayloadIdFieldName();
     }
 
     @Override
-    public void onEvent(Event event, SpOutputCollector spOutputCollector) throws SpRuntimeException {
+    public void onEvent(Event event, SpOutputCollector spOutputCollector) {
         try {
             // Get the raw group address data.
             String destinationFieldValue = event.getFieldBySelector(this.destinationIdFieldName).getAsPrimitive().getAsString();
@@ -99,7 +97,7 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
     }
 
     @Override
-    public void onDetach() throws SpRuntimeException {
+    public void onDetach() {
 
     }