You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ld...@apache.org on 2020/10/21 08:43:05 UTC

[plc4x] 05/21: Split different flavours of CAN formats.

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

ldywicki pushed a commit to branch feature/socketcan
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 36ed9df3f7787764c67b07a4389c574cfe9db08d
Author: Ɓukasz Dywicki <lu...@code-house.org>
AuthorDate: Thu Aug 27 22:59:52 2020 +0200

    Split different flavours of CAN formats.
---
 .../can/{CANProtocol.java => CAN20AProtocol.java}  |  6 +--
 .../can/{CANProtocol.java => CANOpenProtocol.java} |  6 +--
 .../{CANProtocol.java => SocketCANProtocol.java}   |  6 +--
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |  4 +-
 .../src/main/resources/protocols/can/can20a.mspec  | 25 +++++++++
 .../src/main/resources/protocols/can/canopen.mspec | 44 ++++++++++++++++
 .../protocols/can/{can.mspec => socketcan.mspec}   | 61 ----------------------
 sandbox/test-java-can-driver/pom.xml               | 16 +++++-
 .../org/apache/plc4x/java/can/CANPlcDriver.java    |  4 +-
 .../plc4x/java/can/helper/CANOpenHelper.java       | 18 +++++++
 .../apache/plc4x/java/can/helper/HeaderParser.java |  2 +-
 .../plc4x/java/can/protocol/CANProtocolLogic.java  |  2 +-
 .../org/apache/plc4x/java/can/CANOpenTest.java}    | 32 ++++--------
 ...ketCAN20BTestSuite.xml => CANOpenTestSuite.xml} | 18 +++----
 .../resources/testsuite/SocketCAN20ATestSuite.xml  |  6 +--
 .../resources/testsuite/SocketCAN20BTestSuite.xml  |  2 +-
 .../resources/testsuite/SocketCANTestSuite.xml     |  6 +--
 17 files changed, 144 insertions(+), 114 deletions(-)

diff --git a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CAN20AProtocol.java
similarity index 89%
copy from protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
copy to protocols/can/src/main/java/org/apache/plc4x/protocol/can/CAN20AProtocol.java
index 853fb50..f93d868 100644
--- a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
+++ b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CAN20AProtocol.java
@@ -27,16 +27,16 @@ import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationExcepti
 import java.io.InputStream;
 import java.util.Map;
 
-public class CANProtocol implements Protocol {
+public class CAN20AProtocol implements Protocol {
 
     @Override
     public String getName() {
-        return "can";
+        return "can20a";
     }
 
     @Override
     public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
-        InputStream schemaInputStream = CANProtocol.class.getResourceAsStream("/protocols/can/can.mspec");
+        InputStream schemaInputStream = CAN20AProtocol.class.getResourceAsStream("/protocols/can/can20a.mspec");
         if(schemaInputStream == null) {
             throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
         }
diff --git a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANOpenProtocol.java
similarity index 89%
copy from protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
copy to protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANOpenProtocol.java
index 853fb50..e6ddd5a 100644
--- a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
+++ b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANOpenProtocol.java
@@ -27,16 +27,16 @@ import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationExcepti
 import java.io.InputStream;
 import java.util.Map;
 
-public class CANProtocol implements Protocol {
+public class CANOpenProtocol implements Protocol {
 
     @Override
     public String getName() {
-        return "can";
+        return "canopen";
     }
 
     @Override
     public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
-        InputStream schemaInputStream = CANProtocol.class.getResourceAsStream("/protocols/can/can.mspec");
+        InputStream schemaInputStream = CANOpenProtocol.class.getResourceAsStream("/protocols/can/canopen.mspec");
         if(schemaInputStream == null) {
             throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
         }
diff --git a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/SocketCANProtocol.java
similarity index 88%
rename from protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
rename to protocols/can/src/main/java/org/apache/plc4x/protocol/can/SocketCANProtocol.java
index 853fb50..dba9730 100644
--- a/protocols/can/src/main/java/org/apache/plc4x/protocol/can/CANProtocol.java
+++ b/protocols/can/src/main/java/org/apache/plc4x/protocol/can/SocketCANProtocol.java
@@ -27,16 +27,16 @@ import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationExcepti
 import java.io.InputStream;
 import java.util.Map;
 
-public class CANProtocol implements Protocol {
+public class SocketCANProtocol implements Protocol {
 
     @Override
     public String getName() {
-        return "can";
+        return "socketcan";
     }
 
     @Override
     public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
-        InputStream schemaInputStream = CANProtocol.class.getResourceAsStream("/protocols/can/can.mspec");
+        InputStream schemaInputStream = SocketCANProtocol.class.getResourceAsStream("/protocols/can/socketcan.mspec");
         if(schemaInputStream == null) {
             throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
         }
diff --git a/protocols/can/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol b/protocols/can/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
index d422eca..bf88883 100644
--- a/protocols/can/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
+++ b/protocols/can/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
@@ -16,4 +16,6 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-org.apache.plc4x.protocol.can.CANProtocol
\ No newline at end of file
+org.apache.plc4x.protocol.can.CAN20AProtocol
+org.apache.plc4x.protocol.can.SocketCANProtocol
+org.apache.plc4x.protocol.can.CANOpenProtocol
\ No newline at end of file
diff --git a/protocols/can/src/main/resources/protocols/can/can20a.mspec b/protocols/can/src/main/resources/protocols/can/can20a.mspec
new file mode 100644
index 0000000..ffa733a
--- /dev/null
+++ b/protocols/can/src/main/resources/protocols/can/can20a.mspec
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+
+[type 'CANFrame'
+    [simple uint 11 'identifier']
+    [simple bit 'extended']
+    [simple bit 'remote']
+    [simple bit 'error']
+]
\ No newline at end of file
diff --git a/protocols/can/src/main/resources/protocols/can/canopen.mspec b/protocols/can/src/main/resources/protocols/can/canopen.mspec
new file mode 100644
index 0000000..553d12a
--- /dev/null
+++ b/protocols/can/src/main/resources/protocols/can/canopen.mspec
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+[type 'CANOpenFrame'
+    [enum CANOpenService 'function']
+    [simple int 11 'identifier']
+    [reserved int 9 '0x0'] // filling gap used by extended frame, and extended marker which should always be 0
+    [simple bit 'remote']
+    [simple bit 'error']
+    [reserved int 5 '0x0']  // filling gap used by extended frame
+    [implicit uint 8 'size' 'COUNT(payload)']
+    [reserved uint 8 '0x0'] // in case of fd frame these are flags
+    [reserved uint 8 '0x0'] // padding 1
+    [reserved uint 8 '0x0'] // padding 2
+    [simple CANOpenPayload 'payload' ['function', 'size']]
+]
+
+[enum uint 4 'CANOpenService'
+    ['0b1110' NMT]
+]
+
+[discriminatedType 'CANOpenPayload' [CANOpenService 'function', uint 8 'size']
+    [typeSwitch 'function'
+        ['CANOpenService.NMT' CANOpenNetworkPayload [uint 8 'size']
+            [array int 8 'data' COUNT 'size']
+        ]
+    ]
+]
\ No newline at end of file
diff --git a/protocols/can/src/main/resources/protocols/can/can.mspec b/protocols/can/src/main/resources/protocols/can/socketcan.mspec
similarity index 61%
rename from protocols/can/src/main/resources/protocols/can/can.mspec
rename to protocols/can/src/main/resources/protocols/can/socketcan.mspec
index 147492b..e2e9e3b 100644
--- a/protocols/can/src/main/resources/protocols/can/can.mspec
+++ b/protocols/can/src/main/resources/protocols/can/socketcan.mspec
@@ -17,41 +17,6 @@
  * under the License.
  */
 
-[type 'CANFrame'
-    [simple CANHeader 'header']
-    [simple uint 11 'identifier']
-    [simple bit 'extended']
-    [simple bit 'remote']
-    [simple bit 'error']
-]
-
-[type 'CANHeader'
-    [simple uint 11 'identifier']
-    [simple bit 'extended']
-    [simple bit 'remote']
-    [simple bit 'error']
-
-]
-
-/* These are structures defined in linux kernel, provided here just for information purposes
-struct can_frame {
-  canid_t can_id;  // 32 bit CAN_ID + EFF/RTR/ERR flags
-  __u8    can_dlc; // frame payload length in byte (0 .. 8)
-  __u8    __pad;   // padding
-  __u8    __res0;  // reserved / padding
-  __u8    __res1;  // reserved / padding
-  __u8    data[8] __attribute__((aligned(8)));
-};
-struct canfd_frame {
-  canid_t can_id;  // 32 bit CAN_ID + EFF/RTR/ERR flags
-  __u8    len;     // frame payload length in byte (0 .. 64)
-  __u8    flags;   // additional flags for CAN FD
-  __u8    __res0;  // reserved / padding
-  __u8    __res1;  // reserved / padding
-  __u8    data[64] __attribute__((aligned(8)));
-};
-*/
-
 [type 'BrokenSocketCANFrame'
     [discriminator bit 'extended']
     [simple bit 'remote']
@@ -107,30 +72,4 @@ struct canfd_frame {
     [reserved uint 8 '0x0'] // padding 1
     [reserved uint 8 '0x0'] // padding 2
     [array int 8 'data' COUNT 'size']
-]
-
-[type 'SimplifiedSocketCANFrame'
-    [simple bit 'extended']
-    [simple bit 'remote']
-    [simple bit 'error']
-    [simple uint 29 'identifier']
-    //implicit uint 8 'size' 'COUNT(data)'
-    [reserved uint 8 '0x0'] // flags
-    [reserved uint 8 '0x0'] // padding
-    [reserved uint 8 '0x0'] // padding
-    //array int 8 'data' COUNT 'size'
-]
-
-[enum 'CanOpenNMTCommand'
-    ['0x01', START_DEVICE]
-    ['0x02', STOP_DEVICE]
-    ['0x80', PRE_START]
-    ['0x81', RESET_DEVICE]
-    ['0x82', RESET_COMMUNICATION]
-]
-
-[dataIo 'CANOpenFrame' [uint 4 'function', uint 7 nodeId, int 8 'data']
-    [discriminator uint 4 'afunction']
-    [typeSwitch 'afunction'
-    ]
 ]
\ No newline at end of file
diff --git a/sandbox/test-java-can-driver/pom.xml b/sandbox/test-java-can-driver/pom.xml
index 86bfddf..50e48e7 100644
--- a/sandbox/test-java-can-driver/pom.xml
+++ b/sandbox/test-java-can-driver/pom.xml
@@ -37,13 +37,25 @@
         <artifactId>plc4x-maven-plugin</artifactId>
         <executions>
           <execution>
-            <id>test</id>
+            <id>socketcan</id>
             <phase>generate-sources</phase>
             <goals>
               <goal>generate-driver</goal>
             </goals>
             <configuration>
-              <protocolName>can</protocolName>
+              <protocolName>socketcan</protocolName>
+              <languageName>java</languageName>
+              <outputFlavor>read-write</outputFlavor>
+            </configuration>
+          </execution>
+          <execution>
+            <id>canopen</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>generate-driver</goal>
+            </goals>
+            <configuration>
+              <protocolName>canopen</protocolName>
               <languageName>java</languageName>
               <outputFlavor>read-write</outputFlavor>
             </configuration>
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
index e1a55ed..c135280 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
@@ -24,8 +24,8 @@ import org.apache.plc4x.java.can.configuration.CANConfiguration;
 import org.apache.plc4x.java.can.context.CANDriverContext;
 import org.apache.plc4x.java.can.field.CANFieldHandler;
 import org.apache.plc4x.java.can.protocol.CANProtocolLogic;
-import org.apache.plc4x.java.can.readwrite.SocketCANFrame;
-import org.apache.plc4x.java.can.readwrite.io.SocketCANFrameIO;
+import org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame;
+import org.apache.plc4x.java.socketcan.readwrite.io.SocketCANFrameIO;
 import org.apache.plc4x.java.spi.configuration.Configuration;
 import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
 import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer;
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java
new file mode 100644
index 0000000..5f6b4d3
--- /dev/null
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java
@@ -0,0 +1,18 @@
+package org.apache.plc4x.java.can.helper;
+
+import org.apache.plc4x.java.canopen.readwrite.types.CANOpenService;
+import org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame;
+import org.apache.plc4x.java.spi.generation.ParseException;
+import org.apache.plc4x.java.spi.generation.WriteBuffer;
+
+public class CANOpenHelper {
+
+    public static CANOpenService readFunction(short identifier) {
+        return CANOpenService.valueOf((byte) (identifier >> 7));
+    }
+
+    public static void writeFunction(WriteBuffer io, short identifier) {
+        // NOOP - a placeholder to let mspec compile
+    }
+
+}
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/HeaderParser.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/HeaderParser.java
index c0363f6..2ad7a1c 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/HeaderParser.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/HeaderParser.java
@@ -1,6 +1,6 @@
 package org.apache.plc4x.java.can.helper;
 
-import org.apache.plc4x.java.can.readwrite.SocketCANFrame;
+import org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANProtocolLogic.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANProtocolLogic.java
index 57dd683..b556a07 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANProtocolLogic.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANProtocolLogic.java
@@ -18,7 +18,7 @@ under the License.
 */
 package org.apache.plc4x.java.can.protocol;
 
-import org.apache.plc4x.java.can.readwrite.SocketCANFrame;
+import org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame;
 import org.apache.plc4x.java.spi.ConversationContext;
 import org.apache.plc4x.java.spi.Plc4xProtocolBase;
 import org.slf4j.Logger;
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml b/sandbox/test-java-can-driver/src/test/java/org/apache/plc4x/java/can/CANOpenTest.java
similarity index 52%
copy from sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
copy to sandbox/test-java-can-driver/src/test/java/org/apache/plc4x/java/can/CANOpenTest.java
index e8f08f4..a97a1eb 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/java/org/apache/plc4x/java/can/CANOpenTest.java
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+/*
   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
@@ -16,25 +15,16 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  -->
-<test:testsuite xmlns:test="https://plc4x.apache.org/schemas/parser-serializer-testsuite.xsd">
+*/
 
-  <name>Tests of socketcan/CAN 2.0B frames</name>
+package org.apache.plc4x.java.can;
 
-  <testcase>
-    <name>Extended frame 1E6EC676#05.05.1F.26.C3</name>
-    <raw>76c66e9e0500000005051f26c3</raw>
-    <root-type>SocketCANFrame</root-type>
-    <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
-        <rawId>-1636907402</rawId>
-        <data>BQUfJsM=</data>
-        <identifier>510576246</identifier>
-        <extended>true</extended>
-        <remote>false</remote>
-        <error>false</error>
-      </SocketCANFrame>
-    </xml>
-  </testcase>
+import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner;
 
-</test:testsuite>
\ No newline at end of file
+public class CANOpenTest extends ParserSerializerTestsuiteRunner {
+
+    public CANOpenTest() {
+        super("/testsuite/CANOpenTestSuite.xml");
+    }
+
+}
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml b/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenTestSuite.xml
similarity index 71%
copy from sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
copy to sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenTestSuite.xml
index e8f08f4..b99128d 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenTestSuite.xml
@@ -19,20 +19,20 @@
   -->
 <test:testsuite xmlns:test="https://plc4x.apache.org/schemas/parser-serializer-testsuite.xsd">
 
-  <name>Tests of socketcan/CAN 2.0B frames</name>
+  <name>Tests of socketcan/CANopen frames.</name>
 
   <testcase>
-    <name>Extended frame 1E6EC676#05.05.1F.26.C3</name>
-    <raw>76c66e9e0500000005051f26c3</raw>
-    <root-type>SocketCANFrame</root-type>
+    <name>Network heartbeat frame: 728#05</name>
+    <raw>280700000100000005</raw>
+    <root-type>CANOpenFrame</root-type>
     <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
-        <rawId>-1636907402</rawId>
-        <data>BQUfJsM=</data>
-        <identifier>510576246</identifier>
-        <extended>true</extended>
+      <SocketCANFrame className="org.apache.plc4x.java.canopen.readwrite.CANOpenFrame">
+        <function>15</function>
+        <identifier>5</identifier>
+        <extended>false</extended>
         <remote>false</remote>
         <error>false</error>
+        <data>ESIzRFVmd4g=</data>
       </SocketCANFrame>
     </xml>
   </testcase>
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20ATestSuite.xml b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20ATestSuite.xml
index 60140de..3e647c5 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20ATestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20ATestSuite.xml
@@ -26,7 +26,7 @@
     <raw>a1050000080000001122334455667788</raw>
     <root-type>SocketCAN20AFrame</root-type>
     <xml>
-      <SocketCAN20AFrame className="org.apache.plc4x.java.can.readwrite.SocketCAN20AFrame">
+      <SocketCAN20AFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCAN20AFrame">
         <identifier>1441</identifier>
         <extended>false</extended>
         <remote>false</remote>
@@ -41,7 +41,7 @@
     <raw>a105000000000000</raw>
     <root-type>SocketCAN20AFrame</root-type>
     <xml>
-      <SocketCAN20AFrame className="org.apache.plc4x.java.can.readwrite.SocketCAN20AFrame">
+      <SocketCAN20AFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCAN20AFrame">
         <identifier>1441</identifier>
         <extended>false</extended>
         <remote>false</remote>
@@ -56,7 +56,7 @@
     <raw>a105004000000000</raw>
     <root-type>SocketCAN20AFrame</root-type>
     <xml>
-      <SocketCAN20AFrame className="org.apache.plc4x.java.can.readwrite.SocketCAN20AFrame">
+      <SocketCAN20AFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCAN20AFrame">
         <identifier>1441</identifier>
         <extended>false</extended>
         <remote>true</remote>
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
index e8f08f4..0e9caf3 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCAN20BTestSuite.xml
@@ -26,7 +26,7 @@
     <raw>76c66e9e0500000005051f26c3</raw>
     <root-type>SocketCANFrame</root-type>
     <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
+      <SocketCANFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame">
         <rawId>-1636907402</rawId>
         <data>BQUfJsM=</data>
         <identifier>510576246</identifier>
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCANTestSuite.xml b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCANTestSuite.xml
index f2518c0..03eaaf1 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCANTestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/resources/testsuite/SocketCANTestSuite.xml
@@ -26,7 +26,7 @@
     <raw>a1050000080000001122334455667788</raw>
     <root-type>SocketCANFrame</root-type>
     <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
+      <SocketCANFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame">
         <rawId>1441</rawId>
         <data>ESIzRFVmd4g=</data>
         <identifier>1441</identifier>
@@ -42,7 +42,7 @@
     <raw>a105000000000000</raw>
     <root-type>SocketCANFrame</root-type>
     <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
+      <SocketCANFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame">
         <rawId>1441</rawId>
         <data></data>
         <identifier>1441</identifier>
@@ -58,7 +58,7 @@
     <raw>a105004000000000</raw>
     <root-type>SocketCANFrame</root-type>
     <xml>
-      <SocketCANFrame className="org.apache.plc4x.java.can.readwrite.SocketCANFrame">
+      <SocketCANFrame className="org.apache.plc4x.java.socketcan.readwrite.SocketCANFrame">
         <rawId>1073743265</rawId>
         <data></data>
         <identifier>1441</identifier>