You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cg...@apache.org on 2023/12/03 13:02:02 UTC

(plc4x) branch feature/s7strings updated (c031ec6d60 -> 00b58d61ec)

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

cgarcia pushed a change to branch feature/s7strings
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from c031ec6d60 fix: Made it possible to use signed integers for creating PlcTIME values in Go (Needed to add explicit casts to the generated Go gode)
     new 90500e9aa1 Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.
     new 00b58d61ec Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4j/drivers/s7/pom.xml                           |   6 +-
 ...S7PayloadUserDataItemCpuFunctionAlarmQuery.java | 317 ---------------------
 ...loadUserDataItemCpuFunctionMsgSubscription.java | 252 ----------------
 .../plc4x/java/s7/readwrite/TransportSize.java     |   2 +-
 .../examples/plc4j/s7event/PlcReadDataS7400H.java  |   4 +-
 .../org/apache/plc4x/java/spi/values/PlcTIME.java  |  10 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   2 +-
 7 files changed, 14 insertions(+), 579 deletions(-)
 delete mode 100644 plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQuery.java
 delete mode 100644 plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionMsgSubscription.java


(plc4x) 02/02: Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.

Posted by cg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 00b58d61ec1d02eed9cbc81f19e38969da547d3a
Author: Cesar Garcia <ce...@ceos.com.ve>
AuthorDate: Sun Dec 3 08:54:58 2023 -0400

    Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.
---
 plc4j/drivers/s7/pom.xml                           |   4 +-
 .../java/s7/readwrite/Alarm8MessageQueryType.java  | 252 ++++++++
 .../readwrite/AlarmMessageAckObjectPushType.java   | 253 ++++++++
 .../java/s7/readwrite/AlarmMessageAckPushType.java | 192 ++++++
 .../s7/readwrite/AlarmMessageAckResponseType.java  | 164 +++++
 .../java/s7/readwrite/AlarmMessageAckType.java     | 170 ++++++
 .../s7/readwrite/AlarmMessageObjectAckType.java    | 246 ++++++++
 .../s7/readwrite/AlarmMessageObjectPushType.java   | 329 ++++++++++
 .../s7/readwrite/AlarmMessageObjectQueryType.java  | 310 ++++++++++
 .../java/s7/readwrite/AlarmMessagePushType.java    | 192 ++++++
 .../java/s7/readwrite/AlarmMessageQueryType.java   | 252 ++++++++
 .../plc4x/java/s7/readwrite/AlarmStateType.java    |  59 ++
 .../apache/plc4x/java/s7/readwrite/AlarmType.java  |  56 ++
 .../s7/readwrite/AssociatedQueryValueType.java     | 204 +++++++
 .../java/s7/readwrite/AssociatedValueType.java     | 220 +++++++
 .../apache/plc4x/java/s7/readwrite/COTPPacket.java | 238 ++++++++
 .../s7/readwrite/COTPPacketConnectionRequest.java  | 200 ++++++
 .../s7/readwrite/COTPPacketConnectionResponse.java | 200 ++++++
 .../plc4x/java/s7/readwrite/COTPPacketData.java    | 159 +++++
 .../s7/readwrite/COTPPacketDisconnectRequest.java  | 200 ++++++
 .../s7/readwrite/COTPPacketDisconnectResponse.java | 167 +++++
 .../java/s7/readwrite/COTPPacketTpduError.java     | 165 +++++
 .../plc4x/java/s7/readwrite/COTPParameter.java     | 182 ++++++
 .../java/s7/readwrite/COTPParameterCalledTsap.java | 141 +++++
 .../s7/readwrite/COTPParameterCallingTsap.java     | 141 +++++
 .../java/s7/readwrite/COTPParameterChecksum.java   | 141 +++++
 ...TPParameterDisconnectAdditionalInformation.java | 145 +++++
 .../java/s7/readwrite/COTPParameterTpduSize.java   | 151 +++++
 .../plc4x/java/s7/readwrite/COTPProtocolClass.java |  58 ++
 .../plc4x/java/s7/readwrite/COTPTpduSize.java      |  87 +++
 .../java/s7/readwrite/CpuSubscribeEvents.java      |  57 ++
 .../java/s7/readwrite/CycServiceItemAnyType.java   | 244 ++++++++
 .../s7/readwrite/CycServiceItemDbReadType.java     | 169 +++++
 .../java/s7/readwrite/CycServiceItemType.java      | 189 ++++++
 .../apache/plc4x/java/s7/readwrite/DataItem.java   | 531 ++++++++++++++++
 .../java/s7/readwrite/DataTransportErrorCode.java  |  59 ++
 .../plc4x/java/s7/readwrite/DataTransportSize.java |  87 +++
 .../plc4x/java/s7/readwrite/DateAndTime.java       | 313 ++++++++++
 .../plc4x/java/s7/readwrite/DeviceGroup.java       |  56 ++
 .../apache/plc4x/java/s7/readwrite/EventType.java  |  58 ++
 .../apache/plc4x/java/s7/readwrite/MemoryArea.java |  89 +++
 .../java/s7/readwrite/ModeTransitionType.java      |  62 ++
 .../apache/plc4x/java/s7/readwrite/QueryType.java  |  57 ++
 .../apache/plc4x/java/s7/readwrite/S7Address.java  | 146 +++++
 .../plc4x/java/s7/readwrite/S7AddressAny.java      | 276 +++++++++
 .../java/s7/readwrite/S7DataAlarmMessage.java      | 192 ++++++
 .../apache/plc4x/java/s7/readwrite/S7Message.java  | 262 ++++++++
 .../java/s7/readwrite/S7MessageObjectRequest.java  | 256 ++++++++
 .../java/s7/readwrite/S7MessageObjectResponse.java | 196 ++++++
 .../plc4x/java/s7/readwrite/S7MessageRequest.java  | 120 ++++
 .../plc4x/java/s7/readwrite/S7MessageResponse.java | 164 +++++
 .../java/s7/readwrite/S7MessageResponseData.java   | 165 +++++
 .../plc4x/java/s7/readwrite/S7MessageUserData.java | 121 ++++
 .../plc4x/java/s7/readwrite/S7Parameter.java       | 187 ++++++
 .../s7/readwrite/S7ParameterModeTransition.java    | 252 ++++++++
 .../s7/readwrite/S7ParameterReadVarRequest.java    | 165 +++++
 .../s7/readwrite/S7ParameterReadVarResponse.java   | 145 +++++
 .../readwrite/S7ParameterSetupCommunication.java   | 191 ++++++
 .../java/s7/readwrite/S7ParameterUserData.java     | 164 +++++
 .../java/s7/readwrite/S7ParameterUserDataItem.java | 148 +++++
 .../S7ParameterUserDataItemCPUFunctions.java       | 337 ++++++++++
 .../s7/readwrite/S7ParameterWriteVarRequest.java   | 165 +++++
 .../s7/readwrite/S7ParameterWriteVarResponse.java  | 145 +++++
 .../apache/plc4x/java/s7/readwrite/S7Payload.java  | 179 ++++++
 .../plc4x/java/s7/readwrite/S7PayloadAlarm8.java   | 160 +++++
 .../java/s7/readwrite/S7PayloadAlarmAckInd.java    | 160 +++++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmS.java   | 160 +++++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSC.java  | 160 +++++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSQ.java  | 160 +++++
 .../s7/readwrite/S7PayloadDiagnosticMessage.java   | 295 +++++++++
 .../plc4x/java/s7/readwrite/S7PayloadNotify.java   | 160 +++++
 .../plc4x/java/s7/readwrite/S7PayloadNotify8.java  | 160 +++++
 .../s7/readwrite/S7PayloadReadVarResponse.java     | 154 +++++
 .../plc4x/java/s7/readwrite/S7PayloadUserData.java | 172 ++++++
 .../java/s7/readwrite/S7PayloadUserDataItem.java   | 483 +++++++++++++++
 .../S7PayloadUserDataItemClkFRequest.java          | 134 ++++
 .../S7PayloadUserDataItemClkFResponse.java         | 203 ++++++
 .../readwrite/S7PayloadUserDataItemClkRequest.java | 134 ++++
 .../S7PayloadUserDataItemClkResponse.java          | 203 ++++++
 .../S7PayloadUserDataItemClkSetRequest.java        | 177 ++++++
 .../S7PayloadUserDataItemClkSetResponse.java       | 134 ++++
 ...erDataItemCpuFunctionAlarmAckErrorResponse.java | 138 +++++
 ...loadUserDataItemCpuFunctionAlarmAckRequest.java | 201 ++++++
 ...oadUserDataItemCpuFunctionAlarmAckResponse.java | 195 ++++++
 ...adUserDataItemCpuFunctionAlarmQueryRequest.java | 316 ++++++++++
 ...dUserDataItemCpuFunctionAlarmQueryResponse.java | 166 +++++
 ...temCpuFunctionMsgSubscriptionAlarmResponse.java | 258 ++++++++
 ...rDataItemCpuFunctionMsgSubscriptionRequest.java | 250 ++++++++
 ...DataItemCpuFunctionMsgSubscriptionResponse.java | 138 +++++
 ...aItemCpuFunctionMsgSubscriptionSysResponse.java | 182 ++++++
 ...serDataItemCpuFunctionReadSzlNoDataRequest.java | 138 +++++
 ...yloadUserDataItemCpuFunctionReadSzlRequest.java | 183 ++++++
 ...loadUserDataItemCpuFunctionReadSzlResponse.java | 166 +++++
 ...UserDataItemCyclicServicesChangeDrivenPush.java | 192 ++++++
 ...yclicServicesChangeDrivenSubscribeResponse.java | 193 ++++++
 ...oadUserDataItemCyclicServicesErrorResponse.java | 138 +++++
 .../S7PayloadUserDataItemCyclicServicesPush.java   | 190 ++++++
 ...UserDataItemCyclicServicesSubscribeRequest.java | 239 ++++++++
 ...serDataItemCyclicServicesSubscribeResponse.java | 192 ++++++
 ...erDataItemCyclicServicesUnsubscribeRequest.java | 181 ++++++
 ...rDataItemCyclicServicesUnsubscribeResponse.java | 138 +++++
 .../s7/readwrite/S7PayloadWriteVarRequest.java     | 154 +++++
 .../s7/readwrite/S7PayloadWriteVarResponse.java    | 154 +++++
 .../java/s7/readwrite/S7VarPayloadDataItem.java    | 220 +++++++
 .../java/s7/readwrite/S7VarPayloadStatusItem.java  | 139 +++++
 .../s7/readwrite/S7VarRequestParameterItem.java    | 148 +++++
 .../S7VarRequestParameterItemAddress.java          | 155 +++++
 .../org/apache/plc4x/java/s7/readwrite/State.java  | 248 ++++++++
 .../apache/plc4x/java/s7/readwrite/SubItem.java    | 157 +++++
 .../plc4x/java/s7/readwrite/SyntaxIdType.java      |  66 ++
 .../plc4x/java/s7/readwrite/SzlDataTreeItem.java   | 190 ++++++
 .../org/apache/plc4x/java/s7/readwrite/SzlId.java  | 179 ++++++
 .../java/s7/readwrite/SzlModuleTypeClass.java      |  57 ++
 .../apache/plc4x/java/s7/readwrite/SzlSublist.java |  79 +++
 .../apache/plc4x/java/s7/readwrite/TPKTPacket.java | 193 ++++++
 .../apache/plc4x/java/s7/readwrite/TimeBase.java   |  56 ++
 .../plc4x/java/s7/readwrite/TransportSize.java     | 680 +++++++++++++++++++++
 .../examples/plc4j/s7event/PlcReadDataS7400H.java  |   5 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   2 +-
 119 files changed, 21105 insertions(+), 5 deletions(-)

diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index 4cf409d013..44c86effb7 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -36,8 +36,8 @@
   </properties>
 
   <build>
-    <plugins>    
-      <plugin>
+    <plugins>   
+        <plugin> 
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
         <executions>         
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java
new file mode 100644
index 0000000000..31e7dab092
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java
@@ -0,0 +1,252 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class Alarm8MessageQueryType implements Message {
+
+  // Properties.
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final DataTransportErrorCode returnCode;
+  protected final DataTransportSize transportSize;
+  protected final int byteCount;
+  protected final List<AlarmMessageObjectQueryType> messageObjects;
+
+  public Alarm8MessageQueryType(
+      short functionId,
+      short numberOfObjects,
+      DataTransportErrorCode returnCode,
+      DataTransportSize transportSize,
+      int byteCount,
+      List<AlarmMessageObjectQueryType> messageObjects) {
+    super();
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.returnCode = returnCode;
+    this.transportSize = transportSize;
+    this.byteCount = byteCount;
+    this.messageObjects = messageObjects;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public DataTransportErrorCode getReturnCode() {
+    return returnCode;
+  }
+
+  public DataTransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public int getByteCount() {
+    return byteCount;
+  }
+
+  public List<AlarmMessageObjectQueryType> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("Alarm8MessageQueryType");
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (returnCode)
+    writeSimpleEnumField(
+        "returnCode",
+        "DataTransportErrorCode",
+        returnCode,
+        new DataWriterEnumDefault<>(
+            DataTransportErrorCode::getValue,
+            DataTransportErrorCode::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (transportSize)
+    writeSimpleEnumField(
+        "transportSize",
+        "DataTransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            DataTransportSize::getValue,
+            DataTransportSize::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (byteCount)
+    writeSimpleField("byteCount", byteCount, writeUnsignedInt(writeBuffer, 16));
+
+    // Array Field (messageObjects)
+    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
+
+    writeBuffer.popContext("Alarm8MessageQueryType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    Alarm8MessageQueryType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Simple field (returnCode)
+    lengthInBits += 8;
+
+    // Simple field (transportSize)
+    lengthInBits += 8;
+
+    // Simple field (byteCount)
+    lengthInBits += 16;
+
+    // Array field
+    if (messageObjects != null) {
+      int i = 0;
+      for (AlarmMessageObjectQueryType element : messageObjects) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static Alarm8MessageQueryType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static Alarm8MessageQueryType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("Alarm8MessageQueryType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    DataTransportErrorCode returnCode =
+        readEnumField(
+            "returnCode",
+            "DataTransportErrorCode",
+            new DataReaderEnumDefault<>(
+                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    DataTransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "DataTransportSize",
+            new DataReaderEnumDefault<>(
+                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    int byteCount = readSimpleField("byteCount", readUnsignedInt(readBuffer, 16));
+
+    List<AlarmMessageObjectQueryType> messageObjects =
+        readCountArrayField(
+            "messageObjects",
+            new DataReaderComplexDefault<>(
+                () -> AlarmMessageObjectQueryType.staticParse(readBuffer), readBuffer),
+            (byteCount) / (12));
+
+    readBuffer.closeContext("Alarm8MessageQueryType");
+    // Create the instance
+    Alarm8MessageQueryType _alarm8MessageQueryType;
+    _alarm8MessageQueryType =
+        new Alarm8MessageQueryType(
+            functionId, numberOfObjects, returnCode, transportSize, byteCount, messageObjects);
+    return _alarm8MessageQueryType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof Alarm8MessageQueryType)) {
+      return false;
+    }
+    Alarm8MessageQueryType that = (Alarm8MessageQueryType) o;
+    return (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getReturnCode() == that.getReturnCode())
+        && (getTransportSize() == that.getTransportSize())
+        && (getByteCount() == that.getByteCount())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getFunctionId(),
+        getNumberOfObjects(),
+        getReturnCode(),
+        getTransportSize(),
+        getByteCount(),
+        getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java
new file mode 100644
index 0000000000..342589eba6
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java
@@ -0,0 +1,253 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageAckObjectPushType implements Message {
+
+  // Constant values.
+  public static final Short VARIABLESPEC = 0x12;
+
+  // Properties.
+  protected final short lengthSpec;
+  protected final SyntaxIdType syntaxId;
+  protected final short numberOfValues;
+  protected final long eventId;
+  protected final State ackStateGoing;
+  protected final State ackStateComing;
+
+  public AlarmMessageAckObjectPushType(
+      short lengthSpec,
+      SyntaxIdType syntaxId,
+      short numberOfValues,
+      long eventId,
+      State ackStateGoing,
+      State ackStateComing) {
+    super();
+    this.lengthSpec = lengthSpec;
+    this.syntaxId = syntaxId;
+    this.numberOfValues = numberOfValues;
+    this.eventId = eventId;
+    this.ackStateGoing = ackStateGoing;
+    this.ackStateComing = ackStateComing;
+  }
+
+  public short getLengthSpec() {
+    return lengthSpec;
+  }
+
+  public SyntaxIdType getSyntaxId() {
+    return syntaxId;
+  }
+
+  public short getNumberOfValues() {
+    return numberOfValues;
+  }
+
+  public long getEventId() {
+    return eventId;
+  }
+
+  public State getAckStateGoing() {
+    return ackStateGoing;
+  }
+
+  public State getAckStateComing() {
+    return ackStateComing;
+  }
+
+  public short getVariableSpec() {
+    return VARIABLESPEC;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageAckObjectPushType");
+
+    // Const Field (variableSpec)
+    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (lengthSpec)
+    writeSimpleField("lengthSpec", lengthSpec, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (syntaxId)
+    writeSimpleEnumField(
+        "syntaxId",
+        "SyntaxIdType",
+        syntaxId,
+        new DataWriterEnumDefault<>(
+            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (numberOfValues)
+    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (eventId)
+    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
+
+    // Simple Field (ackStateGoing)
+    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateComing)
+    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    writeBuffer.popContext("AlarmMessageAckObjectPushType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageAckObjectPushType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (variableSpec)
+    lengthInBits += 8;
+
+    // Simple field (lengthSpec)
+    lengthInBits += 8;
+
+    // Simple field (syntaxId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfValues)
+    lengthInBits += 8;
+
+    // Simple field (eventId)
+    lengthInBits += 32;
+
+    // Simple field (ackStateGoing)
+    lengthInBits += ackStateGoing.getLengthInBits();
+
+    // Simple field (ackStateComing)
+    lengthInBits += ackStateComing.getLengthInBits();
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageAckObjectPushType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageAckObjectPushType staticParse(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("AlarmMessageAckObjectPushType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short variableSpec =
+        readConstField(
+            "variableSpec",
+            readUnsignedShort(readBuffer, 8),
+            AlarmMessageAckObjectPushType.VARIABLESPEC);
+
+    short lengthSpec = readSimpleField("lengthSpec", readUnsignedShort(readBuffer, 8));
+
+    SyntaxIdType syntaxId =
+        readEnumField(
+            "syntaxId",
+            "SyntaxIdType",
+            new DataReaderEnumDefault<>(
+                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
+
+    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
+
+    State ackStateGoing =
+        readSimpleField(
+            "ackStateGoing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateComing =
+        readSimpleField(
+            "ackStateComing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    readBuffer.closeContext("AlarmMessageAckObjectPushType");
+    // Create the instance
+    AlarmMessageAckObjectPushType _alarmMessageAckObjectPushType;
+    _alarmMessageAckObjectPushType =
+        new AlarmMessageAckObjectPushType(
+            lengthSpec, syntaxId, numberOfValues, eventId, ackStateGoing, ackStateComing);
+    return _alarmMessageAckObjectPushType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageAckObjectPushType)) {
+      return false;
+    }
+    AlarmMessageAckObjectPushType that = (AlarmMessageAckObjectPushType) o;
+    return (getLengthSpec() == that.getLengthSpec())
+        && (getSyntaxId() == that.getSyntaxId())
+        && (getNumberOfValues() == that.getNumberOfValues())
+        && (getEventId() == that.getEventId())
+        && (getAckStateGoing() == that.getAckStateGoing())
+        && (getAckStateComing() == that.getAckStateComing())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getLengthSpec(),
+        getSyntaxId(),
+        getNumberOfValues(),
+        getEventId(),
+        getAckStateGoing(),
+        getAckStateComing());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java
new file mode 100644
index 0000000000..48491b961a
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java
@@ -0,0 +1,192 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageAckPushType implements Message {
+
+  // Properties.
+  protected final DateAndTime TimeStamp;
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final List<AlarmMessageAckObjectPushType> messageObjects;
+
+  public AlarmMessageAckPushType(
+      DateAndTime TimeStamp,
+      short functionId,
+      short numberOfObjects,
+      List<AlarmMessageAckObjectPushType> messageObjects) {
+    super();
+    this.TimeStamp = TimeStamp;
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.messageObjects = messageObjects;
+  }
+
+  public DateAndTime getTimeStamp() {
+    return TimeStamp;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public List<AlarmMessageAckObjectPushType> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageAckPushType");
+
+    // Simple Field (TimeStamp)
+    writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Array Field (messageObjects)
+    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
+
+    writeBuffer.popContext("AlarmMessageAckPushType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageAckPushType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (TimeStamp)
+    lengthInBits += TimeStamp.getLengthInBits();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Array field
+    if (messageObjects != null) {
+      int i = 0;
+      for (AlarmMessageAckObjectPushType element : messageObjects) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageAckPushType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageAckPushType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AlarmMessageAckPushType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    DateAndTime TimeStamp =
+        readSimpleField(
+            "TimeStamp",
+            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    List<AlarmMessageAckObjectPushType> messageObjects =
+        readCountArrayField(
+            "messageObjects",
+            new DataReaderComplexDefault<>(
+                () -> AlarmMessageAckObjectPushType.staticParse(readBuffer), readBuffer),
+            numberOfObjects);
+
+    readBuffer.closeContext("AlarmMessageAckPushType");
+    // Create the instance
+    AlarmMessageAckPushType _alarmMessageAckPushType;
+    _alarmMessageAckPushType =
+        new AlarmMessageAckPushType(TimeStamp, functionId, numberOfObjects, messageObjects);
+    return _alarmMessageAckPushType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageAckPushType)) {
+      return false;
+    }
+    AlarmMessageAckPushType that = (AlarmMessageAckPushType) o;
+    return (getTimeStamp() == that.getTimeStamp())
+        && (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getTimeStamp(), getFunctionId(), getNumberOfObjects(), getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java
new file mode 100644
index 0000000000..e588b6ca41
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java
@@ -0,0 +1,164 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageAckResponseType implements Message {
+
+  // Properties.
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final List<Short> messageObjects;
+
+  public AlarmMessageAckResponseType(
+      short functionId, short numberOfObjects, List<Short> messageObjects) {
+    super();
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.messageObjects = messageObjects;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public List<Short> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageAckResponseType");
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Array Field (messageObjects)
+    writeSimpleTypeArrayField("messageObjects", messageObjects, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("AlarmMessageAckResponseType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageAckResponseType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Array field
+    if (messageObjects != null) {
+      lengthInBits += 8 * messageObjects.size();
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageAckResponseType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageAckResponseType staticParse(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("AlarmMessageAckResponseType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    List<Short> messageObjects =
+        readCountArrayField("messageObjects", readUnsignedShort(readBuffer, 8), numberOfObjects);
+
+    readBuffer.closeContext("AlarmMessageAckResponseType");
+    // Create the instance
+    AlarmMessageAckResponseType _alarmMessageAckResponseType;
+    _alarmMessageAckResponseType =
+        new AlarmMessageAckResponseType(functionId, numberOfObjects, messageObjects);
+    return _alarmMessageAckResponseType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageAckResponseType)) {
+      return false;
+    }
+    AlarmMessageAckResponseType that = (AlarmMessageAckResponseType) o;
+    return (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getFunctionId(), getNumberOfObjects(), getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java
new file mode 100644
index 0000000000..bea2571d06
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java
@@ -0,0 +1,170 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageAckType implements Message {
+
+  // Properties.
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final List<AlarmMessageObjectAckType> messageObjects;
+
+  public AlarmMessageAckType(
+      short functionId, short numberOfObjects, List<AlarmMessageObjectAckType> messageObjects) {
+    super();
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.messageObjects = messageObjects;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public List<AlarmMessageObjectAckType> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageAckType");
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Array Field (messageObjects)
+    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
+
+    writeBuffer.popContext("AlarmMessageAckType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageAckType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Array field
+    if (messageObjects != null) {
+      int i = 0;
+      for (AlarmMessageObjectAckType element : messageObjects) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageAckType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageAckType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AlarmMessageAckType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    List<AlarmMessageObjectAckType> messageObjects =
+        readCountArrayField(
+            "messageObjects",
+            new DataReaderComplexDefault<>(
+                () -> AlarmMessageObjectAckType.staticParse(readBuffer), readBuffer),
+            numberOfObjects);
+
+    readBuffer.closeContext("AlarmMessageAckType");
+    // Create the instance
+    AlarmMessageAckType _alarmMessageAckType;
+    _alarmMessageAckType = new AlarmMessageAckType(functionId, numberOfObjects, messageObjects);
+    return _alarmMessageAckType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageAckType)) {
+      return false;
+    }
+    AlarmMessageAckType that = (AlarmMessageAckType) o;
+    return (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getFunctionId(), getNumberOfObjects(), getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java
new file mode 100644
index 0000000000..fc3ff16398
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java
@@ -0,0 +1,246 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageObjectAckType implements Message {
+
+  // Constant values.
+  public static final Short VARIABLESPEC = 0x12;
+  public static final Short LENGTH = 0x08;
+
+  // Properties.
+  protected final SyntaxIdType syntaxId;
+  protected final short numberOfValues;
+  protected final long eventId;
+  protected final State ackStateGoing;
+  protected final State ackStateComing;
+
+  public AlarmMessageObjectAckType(
+      SyntaxIdType syntaxId,
+      short numberOfValues,
+      long eventId,
+      State ackStateGoing,
+      State ackStateComing) {
+    super();
+    this.syntaxId = syntaxId;
+    this.numberOfValues = numberOfValues;
+    this.eventId = eventId;
+    this.ackStateGoing = ackStateGoing;
+    this.ackStateComing = ackStateComing;
+  }
+
+  public SyntaxIdType getSyntaxId() {
+    return syntaxId;
+  }
+
+  public short getNumberOfValues() {
+    return numberOfValues;
+  }
+
+  public long getEventId() {
+    return eventId;
+  }
+
+  public State getAckStateGoing() {
+    return ackStateGoing;
+  }
+
+  public State getAckStateComing() {
+    return ackStateComing;
+  }
+
+  public short getVariableSpec() {
+    return VARIABLESPEC;
+  }
+
+  public short getLength() {
+    return LENGTH;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageObjectAckType");
+
+    // Const Field (variableSpec)
+    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
+
+    // Const Field (length)
+    writeConstField("length", LENGTH, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (syntaxId)
+    writeSimpleEnumField(
+        "syntaxId",
+        "SyntaxIdType",
+        syntaxId,
+        new DataWriterEnumDefault<>(
+            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (numberOfValues)
+    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (eventId)
+    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
+
+    // Simple Field (ackStateGoing)
+    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateComing)
+    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    writeBuffer.popContext("AlarmMessageObjectAckType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageObjectAckType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (variableSpec)
+    lengthInBits += 8;
+
+    // Const Field (length)
+    lengthInBits += 8;
+
+    // Simple field (syntaxId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfValues)
+    lengthInBits += 8;
+
+    // Simple field (eventId)
+    lengthInBits += 32;
+
+    // Simple field (ackStateGoing)
+    lengthInBits += ackStateGoing.getLengthInBits();
+
+    // Simple field (ackStateComing)
+    lengthInBits += ackStateComing.getLengthInBits();
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageObjectAckType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageObjectAckType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AlarmMessageObjectAckType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short variableSpec =
+        readConstField(
+            "variableSpec",
+            readUnsignedShort(readBuffer, 8),
+            AlarmMessageObjectAckType.VARIABLESPEC);
+
+    short length =
+        readConstField(
+            "length", readUnsignedShort(readBuffer, 8), AlarmMessageObjectAckType.LENGTH);
+
+    SyntaxIdType syntaxId =
+        readEnumField(
+            "syntaxId",
+            "SyntaxIdType",
+            new DataReaderEnumDefault<>(
+                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
+
+    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
+
+    State ackStateGoing =
+        readSimpleField(
+            "ackStateGoing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateComing =
+        readSimpleField(
+            "ackStateComing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    readBuffer.closeContext("AlarmMessageObjectAckType");
+    // Create the instance
+    AlarmMessageObjectAckType _alarmMessageObjectAckType;
+    _alarmMessageObjectAckType =
+        new AlarmMessageObjectAckType(
+            syntaxId, numberOfValues, eventId, ackStateGoing, ackStateComing);
+    return _alarmMessageObjectAckType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageObjectAckType)) {
+      return false;
+    }
+    AlarmMessageObjectAckType that = (AlarmMessageObjectAckType) o;
+    return (getSyntaxId() == that.getSyntaxId())
+        && (getNumberOfValues() == that.getNumberOfValues())
+        && (getEventId() == that.getEventId())
+        && (getAckStateGoing() == that.getAckStateGoing())
+        && (getAckStateComing() == that.getAckStateComing())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getSyntaxId(), getNumberOfValues(), getEventId(), getAckStateGoing(), getAckStateComing());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java
new file mode 100644
index 0000000000..42777096da
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java
@@ -0,0 +1,329 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageObjectPushType implements Message {
+
+  // Constant values.
+  public static final Short VARIABLESPEC = 0x12;
+
+  // Properties.
+  protected final short lengthSpec;
+  protected final SyntaxIdType syntaxId;
+  protected final short numberOfValues;
+  protected final long eventId;
+  protected final State eventState;
+  protected final State localState;
+  protected final State ackStateGoing;
+  protected final State ackStateComing;
+  protected final List<AssociatedValueType> AssociatedValues;
+
+  public AlarmMessageObjectPushType(
+      short lengthSpec,
+      SyntaxIdType syntaxId,
+      short numberOfValues,
+      long eventId,
+      State eventState,
+      State localState,
+      State ackStateGoing,
+      State ackStateComing,
+      List<AssociatedValueType> AssociatedValues) {
+    super();
+    this.lengthSpec = lengthSpec;
+    this.syntaxId = syntaxId;
+    this.numberOfValues = numberOfValues;
+    this.eventId = eventId;
+    this.eventState = eventState;
+    this.localState = localState;
+    this.ackStateGoing = ackStateGoing;
+    this.ackStateComing = ackStateComing;
+    this.AssociatedValues = AssociatedValues;
+  }
+
+  public short getLengthSpec() {
+    return lengthSpec;
+  }
+
+  public SyntaxIdType getSyntaxId() {
+    return syntaxId;
+  }
+
+  public short getNumberOfValues() {
+    return numberOfValues;
+  }
+
+  public long getEventId() {
+    return eventId;
+  }
+
+  public State getEventState() {
+    return eventState;
+  }
+
+  public State getLocalState() {
+    return localState;
+  }
+
+  public State getAckStateGoing() {
+    return ackStateGoing;
+  }
+
+  public State getAckStateComing() {
+    return ackStateComing;
+  }
+
+  public List<AssociatedValueType> getAssociatedValues() {
+    return AssociatedValues;
+  }
+
+  public short getVariableSpec() {
+    return VARIABLESPEC;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageObjectPushType");
+
+    // Const Field (variableSpec)
+    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (lengthSpec)
+    writeSimpleField("lengthSpec", lengthSpec, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (syntaxId)
+    writeSimpleEnumField(
+        "syntaxId",
+        "SyntaxIdType",
+        syntaxId,
+        new DataWriterEnumDefault<>(
+            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (numberOfValues)
+    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (eventId)
+    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
+
+    // Simple Field (eventState)
+    writeSimpleField("eventState", eventState, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (localState)
+    writeSimpleField("localState", localState, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateGoing)
+    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateComing)
+    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Array Field (AssociatedValues)
+    writeComplexTypeArrayField("AssociatedValues", AssociatedValues, writeBuffer);
+
+    writeBuffer.popContext("AlarmMessageObjectPushType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageObjectPushType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (variableSpec)
+    lengthInBits += 8;
+
+    // Simple field (lengthSpec)
+    lengthInBits += 8;
+
+    // Simple field (syntaxId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfValues)
+    lengthInBits += 8;
+
+    // Simple field (eventId)
+    lengthInBits += 32;
+
+    // Simple field (eventState)
+    lengthInBits += eventState.getLengthInBits();
+
+    // Simple field (localState)
+    lengthInBits += localState.getLengthInBits();
+
+    // Simple field (ackStateGoing)
+    lengthInBits += ackStateGoing.getLengthInBits();
+
+    // Simple field (ackStateComing)
+    lengthInBits += ackStateComing.getLengthInBits();
+
+    // Array field
+    if (AssociatedValues != null) {
+      int i = 0;
+      for (AssociatedValueType element : AssociatedValues) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= AssociatedValues.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageObjectPushType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageObjectPushType staticParse(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("AlarmMessageObjectPushType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short variableSpec =
+        readConstField(
+            "variableSpec",
+            readUnsignedShort(readBuffer, 8),
+            AlarmMessageObjectPushType.VARIABLESPEC);
+
+    short lengthSpec = readSimpleField("lengthSpec", readUnsignedShort(readBuffer, 8));
+
+    SyntaxIdType syntaxId =
+        readEnumField(
+            "syntaxId",
+            "SyntaxIdType",
+            new DataReaderEnumDefault<>(
+                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
+
+    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
+
+    State eventState =
+        readSimpleField(
+            "eventState",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State localState =
+        readSimpleField(
+            "localState",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateGoing =
+        readSimpleField(
+            "ackStateGoing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateComing =
+        readSimpleField(
+            "ackStateComing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    List<AssociatedValueType> AssociatedValues =
+        readCountArrayField(
+            "AssociatedValues",
+            new DataReaderComplexDefault<>(
+                () -> AssociatedValueType.staticParse(readBuffer), readBuffer),
+            numberOfValues);
+
+    readBuffer.closeContext("AlarmMessageObjectPushType");
+    // Create the instance
+    AlarmMessageObjectPushType _alarmMessageObjectPushType;
+    _alarmMessageObjectPushType =
+        new AlarmMessageObjectPushType(
+            lengthSpec,
+            syntaxId,
+            numberOfValues,
+            eventId,
+            eventState,
+            localState,
+            ackStateGoing,
+            ackStateComing,
+            AssociatedValues);
+    return _alarmMessageObjectPushType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageObjectPushType)) {
+      return false;
+    }
+    AlarmMessageObjectPushType that = (AlarmMessageObjectPushType) o;
+    return (getLengthSpec() == that.getLengthSpec())
+        && (getSyntaxId() == that.getSyntaxId())
+        && (getNumberOfValues() == that.getNumberOfValues())
+        && (getEventId() == that.getEventId())
+        && (getEventState() == that.getEventState())
+        && (getLocalState() == that.getLocalState())
+        && (getAckStateGoing() == that.getAckStateGoing())
+        && (getAckStateComing() == that.getAckStateComing())
+        && (getAssociatedValues() == that.getAssociatedValues())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getLengthSpec(),
+        getSyntaxId(),
+        getNumberOfValues(),
+        getEventId(),
+        getEventState(),
+        getLocalState(),
+        getAckStateGoing(),
+        getAckStateComing(),
+        getAssociatedValues());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
new file mode 100644
index 0000000000..7d931070da
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
@@ -0,0 +1,310 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageObjectQueryType implements Message {
+
+  // Constant values.
+  public static final Short VARIABLESPEC = 0x12;
+
+  // Properties.
+  protected final short lengthDataset;
+  protected final State eventState;
+  protected final State ackStateGoing;
+  protected final State ackStateComing;
+  protected final DateAndTime timeComing;
+  protected final AssociatedValueType valueComing;
+  protected final DateAndTime timeGoing;
+  protected final AssociatedValueType valueGoing;
+
+  public AlarmMessageObjectQueryType(
+      short lengthDataset,
+      State eventState,
+      State ackStateGoing,
+      State ackStateComing,
+      DateAndTime timeComing,
+      AssociatedValueType valueComing,
+      DateAndTime timeGoing,
+      AssociatedValueType valueGoing) {
+    super();
+    this.lengthDataset = lengthDataset;
+    this.eventState = eventState;
+    this.ackStateGoing = ackStateGoing;
+    this.ackStateComing = ackStateComing;
+    this.timeComing = timeComing;
+    this.valueComing = valueComing;
+    this.timeGoing = timeGoing;
+    this.valueGoing = valueGoing;
+  }
+
+  public short getLengthDataset() {
+    return lengthDataset;
+  }
+
+  public State getEventState() {
+    return eventState;
+  }
+
+  public State getAckStateGoing() {
+    return ackStateGoing;
+  }
+
+  public State getAckStateComing() {
+    return ackStateComing;
+  }
+
+  public DateAndTime getTimeComing() {
+    return timeComing;
+  }
+
+  public AssociatedValueType getValueComing() {
+    return valueComing;
+  }
+
+  public DateAndTime getTimeGoing() {
+    return timeGoing;
+  }
+
+  public AssociatedValueType getValueGoing() {
+    return valueGoing;
+  }
+
+  public short getVariableSpec() {
+    return VARIABLESPEC;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageObjectQueryType");
+
+    // Simple Field (lengthDataset)
+    writeSimpleField("lengthDataset", lengthDataset, writeUnsignedShort(writeBuffer, 8));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
+
+    // Const Field (variableSpec)
+    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (eventState)
+    writeSimpleField("eventState", eventState, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateGoing)
+    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (ackStateComing)
+    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (timeComing)
+    writeSimpleField("timeComing", timeComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (valueComing)
+    writeSimpleField("valueComing", valueComing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (timeGoing)
+    writeSimpleField("timeGoing", timeGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (valueGoing)
+    writeSimpleField("valueGoing", valueGoing, new DataWriterComplexDefault<>(writeBuffer));
+
+    writeBuffer.popContext("AlarmMessageObjectQueryType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageObjectQueryType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (lengthDataset)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 16;
+
+    // Const Field (variableSpec)
+    lengthInBits += 8;
+
+    // Simple field (eventState)
+    lengthInBits += eventState.getLengthInBits();
+
+    // Simple field (ackStateGoing)
+    lengthInBits += ackStateGoing.getLengthInBits();
+
+    // Simple field (ackStateComing)
+    lengthInBits += ackStateComing.getLengthInBits();
+
+    // Simple field (timeComing)
+    lengthInBits += timeComing.getLengthInBits();
+
+    // Simple field (valueComing)
+    lengthInBits += valueComing.getLengthInBits();
+
+    // Simple field (timeGoing)
+    lengthInBits += timeGoing.getLengthInBits();
+
+    // Simple field (valueGoing)
+    lengthInBits += valueGoing.getLengthInBits();
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageObjectQueryType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageObjectQueryType staticParse(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("AlarmMessageObjectQueryType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short lengthDataset = readSimpleField("lengthDataset", readUnsignedShort(readBuffer, 8));
+
+    Integer reservedField0 =
+        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
+
+    short variableSpec =
+        readConstField(
+            "variableSpec",
+            readUnsignedShort(readBuffer, 8),
+            AlarmMessageObjectQueryType.VARIABLESPEC);
+
+    State eventState =
+        readSimpleField(
+            "eventState",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateGoing =
+        readSimpleField(
+            "ackStateGoing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    State ackStateComing =
+        readSimpleField(
+            "ackStateComing",
+            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
+
+    DateAndTime timeComing =
+        readSimpleField(
+            "timeComing",
+            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+    AssociatedValueType valueComing =
+        readSimpleField(
+            "valueComing",
+            new DataReaderComplexDefault<>(
+                () -> AssociatedValueType.staticParse(readBuffer), readBuffer));
+
+    DateAndTime timeGoing =
+        readSimpleField(
+            "timeGoing",
+            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+    AssociatedValueType valueGoing =
+        readSimpleField(
+            "valueGoing",
+            new DataReaderComplexDefault<>(
+                () -> AssociatedValueType.staticParse(readBuffer), readBuffer));
+
+    readBuffer.closeContext("AlarmMessageObjectQueryType");
+    // Create the instance
+    AlarmMessageObjectQueryType _alarmMessageObjectQueryType;
+    _alarmMessageObjectQueryType =
+        new AlarmMessageObjectQueryType(
+            lengthDataset,
+            eventState,
+            ackStateGoing,
+            ackStateComing,
+            timeComing,
+            valueComing,
+            timeGoing,
+            valueGoing);
+    return _alarmMessageObjectQueryType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageObjectQueryType)) {
+      return false;
+    }
+    AlarmMessageObjectQueryType that = (AlarmMessageObjectQueryType) o;
+    return (getLengthDataset() == that.getLengthDataset())
+        && (getEventState() == that.getEventState())
+        && (getAckStateGoing() == that.getAckStateGoing())
+        && (getAckStateComing() == that.getAckStateComing())
+        && (getTimeComing() == that.getTimeComing())
+        && (getValueComing() == that.getValueComing())
+        && (getTimeGoing() == that.getTimeGoing())
+        && (getValueGoing() == that.getValueGoing())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getLengthDataset(),
+        getEventState(),
+        getAckStateGoing(),
+        getAckStateComing(),
+        getTimeComing(),
+        getValueComing(),
+        getTimeGoing(),
+        getValueGoing());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java
new file mode 100644
index 0000000000..a6b578a1e9
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java
@@ -0,0 +1,192 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessagePushType implements Message {
+
+  // Properties.
+  protected final DateAndTime TimeStamp;
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final List<AlarmMessageObjectPushType> messageObjects;
+
+  public AlarmMessagePushType(
+      DateAndTime TimeStamp,
+      short functionId,
+      short numberOfObjects,
+      List<AlarmMessageObjectPushType> messageObjects) {
+    super();
+    this.TimeStamp = TimeStamp;
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.messageObjects = messageObjects;
+  }
+
+  public DateAndTime getTimeStamp() {
+    return TimeStamp;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public List<AlarmMessageObjectPushType> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessagePushType");
+
+    // Simple Field (TimeStamp)
+    writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Array Field (messageObjects)
+    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
+
+    writeBuffer.popContext("AlarmMessagePushType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessagePushType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (TimeStamp)
+    lengthInBits += TimeStamp.getLengthInBits();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Array field
+    if (messageObjects != null) {
+      int i = 0;
+      for (AlarmMessageObjectPushType element : messageObjects) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessagePushType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessagePushType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AlarmMessagePushType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    DateAndTime TimeStamp =
+        readSimpleField(
+            "TimeStamp",
+            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    List<AlarmMessageObjectPushType> messageObjects =
+        readCountArrayField(
+            "messageObjects",
+            new DataReaderComplexDefault<>(
+                () -> AlarmMessageObjectPushType.staticParse(readBuffer), readBuffer),
+            numberOfObjects);
+
+    readBuffer.closeContext("AlarmMessagePushType");
+    // Create the instance
+    AlarmMessagePushType _alarmMessagePushType;
+    _alarmMessagePushType =
+        new AlarmMessagePushType(TimeStamp, functionId, numberOfObjects, messageObjects);
+    return _alarmMessagePushType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessagePushType)) {
+      return false;
+    }
+    AlarmMessagePushType that = (AlarmMessagePushType) o;
+    return (getTimeStamp() == that.getTimeStamp())
+        && (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getTimeStamp(), getFunctionId(), getNumberOfObjects(), getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java
new file mode 100644
index 0000000000..53eddc50a4
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java
@@ -0,0 +1,252 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AlarmMessageQueryType implements Message {
+
+  // Constant values.
+  public static final Integer DATALENGTH = 0xFFFF;
+
+  // Properties.
+  protected final short functionId;
+  protected final short numberOfObjects;
+  protected final DataTransportErrorCode returnCode;
+  protected final DataTransportSize transportSize;
+  protected final List<AlarmMessageObjectQueryType> messageObjects;
+
+  public AlarmMessageQueryType(
+      short functionId,
+      short numberOfObjects,
+      DataTransportErrorCode returnCode,
+      DataTransportSize transportSize,
+      List<AlarmMessageObjectQueryType> messageObjects) {
+    super();
+    this.functionId = functionId;
+    this.numberOfObjects = numberOfObjects;
+    this.returnCode = returnCode;
+    this.transportSize = transportSize;
+    this.messageObjects = messageObjects;
+  }
+
+  public short getFunctionId() {
+    return functionId;
+  }
+
+  public short getNumberOfObjects() {
+    return numberOfObjects;
+  }
+
+  public DataTransportErrorCode getReturnCode() {
+    return returnCode;
+  }
+
+  public DataTransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public List<AlarmMessageObjectQueryType> getMessageObjects() {
+    return messageObjects;
+  }
+
+  public int getDataLength() {
+    return DATALENGTH;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AlarmMessageQueryType");
+
+    // Simple Field (functionId)
+    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (numberOfObjects)
+    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (returnCode)
+    writeSimpleEnumField(
+        "returnCode",
+        "DataTransportErrorCode",
+        returnCode,
+        new DataWriterEnumDefault<>(
+            DataTransportErrorCode::getValue,
+            DataTransportErrorCode::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (transportSize)
+    writeSimpleEnumField(
+        "transportSize",
+        "DataTransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            DataTransportSize::getValue,
+            DataTransportSize::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Const Field (DataLength)
+    writeConstField("DataLength", DATALENGTH, writeUnsignedInt(writeBuffer, 16));
+
+    // Array Field (messageObjects)
+    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
+
+    writeBuffer.popContext("AlarmMessageQueryType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AlarmMessageQueryType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (numberOfObjects)
+    lengthInBits += 8;
+
+    // Simple field (returnCode)
+    lengthInBits += 8;
+
+    // Simple field (transportSize)
+    lengthInBits += 8;
+
+    // Const Field (DataLength)
+    lengthInBits += 16;
+
+    // Array field
+    if (messageObjects != null) {
+      int i = 0;
+      for (AlarmMessageObjectQueryType element : messageObjects) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static AlarmMessageQueryType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AlarmMessageQueryType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AlarmMessageQueryType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
+
+    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
+
+    DataTransportErrorCode returnCode =
+        readEnumField(
+            "returnCode",
+            "DataTransportErrorCode",
+            new DataReaderEnumDefault<>(
+                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    DataTransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "DataTransportSize",
+            new DataReaderEnumDefault<>(
+                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    int DataLength =
+        readConstField(
+            "DataLength", readUnsignedInt(readBuffer, 16), AlarmMessageQueryType.DATALENGTH);
+
+    List<AlarmMessageObjectQueryType> messageObjects =
+        readCountArrayField(
+            "messageObjects",
+            new DataReaderComplexDefault<>(
+                () -> AlarmMessageObjectQueryType.staticParse(readBuffer), readBuffer),
+            numberOfObjects);
+
+    readBuffer.closeContext("AlarmMessageQueryType");
+    // Create the instance
+    AlarmMessageQueryType _alarmMessageQueryType;
+    _alarmMessageQueryType =
+        new AlarmMessageQueryType(
+            functionId, numberOfObjects, returnCode, transportSize, messageObjects);
+    return _alarmMessageQueryType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AlarmMessageQueryType)) {
+      return false;
+    }
+    AlarmMessageQueryType that = (AlarmMessageQueryType) o;
+    return (getFunctionId() == that.getFunctionId())
+        && (getNumberOfObjects() == that.getNumberOfObjects())
+        && (getReturnCode() == that.getReturnCode())
+        && (getTransportSize() == that.getTransportSize())
+        && (getMessageObjects() == that.getMessageObjects())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getFunctionId(),
+        getNumberOfObjects(),
+        getReturnCode(),
+        getTransportSize(),
+        getMessageObjects());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java
new file mode 100644
index 0000000000..5a03889295
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java
@@ -0,0 +1,59 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum AlarmStateType {
+  SCAN_ABORT((short) 0x00),
+  SCAN_INITIATE((short) 0x01),
+  ALARM_ABORT((short) 0x04),
+  ALARM_INITIATE((short) 0x05),
+  ALARM_S_ABORT((short) 0x08),
+  ALARM_S_INITIATE((short) 0x09);
+  private static final Map<Short, AlarmStateType> map;
+
+  static {
+    map = new HashMap<>();
+    for (AlarmStateType value : AlarmStateType.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  AlarmStateType(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static AlarmStateType enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java
new file mode 100644
index 0000000000..3693907d2a
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java
@@ -0,0 +1,56 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum AlarmType {
+  SCAN((short) 0x01),
+  ALARM_8((short) 0x02),
+  ALARM_S((short) 0x04);
+  private static final Map<Short, AlarmType> map;
+
+  static {
+    map = new HashMap<>();
+    for (AlarmType value : AlarmType.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  AlarmType(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static AlarmType enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java
new file mode 100644
index 0000000000..9f7a355161
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java
@@ -0,0 +1,204 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AssociatedQueryValueType implements Message {
+
+  // Properties.
+  protected final DataTransportErrorCode returnCode;
+  protected final DataTransportSize transportSize;
+  protected final int valueLength;
+  protected final List<Short> data;
+
+  public AssociatedQueryValueType(
+      DataTransportErrorCode returnCode,
+      DataTransportSize transportSize,
+      int valueLength,
+      List<Short> data) {
+    super();
+    this.returnCode = returnCode;
+    this.transportSize = transportSize;
+    this.valueLength = valueLength;
+    this.data = data;
+  }
+
+  public DataTransportErrorCode getReturnCode() {
+    return returnCode;
+  }
+
+  public DataTransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public int getValueLength() {
+    return valueLength;
+  }
+
+  public List<Short> getData() {
+    return data;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AssociatedQueryValueType");
+
+    // Simple Field (returnCode)
+    writeSimpleEnumField(
+        "returnCode",
+        "DataTransportErrorCode",
+        returnCode,
+        new DataWriterEnumDefault<>(
+            DataTransportErrorCode::getValue,
+            DataTransportErrorCode::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (transportSize)
+    writeSimpleEnumField(
+        "transportSize",
+        "DataTransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            DataTransportSize::getValue,
+            DataTransportSize::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (valueLength)
+    writeSimpleField("valueLength", valueLength, writeUnsignedInt(writeBuffer, 16));
+
+    // Array Field (data)
+    writeSimpleTypeArrayField("data", data, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("AssociatedQueryValueType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AssociatedQueryValueType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (returnCode)
+    lengthInBits += 8;
+
+    // Simple field (transportSize)
+    lengthInBits += 8;
+
+    // Simple field (valueLength)
+    lengthInBits += 16;
+
+    // Array field
+    if (data != null) {
+      lengthInBits += 8 * data.size();
+    }
+
+    return lengthInBits;
+  }
+
+  public static AssociatedQueryValueType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AssociatedQueryValueType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AssociatedQueryValueType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    DataTransportErrorCode returnCode =
+        readEnumField(
+            "returnCode",
+            "DataTransportErrorCode",
+            new DataReaderEnumDefault<>(
+                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    DataTransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "DataTransportSize",
+            new DataReaderEnumDefault<>(
+                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    int valueLength = readSimpleField("valueLength", readUnsignedInt(readBuffer, 16));
+
+    List<Short> data = readCountArrayField("data", readUnsignedShort(readBuffer, 8), valueLength);
+
+    readBuffer.closeContext("AssociatedQueryValueType");
+    // Create the instance
+    AssociatedQueryValueType _associatedQueryValueType;
+    _associatedQueryValueType =
+        new AssociatedQueryValueType(returnCode, transportSize, valueLength, data);
+    return _associatedQueryValueType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AssociatedQueryValueType)) {
+      return false;
+    }
+    AssociatedQueryValueType that = (AssociatedQueryValueType) o;
+    return (getReturnCode() == that.getReturnCode())
+        && (getTransportSize() == that.getTransportSize())
+        && (getValueLength() == that.getValueLength())
+        && (getData() == that.getData())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getReturnCode(), getTransportSize(), getValueLength(), getData());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java
new file mode 100644
index 0000000000..d3807cd386
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java
@@ -0,0 +1,220 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AssociatedValueType implements Message {
+
+  // Properties.
+  protected final DataTransportErrorCode returnCode;
+  protected final DataTransportSize transportSize;
+  protected final int valueLength;
+  protected final List<Short> data;
+
+  public AssociatedValueType(
+      DataTransportErrorCode returnCode,
+      DataTransportSize transportSize,
+      int valueLength,
+      List<Short> data) {
+    super();
+    this.returnCode = returnCode;
+    this.transportSize = transportSize;
+    this.valueLength = valueLength;
+    this.data = data;
+  }
+
+  public DataTransportErrorCode getReturnCode() {
+    return returnCode;
+  }
+
+  public DataTransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public int getValueLength() {
+    return valueLength;
+  }
+
+  public List<Short> getData() {
+    return data;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("AssociatedValueType");
+
+    // Simple Field (returnCode)
+    writeSimpleEnumField(
+        "returnCode",
+        "DataTransportErrorCode",
+        returnCode,
+        new DataWriterEnumDefault<>(
+            DataTransportErrorCode::getValue,
+            DataTransportErrorCode::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (transportSize)
+    writeSimpleEnumField(
+        "transportSize",
+        "DataTransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            DataTransportSize::getValue,
+            DataTransportSize::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Manual Field (valueLength)
+    writeManualField(
+        "valueLength",
+        () ->
+            org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.LeftShift3(
+                writeBuffer, valueLength),
+        writeBuffer);
+
+    // Array Field (data)
+    writeSimpleTypeArrayField("data", data, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("AssociatedValueType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    AssociatedValueType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (returnCode)
+    lengthInBits += 8;
+
+    // Simple field (transportSize)
+    lengthInBits += 8;
+
+    // Manual Field (valueLength)
+    lengthInBits += 2;
+
+    // Array field
+    if (data != null) {
+      lengthInBits += 8 * data.size();
+    }
+
+    return lengthInBits;
+  }
+
+  public static AssociatedValueType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static AssociatedValueType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("AssociatedValueType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    DataTransportErrorCode returnCode =
+        readEnumField(
+            "returnCode",
+            "DataTransportErrorCode",
+            new DataReaderEnumDefault<>(
+                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    DataTransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "DataTransportSize",
+            new DataReaderEnumDefault<>(
+                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    int valueLength =
+        readManualField(
+            "valueLength",
+            readBuffer,
+            () ->
+                (int)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.RightShift3(
+                        readBuffer, transportSize)));
+
+    List<Short> data =
+        readCountArrayField(
+            "data",
+            readUnsignedShort(readBuffer, 8),
+            org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.EventItemLength(
+                readBuffer, valueLength));
+
+    readBuffer.closeContext("AssociatedValueType");
+    // Create the instance
+    AssociatedValueType _associatedValueType;
+    _associatedValueType = new AssociatedValueType(returnCode, transportSize, valueLength, data);
+    return _associatedValueType;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof AssociatedValueType)) {
+      return false;
+    }
+    AssociatedValueType that = (AssociatedValueType) o;
+    return (getReturnCode() == that.getReturnCode())
+        && (getTransportSize() == that.getTransportSize())
+        && (getValueLength() == that.getValueLength())
+        && (getData() == that.getData())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getReturnCode(), getTransportSize(), getValueLength(), getData());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
new file mode 100644
index 0000000000..6d4f3cd49b
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
@@ -0,0 +1,238 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class COTPPacket implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Short getTpduCode();
+
+  // Properties.
+  protected final List<COTPParameter> parameters;
+  protected final S7Message payload;
+
+  public COTPPacket(List<COTPParameter> parameters, S7Message payload) {
+    super();
+    this.parameters = parameters;
+    this.payload = payload;
+  }
+
+  public List<COTPParameter> getParameters() {
+    return parameters;
+  }
+
+  public S7Message getPayload() {
+    return payload;
+  }
+
+  protected abstract void serializeCOTPPacketChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    int startPos = positionAware.getPos();
+    writeBuffer.pushContext("COTPPacket");
+
+    // Implicit Field (headerLength) (Used for parsing, but its value is not stored as it's
+    // implicitly given by the objects content)
+    short headerLength =
+        (short)
+            ((getLengthInBytes())
+                - ((((((((getPayload()) != (null))) ? getPayload().getLengthInBytes() : 0)))
+                    + (1))));
+    writeImplicitField("headerLength", headerLength, writeUnsignedShort(writeBuffer, 8));
+
+    // Discriminator Field (tpduCode) (Used as input to a switch field)
+    writeDiscriminatorField("tpduCode", getTpduCode(), writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeCOTPPacketChild(writeBuffer);
+
+    // Array Field (parameters)
+    writeComplexTypeArrayField("parameters", parameters, writeBuffer);
+
+    // Optional Field (payload) (Can be skipped, if the value is null)
+    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
+
+    writeBuffer.popContext("COTPPacket");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    COTPPacket _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Implicit Field (headerLength)
+    lengthInBits += 8;
+
+    // Discriminator Field (tpduCode)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    // Array field
+    if (parameters != null) {
+      for (Message element : parameters) {
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    // Optional Field (payload)
+    if (payload != null) {
+      lengthInBits += payload.getLengthInBits();
+    }
+
+    return lengthInBits;
+  }
+
+  public static COTPPacket staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    if ((args == null) || (args.length != 1)) {
+      throw new PlcRuntimeException(
+          "Wrong number of arguments, expected 1, but got " + args.length);
+    }
+    Integer cotpLen;
+    if (args[0] instanceof Integer) {
+      cotpLen = (Integer) args[0];
+    } else if (args[0] instanceof String) {
+      cotpLen = Integer.valueOf((String) args[0]);
+    } else {
+      throw new PlcRuntimeException(
+          "Argument 0 expected to be of type Integer or a string which is parseable but was "
+              + args[0].getClass().getName());
+    }
+    return staticParse(readBuffer, cotpLen);
+  }
+
+  public static COTPPacket staticParse(ReadBuffer readBuffer, Integer cotpLen)
+      throws ParseException {
+    readBuffer.pullContext("COTPPacket");
+    PositionAware positionAware = readBuffer;
+    int startPos = positionAware.getPos();
+    int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short headerLength = readImplicitField("headerLength", readUnsignedShort(readBuffer, 8));
+
+    short tpduCode = readDiscriminatorField("tpduCode", readUnsignedShort(readBuffer, 8));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    COTPPacketBuilder builder = null;
+    if (EvaluationHelper.equals(tpduCode, (short) 0xF0)) {
+      builder = COTPPacketData.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    } else if (EvaluationHelper.equals(tpduCode, (short) 0xE0)) {
+      builder = COTPPacketConnectionRequest.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    } else if (EvaluationHelper.equals(tpduCode, (short) 0xD0)) {
+      builder = COTPPacketConnectionResponse.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    } else if (EvaluationHelper.equals(tpduCode, (short) 0x80)) {
+      builder = COTPPacketDisconnectRequest.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    } else if (EvaluationHelper.equals(tpduCode, (short) 0xC0)) {
+      builder = COTPPacketDisconnectResponse.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    } else if (EvaluationHelper.equals(tpduCode, (short) 0x70)) {
+      builder = COTPPacketTpduError.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "tpduCode="
+              + tpduCode
+              + "]");
+    }
+
+    List<COTPParameter> parameters =
+        readLengthArrayField(
+            "parameters",
+            new DataReaderComplexDefault<>(
+                () ->
+                    COTPParameter.staticParse(
+                        readBuffer,
+                        (short) ((((headerLength) + (1))) - ((positionAware.getPos() - startPos)))),
+                readBuffer),
+            (((headerLength) + (1))) - ((positionAware.getPos() - startPos)));
+
+    S7Message payload =
+        readOptionalField(
+            "payload",
+            new DataReaderComplexDefault<>(() -> S7Message.staticParse(readBuffer), readBuffer),
+            ((positionAware.getPos() - startPos)) < (cotpLen));
+
+    readBuffer.closeContext("COTPPacket");
+    // Create the instance
+    COTPPacket _cOTPPacket = builder.build(parameters, payload);
+    return _cOTPPacket;
+  }
+
+  public interface COTPPacketBuilder {
+    COTPPacket build(List<COTPParameter> parameters, S7Message payload);
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacket)) {
+      return false;
+    }
+    COTPPacket that = (COTPPacket) o;
+    return (getParameters() == that.getParameters()) && (getPayload() == that.getPayload()) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getParameters(), getPayload());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
new file mode 100644
index 0000000000..f5c7bb1050
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
@@ -0,0 +1,200 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketConnectionRequest extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0xE0;
+  }
+
+  // Properties.
+  protected final int destinationReference;
+  protected final int sourceReference;
+  protected final COTPProtocolClass protocolClass;
+
+  public COTPPacketConnectionRequest(
+      List<COTPParameter> parameters,
+      S7Message payload,
+      int destinationReference,
+      int sourceReference,
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
+    this.destinationReference = destinationReference;
+    this.sourceReference = sourceReference;
+    this.protocolClass = protocolClass;
+  }
+
+  public int getDestinationReference() {
+    return destinationReference;
+  }
+
+  public int getSourceReference() {
+    return sourceReference;
+  }
+
+  public COTPProtocolClass getProtocolClass() {
+    return protocolClass;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketConnectionRequest");
+
+    // Simple Field (destinationReference)
+    writeSimpleField(
+        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (sourceReference)
+    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (protocolClass)
+    writeSimpleEnumField(
+        "protocolClass",
+        "COTPProtocolClass",
+        protocolClass,
+        new DataWriterEnumDefault<>(
+            COTPProtocolClass::getValue,
+            COTPProtocolClass::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    writeBuffer.popContext("COTPPacketConnectionRequest");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketConnectionRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (destinationReference)
+    lengthInBits += 16;
+
+    // Simple field (sourceReference)
+    lengthInBits += 16;
+
+    // Simple field (protocolClass)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketConnectionRequest");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int destinationReference =
+        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
+
+    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
+
+    COTPProtocolClass protocolClass =
+        readEnumField(
+            "protocolClass",
+            "COTPProtocolClass",
+            new DataReaderEnumDefault<>(
+                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    readBuffer.closeContext("COTPPacketConnectionRequest");
+    // Create the instance
+    return new COTPPacketConnectionRequestBuilderImpl(
+        destinationReference, sourceReference, protocolClass);
+  }
+
+  public static class COTPPacketConnectionRequestBuilderImpl
+      implements COTPPacket.COTPPacketBuilder {
+    private final int destinationReference;
+    private final int sourceReference;
+    private final COTPProtocolClass protocolClass;
+
+    public COTPPacketConnectionRequestBuilderImpl(
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
+      this.destinationReference = destinationReference;
+      this.sourceReference = sourceReference;
+      this.protocolClass = protocolClass;
+    }
+
+    public COTPPacketConnectionRequest build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketConnectionRequest cOTPPacketConnectionRequest =
+          new COTPPacketConnectionRequest(
+              parameters, payload, destinationReference, sourceReference, protocolClass);
+      return cOTPPacketConnectionRequest;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketConnectionRequest)) {
+      return false;
+    }
+    COTPPacketConnectionRequest that = (COTPPacketConnectionRequest) o;
+    return (getDestinationReference() == that.getDestinationReference())
+        && (getSourceReference() == that.getSourceReference())
+        && (getProtocolClass() == that.getProtocolClass())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
new file mode 100644
index 0000000000..1d64fa5fa2
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
@@ -0,0 +1,200 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketConnectionResponse extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0xD0;
+  }
+
+  // Properties.
+  protected final int destinationReference;
+  protected final int sourceReference;
+  protected final COTPProtocolClass protocolClass;
+
+  public COTPPacketConnectionResponse(
+      List<COTPParameter> parameters,
+      S7Message payload,
+      int destinationReference,
+      int sourceReference,
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
+    this.destinationReference = destinationReference;
+    this.sourceReference = sourceReference;
+    this.protocolClass = protocolClass;
+  }
+
+  public int getDestinationReference() {
+    return destinationReference;
+  }
+
+  public int getSourceReference() {
+    return sourceReference;
+  }
+
+  public COTPProtocolClass getProtocolClass() {
+    return protocolClass;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketConnectionResponse");
+
+    // Simple Field (destinationReference)
+    writeSimpleField(
+        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (sourceReference)
+    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (protocolClass)
+    writeSimpleEnumField(
+        "protocolClass",
+        "COTPProtocolClass",
+        protocolClass,
+        new DataWriterEnumDefault<>(
+            COTPProtocolClass::getValue,
+            COTPProtocolClass::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    writeBuffer.popContext("COTPPacketConnectionResponse");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketConnectionResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (destinationReference)
+    lengthInBits += 16;
+
+    // Simple field (sourceReference)
+    lengthInBits += 16;
+
+    // Simple field (protocolClass)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketConnectionResponse");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int destinationReference =
+        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
+
+    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
+
+    COTPProtocolClass protocolClass =
+        readEnumField(
+            "protocolClass",
+            "COTPProtocolClass",
+            new DataReaderEnumDefault<>(
+                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    readBuffer.closeContext("COTPPacketConnectionResponse");
+    // Create the instance
+    return new COTPPacketConnectionResponseBuilderImpl(
+        destinationReference, sourceReference, protocolClass);
+  }
+
+  public static class COTPPacketConnectionResponseBuilderImpl
+      implements COTPPacket.COTPPacketBuilder {
+    private final int destinationReference;
+    private final int sourceReference;
+    private final COTPProtocolClass protocolClass;
+
+    public COTPPacketConnectionResponseBuilderImpl(
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
+      this.destinationReference = destinationReference;
+      this.sourceReference = sourceReference;
+      this.protocolClass = protocolClass;
+    }
+
+    public COTPPacketConnectionResponse build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketConnectionResponse cOTPPacketConnectionResponse =
+          new COTPPacketConnectionResponse(
+              parameters, payload, destinationReference, sourceReference, protocolClass);
+      return cOTPPacketConnectionResponse;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketConnectionResponse)) {
+      return false;
+    }
+    COTPPacketConnectionResponse that = (COTPPacketConnectionResponse) o;
+    return (getDestinationReference() == that.getDestinationReference())
+        && (getSourceReference() == that.getSourceReference())
+        && (getProtocolClass() == that.getProtocolClass())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
new file mode 100644
index 0000000000..233483c1a7
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
@@ -0,0 +1,159 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketData extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0xF0;
+  }
+
+  // Properties.
+  protected final boolean eot;
+  protected final byte tpduRef;
+
+  public COTPPacketData(
+      List<COTPParameter> parameters, S7Message payload, boolean eot, byte tpduRef) {
+    super(parameters, payload);
+    this.eot = eot;
+    this.tpduRef = tpduRef;
+  }
+
+  public boolean getEot() {
+    return eot;
+  }
+
+  public byte getTpduRef() {
+    return tpduRef;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketData");
+
+    // Simple Field (eot)
+    writeSimpleField("eot", eot, writeBoolean(writeBuffer));
+
+    // Simple Field (tpduRef)
+    writeSimpleField("tpduRef", tpduRef, writeUnsignedByte(writeBuffer, 7));
+
+    writeBuffer.popContext("COTPPacketData");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (eot)
+    lengthInBits += 1;
+
+    // Simple field (tpduRef)
+    lengthInBits += 7;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketData");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    boolean eot = readSimpleField("eot", readBoolean(readBuffer));
+
+    byte tpduRef = readSimpleField("tpduRef", readUnsignedByte(readBuffer, 7));
+
+    readBuffer.closeContext("COTPPacketData");
+    // Create the instance
+    return new COTPPacketDataBuilderImpl(eot, tpduRef);
+  }
+
+  public static class COTPPacketDataBuilderImpl implements COTPPacket.COTPPacketBuilder {
+    private final boolean eot;
+    private final byte tpduRef;
+
+    public COTPPacketDataBuilderImpl(boolean eot, byte tpduRef) {
+      this.eot = eot;
+      this.tpduRef = tpduRef;
+    }
+
+    public COTPPacketData build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketData cOTPPacketData = new COTPPacketData(parameters, payload, eot, tpduRef);
+      return cOTPPacketData;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketData)) {
+      return false;
+    }
+    COTPPacketData that = (COTPPacketData) o;
+    return (getEot() == that.getEot())
+        && (getTpduRef() == that.getTpduRef())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getEot(), getTpduRef());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
new file mode 100644
index 0000000000..8c1ef73f6f
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
@@ -0,0 +1,200 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketDisconnectRequest extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0x80;
+  }
+
+  // Properties.
+  protected final int destinationReference;
+  protected final int sourceReference;
+  protected final COTPProtocolClass protocolClass;
+
+  public COTPPacketDisconnectRequest(
+      List<COTPParameter> parameters,
+      S7Message payload,
+      int destinationReference,
+      int sourceReference,
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
+    this.destinationReference = destinationReference;
+    this.sourceReference = sourceReference;
+    this.protocolClass = protocolClass;
+  }
+
+  public int getDestinationReference() {
+    return destinationReference;
+  }
+
+  public int getSourceReference() {
+    return sourceReference;
+  }
+
+  public COTPProtocolClass getProtocolClass() {
+    return protocolClass;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketDisconnectRequest");
+
+    // Simple Field (destinationReference)
+    writeSimpleField(
+        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (sourceReference)
+    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (protocolClass)
+    writeSimpleEnumField(
+        "protocolClass",
+        "COTPProtocolClass",
+        protocolClass,
+        new DataWriterEnumDefault<>(
+            COTPProtocolClass::getValue,
+            COTPProtocolClass::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    writeBuffer.popContext("COTPPacketDisconnectRequest");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketDisconnectRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (destinationReference)
+    lengthInBits += 16;
+
+    // Simple field (sourceReference)
+    lengthInBits += 16;
+
+    // Simple field (protocolClass)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketDisconnectRequest");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int destinationReference =
+        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
+
+    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
+
+    COTPProtocolClass protocolClass =
+        readEnumField(
+            "protocolClass",
+            "COTPProtocolClass",
+            new DataReaderEnumDefault<>(
+                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    readBuffer.closeContext("COTPPacketDisconnectRequest");
+    // Create the instance
+    return new COTPPacketDisconnectRequestBuilderImpl(
+        destinationReference, sourceReference, protocolClass);
+  }
+
+  public static class COTPPacketDisconnectRequestBuilderImpl
+      implements COTPPacket.COTPPacketBuilder {
+    private final int destinationReference;
+    private final int sourceReference;
+    private final COTPProtocolClass protocolClass;
+
+    public COTPPacketDisconnectRequestBuilderImpl(
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
+      this.destinationReference = destinationReference;
+      this.sourceReference = sourceReference;
+      this.protocolClass = protocolClass;
+    }
+
+    public COTPPacketDisconnectRequest build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketDisconnectRequest cOTPPacketDisconnectRequest =
+          new COTPPacketDisconnectRequest(
+              parameters, payload, destinationReference, sourceReference, protocolClass);
+      return cOTPPacketDisconnectRequest;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketDisconnectRequest)) {
+      return false;
+    }
+    COTPPacketDisconnectRequest that = (COTPPacketDisconnectRequest) o;
+    return (getDestinationReference() == that.getDestinationReference())
+        && (getSourceReference() == that.getSourceReference())
+        && (getProtocolClass() == that.getProtocolClass())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
new file mode 100644
index 0000000000..90bae29594
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
@@ -0,0 +1,167 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketDisconnectResponse extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0xC0;
+  }
+
+  // Properties.
+  protected final int destinationReference;
+  protected final int sourceReference;
+
+  public COTPPacketDisconnectResponse(
+      List<COTPParameter> parameters,
+      S7Message payload,
+      int destinationReference,
+      int sourceReference) {
+    super(parameters, payload);
+    this.destinationReference = destinationReference;
+    this.sourceReference = sourceReference;
+  }
+
+  public int getDestinationReference() {
+    return destinationReference;
+  }
+
+  public int getSourceReference() {
+    return sourceReference;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketDisconnectResponse");
+
+    // Simple Field (destinationReference)
+    writeSimpleField(
+        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (sourceReference)
+    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
+
+    writeBuffer.popContext("COTPPacketDisconnectResponse");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketDisconnectResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (destinationReference)
+    lengthInBits += 16;
+
+    // Simple field (sourceReference)
+    lengthInBits += 16;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketDisconnectResponse");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int destinationReference =
+        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
+
+    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
+
+    readBuffer.closeContext("COTPPacketDisconnectResponse");
+    // Create the instance
+    return new COTPPacketDisconnectResponseBuilderImpl(destinationReference, sourceReference);
+  }
+
+  public static class COTPPacketDisconnectResponseBuilderImpl
+      implements COTPPacket.COTPPacketBuilder {
+    private final int destinationReference;
+    private final int sourceReference;
+
+    public COTPPacketDisconnectResponseBuilderImpl(int destinationReference, int sourceReference) {
+      this.destinationReference = destinationReference;
+      this.sourceReference = sourceReference;
+    }
+
+    public COTPPacketDisconnectResponse build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketDisconnectResponse cOTPPacketDisconnectResponse =
+          new COTPPacketDisconnectResponse(
+              parameters, payload, destinationReference, sourceReference);
+      return cOTPPacketDisconnectResponse;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketDisconnectResponse)) {
+      return false;
+    }
+    COTPPacketDisconnectResponse that = (COTPPacketDisconnectResponse) o;
+    return (getDestinationReference() == that.getDestinationReference())
+        && (getSourceReference() == that.getSourceReference())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getDestinationReference(), getSourceReference());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
new file mode 100644
index 0000000000..bb6c4ed3aa
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
@@ -0,0 +1,165 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPPacketTpduError extends COTPPacket implements Message {
+
+  // Accessors for discriminator values.
+  public Short getTpduCode() {
+    return (short) 0x70;
+  }
+
+  // Properties.
+  protected final int destinationReference;
+  protected final short rejectCause;
+
+  public COTPPacketTpduError(
+      List<COTPParameter> parameters,
+      S7Message payload,
+      int destinationReference,
+      short rejectCause) {
+    super(parameters, payload);
+    this.destinationReference = destinationReference;
+    this.rejectCause = rejectCause;
+  }
+
+  public int getDestinationReference() {
+    return destinationReference;
+  }
+
+  public short getRejectCause() {
+    return rejectCause;
+  }
+
+  @Override
+  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPPacketTpduError");
+
+    // Simple Field (destinationReference)
+    writeSimpleField(
+        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (rejectCause)
+    writeSimpleField("rejectCause", rejectCause, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("COTPPacketTpduError");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPPacketTpduError _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (destinationReference)
+    lengthInBits += 16;
+
+    // Simple field (rejectCause)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
+      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
+    readBuffer.pullContext("COTPPacketTpduError");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int destinationReference =
+        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
+
+    short rejectCause = readSimpleField("rejectCause", readUnsignedShort(readBuffer, 8));
+
+    readBuffer.closeContext("COTPPacketTpduError");
+    // Create the instance
+    return new COTPPacketTpduErrorBuilderImpl(destinationReference, rejectCause);
+  }
+
+  public static class COTPPacketTpduErrorBuilderImpl implements COTPPacket.COTPPacketBuilder {
+    private final int destinationReference;
+    private final short rejectCause;
+
+    public COTPPacketTpduErrorBuilderImpl(int destinationReference, short rejectCause) {
+      this.destinationReference = destinationReference;
+      this.rejectCause = rejectCause;
+    }
+
+    public COTPPacketTpduError build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketTpduError cOTPPacketTpduError =
+          new COTPPacketTpduError(parameters, payload, destinationReference, rejectCause);
+      return cOTPPacketTpduError;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPPacketTpduError)) {
+      return false;
+    }
+    COTPPacketTpduError that = (COTPPacketTpduError) o;
+    return (getDestinationReference() == that.getDestinationReference())
+        && (getRejectCause() == that.getRejectCause())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getDestinationReference(), getRejectCause());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
new file mode 100644
index 0000000000..d056c5f92f
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
@@ -0,0 +1,182 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class COTPParameter implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Short getParameterType();
+
+  public COTPParameter() {
+    super();
+  }
+
+  protected abstract void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameter");
+
+    // Discriminator Field (parameterType) (Used as input to a switch field)
+    writeDiscriminatorField(
+        "parameterType", getParameterType(), writeUnsignedShort(writeBuffer, 8));
+
+    // Implicit Field (parameterLength) (Used for parsing, but its value is not stored as it's
+    // implicitly given by the objects content)
+    short parameterLength = (short) ((getLengthInBytes()) - (2));
+    writeImplicitField("parameterLength", parameterLength, writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeCOTPParameterChild(writeBuffer);
+
+    writeBuffer.popContext("COTPParameter");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    COTPParameter _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Discriminator Field (parameterType)
+    lengthInBits += 8;
+
+    // Implicit Field (parameterLength)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    return lengthInBits;
+  }
+
+  public static COTPParameter staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    if ((args == null) || (args.length != 1)) {
+      throw new PlcRuntimeException(
+          "Wrong number of arguments, expected 1, but got " + args.length);
+    }
+    Short rest;
+    if (args[0] instanceof Short) {
+      rest = (Short) args[0];
+    } else if (args[0] instanceof String) {
+      rest = Short.valueOf((String) args[0]);
+    } else {
+      throw new PlcRuntimeException(
+          "Argument 0 expected to be of type Short or a string which is parseable but was "
+              + args[0].getClass().getName());
+    }
+    return staticParse(readBuffer, rest);
+  }
+
+  public static COTPParameter staticParse(ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameter");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short parameterType = readDiscriminatorField("parameterType", readUnsignedShort(readBuffer, 8));
+
+    short parameterLength = readImplicitField("parameterLength", readUnsignedShort(readBuffer, 8));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    COTPParameterBuilder builder = null;
+    if (EvaluationHelper.equals(parameterType, (short) 0xC0)) {
+      builder = COTPParameterTpduSize.staticParseCOTPParameterBuilder(readBuffer, rest);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0xC1)) {
+      builder = COTPParameterCallingTsap.staticParseCOTPParameterBuilder(readBuffer, rest);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0xC2)) {
+      builder = COTPParameterCalledTsap.staticParseCOTPParameterBuilder(readBuffer, rest);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0xC3)) {
+      builder = COTPParameterChecksum.staticParseCOTPParameterBuilder(readBuffer, rest);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0xE0)) {
+      builder =
+          COTPParameterDisconnectAdditionalInformation.staticParseCOTPParameterBuilder(
+              readBuffer, rest);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "parameterType="
+              + parameterType
+              + "]");
+    }
+
+    readBuffer.closeContext("COTPParameter");
+    // Create the instance
+    COTPParameter _cOTPParameter = builder.build();
+    return _cOTPParameter;
+  }
+
+  public interface COTPParameterBuilder {
+    COTPParameter build();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameter)) {
+      return false;
+    }
+    COTPParameter that = (COTPParameter) o;
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash();
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
new file mode 100644
index 0000000000..154495f680
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
@@ -0,0 +1,141 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPParameterCalledTsap extends COTPParameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0xC2;
+  }
+
+  // Properties.
+  protected final int tsapId;
+
+  public COTPParameterCalledTsap(int tsapId) {
+    super();
+    this.tsapId = tsapId;
+  }
+
+  public int getTsapId() {
+    return tsapId;
+  }
+
+  @Override
+  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameterCalledTsap");
+
+    // Simple Field (tsapId)
+    writeSimpleField("tsapId", tsapId, writeUnsignedInt(writeBuffer, 16));
+
+    writeBuffer.popContext("COTPParameterCalledTsap");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPParameterCalledTsap _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (tsapId)
+    lengthInBits += 16;
+
+    return lengthInBits;
+  }
+
+  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
+      ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameterCalledTsap");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int tsapId = readSimpleField("tsapId", readUnsignedInt(readBuffer, 16));
+
+    readBuffer.closeContext("COTPParameterCalledTsap");
+    // Create the instance
+    return new COTPParameterCalledTsapBuilderImpl(tsapId);
+  }
+
+  public static class COTPParameterCalledTsapBuilderImpl
+      implements COTPParameter.COTPParameterBuilder {
+    private final int tsapId;
+
+    public COTPParameterCalledTsapBuilderImpl(int tsapId) {
+      this.tsapId = tsapId;
+    }
+
+    public COTPParameterCalledTsap build() {
+      COTPParameterCalledTsap cOTPParameterCalledTsap = new COTPParameterCalledTsap(tsapId);
+      return cOTPParameterCalledTsap;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameterCalledTsap)) {
+      return false;
+    }
+    COTPParameterCalledTsap that = (COTPParameterCalledTsap) o;
+    return (getTsapId() == that.getTsapId()) && super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getTsapId());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
new file mode 100644
index 0000000000..b61845ae97
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
@@ -0,0 +1,141 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPParameterCallingTsap extends COTPParameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0xC1;
+  }
+
+  // Properties.
+  protected final int tsapId;
+
+  public COTPParameterCallingTsap(int tsapId) {
+    super();
+    this.tsapId = tsapId;
+  }
+
+  public int getTsapId() {
+    return tsapId;
+  }
+
+  @Override
+  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameterCallingTsap");
+
+    // Simple Field (tsapId)
+    writeSimpleField("tsapId", tsapId, writeUnsignedInt(writeBuffer, 16));
+
+    writeBuffer.popContext("COTPParameterCallingTsap");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPParameterCallingTsap _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (tsapId)
+    lengthInBits += 16;
+
+    return lengthInBits;
+  }
+
+  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
+      ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameterCallingTsap");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    int tsapId = readSimpleField("tsapId", readUnsignedInt(readBuffer, 16));
+
+    readBuffer.closeContext("COTPParameterCallingTsap");
+    // Create the instance
+    return new COTPParameterCallingTsapBuilderImpl(tsapId);
+  }
+
+  public static class COTPParameterCallingTsapBuilderImpl
+      implements COTPParameter.COTPParameterBuilder {
+    private final int tsapId;
+
+    public COTPParameterCallingTsapBuilderImpl(int tsapId) {
+      this.tsapId = tsapId;
+    }
+
+    public COTPParameterCallingTsap build() {
+      COTPParameterCallingTsap cOTPParameterCallingTsap = new COTPParameterCallingTsap(tsapId);
+      return cOTPParameterCallingTsap;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameterCallingTsap)) {
+      return false;
+    }
+    COTPParameterCallingTsap that = (COTPParameterCallingTsap) o;
+    return (getTsapId() == that.getTsapId()) && super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getTsapId());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
new file mode 100644
index 0000000000..bfa89f0ff1
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
@@ -0,0 +1,141 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPParameterChecksum extends COTPParameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0xC3;
+  }
+
+  // Properties.
+  protected final short crc;
+
+  public COTPParameterChecksum(short crc) {
+    super();
+    this.crc = crc;
+  }
+
+  public short getCrc() {
+    return crc;
+  }
+
+  @Override
+  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameterChecksum");
+
+    // Simple Field (crc)
+    writeSimpleField("crc", crc, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("COTPParameterChecksum");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPParameterChecksum _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (crc)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
+      ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameterChecksum");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short crc = readSimpleField("crc", readUnsignedShort(readBuffer, 8));
+
+    readBuffer.closeContext("COTPParameterChecksum");
+    // Create the instance
+    return new COTPParameterChecksumBuilderImpl(crc);
+  }
+
+  public static class COTPParameterChecksumBuilderImpl
+      implements COTPParameter.COTPParameterBuilder {
+    private final short crc;
+
+    public COTPParameterChecksumBuilderImpl(short crc) {
+      this.crc = crc;
+    }
+
+    public COTPParameterChecksum build() {
+      COTPParameterChecksum cOTPParameterChecksum = new COTPParameterChecksum(crc);
+      return cOTPParameterChecksum;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameterChecksum)) {
+      return false;
+    }
+    COTPParameterChecksum that = (COTPParameterChecksum) o;
+    return (getCrc() == that.getCrc()) && super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getCrc());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
new file mode 100644
index 0000000000..9846b0517f
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
@@ -0,0 +1,145 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPParameterDisconnectAdditionalInformation extends COTPParameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0xE0;
+  }
+
+  // Properties.
+  protected final byte[] data;
+
+  public COTPParameterDisconnectAdditionalInformation(byte[] data) {
+    super();
+    this.data = data;
+  }
+
+  public byte[] getData() {
+    return data;
+  }
+
+  @Override
+  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameterDisconnectAdditionalInformation");
+
+    // Array Field (data)
+    writeByteArrayField("data", data, writeByteArray(writeBuffer, 8));
+
+    writeBuffer.popContext("COTPParameterDisconnectAdditionalInformation");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPParameterDisconnectAdditionalInformation _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Array field
+    if (data != null) {
+      lengthInBits += 8 * data.length;
+    }
+
+    return lengthInBits;
+  }
+
+  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
+      ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameterDisconnectAdditionalInformation");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    byte[] data = readBuffer.readByteArray("data", Math.toIntExact(rest));
+
+    readBuffer.closeContext("COTPParameterDisconnectAdditionalInformation");
+    // Create the instance
+    return new COTPParameterDisconnectAdditionalInformationBuilderImpl(data);
+  }
+
+  public static class COTPParameterDisconnectAdditionalInformationBuilderImpl
+      implements COTPParameter.COTPParameterBuilder {
+    private final byte[] data;
+
+    public COTPParameterDisconnectAdditionalInformationBuilderImpl(byte[] data) {
+      this.data = data;
+    }
+
+    public COTPParameterDisconnectAdditionalInformation build() {
+      COTPParameterDisconnectAdditionalInformation cOTPParameterDisconnectAdditionalInformation =
+          new COTPParameterDisconnectAdditionalInformation(data);
+      return cOTPParameterDisconnectAdditionalInformation;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameterDisconnectAdditionalInformation)) {
+      return false;
+    }
+    COTPParameterDisconnectAdditionalInformation that =
+        (COTPParameterDisconnectAdditionalInformation) o;
+    return (getData() == that.getData()) && super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getData());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
new file mode 100644
index 0000000000..be740620a8
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
@@ -0,0 +1,151 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class COTPParameterTpduSize extends COTPParameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0xC0;
+  }
+
+  // Properties.
+  protected final COTPTpduSize tpduSize;
+
+  public COTPParameterTpduSize(COTPTpduSize tpduSize) {
+    super();
+    this.tpduSize = tpduSize;
+  }
+
+  public COTPTpduSize getTpduSize() {
+    return tpduSize;
+  }
+
+  @Override
+  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("COTPParameterTpduSize");
+
+    // Simple Field (tpduSize)
+    writeSimpleEnumField(
+        "tpduSize",
+        "COTPTpduSize",
+        tpduSize,
+        new DataWriterEnumDefault<>(
+            COTPTpduSize::getValue, COTPTpduSize::name, writeUnsignedShort(writeBuffer, 8)));
+
+    writeBuffer.popContext("COTPParameterTpduSize");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    COTPParameterTpduSize _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (tpduSize)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
+      ReadBuffer readBuffer, Short rest) throws ParseException {
+    readBuffer.pullContext("COTPParameterTpduSize");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    COTPTpduSize tpduSize =
+        readEnumField(
+            "tpduSize",
+            "COTPTpduSize",
+            new DataReaderEnumDefault<>(
+                COTPTpduSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    readBuffer.closeContext("COTPParameterTpduSize");
+    // Create the instance
+    return new COTPParameterTpduSizeBuilderImpl(tpduSize);
+  }
+
+  public static class COTPParameterTpduSizeBuilderImpl
+      implements COTPParameter.COTPParameterBuilder {
+    private final COTPTpduSize tpduSize;
+
+    public COTPParameterTpduSizeBuilderImpl(COTPTpduSize tpduSize) {
+      this.tpduSize = tpduSize;
+    }
+
+    public COTPParameterTpduSize build() {
+      COTPParameterTpduSize cOTPParameterTpduSize = new COTPParameterTpduSize(tpduSize);
+      return cOTPParameterTpduSize;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof COTPParameterTpduSize)) {
+      return false;
+    }
+    COTPParameterTpduSize that = (COTPParameterTpduSize) o;
+    return (getTpduSize() == that.getTpduSize()) && super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getTpduSize());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java
new file mode 100644
index 0000000000..01715721bc
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java
@@ -0,0 +1,58 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum COTPProtocolClass {
+  CLASS_0((short) 0x00),
+  CLASS_1((short) 0x10),
+  CLASS_2((short) 0x20),
+  CLASS_3((short) 0x30),
+  CLASS_4((short) 0x40);
+  private static final Map<Short, COTPProtocolClass> map;
+
+  static {
+    map = new HashMap<>();
+    for (COTPProtocolClass value : COTPProtocolClass.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  COTPProtocolClass(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static COTPProtocolClass enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
new file mode 100644
index 0000000000..9f7df7129a
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
@@ -0,0 +1,87 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum COTPTpduSize {
+  SIZE_128((short) 0x07, (int) 128),
+  SIZE_256((short) 0x08, (int) 256),
+  SIZE_512((short) 0x09, (int) 512),
+  SIZE_1024((short) 0x0a, (int) 1024),
+  SIZE_2048((short) 0x0b, (int) 2048),
+  SIZE_4096((short) 0x0c, (int) 4096),
+  SIZE_8192((short) 0x0d, (int) 8192);
+  private static final Map<Short, COTPTpduSize> map;
+
+  static {
+    map = new HashMap<>();
+    for (COTPTpduSize value : COTPTpduSize.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+  private final int sizeInBytes;
+
+  COTPTpduSize(short value, int sizeInBytes) {
+    this.value = value;
+    this.sizeInBytes = sizeInBytes;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public int getSizeInBytes() {
+    return sizeInBytes;
+  }
+
+  public static COTPTpduSize firstEnumForFieldSizeInBytes(int fieldValue) {
+    for (COTPTpduSize _val : COTPTpduSize.values()) {
+      if (_val.getSizeInBytes() == fieldValue) {
+        return _val;
+      }
+    }
+    return null;
+  }
+
+  public static List<COTPTpduSize> enumsForFieldSizeInBytes(int fieldValue) {
+    List<COTPTpduSize> _values = new ArrayList<>();
+    for (COTPTpduSize _val : COTPTpduSize.values()) {
+      if (_val.getSizeInBytes() == fieldValue) {
+        _values.add(_val);
+      }
+    }
+    return _values;
+  }
+
+  public static COTPTpduSize enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java
new file mode 100644
index 0000000000..10be0b999d
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java
@@ -0,0 +1,57 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum CpuSubscribeEvents {
+  CPU((short) 0x01),
+  IM((short) 0x02),
+  FM((short) 0x04),
+  CP((short) 0x80);
+  private static final Map<Short, CpuSubscribeEvents> map;
+
+  static {
+    map = new HashMap<>();
+    for (CpuSubscribeEvents value : CpuSubscribeEvents.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  CpuSubscribeEvents(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static CpuSubscribeEvents enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java
new file mode 100644
index 0000000000..c15002a449
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java
@@ -0,0 +1,244 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CycServiceItemAnyType extends CycServiceItemType implements Message {
+
+  // Accessors for discriminator values.
+
+  // Properties.
+  protected final TransportSize transportSize;
+  protected final int length;
+  protected final int dbNumber;
+  protected final MemoryArea memoryArea;
+  protected final int address;
+
+  public CycServiceItemAnyType(
+      short byteLength,
+      short syntaxId,
+      TransportSize transportSize,
+      int length,
+      int dbNumber,
+      MemoryArea memoryArea,
+      int address) {
+    super(byteLength, syntaxId);
+    this.transportSize = transportSize;
+    this.length = length;
+    this.dbNumber = dbNumber;
+    this.memoryArea = memoryArea;
+    this.address = address;
+  }
+
+  public TransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public int getLength() {
+    return length;
+  }
+
+  public int getDbNumber() {
+    return dbNumber;
+  }
+
+  public MemoryArea getMemoryArea() {
+    return memoryArea;
+  }
+
+  public int getAddress() {
+    return address;
+  }
+
+  @Override
+  protected void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("CycServiceItemAnyType");
+
+    // Enum field (transportSize)
+    writeEnumField(
+        "transportSize",
+        "TransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            TransportSize::getCode, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (length)
+    writeSimpleField("length", length, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (dbNumber)
+    writeSimpleField("dbNumber", dbNumber, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (memoryArea)
+    writeSimpleEnumField(
+        "memoryArea",
+        "MemoryArea",
+        memoryArea,
+        new DataWriterEnumDefault<>(
+            MemoryArea::getValue, MemoryArea::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (address)
+    writeSimpleField("address", address, writeUnsignedInt(writeBuffer, 24));
+
+    writeBuffer.popContext("CycServiceItemAnyType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    CycServiceItemAnyType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Enum Field (transportSize)
+    lengthInBits += 8;
+
+    // Simple field (length)
+    lengthInBits += 16;
+
+    // Simple field (dbNumber)
+    lengthInBits += 16;
+
+    // Simple field (memoryArea)
+    lengthInBits += 8;
+
+    // Simple field (address)
+    lengthInBits += 24;
+
+    return lengthInBits;
+  }
+
+  public static CycServiceItemTypeBuilder staticParseCycServiceItemTypeBuilder(
+      ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("CycServiceItemAnyType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    TransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "TransportSize",
+            readEnum(TransportSize::firstEnumForFieldCode, readUnsignedShort(readBuffer, 8)));
+
+    int length = readSimpleField("length", readUnsignedInt(readBuffer, 16));
+
+    int dbNumber = readSimpleField("dbNumber", readUnsignedInt(readBuffer, 16));
+
+    MemoryArea memoryArea =
+        readEnumField(
+            "memoryArea",
+            "MemoryArea",
+            new DataReaderEnumDefault<>(
+                MemoryArea::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    int address = readSimpleField("address", readUnsignedInt(readBuffer, 24));
+
+    readBuffer.closeContext("CycServiceItemAnyType");
+    // Create the instance
+    return new CycServiceItemAnyTypeBuilderImpl(
+        transportSize, length, dbNumber, memoryArea, address);
+  }
+
+  public static class CycServiceItemAnyTypeBuilderImpl
+      implements CycServiceItemType.CycServiceItemTypeBuilder {
+    private final TransportSize transportSize;
+    private final int length;
+    private final int dbNumber;
+    private final MemoryArea memoryArea;
+    private final int address;
+
+    public CycServiceItemAnyTypeBuilderImpl(
+        TransportSize transportSize, int length, int dbNumber, MemoryArea memoryArea, int address) {
+      this.transportSize = transportSize;
+      this.length = length;
+      this.dbNumber = dbNumber;
+      this.memoryArea = memoryArea;
+      this.address = address;
+    }
+
+    public CycServiceItemAnyType build(short byteLength, short syntaxId) {
+      CycServiceItemAnyType cycServiceItemAnyType =
+          new CycServiceItemAnyType(
+              byteLength, syntaxId, transportSize, length, dbNumber, memoryArea, address);
+      return cycServiceItemAnyType;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof CycServiceItemAnyType)) {
+      return false;
+    }
+    CycServiceItemAnyType that = (CycServiceItemAnyType) o;
+    return (getTransportSize() == that.getTransportSize())
+        && (getLength() == that.getLength())
+        && (getDbNumber() == that.getDbNumber())
+        && (getMemoryArea() == that.getMemoryArea())
+        && (getAddress() == that.getAddress())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        super.hashCode(),
+        getTransportSize(),
+        getLength(),
+        getDbNumber(),
+        getMemoryArea(),
+        getAddress());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java
new file mode 100644
index 0000000000..73363758dd
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java
@@ -0,0 +1,169 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CycServiceItemDbReadType extends CycServiceItemType implements Message {
+
+  // Accessors for discriminator values.
+
+  // Properties.
+  protected final short numberOfAreas;
+  protected final List<SubItem> items;
+
+  public CycServiceItemDbReadType(
+      short byteLength, short syntaxId, short numberOfAreas, List<SubItem> items) {
+    super(byteLength, syntaxId);
+    this.numberOfAreas = numberOfAreas;
+    this.items = items;
+  }
+
+  public short getNumberOfAreas() {
+    return numberOfAreas;
+  }
+
+  public List<SubItem> getItems() {
+    return items;
+  }
+
+  @Override
+  protected void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("CycServiceItemDbReadType");
+
+    // Simple Field (numberOfAreas)
+    writeSimpleField("numberOfAreas", numberOfAreas, writeUnsignedShort(writeBuffer, 8));
+
+    // Array Field (items)
+    writeComplexTypeArrayField("items", items, writeBuffer);
+
+    writeBuffer.popContext("CycServiceItemDbReadType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    CycServiceItemDbReadType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (numberOfAreas)
+    lengthInBits += 8;
+
+    // Array field
+    if (items != null) {
+      int i = 0;
+      for (SubItem element : items) {
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= items.size());
+        lengthInBits += element.getLengthInBits();
+      }
+    }
+
+    return lengthInBits;
+  }
+
+  public static CycServiceItemTypeBuilder staticParseCycServiceItemTypeBuilder(
+      ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("CycServiceItemDbReadType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short numberOfAreas = readSimpleField("numberOfAreas", readUnsignedShort(readBuffer, 8));
+
+    List<SubItem> items =
+        readCountArrayField(
+            "items",
+            new DataReaderComplexDefault<>(() -> SubItem.staticParse(readBuffer), readBuffer),
+            numberOfAreas);
+
+    readBuffer.closeContext("CycServiceItemDbReadType");
+    // Create the instance
+    return new CycServiceItemDbReadTypeBuilderImpl(numberOfAreas, items);
+  }
+
+  public static class CycServiceItemDbReadTypeBuilderImpl
+      implements CycServiceItemType.CycServiceItemTypeBuilder {
+    private final short numberOfAreas;
+    private final List<SubItem> items;
+
+    public CycServiceItemDbReadTypeBuilderImpl(short numberOfAreas, List<SubItem> items) {
+      this.numberOfAreas = numberOfAreas;
+      this.items = items;
+    }
+
+    public CycServiceItemDbReadType build(short byteLength, short syntaxId) {
+      CycServiceItemDbReadType cycServiceItemDbReadType =
+          new CycServiceItemDbReadType(byteLength, syntaxId, numberOfAreas, items);
+      return cycServiceItemDbReadType;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof CycServiceItemDbReadType)) {
+      return false;
+    }
+    CycServiceItemDbReadType that = (CycServiceItemDbReadType) o;
+    return (getNumberOfAreas() == that.getNumberOfAreas())
+        && (getItems() == that.getItems())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getNumberOfAreas(), getItems());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java
new file mode 100644
index 0000000000..9dca1f7e3e
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java
@@ -0,0 +1,189 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class CycServiceItemType implements Message {
+
+  // Abstract accessors for discriminator values.
+
+  // Constant values.
+  public static final Short FUNCTIONID = 0x12;
+
+  // Properties.
+  protected final short byteLength;
+  protected final short syntaxId;
+
+  public CycServiceItemType(short byteLength, short syntaxId) {
+    super();
+    this.byteLength = byteLength;
+    this.syntaxId = syntaxId;
+  }
+
+  public short getByteLength() {
+    return byteLength;
+  }
+
+  public short getSyntaxId() {
+    return syntaxId;
+  }
+
+  public short getFunctionId() {
+    return FUNCTIONID;
+  }
+
+  protected abstract void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("CycServiceItemType");
+
+    // Const Field (functionId)
+    writeConstField("functionId", FUNCTIONID, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (byteLength)
+    writeSimpleField("byteLength", byteLength, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (syntaxId)
+    writeSimpleField("syntaxId", syntaxId, writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeCycServiceItemTypeChild(writeBuffer);
+
+    writeBuffer.popContext("CycServiceItemType");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    CycServiceItemType _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (functionId)
+    lengthInBits += 8;
+
+    // Simple field (byteLength)
+    lengthInBits += 8;
+
+    // Simple field (syntaxId)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    return lengthInBits;
+  }
+
+  public static CycServiceItemType staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static CycServiceItemType staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("CycServiceItemType");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId =
+        readConstField(
+            "functionId", readUnsignedShort(readBuffer, 8), CycServiceItemType.FUNCTIONID);
+
+    short byteLength = readSimpleField("byteLength", readUnsignedShort(readBuffer, 8));
+
+    short syntaxId = readSimpleField("syntaxId", readUnsignedShort(readBuffer, 8));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    CycServiceItemTypeBuilder builder = null;
+    if (EvaluationHelper.equals(syntaxId, (short) 0x10)) {
+      builder = CycServiceItemAnyType.staticParseCycServiceItemTypeBuilder(readBuffer);
+    } else if (EvaluationHelper.equals(syntaxId, (short) 0xb0)) {
+      builder = CycServiceItemDbReadType.staticParseCycServiceItemTypeBuilder(readBuffer);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "syntaxId="
+              + syntaxId
+              + "]");
+    }
+
+    readBuffer.closeContext("CycServiceItemType");
+    // Create the instance
+    CycServiceItemType _cycServiceItemType = builder.build(byteLength, syntaxId);
+    return _cycServiceItemType;
+  }
+
+  public interface CycServiceItemTypeBuilder {
+    CycServiceItemType build(short byteLength, short syntaxId);
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof CycServiceItemType)) {
+      return false;
+    }
+    CycServiceItemType that = (CycServiceItemType) o;
+    return (getByteLength() == that.getByteLength())
+        && (getSyntaxId() == that.getSyntaxId())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getByteLength(), getSyntaxId());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
new file mode 100644
index 0000000000..8cbcc67d76
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
@@ -0,0 +1,531 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.math.BigInteger;
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.WithOption;
+import org.apache.plc4x.java.spi.generation.ByteOrder;
+import org.apache.plc4x.java.spi.generation.EvaluationHelper;
+import org.apache.plc4x.java.spi.generation.ParseException;
+import org.apache.plc4x.java.spi.generation.ReadBuffer;
+import org.apache.plc4x.java.spi.generation.SerializationException;
+import org.apache.plc4x.java.spi.generation.WriteBuffer;
+import org.apache.plc4x.java.spi.values.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class DataItem {
+
+  private static final Logger LOGGER = LoggerFactory.getLogger(DataItem.class);
+
+  public static PlcValue staticParse(
+      ReadBuffer readBuffer, String dataProtocolId, Integer stringLength) throws ParseException {
+    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
+
+      // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+      {
+        byte reserved = /*TODO: migrate me*/ /*TODO: migrate me*/
+            readBuffer.readUnsignedByte("", 7);
+        if (reserved != (byte) 0x00) {
+          LOGGER.info(
+              "Expected constant value " + 0x00 + " but got " + reserved + " for reserved field.");
+        }
+      }
+
+      // Simple Field (value)
+      Boolean value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readBit("");
+
+      return new PlcBOOL(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
+
+      // Simple Field (value)
+      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      return new PlcBYTE(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
+
+      // Simple Field (value)
+      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
+
+      return new PlcWORD(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
+
+      // Simple Field (value)
+      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedLong("", 32);
+
+      return new PlcDWORD(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
+
+      // Simple Field (value)
+      BigInteger value = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedBigInteger("", 64);
+
+      return new PlcLWORD(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
+
+      // Simple Field (value)
+      Byte value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readSignedByte("", 8);
+
+      return new PlcSINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
+
+      // Simple Field (value)
+      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      return new PlcUSINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
+
+      // Simple Field (value)
+      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readShort("", 16);
+
+      return new PlcINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
+
+      // Simple Field (value)
+      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
+
+      return new PlcUINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
+
+      // Simple Field (value)
+      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readInt("", 32);
+
+      return new PlcDINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
+
+      // Simple Field (value)
+      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedLong("", 32);
+
+      return new PlcUDINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
+
+      // Simple Field (value)
+      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readLong("", 64);
+
+      return new PlcLINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
+
+      // Simple Field (value)
+      BigInteger value = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedBigInteger("", 64);
+
+      return new PlcULINT(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
+
+      // Simple Field (value)
+      Float value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readFloat("", 32);
+
+      return new PlcREAL(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
+
+      // Simple Field (value)
+      Double value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readDouble("", 64);
+
+      return new PlcLREAL(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
+
+      // Simple Field (value)
+      String value = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readString("", 8, WithOption.WithEncoding("UTF-8"));
+
+      return new PlcCHAR(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
+
+      // Simple Field (value)
+      String value = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readString("", 16, WithOption.WithEncoding("UTF-16"));
+
+      return new PlcCHAR(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
+
+      // Manual Field (value)
+      String value =
+          (String)
+              (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.parseS7String(
+                  readBuffer, stringLength, "UTF-8"));
+
+      return new PlcSTRING(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
+
+      // Manual Field (value)
+      String value =
+          (String)
+              (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.parseS7String(
+                  readBuffer, stringLength, "UTF-16"));
+
+      return new PlcSTRING(value);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
+
+      // Simple Field (milliseconds)
+      Integer milliseconds = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readInt("", 32);
+
+      return PlcTIME.ofMilliseconds(milliseconds);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
+
+      // Simple Field (nanoseconds)
+      BigInteger nanoseconds = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedBigInteger("", 64);
+
+      return PlcLTIME.ofNanoseconds(nanoseconds);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
+
+      // Simple Field (daysSinceSiemensEpoch)
+      Integer daysSinceSiemensEpoch = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedInt("", 16);
+
+      return PlcDATE.ofDaysSinceSiemensEpoch(daysSinceSiemensEpoch);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
+
+      // Simple Field (millisecondsSinceMidnight)
+      Long millisecondsSinceMidnight = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedLong("", 32);
+
+      return PlcTIME_OF_DAY.ofMillisecondsSinceMidnight(millisecondsSinceMidnight);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
+
+      // Simple Field (nanosecondsSinceMidnight)
+      BigInteger nanosecondsSinceMidnight = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedBigInteger("", 64);
+
+      return PlcLTIME_OF_DAY.ofNanosecondsSinceMidnight(nanosecondsSinceMidnight);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
+
+      // Simple Field (year)
+      Integer year = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
+
+      // Simple Field (month)
+      Short month = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (day)
+      Short day = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (dayOfWeek)
+      Short dayOfWeek = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (hour)
+      Short hour = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (minutes)
+      Short minutes = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (seconds)
+      Short seconds = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+      // Simple Field (nanoseconds)
+      Long nanoseconds = /*TODO: migrate me*/ /*TODO: migrate me*/
+          readBuffer.readUnsignedLong("", 32);
+
+      return PlcDATE_AND_TIME.ofSegments(
+          year.intValue(),
+          (month == 0) ? 1 : month.intValue(),
+          (day == 0) ? 1 : day.intValue(),
+          hour.intValue(),
+          minutes.intValue(),
+          seconds.intValue(),
+          nanoseconds.intValue());
+    }
+    return null;
+  }
+
+  public static void staticSerialize(
+      WriteBuffer writeBuffer, PlcValue _value, String dataProtocolId, Integer stringLength)
+      throws SerializationException {
+    staticSerialize(writeBuffer, _value, dataProtocolId, stringLength, ByteOrder.BIG_ENDIAN);
+  }
+
+  public static void staticSerialize(
+      WriteBuffer writeBuffer,
+      PlcValue _value,
+      String dataProtocolId,
+      Integer stringLength,
+      ByteOrder byteOrder)
+      throws SerializationException {
+    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
+      // Reserved Field
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedByte("", 7, ((Number) (byte) 0x00).byteValue());
+      // Simple Field (value)
+      boolean value = (boolean) _value.getBoolean();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeBit("", (boolean) (value));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
+      // Simple Field (value)
+      short value = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (value)).shortValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
+      // Simple Field (value)
+      int value = (int) _value.getInt();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (value)).intValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
+      // Simple Field (value)
+      long value = (long) _value.getLong();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong("", 32, ((Number) (value)).longValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
+      // Simple Field (value)
+      BigInteger value = (BigInteger) _value.getBigInteger();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (value));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
+      // Simple Field (value)
+      byte value = (byte) _value.getByte();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeSignedByte("", 8, ((Number) (value)).byteValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
+      // Simple Field (value)
+      short value = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (value)).shortValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
+      // Simple Field (value)
+      short value = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeShort("", 16, ((Number) (value)).shortValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
+      // Simple Field (value)
+      int value = (int) _value.getInt();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (value)).intValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
+      // Simple Field (value)
+      int value = (int) _value.getInt();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeInt("", 32, ((Number) (value)).intValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
+      // Simple Field (value)
+      long value = (long) _value.getLong();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong("", 32, ((Number) (value)).longValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
+      // Simple Field (value)
+      long value = (long) _value.getLong();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeLong("", 64, ((Number) (value)).longValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
+      // Simple Field (value)
+      BigInteger value = (BigInteger) _value.getBigInteger();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (value));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
+      // Simple Field (value)
+      float value = (float) _value.getFloat();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeFloat("", 32, (value));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
+      // Simple Field (value)
+      double value = (double) _value.getDouble();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeDouble("", 64, (value));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
+      // Simple Field (value)
+      String value = (String) _value.getString();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeString(
+          "", 8, (String) (value), WithOption.WithEncoding("UTF-8"));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
+      // Simple Field (value)
+      String value = (String) _value.getString();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeString(
+          "", 16, (String) (value), WithOption.WithEncoding("UTF-16"));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
+      // Manual Field (value)
+      org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.serializeS7String(
+          writeBuffer, _value, stringLength, "UTF-8");
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
+      // Manual Field (value)
+      org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.serializeS7String(
+          writeBuffer, _value, stringLength, "UTF-16");
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
+      // Simple Field (milliseconds)
+      int milliseconds = (int) _value.getInt();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeInt("", 32, ((Number) (milliseconds)).intValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
+      // Simple Field (nanoseconds)
+      BigInteger nanoseconds = (BigInteger) _value.getBigInteger();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (nanoseconds));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
+      // Simple Field (daysSinceSiemensEpoch)
+      int daysSinceSiemensEpoch = (int) ((PlcDATE) _value).getDaysSinceSiemensEpoch();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt(
+          "", 16, ((Number) (daysSinceSiemensEpoch)).intValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
+      // Simple Field (millisecondsSinceMidnight)
+      long millisecondsSinceMidnight = (long) _value.getLong();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong(
+          "", 32, ((Number) (millisecondsSinceMidnight)).longValue());
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
+      // Simple Field (nanosecondsSinceMidnight)
+      BigInteger nanosecondsSinceMidnight = (BigInteger) _value.getBigInteger();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger(
+          "", 64, (BigInteger) (nanosecondsSinceMidnight));
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
+      // Simple Field (year)
+      int year = (int) _value.getInt();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (year)).intValue());
+      // Simple Field (month)
+      short month = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (month)).shortValue());
+      // Simple Field (day)
+      short day = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (day)).shortValue());
+      // Simple Field (dayOfWeek)
+      short dayOfWeek = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort(
+          "", 8, ((Number) (dayOfWeek)).shortValue());
+      // Simple Field (hour)
+      short hour = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (hour)).shortValue());
+      // Simple Field (minutes)
+      short minutes = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (minutes)).shortValue());
+      // Simple Field (seconds)
+      short seconds = (short) _value.getShort();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (seconds)).shortValue());
+      // Simple Field (nanoseconds)
+      long nanoseconds = (long) _value.getLong();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong(
+          "", 32, ((Number) (nanoseconds)).longValue());
+    }
+  }
+
+  public static int getLengthInBytes(PlcValue _value, String dataProtocolId, Integer stringLength) {
+    return (int) Math.ceil((float) getLengthInBits(_value, dataProtocolId, stringLength) / 8.0);
+  }
+
+  public static int getLengthInBits(PlcValue _value, String dataProtocolId, Integer stringLength) {
+    int sizeInBits = 0;
+    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
+      // Reserved Field
+      sizeInBits += 7;
+      // Simple Field (value)
+      sizeInBits += 1;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
+      // Simple Field (value)
+      sizeInBits += 8;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
+      // Simple Field (value)
+      sizeInBits += 16;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
+      // Simple Field (value)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
+      // Simple Field (value)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
+      // Simple Field (value)
+      sizeInBits += 8;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
+      // Simple Field (value)
+      sizeInBits += 8;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
+      // Simple Field (value)
+      sizeInBits += 16;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
+      // Simple Field (value)
+      sizeInBits += 16;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
+      // Simple Field (value)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
+      // Simple Field (value)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
+      // Simple Field (value)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
+      // Simple Field (value)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
+      // Simple Field (value)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
+      // Simple Field (value)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
+      // Simple Field (value)
+      sizeInBits += 8;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
+      // Simple Field (value)
+      sizeInBits += 16;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
+      // Manual Field (value)
+      sizeInBits += (((stringLength) * (8))) + (16);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
+      // Manual Field (value)
+      sizeInBits += (((stringLength) * (16))) + (32);
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
+      // Simple Field (milliseconds)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
+      // Simple Field (nanoseconds)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
+      // Simple Field (daysSinceSiemensEpoch)
+      sizeInBits += 16;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
+      // Simple Field (millisecondsSinceMidnight)
+      sizeInBits += 32;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
+      // Simple Field (nanosecondsSinceMidnight)
+      sizeInBits += 64;
+    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
+      // Simple Field (year)
+      sizeInBits += 16;
+      // Simple Field (month)
+      sizeInBits += 8;
+      // Simple Field (day)
+      sizeInBits += 8;
+      // Simple Field (dayOfWeek)
+      sizeInBits += 8;
+      // Simple Field (hour)
+      sizeInBits += 8;
+      // Simple Field (minutes)
+      sizeInBits += 8;
+      // Simple Field (seconds)
+      sizeInBits += 8;
+      // Simple Field (nanoseconds)
+      sizeInBits += 32;
+    }
+    return sizeInBits;
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java
new file mode 100644
index 0000000000..72da9d7152
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java
@@ -0,0 +1,59 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum DataTransportErrorCode {
+  RESERVED((short) 0x00),
+  OK((short) 0xFF),
+  ACCESS_DENIED((short) 0x03),
+  INVALID_ADDRESS((short) 0x05),
+  DATA_TYPE_NOT_SUPPORTED((short) 0x06),
+  NOT_FOUND((short) 0x0A);
+  private static final Map<Short, DataTransportErrorCode> map;
+
+  static {
+    map = new HashMap<>();
+    for (DataTransportErrorCode value : DataTransportErrorCode.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  DataTransportErrorCode(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static DataTransportErrorCode enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
new file mode 100644
index 0000000000..bc667c57c3
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
@@ -0,0 +1,87 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum DataTransportSize {
+  NULL((short) 0x00, (boolean) false),
+  BIT((short) 0x03, (boolean) true),
+  BYTE_WORD_DWORD((short) 0x04, (boolean) true),
+  INTEGER((short) 0x05, (boolean) true),
+  DINTEGER((short) 0x06, (boolean) false),
+  REAL((short) 0x07, (boolean) false),
+  OCTET_STRING((short) 0x09, (boolean) false);
+  private static final Map<Short, DataTransportSize> map;
+
+  static {
+    map = new HashMap<>();
+    for (DataTransportSize value : DataTransportSize.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+  private final boolean sizeInBits;
+
+  DataTransportSize(short value, boolean sizeInBits) {
+    this.value = value;
+    this.sizeInBits = sizeInBits;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public boolean getSizeInBits() {
+    return sizeInBits;
+  }
+
+  public static DataTransportSize firstEnumForFieldSizeInBits(boolean fieldValue) {
+    for (DataTransportSize _val : DataTransportSize.values()) {
+      if (_val.getSizeInBits() == fieldValue) {
+        return _val;
+      }
+    }
+    return null;
+  }
+
+  public static List<DataTransportSize> enumsForFieldSizeInBits(boolean fieldValue) {
+    List<DataTransportSize> _values = new ArrayList<>();
+    for (DataTransportSize _val : DataTransportSize.values()) {
+      if (_val.getSizeInBits() == fieldValue) {
+        _values.add(_val);
+      }
+    }
+    return _values;
+  }
+
+  public static DataTransportSize enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java
new file mode 100644
index 0000000000..6b52808638
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java
@@ -0,0 +1,313 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class DateAndTime implements Message {
+
+  // Properties.
+  protected final short year;
+  protected final short month;
+  protected final short day;
+  protected final short hour;
+  protected final short minutes;
+  protected final short seconds;
+  protected final short msec;
+  protected final byte dow;
+
+  public DateAndTime(
+      short year,
+      short month,
+      short day,
+      short hour,
+      short minutes,
+      short seconds,
+      short msec,
+      byte dow) {
+    super();
+    this.year = year;
+    this.month = month;
+    this.day = day;
+    this.hour = hour;
+    this.minutes = minutes;
+    this.seconds = seconds;
+    this.msec = msec;
+    this.dow = dow;
+  }
+
+  public short getYear() {
+    return year;
+  }
+
+  public short getMonth() {
+    return month;
+  }
+
+  public short getDay() {
+    return day;
+  }
+
+  public short getHour() {
+    return hour;
+  }
+
+  public short getMinutes() {
+    return minutes;
+  }
+
+  public short getSeconds() {
+    return seconds;
+  }
+
+  public short getMsec() {
+    return msec;
+  }
+
+  public byte getDow() {
+    return dow;
+  }
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("DateAndTime");
+
+    // Manual Field (year)
+    writeManualField(
+        "year",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, year),
+        writeBuffer);
+
+    // Manual Field (month)
+    writeManualField(
+        "month",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, month),
+        writeBuffer);
+
+    // Manual Field (day)
+    writeManualField(
+        "day",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, day),
+        writeBuffer);
+
+    // Manual Field (hour)
+    writeManualField(
+        "hour",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, hour),
+        writeBuffer);
+
+    // Manual Field (minutes)
+    writeManualField(
+        "minutes",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, minutes),
+        writeBuffer);
+
+    // Manual Field (seconds)
+    writeManualField(
+        "seconds",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, seconds),
+        writeBuffer);
+
+    // Manual Field (msec)
+    writeManualField(
+        "msec",
+        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.IntToS7msec(writeBuffer, msec),
+        writeBuffer);
+
+    // Simple Field (dow)
+    writeSimpleField("dow", dow, writeUnsignedByte(writeBuffer, 4));
+
+    writeBuffer.popContext("DateAndTime");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    DateAndTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Manual Field (year)
+    lengthInBits += 8;
+
+    // Manual Field (month)
+    lengthInBits += 8;
+
+    // Manual Field (day)
+    lengthInBits += 8;
+
+    // Manual Field (hour)
+    lengthInBits += 8;
+
+    // Manual Field (minutes)
+    lengthInBits += 8;
+
+    // Manual Field (seconds)
+    lengthInBits += 8;
+
+    // Manual Field (msec)
+    lengthInBits += 12;
+
+    // Simple field (dow)
+    lengthInBits += 4;
+
+    return lengthInBits;
+  }
+
+  public static DateAndTime staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static DateAndTime staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("DateAndTime");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short year =
+        readManualField(
+            "year",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short month =
+        readManualField(
+            "month",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short day =
+        readManualField(
+            "day",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short hour =
+        readManualField(
+            "hour",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short minutes =
+        readManualField(
+            "minutes",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short seconds =
+        readManualField(
+            "seconds",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
+
+    short msec =
+        readManualField(
+            "msec",
+            readBuffer,
+            () ->
+                (short)
+                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.S7msecToInt(
+                        readBuffer)));
+
+    byte dow = readSimpleField("dow", readUnsignedByte(readBuffer, 4));
+
+    readBuffer.closeContext("DateAndTime");
+    // Create the instance
+    DateAndTime _dateAndTime;
+    _dateAndTime = new DateAndTime(year, month, day, hour, minutes, seconds, msec, dow);
+    return _dateAndTime;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof DateAndTime)) {
+      return false;
+    }
+    DateAndTime that = (DateAndTime) o;
+    return (getYear() == that.getYear())
+        && (getMonth() == that.getMonth())
+        && (getDay() == that.getDay())
+        && (getHour() == that.getHour())
+        && (getMinutes() == that.getMinutes())
+        && (getSeconds() == that.getSeconds())
+        && (getMsec() == that.getMsec())
+        && (getDow() == that.getDow())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        getYear(),
+        getMonth(),
+        getDay(),
+        getHour(),
+        getMinutes(),
+        getSeconds(),
+        getMsec(),
+        getDow());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java
new file mode 100644
index 0000000000..6386830857
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java
@@ -0,0 +1,56 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum DeviceGroup {
+  PG_OR_PC((short) 0x01),
+  OS((short) 0x02),
+  OTHERS((short) 0x03);
+  private static final Map<Short, DeviceGroup> map;
+
+  static {
+    map = new HashMap<>();
+    for (DeviceGroup value : DeviceGroup.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  DeviceGroup(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static DeviceGroup enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java
new file mode 100644
index 0000000000..b80be90877
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java
@@ -0,0 +1,58 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum EventType {
+  MODE((short) 0x01),
+  SYS((short) 0x02),
+  USR((short) 0x04),
+  ALM((short) 0x80),
+  CYC((short) 0x69);
+  private static final Map<Short, EventType> map;
+
+  static {
+    map = new HashMap<>();
+    for (EventType value : EventType.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  EventType(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static EventType enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
new file mode 100644
index 0000000000..16146f7ab2
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
@@ -0,0 +1,89 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum MemoryArea {
+  COUNTERS((short) 0x1C, (String) "C"),
+  TIMERS((short) 0x1D, (String) "T"),
+  DIRECT_PERIPHERAL_ACCESS((short) 0x80, (String) "D"),
+  INPUTS((short) 0x81, (String) "I"),
+  OUTPUTS((short) 0x82, (String) "Q"),
+  FLAGS_MARKERS((short) 0x83, (String) "M"),
+  DATA_BLOCKS((short) 0x84, (String) "DB"),
+  INSTANCE_DATA_BLOCKS((short) 0x85, (String) "DBI"),
+  LOCAL_DATA((short) 0x86, (String) "LD");
+  private static final Map<Short, MemoryArea> map;
+
+  static {
+    map = new HashMap<>();
+    for (MemoryArea value : MemoryArea.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+  private final String shortName;
+
+  MemoryArea(short value, String shortName) {
+    this.value = value;
+    this.shortName = shortName;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public String getShortName() {
+    return shortName;
+  }
+
+  public static MemoryArea firstEnumForFieldShortName(String fieldValue) {
+    for (MemoryArea _val : MemoryArea.values()) {
+      if (_val.getShortName().equals(fieldValue)) {
+        return _val;
+      }
+    }
+    return null;
+  }
+
+  public static List<MemoryArea> enumsForFieldShortName(String fieldValue) {
+    List<MemoryArea> _values = new ArrayList<>();
+    for (MemoryArea _val : MemoryArea.values()) {
+      if (_val.getShortName().equals(fieldValue)) {
+        _values.add(_val);
+      }
+    }
+    return _values;
+  }
+
+  public static MemoryArea enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java
new file mode 100644
index 0000000000..affc7ccb3e
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java
@@ -0,0 +1,62 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum ModeTransitionType {
+  STOP((short) 0x00),
+  WARM_RESTART((short) 0x01),
+  RUN((short) 0x02),
+  HOT_RESTART((short) 0x03),
+  HOLD((short) 0x04),
+  COLD_RESTART((short) 0x06),
+  RUN_R((short) 0x09),
+  LINK_UP((short) 0x11),
+  UPDATE((short) 0x12);
+  private static final Map<Short, ModeTransitionType> map;
+
+  static {
+    map = new HashMap<>();
+    for (ModeTransitionType value : ModeTransitionType.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  ModeTransitionType(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static ModeTransitionType enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java
new file mode 100644
index 0000000000..6a0986380c
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java
@@ -0,0 +1,57 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum QueryType {
+  BYALARMTYPE((short) 0x01),
+  ALARM_8((short) 0x02),
+  ALARM_S((short) 0x04),
+  ALARM_8P((short) 0x09);
+  private static final Map<Short, QueryType> map;
+
+  static {
+    map = new HashMap<>();
+    for (QueryType value : QueryType.values()) {
+      map.put((short) value.getValue(), value);
+    }
+  }
+
+  private final short value;
+
+  QueryType(short value) {
+    this.value = value;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public static QueryType enumForValue(short value) {
+    return map.get(value);
+  }
+
+  public static Boolean isDefined(short value) {
+    return map.containsKey(value);
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java
new file mode 100644
index 0000000000..3fdb19bcae
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java
@@ -0,0 +1,146 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class S7Address implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Short getAddressType();
+
+  public S7Address() {
+    super();
+  }
+
+  protected abstract void serializeS7AddressChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7Address");
+
+    // Discriminator Field (addressType) (Used as input to a switch field)
+    writeDiscriminatorField("addressType", getAddressType(), writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeS7AddressChild(writeBuffer);
+
+    writeBuffer.popContext("S7Address");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    S7Address _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Discriminator Field (addressType)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    return lengthInBits;
+  }
+
+  public static S7Address staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static S7Address staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("S7Address");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short addressType = readDiscriminatorField("addressType", readUnsignedShort(readBuffer, 8));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    S7AddressBuilder builder = null;
+    if (EvaluationHelper.equals(addressType, (short) 0x10)) {
+      builder = S7AddressAny.staticParseS7AddressBuilder(readBuffer);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "addressType="
+              + addressType
+              + "]");
+    }
+
+    readBuffer.closeContext("S7Address");
+    // Create the instance
+    S7Address _s7Address = builder.build();
+    return _s7Address;
+  }
+
+  public interface S7AddressBuilder {
+    S7Address build();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7Address)) {
+      return false;
+    }
+    S7Address that = (S7Address) o;
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash();
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
new file mode 100644
index 0000000000..d990a8d900
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
@@ -0,0 +1,276 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7AddressAny extends S7Address implements Message {
+
+  // Accessors for discriminator values.
+  public Short getAddressType() {
+    return (short) 0x10;
+  }
+
+  // Properties.
+  protected final TransportSize transportSize;
+  protected final int numberOfElements;
+  protected final int dbNumber;
+  protected final MemoryArea area;
+  protected final int byteAddress;
+  protected final byte bitAddress;
+
+  public S7AddressAny(
+      TransportSize transportSize,
+      int numberOfElements,
+      int dbNumber,
+      MemoryArea area,
+      int byteAddress,
+      byte bitAddress) {
+    super();
+    this.transportSize = transportSize;
+    this.numberOfElements = numberOfElements;
+    this.dbNumber = dbNumber;
+    this.area = area;
+    this.byteAddress = byteAddress;
+    this.bitAddress = bitAddress;
+  }
+
+  public TransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  public int getNumberOfElements() {
+    return numberOfElements;
+  }
+
+  public int getDbNumber() {
+    return dbNumber;
+  }
+
+  public MemoryArea getArea() {
+    return area;
+  }
+
+  public int getByteAddress() {
+    return byteAddress;
+  }
+
+  public byte getBitAddress() {
+    return bitAddress;
+  }
+
+  @Override
+  protected void serializeS7AddressChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7AddressAny");
+
+    // Enum field (transportSize)
+    writeEnumField(
+        "transportSize",
+        "TransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            TransportSize::getCode, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (numberOfElements)
+    writeSimpleField("numberOfElements", numberOfElements, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (dbNumber)
+    writeSimpleField("dbNumber", dbNumber, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (area)
+    writeSimpleEnumField(
+        "area",
+        "MemoryArea",
+        area,
+        new DataWriterEnumDefault<>(
+            MemoryArea::getValue, MemoryArea::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (byte) 0x00, writeUnsignedByte(writeBuffer, 5));
+
+    // Simple Field (byteAddress)
+    writeSimpleField("byteAddress", byteAddress, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (bitAddress)
+    writeSimpleField("bitAddress", bitAddress, writeUnsignedByte(writeBuffer, 3));
+
+    writeBuffer.popContext("S7AddressAny");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7AddressAny _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Enum Field (transportSize)
+    lengthInBits += 8;
+
+    // Simple field (numberOfElements)
+    lengthInBits += 16;
+
+    // Simple field (dbNumber)
+    lengthInBits += 16;
+
+    // Simple field (area)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 5;
+
+    // Simple field (byteAddress)
+    lengthInBits += 16;
+
+    // Simple field (bitAddress)
+    lengthInBits += 3;
+
+    return lengthInBits;
+  }
+
+  public static S7AddressBuilder staticParseS7AddressBuilder(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("S7AddressAny");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    TransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "TransportSize",
+            readEnum(TransportSize::firstEnumForFieldCode, readUnsignedShort(readBuffer, 8)));
+
+    int numberOfElements = readSimpleField("numberOfElements", readUnsignedInt(readBuffer, 16));
+
+    int dbNumber = readSimpleField("dbNumber", readUnsignedInt(readBuffer, 16));
+
+    MemoryArea area =
+        readEnumField(
+            "area",
+            "MemoryArea",
+            new DataReaderEnumDefault<>(
+                MemoryArea::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    Byte reservedField0 =
+        readReservedField("reserved", readUnsignedByte(readBuffer, 5), (byte) 0x00);
+
+    int byteAddress = readSimpleField("byteAddress", readUnsignedInt(readBuffer, 16));
+
+    byte bitAddress = readSimpleField("bitAddress", readUnsignedByte(readBuffer, 3));
+
+    readBuffer.closeContext("S7AddressAny");
+    // Create the instance
+    return new S7AddressAnyBuilderImpl(
+        transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
+  }
+
+  public static class S7AddressAnyBuilderImpl implements S7Address.S7AddressBuilder {
+    private final TransportSize transportSize;
+    private final int numberOfElements;
+    private final int dbNumber;
+    private final MemoryArea area;
+    private final int byteAddress;
+    private final byte bitAddress;
+
+    public S7AddressAnyBuilderImpl(
+        TransportSize transportSize,
+        int numberOfElements,
+        int dbNumber,
+        MemoryArea area,
+        int byteAddress,
+        byte bitAddress) {
+      this.transportSize = transportSize;
+      this.numberOfElements = numberOfElements;
+      this.dbNumber = dbNumber;
+      this.area = area;
+      this.byteAddress = byteAddress;
+      this.bitAddress = bitAddress;
+    }
+
+    public S7AddressAny build() {
+      S7AddressAny s7AddressAny =
+          new S7AddressAny(
+              transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
+      return s7AddressAny;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7AddressAny)) {
+      return false;
+    }
+    S7AddressAny that = (S7AddressAny) o;
+    return (getTransportSize() == that.getTransportSize())
+        && (getNumberOfElements() == that.getNumberOfElements())
+        && (getDbNumber() == that.getDbNumber())
+        && (getArea() == that.getArea())
+        && (getByteAddress() == that.getByteAddress())
+        && (getBitAddress() == that.getBitAddress())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        super.hashCode(),
+        getTransportSize(),
+        getNumberOfElements(),
+        getDbNumber(),
+        getArea(),
+        getByteAddress(),
+        getBitAddress());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java
new file mode 100644
index 0000000000..92e453cc40
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java
@@ -0,0 +1,192 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class S7DataAlarmMessage implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Byte getCpuFunctionType();
+
+  // Constant values.
+  public static final Short FUNCTIONID = 0x00;
+  public static final Short NUMBERMESSAGEOBJ = 0x01;
+
+  public S7DataAlarmMessage() {
+    super();
+  }
+
+  public short getFunctionId() {
+    return FUNCTIONID;
+  }
+
+  public short getNumberMessageObj() {
+    return NUMBERMESSAGEOBJ;
+  }
+
+  protected abstract void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7DataAlarmMessage");
+
+    // Const Field (functionId)
+    writeConstField("functionId", FUNCTIONID, writeUnsignedShort(writeBuffer, 8));
+
+    // Const Field (numberMessageObj)
+    writeConstField("numberMessageObj", NUMBERMESSAGEOBJ, writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeS7DataAlarmMessageChild(writeBuffer);
+
+    writeBuffer.popContext("S7DataAlarmMessage");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    S7DataAlarmMessage _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (functionId)
+    lengthInBits += 8;
+
+    // Const Field (numberMessageObj)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    return lengthInBits;
+  }
+
+  public static S7DataAlarmMessage staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    if ((args == null) || (args.length != 1)) {
+      throw new PlcRuntimeException(
+          "Wrong number of arguments, expected 1, but got " + args.length);
+    }
+    Byte cpuFunctionType;
+    if (args[0] instanceof Byte) {
+      cpuFunctionType = (Byte) args[0];
+    } else if (args[0] instanceof String) {
+      cpuFunctionType = Byte.valueOf((String) args[0]);
+    } else {
+      throw new PlcRuntimeException(
+          "Argument 0 expected to be of type Byte or a string which is parseable but was "
+              + args[0].getClass().getName());
+    }
+    return staticParse(readBuffer, cpuFunctionType);
+  }
+
+  public static S7DataAlarmMessage staticParse(ReadBuffer readBuffer, Byte cpuFunctionType)
+      throws ParseException {
+    readBuffer.pullContext("S7DataAlarmMessage");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short functionId =
+        readConstField(
+            "functionId", readUnsignedShort(readBuffer, 8), S7DataAlarmMessage.FUNCTIONID);
+
+    short numberMessageObj =
+        readConstField(
+            "numberMessageObj",
+            readUnsignedShort(readBuffer, 8),
+            S7DataAlarmMessage.NUMBERMESSAGEOBJ);
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    S7DataAlarmMessageBuilder builder = null;
+    if (EvaluationHelper.equals(cpuFunctionType, (byte) 0x04)) {
+      builder =
+          S7MessageObjectRequest.staticParseS7DataAlarmMessageBuilder(readBuffer, cpuFunctionType);
+    } else if (EvaluationHelper.equals(cpuFunctionType, (byte) 0x08)) {
+      builder =
+          S7MessageObjectResponse.staticParseS7DataAlarmMessageBuilder(readBuffer, cpuFunctionType);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "cpuFunctionType="
+              + cpuFunctionType
+              + "]");
+    }
+
+    readBuffer.closeContext("S7DataAlarmMessage");
+    // Create the instance
+    S7DataAlarmMessage _s7DataAlarmMessage = builder.build();
+    return _s7DataAlarmMessage;
+  }
+
+  public interface S7DataAlarmMessageBuilder {
+    S7DataAlarmMessage build();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7DataAlarmMessage)) {
+      return false;
+    }
+    S7DataAlarmMessage that = (S7DataAlarmMessage) o;
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash();
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
new file mode 100644
index 0000000000..19cf023dbf
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
@@ -0,0 +1,262 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class S7Message implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Short getMessageType();
+
+  // Constant values.
+  public static final Short PROTOCOLID = 0x32;
+
+  // Properties.
+  protected final int tpduReference;
+  protected final S7Parameter parameter;
+  protected final S7Payload payload;
+
+  public S7Message(int tpduReference, S7Parameter parameter, S7Payload payload) {
+    super();
+    this.tpduReference = tpduReference;
+    this.parameter = parameter;
+    this.payload = payload;
+  }
+
+  public int getTpduReference() {
+    return tpduReference;
+  }
+
+  public S7Parameter getParameter() {
+    return parameter;
+  }
+
+  public S7Payload getPayload() {
+    return payload;
+  }
+
+  public short getProtocolId() {
+    return PROTOCOLID;
+  }
+
+  protected abstract void serializeS7MessageChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7Message");
+
+    // Const Field (protocolId)
+    writeConstField("protocolId", PROTOCOLID, writeUnsignedShort(writeBuffer, 8));
+
+    // Discriminator Field (messageType) (Used as input to a switch field)
+    writeDiscriminatorField("messageType", getMessageType(), writeUnsignedShort(writeBuffer, 8));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
+
+    // Simple Field (tpduReference)
+    writeSimpleField("tpduReference", tpduReference, writeUnsignedInt(writeBuffer, 16));
+
+    // Implicit Field (parameterLength) (Used for parsing, but its value is not stored as it's
+    // implicitly given by the objects content)
+    int parameterLength =
+        (int) ((((getParameter()) != (null)) ? getParameter().getLengthInBytes() : 0));
+    writeImplicitField("parameterLength", parameterLength, writeUnsignedInt(writeBuffer, 16));
+
+    // Implicit Field (payloadLength) (Used for parsing, but its value is not stored as it's
+    // implicitly given by the objects content)
+    int payloadLength = (int) ((((getPayload()) != (null)) ? getPayload().getLengthInBytes() : 0));
+    writeImplicitField("payloadLength", payloadLength, writeUnsignedInt(writeBuffer, 16));
+
+    // Switch field (Serialize the sub-type)
+    serializeS7MessageChild(writeBuffer);
+
+    // Optional Field (parameter) (Can be skipped, if the value is null)
+    writeOptionalField("parameter", parameter, new DataWriterComplexDefault<>(writeBuffer));
+
+    // Optional Field (payload) (Can be skipped, if the value is null)
+    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
+
+    writeBuffer.popContext("S7Message");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    S7Message _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (protocolId)
+    lengthInBits += 8;
+
+    // Discriminator Field (messageType)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 16;
+
+    // Simple field (tpduReference)
+    lengthInBits += 16;
+
+    // Implicit Field (parameterLength)
+    lengthInBits += 16;
+
+    // Implicit Field (payloadLength)
+    lengthInBits += 16;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    // Optional Field (parameter)
+    if (parameter != null) {
+      lengthInBits += parameter.getLengthInBits();
+    }
+
+    // Optional Field (payload)
+    if (payload != null) {
+      lengthInBits += payload.getLengthInBits();
+    }
+
+    return lengthInBits;
+  }
+
+  public static S7Message staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
+    PositionAware positionAware = readBuffer;
+    return staticParse(readBuffer);
+  }
+
+  public static S7Message staticParse(ReadBuffer readBuffer) throws ParseException {
+    readBuffer.pullContext("S7Message");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short protocolId =
+        readConstField("protocolId", readUnsignedShort(readBuffer, 8), S7Message.PROTOCOLID);
+
+    short messageType = readDiscriminatorField("messageType", readUnsignedShort(readBuffer, 8));
+
+    Integer reservedField0 =
+        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
+
+    int tpduReference = readSimpleField("tpduReference", readUnsignedInt(readBuffer, 16));
+
+    int parameterLength = readImplicitField("parameterLength", readUnsignedInt(readBuffer, 16));
+
+    int payloadLength = readImplicitField("payloadLength", readUnsignedInt(readBuffer, 16));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    S7MessageBuilder builder = null;
+    if (EvaluationHelper.equals(messageType, (short) 0x01)) {
+      builder = S7MessageRequest.staticParseS7MessageBuilder(readBuffer);
+    } else if (EvaluationHelper.equals(messageType, (short) 0x02)) {
+      builder = S7MessageResponse.staticParseS7MessageBuilder(readBuffer);
+    } else if (EvaluationHelper.equals(messageType, (short) 0x03)) {
+      builder = S7MessageResponseData.staticParseS7MessageBuilder(readBuffer);
+    } else if (EvaluationHelper.equals(messageType, (short) 0x07)) {
+      builder = S7MessageUserData.staticParseS7MessageBuilder(readBuffer);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "messageType="
+              + messageType
+              + "]");
+    }
+
+    S7Parameter parameter =
+        readOptionalField(
+            "parameter",
+            new DataReaderComplexDefault<>(
+                () -> S7Parameter.staticParse(readBuffer, (short) (messageType)), readBuffer),
+            (parameterLength) > (0));
+
+    S7Payload payload =
+        readOptionalField(
+            "payload",
+            new DataReaderComplexDefault<>(
+                () ->
+                    S7Payload.staticParse(
+                        readBuffer, (short) (messageType), (S7Parameter) (parameter)),
+                readBuffer),
+            (payloadLength) > (0));
+
+    readBuffer.closeContext("S7Message");
+    // Create the instance
+    S7Message _s7Message = builder.build(tpduReference, parameter, payload);
+    return _s7Message;
+  }
+
+  public interface S7MessageBuilder {
+    S7Message build(int tpduReference, S7Parameter parameter, S7Payload payload);
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7Message)) {
+      return false;
+    }
+    S7Message that = (S7Message) o;
+    return (getTpduReference() == that.getTpduReference())
+        && (getParameter() == that.getParameter())
+        && (getPayload() == that.getPayload())
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getTpduReference(), getParameter(), getPayload());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
new file mode 100644
index 0000000000..fcdf0b49c2
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
@@ -0,0 +1,256 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageObjectRequest extends S7DataAlarmMessage implements Message {
+
+  // Accessors for discriminator values.
+  public Byte getCpuFunctionType() {
+    return (byte) 0x04;
+  }
+
+  // Constant values.
+  public static final Short VARIABLESPEC = 0x12;
+  public static final Short LENGTH = 0x08;
+
+  // Properties.
+  protected final SyntaxIdType syntaxId;
+  protected final QueryType queryType;
+  protected final AlarmType alarmType;
+
+  public S7MessageObjectRequest(SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
+    super();
+    this.syntaxId = syntaxId;
+    this.queryType = queryType;
+    this.alarmType = alarmType;
+  }
+
+  public SyntaxIdType getSyntaxId() {
+    return syntaxId;
+  }
+
+  public QueryType getQueryType() {
+    return queryType;
+  }
+
+  public AlarmType getAlarmType() {
+    return alarmType;
+  }
+
+  public short getVariableSpec() {
+    return VARIABLESPEC;
+  }
+
+  public short getLength() {
+    return LENGTH;
+  }
+
+  @Override
+  protected void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageObjectRequest");
+
+    // Const Field (variableSpec)
+    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
+
+    // Const Field (length)
+    writeConstField("length", LENGTH, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (syntaxId)
+    writeSimpleEnumField(
+        "syntaxId",
+        "SyntaxIdType",
+        syntaxId,
+        new DataWriterEnumDefault<>(
+            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (queryType)
+    writeSimpleEnumField(
+        "queryType",
+        "QueryType",
+        queryType,
+        new DataWriterEnumDefault<>(
+            QueryType::getValue, QueryType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (short) 0x34, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (alarmType)
+    writeSimpleEnumField(
+        "alarmType",
+        "AlarmType",
+        alarmType,
+        new DataWriterEnumDefault<>(
+            AlarmType::getValue, AlarmType::name, writeUnsignedShort(writeBuffer, 8)));
+
+    writeBuffer.popContext("S7MessageObjectRequest");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageObjectRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Const Field (variableSpec)
+    lengthInBits += 8;
+
+    // Const Field (length)
+    lengthInBits += 8;
+
+    // Simple field (syntaxId)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 8;
+
+    // Simple field (queryType)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 8;
+
+    // Simple field (alarmType)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static S7DataAlarmMessageBuilder staticParseS7DataAlarmMessageBuilder(
+      ReadBuffer readBuffer, Byte cpuFunctionType) throws ParseException {
+    readBuffer.pullContext("S7MessageObjectRequest");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short variableSpec =
+        readConstField(
+            "variableSpec", readUnsignedShort(readBuffer, 8), S7MessageObjectRequest.VARIABLESPEC);
+
+    short length =
+        readConstField("length", readUnsignedShort(readBuffer, 8), S7MessageObjectRequest.LENGTH);
+
+    SyntaxIdType syntaxId =
+        readEnumField(
+            "syntaxId",
+            "SyntaxIdType",
+            new DataReaderEnumDefault<>(
+                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    Short reservedField0 =
+        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+    QueryType queryType =
+        readEnumField(
+            "queryType",
+            "QueryType",
+            new DataReaderEnumDefault<>(QueryType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    Short reservedField1 =
+        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x34);
+
+    AlarmType alarmType =
+        readEnumField(
+            "alarmType",
+            "AlarmType",
+            new DataReaderEnumDefault<>(AlarmType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    readBuffer.closeContext("S7MessageObjectRequest");
+    // Create the instance
+    return new S7MessageObjectRequestBuilderImpl(syntaxId, queryType, alarmType);
+  }
+
+  public static class S7MessageObjectRequestBuilderImpl
+      implements S7DataAlarmMessage.S7DataAlarmMessageBuilder {
+    private final SyntaxIdType syntaxId;
+    private final QueryType queryType;
+    private final AlarmType alarmType;
+
+    public S7MessageObjectRequestBuilderImpl(
+        SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
+      this.syntaxId = syntaxId;
+      this.queryType = queryType;
+      this.alarmType = alarmType;
+    }
+
+    public S7MessageObjectRequest build() {
+      S7MessageObjectRequest s7MessageObjectRequest =
+          new S7MessageObjectRequest(syntaxId, queryType, alarmType);
+      return s7MessageObjectRequest;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageObjectRequest)) {
+      return false;
+    }
+    S7MessageObjectRequest that = (S7MessageObjectRequest) o;
+    return (getSyntaxId() == that.getSyntaxId())
+        && (getQueryType() == that.getQueryType())
+        && (getAlarmType() == that.getAlarmType())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getSyntaxId(), getQueryType(), getAlarmType());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
new file mode 100644
index 0000000000..812a27a0bc
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
@@ -0,0 +1,196 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageObjectResponse extends S7DataAlarmMessage implements Message {
+
+  // Accessors for discriminator values.
+  public Byte getCpuFunctionType() {
+    return (byte) 0x08;
+  }
+
+  // Properties.
+  protected final DataTransportErrorCode returnCode;
+  protected final DataTransportSize transportSize;
+
+  public S7MessageObjectResponse(
+      DataTransportErrorCode returnCode, DataTransportSize transportSize) {
+    super();
+    this.returnCode = returnCode;
+    this.transportSize = transportSize;
+  }
+
+  public DataTransportErrorCode getReturnCode() {
+    return returnCode;
+  }
+
+  public DataTransportSize getTransportSize() {
+    return transportSize;
+  }
+
+  @Override
+  protected void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
+      throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageObjectResponse");
+
+    // Simple Field (returnCode)
+    writeSimpleEnumField(
+        "returnCode",
+        "DataTransportErrorCode",
+        returnCode,
+        new DataWriterEnumDefault<>(
+            DataTransportErrorCode::getValue,
+            DataTransportErrorCode::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Simple Field (transportSize)
+    writeSimpleEnumField(
+        "transportSize",
+        "DataTransportSize",
+        transportSize,
+        new DataWriterEnumDefault<>(
+            DataTransportSize::getValue,
+            DataTransportSize::name,
+            writeUnsignedShort(writeBuffer, 8)));
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("S7MessageObjectResponse");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageObjectResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (returnCode)
+    lengthInBits += 8;
+
+    // Simple field (transportSize)
+    lengthInBits += 8;
+
+    // Reserved Field (reserved)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static S7DataAlarmMessageBuilder staticParseS7DataAlarmMessageBuilder(
+      ReadBuffer readBuffer, Byte cpuFunctionType) throws ParseException {
+    readBuffer.pullContext("S7MessageObjectResponse");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    DataTransportErrorCode returnCode =
+        readEnumField(
+            "returnCode",
+            "DataTransportErrorCode",
+            new DataReaderEnumDefault<>(
+                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    DataTransportSize transportSize =
+        readEnumField(
+            "transportSize",
+            "DataTransportSize",
+            new DataReaderEnumDefault<>(
+                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+    Short reservedField0 =
+        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+    readBuffer.closeContext("S7MessageObjectResponse");
+    // Create the instance
+    return new S7MessageObjectResponseBuilderImpl(returnCode, transportSize);
+  }
+
+  public static class S7MessageObjectResponseBuilderImpl
+      implements S7DataAlarmMessage.S7DataAlarmMessageBuilder {
+    private final DataTransportErrorCode returnCode;
+    private final DataTransportSize transportSize;
+
+    public S7MessageObjectResponseBuilderImpl(
+        DataTransportErrorCode returnCode, DataTransportSize transportSize) {
+      this.returnCode = returnCode;
+      this.transportSize = transportSize;
+    }
+
+    public S7MessageObjectResponse build() {
+      S7MessageObjectResponse s7MessageObjectResponse =
+          new S7MessageObjectResponse(returnCode, transportSize);
+      return s7MessageObjectResponse;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageObjectResponse)) {
+      return false;
+    }
+    S7MessageObjectResponse that = (S7MessageObjectResponse) o;
+    return (getReturnCode() == that.getReturnCode())
+        && (getTransportSize() == that.getTransportSize())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getReturnCode(), getTransportSize());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java
new file mode 100644
index 0000000000..d7f55537d4
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java
@@ -0,0 +1,120 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageRequest extends S7Message implements Message {
+
+  // Accessors for discriminator values.
+  public Short getMessageType() {
+    return (short) 0x01;
+  }
+
+  public S7MessageRequest(int tpduReference, S7Parameter parameter, S7Payload payload) {
+    super(tpduReference, parameter, payload);
+  }
+
+  @Override
+  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageRequest");
+
+    writeBuffer.popContext("S7MessageRequest");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    return lengthInBits;
+  }
+
+  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("S7MessageRequest");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    readBuffer.closeContext("S7MessageRequest");
+    // Create the instance
+    return new S7MessageRequestBuilderImpl();
+  }
+
+  public static class S7MessageRequestBuilderImpl implements S7Message.S7MessageBuilder {
+
+    public S7MessageRequestBuilderImpl() {}
+
+    public S7MessageRequest build(int tpduReference, S7Parameter parameter, S7Payload payload) {
+      S7MessageRequest s7MessageRequest = new S7MessageRequest(tpduReference, parameter, payload);
+      return s7MessageRequest;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageRequest)) {
+      return false;
+    }
+    S7MessageRequest that = (S7MessageRequest) o;
+    return super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java
new file mode 100644
index 0000000000..c32725f02a
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java
@@ -0,0 +1,164 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageResponse extends S7Message implements Message {
+
+  // Accessors for discriminator values.
+  public Short getMessageType() {
+    return (short) 0x02;
+  }
+
+  // Properties.
+  protected final short errorClass;
+  protected final short errorCode;
+
+  public S7MessageResponse(
+      int tpduReference,
+      S7Parameter parameter,
+      S7Payload payload,
+      short errorClass,
+      short errorCode) {
+    super(tpduReference, parameter, payload);
+    this.errorClass = errorClass;
+    this.errorCode = errorCode;
+  }
+
+  public short getErrorClass() {
+    return errorClass;
+  }
+
+  public short getErrorCode() {
+    return errorCode;
+  }
+
+  @Override
+  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageResponse");
+
+    // Simple Field (errorClass)
+    writeSimpleField("errorClass", errorClass, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (errorCode)
+    writeSimpleField("errorCode", errorCode, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("S7MessageResponse");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (errorClass)
+    lengthInBits += 8;
+
+    // Simple field (errorCode)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("S7MessageResponse");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short errorClass = readSimpleField("errorClass", readUnsignedShort(readBuffer, 8));
+
+    short errorCode = readSimpleField("errorCode", readUnsignedShort(readBuffer, 8));
+
+    readBuffer.closeContext("S7MessageResponse");
+    // Create the instance
+    return new S7MessageResponseBuilderImpl(errorClass, errorCode);
+  }
+
+  public static class S7MessageResponseBuilderImpl implements S7Message.S7MessageBuilder {
+    private final short errorClass;
+    private final short errorCode;
+
+    public S7MessageResponseBuilderImpl(short errorClass, short errorCode) {
+      this.errorClass = errorClass;
+      this.errorCode = errorCode;
+    }
+
+    public S7MessageResponse build(int tpduReference, S7Parameter parameter, S7Payload payload) {
+      S7MessageResponse s7MessageResponse =
+          new S7MessageResponse(tpduReference, parameter, payload, errorClass, errorCode);
+      return s7MessageResponse;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageResponse)) {
+      return false;
+    }
+    S7MessageResponse that = (S7MessageResponse) o;
+    return (getErrorClass() == that.getErrorClass())
+        && (getErrorCode() == that.getErrorCode())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getErrorClass(), getErrorCode());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java
new file mode 100644
index 0000000000..a4e957df96
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java
@@ -0,0 +1,165 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageResponseData extends S7Message implements Message {
+
+  // Accessors for discriminator values.
+  public Short getMessageType() {
+    return (short) 0x03;
+  }
+
+  // Properties.
+  protected final short errorClass;
+  protected final short errorCode;
+
+  public S7MessageResponseData(
+      int tpduReference,
+      S7Parameter parameter,
+      S7Payload payload,
+      short errorClass,
+      short errorCode) {
+    super(tpduReference, parameter, payload);
+    this.errorClass = errorClass;
+    this.errorCode = errorCode;
+  }
+
+  public short getErrorClass() {
+    return errorClass;
+  }
+
+  public short getErrorCode() {
+    return errorCode;
+  }
+
+  @Override
+  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageResponseData");
+
+    // Simple Field (errorClass)
+    writeSimpleField("errorClass", errorClass, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (errorCode)
+    writeSimpleField("errorCode", errorCode, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("S7MessageResponseData");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageResponseData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Simple field (errorClass)
+    lengthInBits += 8;
+
+    // Simple field (errorCode)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("S7MessageResponseData");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short errorClass = readSimpleField("errorClass", readUnsignedShort(readBuffer, 8));
+
+    short errorCode = readSimpleField("errorCode", readUnsignedShort(readBuffer, 8));
+
+    readBuffer.closeContext("S7MessageResponseData");
+    // Create the instance
+    return new S7MessageResponseDataBuilderImpl(errorClass, errorCode);
+  }
+
+  public static class S7MessageResponseDataBuilderImpl implements S7Message.S7MessageBuilder {
+    private final short errorClass;
+    private final short errorCode;
+
+    public S7MessageResponseDataBuilderImpl(short errorClass, short errorCode) {
+      this.errorClass = errorClass;
+      this.errorCode = errorCode;
+    }
+
+    public S7MessageResponseData build(
+        int tpduReference, S7Parameter parameter, S7Payload payload) {
+      S7MessageResponseData s7MessageResponseData =
+          new S7MessageResponseData(tpduReference, parameter, payload, errorClass, errorCode);
+      return s7MessageResponseData;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageResponseData)) {
+      return false;
+    }
+    S7MessageResponseData that = (S7MessageResponseData) o;
+    return (getErrorClass() == that.getErrorClass())
+        && (getErrorCode() == that.getErrorCode())
+        && super.equals(that)
+        && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), getErrorClass(), getErrorCode());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java
new file mode 100644
index 0000000000..93c380103c
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java
@@ -0,0 +1,121 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7MessageUserData extends S7Message implements Message {
+
+  // Accessors for discriminator values.
+  public Short getMessageType() {
+    return (short) 0x07;
+  }
+
+  public S7MessageUserData(int tpduReference, S7Parameter parameter, S7Payload payload) {
+    super(tpduReference, parameter, payload);
+  }
+
+  @Override
+  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7MessageUserData");
+
+    writeBuffer.popContext("S7MessageUserData");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7MessageUserData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    return lengthInBits;
+  }
+
+  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
+      throws ParseException {
+    readBuffer.pullContext("S7MessageUserData");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    readBuffer.closeContext("S7MessageUserData");
+    // Create the instance
+    return new S7MessageUserDataBuilderImpl();
+  }
+
+  public static class S7MessageUserDataBuilderImpl implements S7Message.S7MessageBuilder {
+
+    public S7MessageUserDataBuilderImpl() {}
+
+    public S7MessageUserData build(int tpduReference, S7Parameter parameter, S7Payload payload) {
+      S7MessageUserData s7MessageUserData =
+          new S7MessageUserData(tpduReference, parameter, payload);
+      return s7MessageUserData;
+    }
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7MessageUserData)) {
+      return false;
+    }
+    S7MessageUserData that = (S7MessageUserData) o;
+    return super.equals(that) && true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java
new file mode 100644
index 0000000000..d02b952230
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java
@@ -0,0 +1,187 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class S7Parameter implements Message {
+
+  // Abstract accessors for discriminator values.
+  public abstract Short getMessageType();
+
+  public abstract Short getParameterType();
+
+  public S7Parameter() {
+    super();
+  }
+
+  protected abstract void serializeS7ParameterChild(WriteBuffer writeBuffer)
+      throws SerializationException;
+
+  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7Parameter");
+
+    // Discriminator Field (parameterType) (Used as input to a switch field)
+    writeDiscriminatorField(
+        "parameterType", getParameterType(), writeUnsignedShort(writeBuffer, 8));
+
+    // Switch field (Serialize the sub-type)
+    serializeS7ParameterChild(writeBuffer);
+
+    writeBuffer.popContext("S7Parameter");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = 0;
+    S7Parameter _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Discriminator Field (parameterType)
+    lengthInBits += 8;
+
+    // Length of sub-type elements will be added by sub-type...
+
+    return lengthInBits;
+  }
+
+  public static S7Parameter staticParse(ReadBuffer readBuffer, Object... args)
+      throws ParseException {
+    PositionAware positionAware = readBuffer;
+    if ((args == null) || (args.length != 1)) {
+      throw new PlcRuntimeException(
+          "Wrong number of arguments, expected 1, but got " + args.length);
+    }
+    Short messageType;
+    if (args[0] instanceof Short) {
+      messageType = (Short) args[0];
+    } else if (args[0] instanceof String) {
+      messageType = Short.valueOf((String) args[0]);
+    } else {
+      throw new PlcRuntimeException(
+          "Argument 0 expected to be of type Short or a string which is parseable but was "
+              + args[0].getClass().getName());
+    }
+    return staticParse(readBuffer, messageType);
+  }
+
+  public static S7Parameter staticParse(ReadBuffer readBuffer, Short messageType)
+      throws ParseException {
+    readBuffer.pullContext("S7Parameter");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    short parameterType = readDiscriminatorField("parameterType", readUnsignedShort(readBuffer, 8));
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    S7ParameterBuilder builder = null;
+    if (EvaluationHelper.equals(parameterType, (short) 0xF0)) {
+      builder =
+          S7ParameterSetupCommunication.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x04)
+        && EvaluationHelper.equals(messageType, (short) 0x01)) {
+      builder = S7ParameterReadVarRequest.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x04)
+        && EvaluationHelper.equals(messageType, (short) 0x03)) {
+      builder = S7ParameterReadVarResponse.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x05)
+        && EvaluationHelper.equals(messageType, (short) 0x01)) {
+      builder = S7ParameterWriteVarRequest.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x05)
+        && EvaluationHelper.equals(messageType, (short) 0x03)) {
+      builder = S7ParameterWriteVarResponse.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x00)
+        && EvaluationHelper.equals(messageType, (short) 0x07)) {
+      builder = S7ParameterUserData.staticParseS7ParameterBuilder(readBuffer, messageType);
+    } else if (EvaluationHelper.equals(parameterType, (short) 0x01)
+        && EvaluationHelper.equals(messageType, (short) 0x07)) {
+      builder = S7ParameterModeTransition.staticParseS7ParameterBuilder(readBuffer, messageType);
+    }
+    if (builder == null) {
+      throw new ParseException(
+          "Unsupported case for discriminated type"
+              + " parameters ["
+              + "parameterType="
+              + parameterType
+              + " "
+              + "messageType="
+              + messageType
+              + "]");
+    }
+
+    readBuffer.closeContext("S7Parameter");
+    // Create the instance
+    S7Parameter _s7Parameter = builder.build();
+    return _s7Parameter;
+  }
+
+  public interface S7ParameterBuilder {
+    S7Parameter build();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (!(o instanceof S7Parameter)) {
+      return false;
+    }
+    S7Parameter that = (S7Parameter) o;
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash();
+  }
+
+  @Override
+  public String toString() {
+    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+    try {
+      writeBufferBoxBased.writeSerializable(this);
+    } catch (SerializationException e) {
+      throw new RuntimeException(e);
+    }
+    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+  }
+}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
new file mode 100644
index 0000000000..8858e89a02
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
@@ -0,0 +1,252 @@
+/*
+ * 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 org.apache.plc4x.java.s7.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class S7ParameterModeTransition extends S7Parameter implements Message {
+
+  // Accessors for discriminator values.
+  public Short getParameterType() {
+    return (short) 0x01;
+  }
+
+  public Short getMessageType() {
+    return (short) 0x07;
+  }
+
+  // Properties.
+  protected final short method;
+  protected final byte cpuFunctionType;
+  protected final byte cpuFunctionGroup;
+  protected final short currentMode;
+  protected final short sequenceNumber;
+
+  public S7ParameterModeTransition(
+      short method,
+      byte cpuFunctionType,
+      byte cpuFunctionGroup,
+      short currentMode,
+      short sequenceNumber) {
+    super();
+    this.method = method;
+    this.cpuFunctionType = cpuFunctionType;
+    this.cpuFunctionGroup = cpuFunctionGroup;
+    this.currentMode = currentMode;
+    this.sequenceNumber = sequenceNumber;
+  }
+
+  public short getMethod() {
+    return method;
+  }
+
+  public byte getCpuFunctionType() {
+    return cpuFunctionType;
+  }
+
+  public byte getCpuFunctionGroup() {
+    return cpuFunctionGroup;
+  }
+
+  public short getCurrentMode() {
+    return currentMode;
+  }
+
+  public short getSequenceNumber() {
+    return sequenceNumber;
+  }
+
+  @Override
+  protected void serializeS7ParameterChild(WriteBuffer writeBuffer) throws SerializationException {
+    PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    writeBuffer.pushContext("S7ParameterModeTransition");
+
+    // Reserved Field (reserved)
+    writeReservedField("reserved", (int) 0x0010, writeUnsignedInt(writeBuffer, 16));
+
+    // Implicit Field (itemLength) (Used for parsing, but its value is not stored as it's implicitly
+    // given by the objects content)
+    short itemLength = (short) ((getLengthInBytes()) - (2));
+    writeImplicitField("itemLength", itemLength, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (method)
+    writeSimpleField("method", method, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (cpuFunctionType)
+    writeSimpleField("cpuFunctionType", cpuFunctionType, writeUnsignedByte(writeBuffer, 4));
+
+    // Simple Field (cpuFunctionGroup)
+    writeSimpleField("cpuFunctionGroup", cpuFunctionGroup, writeUnsignedByte(writeBuffer, 4));
+
+    // Simple Field (currentMode)
+    writeSimpleField("currentMode", currentMode, writeUnsignedShort(writeBuffer, 8));
+
+    // Simple Field (sequenceNumber)
+    writeSimpleField("sequenceNumber", sequenceNumber, writeUnsignedShort(writeBuffer, 8));
+
+    writeBuffer.popContext("S7ParameterModeTransition");
+  }
+
+  @Override
+  public int getLengthInBytes() {
+    return (int) Math.ceil((float) getLengthInBits() / 8.0);
+  }
+
+  @Override
+  public int getLengthInBits() {
+    int lengthInBits = super.getLengthInBits();
+    S7ParameterModeTransition _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    // Reserved Field (reserved)
+    lengthInBits += 16;
+
+    // Implicit Field (itemLength)
+    lengthInBits += 8;
+
+    // Simple field (method)
+    lengthInBits += 8;
+
+    // Simple field (cpuFunctionType)
+    lengthInBits += 4;
+
+    // Simple field (cpuFunctionGroup)
+    lengthInBits += 4;
+
+    // Simple field (currentMode)
+    lengthInBits += 8;
+
+    // Simple field (sequenceNumber)
+    lengthInBits += 8;
+
+    return lengthInBits;
+  }
+
+  public static S7ParameterBuilder staticParseS7ParameterBuilder(
+      ReadBuffer readBuffer, Short messageType) throws ParseException {
+    readBuffer.pullContext("S7ParameterModeTransition");
+    PositionAware positionAware = readBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+    Integer reservedField0 =
+        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0010);
+
+    short itemLength = readImplicitField("itemLength", readUnsignedShort(readBuffer, 8));
+
+    short method = readSimpleField("method", readUnsignedShort(readBuffer, 8));
+
+    byte cpuFunctionType = readSimpleField("cpuFunctionType", readUnsignedByte(readBuffer, 4));
+
+    byte cpuFunctionGroup = readSimpleField("cpuFunctionGroup", readUnsignedByte(readBuffer, 4));
+
+    short currentMode = readSimpleField("currentMode", readUnsignedShort(readBuffer, 8));
+
+    short sequenceNumber = readSimpleField("sequenceNumber", readUnsignedShort(readBuffer, 8));
+
+    readBuffer.closeContext("S7ParameterModeTransition");
+    // Create the instance
+    return new S7ParameterModeTransitionBuilderImpl(
+        method, cpuFunctionType, cpuFunctionGroup, currentMode, sequenceNumber);
+  }
+
+  public static class S7ParameterModeTransitionBuilderImpl
+      implements S7Parameter.S7ParameterBuilder {
+    private final short method;
+    private final byte cpuFunctionType;
+    private final byte cpuFunctionGroup;
+    private final short currentMode;
+    private final short sequenceNumber;
+
+    public S7ParameterModeTransitionBuilderImpl(
+        short method,
+        byte cpuFunctionType,
+        byte cpuFunctionGroup,
+        short currentMode,
+        short sequenceNumber) {
+      this.method = method;
+      this.cpuFunctionType = cpuFunctionType;
+      this.cpuFunctionGroup = cpuFunctionGroup;
+      this.currentMode = currentMode;
+      this.sequenceNumber = sequenceNumber;
+    }
+
... 11966 lines suppressed ...


(plc4x) 01/02: Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.

Posted by cg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 90500e9aa15a6541e50a03a5e28b7d9e86e1d5af
Author: Cesar Garcia <ce...@ceos.com.ve>
AuthorDate: Sun Dec 3 08:59:35 2023 -0400

    Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.
---
 plc4j/drivers/s7/pom.xml                           |   4 +-
 .../java/s7/readwrite/Alarm8MessageQueryType.java  | 252 --------
 .../readwrite/AlarmMessageAckObjectPushType.java   | 253 --------
 .../java/s7/readwrite/AlarmMessageAckPushType.java | 192 ------
 .../s7/readwrite/AlarmMessageAckResponseType.java  | 164 -----
 .../java/s7/readwrite/AlarmMessageAckType.java     | 170 ------
 .../s7/readwrite/AlarmMessageObjectAckType.java    | 246 --------
 .../s7/readwrite/AlarmMessageObjectPushType.java   | 329 ----------
 .../s7/readwrite/AlarmMessageObjectQueryType.java  | 310 ----------
 .../java/s7/readwrite/AlarmMessagePushType.java    | 192 ------
 .../java/s7/readwrite/AlarmMessageQueryType.java   | 252 --------
 .../plc4x/java/s7/readwrite/AlarmStateType.java    |  59 --
 .../apache/plc4x/java/s7/readwrite/AlarmType.java  |  56 --
 .../s7/readwrite/AssociatedQueryValueType.java     | 204 -------
 .../java/s7/readwrite/AssociatedValueType.java     | 220 -------
 .../apache/plc4x/java/s7/readwrite/COTPPacket.java | 238 --------
 .../s7/readwrite/COTPPacketConnectionRequest.java  | 200 ------
 .../s7/readwrite/COTPPacketConnectionResponse.java | 200 ------
 .../plc4x/java/s7/readwrite/COTPPacketData.java    | 159 -----
 .../s7/readwrite/COTPPacketDisconnectRequest.java  | 200 ------
 .../s7/readwrite/COTPPacketDisconnectResponse.java | 167 -----
 .../java/s7/readwrite/COTPPacketTpduError.java     | 165 -----
 .../plc4x/java/s7/readwrite/COTPParameter.java     | 182 ------
 .../java/s7/readwrite/COTPParameterCalledTsap.java | 141 -----
 .../s7/readwrite/COTPParameterCallingTsap.java     | 141 -----
 .../java/s7/readwrite/COTPParameterChecksum.java   | 141 -----
 ...TPParameterDisconnectAdditionalInformation.java | 145 -----
 .../java/s7/readwrite/COTPParameterTpduSize.java   | 151 -----
 .../plc4x/java/s7/readwrite/COTPProtocolClass.java |  58 --
 .../plc4x/java/s7/readwrite/COTPTpduSize.java      |  87 ---
 .../java/s7/readwrite/CpuSubscribeEvents.java      |  57 --
 .../java/s7/readwrite/CycServiceItemAnyType.java   | 244 --------
 .../s7/readwrite/CycServiceItemDbReadType.java     | 169 -----
 .../java/s7/readwrite/CycServiceItemType.java      | 189 ------
 .../apache/plc4x/java/s7/readwrite/DataItem.java   | 531 ----------------
 .../java/s7/readwrite/DataTransportErrorCode.java  |  59 --
 .../plc4x/java/s7/readwrite/DataTransportSize.java |  87 ---
 .../plc4x/java/s7/readwrite/DateAndTime.java       | 313 ----------
 .../plc4x/java/s7/readwrite/DeviceGroup.java       |  56 --
 .../apache/plc4x/java/s7/readwrite/EventType.java  |  58 --
 .../apache/plc4x/java/s7/readwrite/MemoryArea.java |  89 ---
 .../java/s7/readwrite/ModeTransitionType.java      |  62 --
 .../apache/plc4x/java/s7/readwrite/QueryType.java  |  57 --
 .../apache/plc4x/java/s7/readwrite/S7Address.java  | 146 -----
 .../plc4x/java/s7/readwrite/S7AddressAny.java      | 276 ---------
 .../java/s7/readwrite/S7DataAlarmMessage.java      | 192 ------
 .../apache/plc4x/java/s7/readwrite/S7Message.java  | 262 --------
 .../java/s7/readwrite/S7MessageObjectRequest.java  | 256 --------
 .../java/s7/readwrite/S7MessageObjectResponse.java | 196 ------
 .../plc4x/java/s7/readwrite/S7MessageRequest.java  | 120 ----
 .../plc4x/java/s7/readwrite/S7MessageResponse.java | 164 -----
 .../java/s7/readwrite/S7MessageResponseData.java   | 165 -----
 .../plc4x/java/s7/readwrite/S7MessageUserData.java | 121 ----
 .../plc4x/java/s7/readwrite/S7Parameter.java       | 187 ------
 .../s7/readwrite/S7ParameterModeTransition.java    | 252 --------
 .../s7/readwrite/S7ParameterReadVarRequest.java    | 165 -----
 .../s7/readwrite/S7ParameterReadVarResponse.java   | 145 -----
 .../readwrite/S7ParameterSetupCommunication.java   | 191 ------
 .../java/s7/readwrite/S7ParameterUserData.java     | 164 -----
 .../java/s7/readwrite/S7ParameterUserDataItem.java | 148 -----
 .../S7ParameterUserDataItemCPUFunctions.java       | 337 ----------
 .../s7/readwrite/S7ParameterWriteVarRequest.java   | 165 -----
 .../s7/readwrite/S7ParameterWriteVarResponse.java  | 145 -----
 .../apache/plc4x/java/s7/readwrite/S7Payload.java  | 179 ------
 .../plc4x/java/s7/readwrite/S7PayloadAlarm8.java   | 160 -----
 .../java/s7/readwrite/S7PayloadAlarmAckInd.java    | 160 -----
 .../plc4x/java/s7/readwrite/S7PayloadAlarmS.java   | 160 -----
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSC.java  | 160 -----
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSQ.java  | 160 -----
 .../s7/readwrite/S7PayloadDiagnosticMessage.java   | 295 ---------
 .../plc4x/java/s7/readwrite/S7PayloadNotify.java   | 160 -----
 .../plc4x/java/s7/readwrite/S7PayloadNotify8.java  | 160 -----
 .../s7/readwrite/S7PayloadReadVarResponse.java     | 154 -----
 .../plc4x/java/s7/readwrite/S7PayloadUserData.java | 172 ------
 .../java/s7/readwrite/S7PayloadUserDataItem.java   | 483 ---------------
 .../S7PayloadUserDataItemClkFRequest.java          | 134 ----
 .../S7PayloadUserDataItemClkFResponse.java         | 203 ------
 .../readwrite/S7PayloadUserDataItemClkRequest.java | 134 ----
 .../S7PayloadUserDataItemClkResponse.java          | 203 ------
 .../S7PayloadUserDataItemClkSetRequest.java        | 177 ------
 .../S7PayloadUserDataItemClkSetResponse.java       | 134 ----
 ...erDataItemCpuFunctionAlarmAckErrorResponse.java | 138 -----
 ...loadUserDataItemCpuFunctionAlarmAckRequest.java | 201 ------
 ...oadUserDataItemCpuFunctionAlarmAckResponse.java | 195 ------
 ...S7PayloadUserDataItemCpuFunctionAlarmQuery.java | 317 ----------
 ...adUserDataItemCpuFunctionAlarmQueryRequest.java | 316 ----------
 ...dUserDataItemCpuFunctionAlarmQueryResponse.java | 166 -----
 ...loadUserDataItemCpuFunctionMsgSubscription.java | 252 --------
 ...temCpuFunctionMsgSubscriptionAlarmResponse.java | 258 --------
 ...rDataItemCpuFunctionMsgSubscriptionRequest.java | 250 --------
 ...DataItemCpuFunctionMsgSubscriptionResponse.java | 138 -----
 ...aItemCpuFunctionMsgSubscriptionSysResponse.java | 182 ------
 ...serDataItemCpuFunctionReadSzlNoDataRequest.java | 138 -----
 ...yloadUserDataItemCpuFunctionReadSzlRequest.java | 183 ------
 ...loadUserDataItemCpuFunctionReadSzlResponse.java | 166 -----
 ...UserDataItemCyclicServicesChangeDrivenPush.java | 192 ------
 ...yclicServicesChangeDrivenSubscribeResponse.java | 193 ------
 ...oadUserDataItemCyclicServicesErrorResponse.java | 138 -----
 .../S7PayloadUserDataItemCyclicServicesPush.java   | 190 ------
 ...UserDataItemCyclicServicesSubscribeRequest.java | 239 --------
 ...serDataItemCyclicServicesSubscribeResponse.java | 192 ------
 ...erDataItemCyclicServicesUnsubscribeRequest.java | 181 ------
 ...rDataItemCyclicServicesUnsubscribeResponse.java | 138 -----
 .../s7/readwrite/S7PayloadWriteVarRequest.java     | 154 -----
 .../s7/readwrite/S7PayloadWriteVarResponse.java    | 154 -----
 .../java/s7/readwrite/S7VarPayloadDataItem.java    | 220 -------
 .../java/s7/readwrite/S7VarPayloadStatusItem.java  | 139 -----
 .../s7/readwrite/S7VarRequestParameterItem.java    | 148 -----
 .../S7VarRequestParameterItemAddress.java          | 155 -----
 .../org/apache/plc4x/java/s7/readwrite/State.java  | 248 --------
 .../apache/plc4x/java/s7/readwrite/SubItem.java    | 157 -----
 .../plc4x/java/s7/readwrite/SyntaxIdType.java      |  66 --
 .../plc4x/java/s7/readwrite/SzlDataTreeItem.java   | 190 ------
 .../org/apache/plc4x/java/s7/readwrite/SzlId.java  | 179 ------
 .../java/s7/readwrite/SzlModuleTypeClass.java      |  57 --
 .../apache/plc4x/java/s7/readwrite/SzlSublist.java |  79 ---
 .../apache/plc4x/java/s7/readwrite/TPKTPacket.java | 193 ------
 .../apache/plc4x/java/s7/readwrite/TimeBase.java   |  56 --
 .../plc4x/java/s7/readwrite/TransportSize.java     | 680 ---------------------
 .../examples/plc4j/s7event/PlcReadDataS7400H.java  |   1 +
 .../org/apache/plc4x/java/spi/values/PlcTIME.java  |  10 +-
 121 files changed, 9 insertions(+), 21674 deletions(-)

diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index 6ff47e7645..4cf409d013 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -36,11 +36,11 @@
   </properties>
 
   <build>
-    <plugins>
+    <plugins>    
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
-        <executions>
+        <executions>         
           <execution>
             <id>generate-feature-xml</id>
             <phase>compile</phase>
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java
deleted file mode 100644
index 31e7dab092..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/Alarm8MessageQueryType.java
+++ /dev/null
@@ -1,252 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class Alarm8MessageQueryType implements Message {
-
-  // Properties.
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final DataTransportErrorCode returnCode;
-  protected final DataTransportSize transportSize;
-  protected final int byteCount;
-  protected final List<AlarmMessageObjectQueryType> messageObjects;
-
-  public Alarm8MessageQueryType(
-      short functionId,
-      short numberOfObjects,
-      DataTransportErrorCode returnCode,
-      DataTransportSize transportSize,
-      int byteCount,
-      List<AlarmMessageObjectQueryType> messageObjects) {
-    super();
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.returnCode = returnCode;
-    this.transportSize = transportSize;
-    this.byteCount = byteCount;
-    this.messageObjects = messageObjects;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public DataTransportErrorCode getReturnCode() {
-    return returnCode;
-  }
-
-  public DataTransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public int getByteCount() {
-    return byteCount;
-  }
-
-  public List<AlarmMessageObjectQueryType> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("Alarm8MessageQueryType");
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (returnCode)
-    writeSimpleEnumField(
-        "returnCode",
-        "DataTransportErrorCode",
-        returnCode,
-        new DataWriterEnumDefault<>(
-            DataTransportErrorCode::getValue,
-            DataTransportErrorCode::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (transportSize)
-    writeSimpleEnumField(
-        "transportSize",
-        "DataTransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            DataTransportSize::getValue,
-            DataTransportSize::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (byteCount)
-    writeSimpleField("byteCount", byteCount, writeUnsignedInt(writeBuffer, 16));
-
-    // Array Field (messageObjects)
-    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
-
-    writeBuffer.popContext("Alarm8MessageQueryType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    Alarm8MessageQueryType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Simple field (returnCode)
-    lengthInBits += 8;
-
-    // Simple field (transportSize)
-    lengthInBits += 8;
-
-    // Simple field (byteCount)
-    lengthInBits += 16;
-
-    // Array field
-    if (messageObjects != null) {
-      int i = 0;
-      for (AlarmMessageObjectQueryType element : messageObjects) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static Alarm8MessageQueryType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static Alarm8MessageQueryType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("Alarm8MessageQueryType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    DataTransportErrorCode returnCode =
-        readEnumField(
-            "returnCode",
-            "DataTransportErrorCode",
-            new DataReaderEnumDefault<>(
-                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    DataTransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "DataTransportSize",
-            new DataReaderEnumDefault<>(
-                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    int byteCount = readSimpleField("byteCount", readUnsignedInt(readBuffer, 16));
-
-    List<AlarmMessageObjectQueryType> messageObjects =
-        readCountArrayField(
-            "messageObjects",
-            new DataReaderComplexDefault<>(
-                () -> AlarmMessageObjectQueryType.staticParse(readBuffer), readBuffer),
-            (byteCount) / (12));
-
-    readBuffer.closeContext("Alarm8MessageQueryType");
-    // Create the instance
-    Alarm8MessageQueryType _alarm8MessageQueryType;
-    _alarm8MessageQueryType =
-        new Alarm8MessageQueryType(
-            functionId, numberOfObjects, returnCode, transportSize, byteCount, messageObjects);
-    return _alarm8MessageQueryType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof Alarm8MessageQueryType)) {
-      return false;
-    }
-    Alarm8MessageQueryType that = (Alarm8MessageQueryType) o;
-    return (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getReturnCode() == that.getReturnCode())
-        && (getTransportSize() == that.getTransportSize())
-        && (getByteCount() == that.getByteCount())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getFunctionId(),
-        getNumberOfObjects(),
-        getReturnCode(),
-        getTransportSize(),
-        getByteCount(),
-        getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java
deleted file mode 100644
index 342589eba6..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckObjectPushType.java
+++ /dev/null
@@ -1,253 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageAckObjectPushType implements Message {
-
-  // Constant values.
-  public static final Short VARIABLESPEC = 0x12;
-
-  // Properties.
-  protected final short lengthSpec;
-  protected final SyntaxIdType syntaxId;
-  protected final short numberOfValues;
-  protected final long eventId;
-  protected final State ackStateGoing;
-  protected final State ackStateComing;
-
-  public AlarmMessageAckObjectPushType(
-      short lengthSpec,
-      SyntaxIdType syntaxId,
-      short numberOfValues,
-      long eventId,
-      State ackStateGoing,
-      State ackStateComing) {
-    super();
-    this.lengthSpec = lengthSpec;
-    this.syntaxId = syntaxId;
-    this.numberOfValues = numberOfValues;
-    this.eventId = eventId;
-    this.ackStateGoing = ackStateGoing;
-    this.ackStateComing = ackStateComing;
-  }
-
-  public short getLengthSpec() {
-    return lengthSpec;
-  }
-
-  public SyntaxIdType getSyntaxId() {
-    return syntaxId;
-  }
-
-  public short getNumberOfValues() {
-    return numberOfValues;
-  }
-
-  public long getEventId() {
-    return eventId;
-  }
-
-  public State getAckStateGoing() {
-    return ackStateGoing;
-  }
-
-  public State getAckStateComing() {
-    return ackStateComing;
-  }
-
-  public short getVariableSpec() {
-    return VARIABLESPEC;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageAckObjectPushType");
-
-    // Const Field (variableSpec)
-    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (lengthSpec)
-    writeSimpleField("lengthSpec", lengthSpec, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (syntaxId)
-    writeSimpleEnumField(
-        "syntaxId",
-        "SyntaxIdType",
-        syntaxId,
-        new DataWriterEnumDefault<>(
-            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (numberOfValues)
-    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (eventId)
-    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
-
-    // Simple Field (ackStateGoing)
-    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateComing)
-    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    writeBuffer.popContext("AlarmMessageAckObjectPushType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageAckObjectPushType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (variableSpec)
-    lengthInBits += 8;
-
-    // Simple field (lengthSpec)
-    lengthInBits += 8;
-
-    // Simple field (syntaxId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfValues)
-    lengthInBits += 8;
-
-    // Simple field (eventId)
-    lengthInBits += 32;
-
-    // Simple field (ackStateGoing)
-    lengthInBits += ackStateGoing.getLengthInBits();
-
-    // Simple field (ackStateComing)
-    lengthInBits += ackStateComing.getLengthInBits();
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageAckObjectPushType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageAckObjectPushType staticParse(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("AlarmMessageAckObjectPushType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short variableSpec =
-        readConstField(
-            "variableSpec",
-            readUnsignedShort(readBuffer, 8),
-            AlarmMessageAckObjectPushType.VARIABLESPEC);
-
-    short lengthSpec = readSimpleField("lengthSpec", readUnsignedShort(readBuffer, 8));
-
-    SyntaxIdType syntaxId =
-        readEnumField(
-            "syntaxId",
-            "SyntaxIdType",
-            new DataReaderEnumDefault<>(
-                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
-
-    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
-
-    State ackStateGoing =
-        readSimpleField(
-            "ackStateGoing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateComing =
-        readSimpleField(
-            "ackStateComing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    readBuffer.closeContext("AlarmMessageAckObjectPushType");
-    // Create the instance
-    AlarmMessageAckObjectPushType _alarmMessageAckObjectPushType;
-    _alarmMessageAckObjectPushType =
-        new AlarmMessageAckObjectPushType(
-            lengthSpec, syntaxId, numberOfValues, eventId, ackStateGoing, ackStateComing);
-    return _alarmMessageAckObjectPushType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageAckObjectPushType)) {
-      return false;
-    }
-    AlarmMessageAckObjectPushType that = (AlarmMessageAckObjectPushType) o;
-    return (getLengthSpec() == that.getLengthSpec())
-        && (getSyntaxId() == that.getSyntaxId())
-        && (getNumberOfValues() == that.getNumberOfValues())
-        && (getEventId() == that.getEventId())
-        && (getAckStateGoing() == that.getAckStateGoing())
-        && (getAckStateComing() == that.getAckStateComing())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getLengthSpec(),
-        getSyntaxId(),
-        getNumberOfValues(),
-        getEventId(),
-        getAckStateGoing(),
-        getAckStateComing());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java
deleted file mode 100644
index 48491b961a..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckPushType.java
+++ /dev/null
@@ -1,192 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageAckPushType implements Message {
-
-  // Properties.
-  protected final DateAndTime TimeStamp;
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final List<AlarmMessageAckObjectPushType> messageObjects;
-
-  public AlarmMessageAckPushType(
-      DateAndTime TimeStamp,
-      short functionId,
-      short numberOfObjects,
-      List<AlarmMessageAckObjectPushType> messageObjects) {
-    super();
-    this.TimeStamp = TimeStamp;
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.messageObjects = messageObjects;
-  }
-
-  public DateAndTime getTimeStamp() {
-    return TimeStamp;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public List<AlarmMessageAckObjectPushType> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageAckPushType");
-
-    // Simple Field (TimeStamp)
-    writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Array Field (messageObjects)
-    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
-
-    writeBuffer.popContext("AlarmMessageAckPushType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageAckPushType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (TimeStamp)
-    lengthInBits += TimeStamp.getLengthInBits();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Array field
-    if (messageObjects != null) {
-      int i = 0;
-      for (AlarmMessageAckObjectPushType element : messageObjects) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageAckPushType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageAckPushType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AlarmMessageAckPushType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    DateAndTime TimeStamp =
-        readSimpleField(
-            "TimeStamp",
-            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    List<AlarmMessageAckObjectPushType> messageObjects =
-        readCountArrayField(
-            "messageObjects",
-            new DataReaderComplexDefault<>(
-                () -> AlarmMessageAckObjectPushType.staticParse(readBuffer), readBuffer),
-            numberOfObjects);
-
-    readBuffer.closeContext("AlarmMessageAckPushType");
-    // Create the instance
-    AlarmMessageAckPushType _alarmMessageAckPushType;
-    _alarmMessageAckPushType =
-        new AlarmMessageAckPushType(TimeStamp, functionId, numberOfObjects, messageObjects);
-    return _alarmMessageAckPushType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageAckPushType)) {
-      return false;
-    }
-    AlarmMessageAckPushType that = (AlarmMessageAckPushType) o;
-    return (getTimeStamp() == that.getTimeStamp())
-        && (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getTimeStamp(), getFunctionId(), getNumberOfObjects(), getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java
deleted file mode 100644
index e588b6ca41..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckResponseType.java
+++ /dev/null
@@ -1,164 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageAckResponseType implements Message {
-
-  // Properties.
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final List<Short> messageObjects;
-
-  public AlarmMessageAckResponseType(
-      short functionId, short numberOfObjects, List<Short> messageObjects) {
-    super();
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.messageObjects = messageObjects;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public List<Short> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageAckResponseType");
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Array Field (messageObjects)
-    writeSimpleTypeArrayField("messageObjects", messageObjects, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("AlarmMessageAckResponseType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageAckResponseType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Array field
-    if (messageObjects != null) {
-      lengthInBits += 8 * messageObjects.size();
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageAckResponseType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageAckResponseType staticParse(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("AlarmMessageAckResponseType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    List<Short> messageObjects =
-        readCountArrayField("messageObjects", readUnsignedShort(readBuffer, 8), numberOfObjects);
-
-    readBuffer.closeContext("AlarmMessageAckResponseType");
-    // Create the instance
-    AlarmMessageAckResponseType _alarmMessageAckResponseType;
-    _alarmMessageAckResponseType =
-        new AlarmMessageAckResponseType(functionId, numberOfObjects, messageObjects);
-    return _alarmMessageAckResponseType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageAckResponseType)) {
-      return false;
-    }
-    AlarmMessageAckResponseType that = (AlarmMessageAckResponseType) o;
-    return (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getFunctionId(), getNumberOfObjects(), getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java
deleted file mode 100644
index bea2571d06..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageAckType.java
+++ /dev/null
@@ -1,170 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageAckType implements Message {
-
-  // Properties.
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final List<AlarmMessageObjectAckType> messageObjects;
-
-  public AlarmMessageAckType(
-      short functionId, short numberOfObjects, List<AlarmMessageObjectAckType> messageObjects) {
-    super();
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.messageObjects = messageObjects;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public List<AlarmMessageObjectAckType> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageAckType");
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Array Field (messageObjects)
-    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
-
-    writeBuffer.popContext("AlarmMessageAckType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageAckType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Array field
-    if (messageObjects != null) {
-      int i = 0;
-      for (AlarmMessageObjectAckType element : messageObjects) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageAckType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageAckType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AlarmMessageAckType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    List<AlarmMessageObjectAckType> messageObjects =
-        readCountArrayField(
-            "messageObjects",
-            new DataReaderComplexDefault<>(
-                () -> AlarmMessageObjectAckType.staticParse(readBuffer), readBuffer),
-            numberOfObjects);
-
-    readBuffer.closeContext("AlarmMessageAckType");
-    // Create the instance
-    AlarmMessageAckType _alarmMessageAckType;
-    _alarmMessageAckType = new AlarmMessageAckType(functionId, numberOfObjects, messageObjects);
-    return _alarmMessageAckType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageAckType)) {
-      return false;
-    }
-    AlarmMessageAckType that = (AlarmMessageAckType) o;
-    return (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getFunctionId(), getNumberOfObjects(), getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java
deleted file mode 100644
index fc3ff16398..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectAckType.java
+++ /dev/null
@@ -1,246 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageObjectAckType implements Message {
-
-  // Constant values.
-  public static final Short VARIABLESPEC = 0x12;
-  public static final Short LENGTH = 0x08;
-
-  // Properties.
-  protected final SyntaxIdType syntaxId;
-  protected final short numberOfValues;
-  protected final long eventId;
-  protected final State ackStateGoing;
-  protected final State ackStateComing;
-
-  public AlarmMessageObjectAckType(
-      SyntaxIdType syntaxId,
-      short numberOfValues,
-      long eventId,
-      State ackStateGoing,
-      State ackStateComing) {
-    super();
-    this.syntaxId = syntaxId;
-    this.numberOfValues = numberOfValues;
-    this.eventId = eventId;
-    this.ackStateGoing = ackStateGoing;
-    this.ackStateComing = ackStateComing;
-  }
-
-  public SyntaxIdType getSyntaxId() {
-    return syntaxId;
-  }
-
-  public short getNumberOfValues() {
-    return numberOfValues;
-  }
-
-  public long getEventId() {
-    return eventId;
-  }
-
-  public State getAckStateGoing() {
-    return ackStateGoing;
-  }
-
-  public State getAckStateComing() {
-    return ackStateComing;
-  }
-
-  public short getVariableSpec() {
-    return VARIABLESPEC;
-  }
-
-  public short getLength() {
-    return LENGTH;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageObjectAckType");
-
-    // Const Field (variableSpec)
-    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
-
-    // Const Field (length)
-    writeConstField("length", LENGTH, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (syntaxId)
-    writeSimpleEnumField(
-        "syntaxId",
-        "SyntaxIdType",
-        syntaxId,
-        new DataWriterEnumDefault<>(
-            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (numberOfValues)
-    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (eventId)
-    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
-
-    // Simple Field (ackStateGoing)
-    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateComing)
-    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    writeBuffer.popContext("AlarmMessageObjectAckType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageObjectAckType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (variableSpec)
-    lengthInBits += 8;
-
-    // Const Field (length)
-    lengthInBits += 8;
-
-    // Simple field (syntaxId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfValues)
-    lengthInBits += 8;
-
-    // Simple field (eventId)
-    lengthInBits += 32;
-
-    // Simple field (ackStateGoing)
-    lengthInBits += ackStateGoing.getLengthInBits();
-
-    // Simple field (ackStateComing)
-    lengthInBits += ackStateComing.getLengthInBits();
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageObjectAckType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageObjectAckType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AlarmMessageObjectAckType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short variableSpec =
-        readConstField(
-            "variableSpec",
-            readUnsignedShort(readBuffer, 8),
-            AlarmMessageObjectAckType.VARIABLESPEC);
-
-    short length =
-        readConstField(
-            "length", readUnsignedShort(readBuffer, 8), AlarmMessageObjectAckType.LENGTH);
-
-    SyntaxIdType syntaxId =
-        readEnumField(
-            "syntaxId",
-            "SyntaxIdType",
-            new DataReaderEnumDefault<>(
-                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
-
-    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
-
-    State ackStateGoing =
-        readSimpleField(
-            "ackStateGoing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateComing =
-        readSimpleField(
-            "ackStateComing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    readBuffer.closeContext("AlarmMessageObjectAckType");
-    // Create the instance
-    AlarmMessageObjectAckType _alarmMessageObjectAckType;
-    _alarmMessageObjectAckType =
-        new AlarmMessageObjectAckType(
-            syntaxId, numberOfValues, eventId, ackStateGoing, ackStateComing);
-    return _alarmMessageObjectAckType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageObjectAckType)) {
-      return false;
-    }
-    AlarmMessageObjectAckType that = (AlarmMessageObjectAckType) o;
-    return (getSyntaxId() == that.getSyntaxId())
-        && (getNumberOfValues() == that.getNumberOfValues())
-        && (getEventId() == that.getEventId())
-        && (getAckStateGoing() == that.getAckStateGoing())
-        && (getAckStateComing() == that.getAckStateComing())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getSyntaxId(), getNumberOfValues(), getEventId(), getAckStateGoing(), getAckStateComing());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java
deleted file mode 100644
index 42777096da..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectPushType.java
+++ /dev/null
@@ -1,329 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageObjectPushType implements Message {
-
-  // Constant values.
-  public static final Short VARIABLESPEC = 0x12;
-
-  // Properties.
-  protected final short lengthSpec;
-  protected final SyntaxIdType syntaxId;
-  protected final short numberOfValues;
-  protected final long eventId;
-  protected final State eventState;
-  protected final State localState;
-  protected final State ackStateGoing;
-  protected final State ackStateComing;
-  protected final List<AssociatedValueType> AssociatedValues;
-
-  public AlarmMessageObjectPushType(
-      short lengthSpec,
-      SyntaxIdType syntaxId,
-      short numberOfValues,
-      long eventId,
-      State eventState,
-      State localState,
-      State ackStateGoing,
-      State ackStateComing,
-      List<AssociatedValueType> AssociatedValues) {
-    super();
-    this.lengthSpec = lengthSpec;
-    this.syntaxId = syntaxId;
-    this.numberOfValues = numberOfValues;
-    this.eventId = eventId;
-    this.eventState = eventState;
-    this.localState = localState;
-    this.ackStateGoing = ackStateGoing;
-    this.ackStateComing = ackStateComing;
-    this.AssociatedValues = AssociatedValues;
-  }
-
-  public short getLengthSpec() {
-    return lengthSpec;
-  }
-
-  public SyntaxIdType getSyntaxId() {
-    return syntaxId;
-  }
-
-  public short getNumberOfValues() {
-    return numberOfValues;
-  }
-
-  public long getEventId() {
-    return eventId;
-  }
-
-  public State getEventState() {
-    return eventState;
-  }
-
-  public State getLocalState() {
-    return localState;
-  }
-
-  public State getAckStateGoing() {
-    return ackStateGoing;
-  }
-
-  public State getAckStateComing() {
-    return ackStateComing;
-  }
-
-  public List<AssociatedValueType> getAssociatedValues() {
-    return AssociatedValues;
-  }
-
-  public short getVariableSpec() {
-    return VARIABLESPEC;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageObjectPushType");
-
-    // Const Field (variableSpec)
-    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (lengthSpec)
-    writeSimpleField("lengthSpec", lengthSpec, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (syntaxId)
-    writeSimpleEnumField(
-        "syntaxId",
-        "SyntaxIdType",
-        syntaxId,
-        new DataWriterEnumDefault<>(
-            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (numberOfValues)
-    writeSimpleField("numberOfValues", numberOfValues, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (eventId)
-    writeSimpleField("eventId", eventId, writeUnsignedLong(writeBuffer, 32));
-
-    // Simple Field (eventState)
-    writeSimpleField("eventState", eventState, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (localState)
-    writeSimpleField("localState", localState, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateGoing)
-    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateComing)
-    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Array Field (AssociatedValues)
-    writeComplexTypeArrayField("AssociatedValues", AssociatedValues, writeBuffer);
-
-    writeBuffer.popContext("AlarmMessageObjectPushType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageObjectPushType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (variableSpec)
-    lengthInBits += 8;
-
-    // Simple field (lengthSpec)
-    lengthInBits += 8;
-
-    // Simple field (syntaxId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfValues)
-    lengthInBits += 8;
-
-    // Simple field (eventId)
-    lengthInBits += 32;
-
-    // Simple field (eventState)
-    lengthInBits += eventState.getLengthInBits();
-
-    // Simple field (localState)
-    lengthInBits += localState.getLengthInBits();
-
-    // Simple field (ackStateGoing)
-    lengthInBits += ackStateGoing.getLengthInBits();
-
-    // Simple field (ackStateComing)
-    lengthInBits += ackStateComing.getLengthInBits();
-
-    // Array field
-    if (AssociatedValues != null) {
-      int i = 0;
-      for (AssociatedValueType element : AssociatedValues) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= AssociatedValues.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageObjectPushType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageObjectPushType staticParse(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("AlarmMessageObjectPushType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short variableSpec =
-        readConstField(
-            "variableSpec",
-            readUnsignedShort(readBuffer, 8),
-            AlarmMessageObjectPushType.VARIABLESPEC);
-
-    short lengthSpec = readSimpleField("lengthSpec", readUnsignedShort(readBuffer, 8));
-
-    SyntaxIdType syntaxId =
-        readEnumField(
-            "syntaxId",
-            "SyntaxIdType",
-            new DataReaderEnumDefault<>(
-                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    short numberOfValues = readSimpleField("numberOfValues", readUnsignedShort(readBuffer, 8));
-
-    long eventId = readSimpleField("eventId", readUnsignedLong(readBuffer, 32));
-
-    State eventState =
-        readSimpleField(
-            "eventState",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State localState =
-        readSimpleField(
-            "localState",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateGoing =
-        readSimpleField(
-            "ackStateGoing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateComing =
-        readSimpleField(
-            "ackStateComing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    List<AssociatedValueType> AssociatedValues =
-        readCountArrayField(
-            "AssociatedValues",
-            new DataReaderComplexDefault<>(
-                () -> AssociatedValueType.staticParse(readBuffer), readBuffer),
-            numberOfValues);
-
-    readBuffer.closeContext("AlarmMessageObjectPushType");
-    // Create the instance
-    AlarmMessageObjectPushType _alarmMessageObjectPushType;
-    _alarmMessageObjectPushType =
-        new AlarmMessageObjectPushType(
-            lengthSpec,
-            syntaxId,
-            numberOfValues,
-            eventId,
-            eventState,
-            localState,
-            ackStateGoing,
-            ackStateComing,
-            AssociatedValues);
-    return _alarmMessageObjectPushType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageObjectPushType)) {
-      return false;
-    }
-    AlarmMessageObjectPushType that = (AlarmMessageObjectPushType) o;
-    return (getLengthSpec() == that.getLengthSpec())
-        && (getSyntaxId() == that.getSyntaxId())
-        && (getNumberOfValues() == that.getNumberOfValues())
-        && (getEventId() == that.getEventId())
-        && (getEventState() == that.getEventState())
-        && (getLocalState() == that.getLocalState())
-        && (getAckStateGoing() == that.getAckStateGoing())
-        && (getAckStateComing() == that.getAckStateComing())
-        && (getAssociatedValues() == that.getAssociatedValues())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getLengthSpec(),
-        getSyntaxId(),
-        getNumberOfValues(),
-        getEventId(),
-        getEventState(),
-        getLocalState(),
-        getAckStateGoing(),
-        getAckStateComing(),
-        getAssociatedValues());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
deleted file mode 100644
index 7d931070da..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
+++ /dev/null
@@ -1,310 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageObjectQueryType implements Message {
-
-  // Constant values.
-  public static final Short VARIABLESPEC = 0x12;
-
-  // Properties.
-  protected final short lengthDataset;
-  protected final State eventState;
-  protected final State ackStateGoing;
-  protected final State ackStateComing;
-  protected final DateAndTime timeComing;
-  protected final AssociatedValueType valueComing;
-  protected final DateAndTime timeGoing;
-  protected final AssociatedValueType valueGoing;
-
-  public AlarmMessageObjectQueryType(
-      short lengthDataset,
-      State eventState,
-      State ackStateGoing,
-      State ackStateComing,
-      DateAndTime timeComing,
-      AssociatedValueType valueComing,
-      DateAndTime timeGoing,
-      AssociatedValueType valueGoing) {
-    super();
-    this.lengthDataset = lengthDataset;
-    this.eventState = eventState;
-    this.ackStateGoing = ackStateGoing;
-    this.ackStateComing = ackStateComing;
-    this.timeComing = timeComing;
-    this.valueComing = valueComing;
-    this.timeGoing = timeGoing;
-    this.valueGoing = valueGoing;
-  }
-
-  public short getLengthDataset() {
-    return lengthDataset;
-  }
-
-  public State getEventState() {
-    return eventState;
-  }
-
-  public State getAckStateGoing() {
-    return ackStateGoing;
-  }
-
-  public State getAckStateComing() {
-    return ackStateComing;
-  }
-
-  public DateAndTime getTimeComing() {
-    return timeComing;
-  }
-
-  public AssociatedValueType getValueComing() {
-    return valueComing;
-  }
-
-  public DateAndTime getTimeGoing() {
-    return timeGoing;
-  }
-
-  public AssociatedValueType getValueGoing() {
-    return valueGoing;
-  }
-
-  public short getVariableSpec() {
-    return VARIABLESPEC;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageObjectQueryType");
-
-    // Simple Field (lengthDataset)
-    writeSimpleField("lengthDataset", lengthDataset, writeUnsignedShort(writeBuffer, 8));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
-
-    // Const Field (variableSpec)
-    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (eventState)
-    writeSimpleField("eventState", eventState, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateGoing)
-    writeSimpleField("ackStateGoing", ackStateGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (ackStateComing)
-    writeSimpleField("ackStateComing", ackStateComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (timeComing)
-    writeSimpleField("timeComing", timeComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (valueComing)
-    writeSimpleField("valueComing", valueComing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (timeGoing)
-    writeSimpleField("timeGoing", timeGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (valueGoing)
-    writeSimpleField("valueGoing", valueGoing, new DataWriterComplexDefault<>(writeBuffer));
-
-    writeBuffer.popContext("AlarmMessageObjectQueryType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageObjectQueryType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (lengthDataset)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 16;
-
-    // Const Field (variableSpec)
-    lengthInBits += 8;
-
-    // Simple field (eventState)
-    lengthInBits += eventState.getLengthInBits();
-
-    // Simple field (ackStateGoing)
-    lengthInBits += ackStateGoing.getLengthInBits();
-
-    // Simple field (ackStateComing)
-    lengthInBits += ackStateComing.getLengthInBits();
-
-    // Simple field (timeComing)
-    lengthInBits += timeComing.getLengthInBits();
-
-    // Simple field (valueComing)
-    lengthInBits += valueComing.getLengthInBits();
-
-    // Simple field (timeGoing)
-    lengthInBits += timeGoing.getLengthInBits();
-
-    // Simple field (valueGoing)
-    lengthInBits += valueGoing.getLengthInBits();
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageObjectQueryType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageObjectQueryType staticParse(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("AlarmMessageObjectQueryType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short lengthDataset = readSimpleField("lengthDataset", readUnsignedShort(readBuffer, 8));
-
-    Integer reservedField0 =
-        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
-
-    short variableSpec =
-        readConstField(
-            "variableSpec",
-            readUnsignedShort(readBuffer, 8),
-            AlarmMessageObjectQueryType.VARIABLESPEC);
-
-    State eventState =
-        readSimpleField(
-            "eventState",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateGoing =
-        readSimpleField(
-            "ackStateGoing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    State ackStateComing =
-        readSimpleField(
-            "ackStateComing",
-            new DataReaderComplexDefault<>(() -> State.staticParse(readBuffer), readBuffer));
-
-    DateAndTime timeComing =
-        readSimpleField(
-            "timeComing",
-            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
-
-    AssociatedValueType valueComing =
-        readSimpleField(
-            "valueComing",
-            new DataReaderComplexDefault<>(
-                () -> AssociatedValueType.staticParse(readBuffer), readBuffer));
-
-    DateAndTime timeGoing =
-        readSimpleField(
-            "timeGoing",
-            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
-
-    AssociatedValueType valueGoing =
-        readSimpleField(
-            "valueGoing",
-            new DataReaderComplexDefault<>(
-                () -> AssociatedValueType.staticParse(readBuffer), readBuffer));
-
-    readBuffer.closeContext("AlarmMessageObjectQueryType");
-    // Create the instance
-    AlarmMessageObjectQueryType _alarmMessageObjectQueryType;
-    _alarmMessageObjectQueryType =
-        new AlarmMessageObjectQueryType(
-            lengthDataset,
-            eventState,
-            ackStateGoing,
-            ackStateComing,
-            timeComing,
-            valueComing,
-            timeGoing,
-            valueGoing);
-    return _alarmMessageObjectQueryType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageObjectQueryType)) {
-      return false;
-    }
-    AlarmMessageObjectQueryType that = (AlarmMessageObjectQueryType) o;
-    return (getLengthDataset() == that.getLengthDataset())
-        && (getEventState() == that.getEventState())
-        && (getAckStateGoing() == that.getAckStateGoing())
-        && (getAckStateComing() == that.getAckStateComing())
-        && (getTimeComing() == that.getTimeComing())
-        && (getValueComing() == that.getValueComing())
-        && (getTimeGoing() == that.getTimeGoing())
-        && (getValueGoing() == that.getValueGoing())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getLengthDataset(),
-        getEventState(),
-        getAckStateGoing(),
-        getAckStateComing(),
-        getTimeComing(),
-        getValueComing(),
-        getTimeGoing(),
-        getValueGoing());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java
deleted file mode 100644
index a6b578a1e9..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessagePushType.java
+++ /dev/null
@@ -1,192 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessagePushType implements Message {
-
-  // Properties.
-  protected final DateAndTime TimeStamp;
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final List<AlarmMessageObjectPushType> messageObjects;
-
-  public AlarmMessagePushType(
-      DateAndTime TimeStamp,
-      short functionId,
-      short numberOfObjects,
-      List<AlarmMessageObjectPushType> messageObjects) {
-    super();
-    this.TimeStamp = TimeStamp;
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.messageObjects = messageObjects;
-  }
-
-  public DateAndTime getTimeStamp() {
-    return TimeStamp;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public List<AlarmMessageObjectPushType> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessagePushType");
-
-    // Simple Field (TimeStamp)
-    writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Array Field (messageObjects)
-    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
-
-    writeBuffer.popContext("AlarmMessagePushType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessagePushType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (TimeStamp)
-    lengthInBits += TimeStamp.getLengthInBits();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Array field
-    if (messageObjects != null) {
-      int i = 0;
-      for (AlarmMessageObjectPushType element : messageObjects) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessagePushType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessagePushType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AlarmMessagePushType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    DateAndTime TimeStamp =
-        readSimpleField(
-            "TimeStamp",
-            new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    List<AlarmMessageObjectPushType> messageObjects =
-        readCountArrayField(
-            "messageObjects",
-            new DataReaderComplexDefault<>(
-                () -> AlarmMessageObjectPushType.staticParse(readBuffer), readBuffer),
-            numberOfObjects);
-
-    readBuffer.closeContext("AlarmMessagePushType");
-    // Create the instance
-    AlarmMessagePushType _alarmMessagePushType;
-    _alarmMessagePushType =
-        new AlarmMessagePushType(TimeStamp, functionId, numberOfObjects, messageObjects);
-    return _alarmMessagePushType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessagePushType)) {
-      return false;
-    }
-    AlarmMessagePushType that = (AlarmMessagePushType) o;
-    return (getTimeStamp() == that.getTimeStamp())
-        && (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getTimeStamp(), getFunctionId(), getNumberOfObjects(), getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java
deleted file mode 100644
index 53eddc50a4..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageQueryType.java
+++ /dev/null
@@ -1,252 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AlarmMessageQueryType implements Message {
-
-  // Constant values.
-  public static final Integer DATALENGTH = 0xFFFF;
-
-  // Properties.
-  protected final short functionId;
-  protected final short numberOfObjects;
-  protected final DataTransportErrorCode returnCode;
-  protected final DataTransportSize transportSize;
-  protected final List<AlarmMessageObjectQueryType> messageObjects;
-
-  public AlarmMessageQueryType(
-      short functionId,
-      short numberOfObjects,
-      DataTransportErrorCode returnCode,
-      DataTransportSize transportSize,
-      List<AlarmMessageObjectQueryType> messageObjects) {
-    super();
-    this.functionId = functionId;
-    this.numberOfObjects = numberOfObjects;
-    this.returnCode = returnCode;
-    this.transportSize = transportSize;
-    this.messageObjects = messageObjects;
-  }
-
-  public short getFunctionId() {
-    return functionId;
-  }
-
-  public short getNumberOfObjects() {
-    return numberOfObjects;
-  }
-
-  public DataTransportErrorCode getReturnCode() {
-    return returnCode;
-  }
-
-  public DataTransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public List<AlarmMessageObjectQueryType> getMessageObjects() {
-    return messageObjects;
-  }
-
-  public int getDataLength() {
-    return DATALENGTH;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AlarmMessageQueryType");
-
-    // Simple Field (functionId)
-    writeSimpleField("functionId", functionId, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (numberOfObjects)
-    writeSimpleField("numberOfObjects", numberOfObjects, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (returnCode)
-    writeSimpleEnumField(
-        "returnCode",
-        "DataTransportErrorCode",
-        returnCode,
-        new DataWriterEnumDefault<>(
-            DataTransportErrorCode::getValue,
-            DataTransportErrorCode::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (transportSize)
-    writeSimpleEnumField(
-        "transportSize",
-        "DataTransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            DataTransportSize::getValue,
-            DataTransportSize::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Const Field (DataLength)
-    writeConstField("DataLength", DATALENGTH, writeUnsignedInt(writeBuffer, 16));
-
-    // Array Field (messageObjects)
-    writeComplexTypeArrayField("messageObjects", messageObjects, writeBuffer);
-
-    writeBuffer.popContext("AlarmMessageQueryType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AlarmMessageQueryType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (numberOfObjects)
-    lengthInBits += 8;
-
-    // Simple field (returnCode)
-    lengthInBits += 8;
-
-    // Simple field (transportSize)
-    lengthInBits += 8;
-
-    // Const Field (DataLength)
-    lengthInBits += 16;
-
-    // Array field
-    if (messageObjects != null) {
-      int i = 0;
-      for (AlarmMessageObjectQueryType element : messageObjects) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= messageObjects.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static AlarmMessageQueryType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AlarmMessageQueryType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AlarmMessageQueryType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId = readSimpleField("functionId", readUnsignedShort(readBuffer, 8));
-
-    short numberOfObjects = readSimpleField("numberOfObjects", readUnsignedShort(readBuffer, 8));
-
-    DataTransportErrorCode returnCode =
-        readEnumField(
-            "returnCode",
-            "DataTransportErrorCode",
-            new DataReaderEnumDefault<>(
-                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    DataTransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "DataTransportSize",
-            new DataReaderEnumDefault<>(
-                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    int DataLength =
-        readConstField(
-            "DataLength", readUnsignedInt(readBuffer, 16), AlarmMessageQueryType.DATALENGTH);
-
-    List<AlarmMessageObjectQueryType> messageObjects =
-        readCountArrayField(
-            "messageObjects",
-            new DataReaderComplexDefault<>(
-                () -> AlarmMessageObjectQueryType.staticParse(readBuffer), readBuffer),
-            numberOfObjects);
-
-    readBuffer.closeContext("AlarmMessageQueryType");
-    // Create the instance
-    AlarmMessageQueryType _alarmMessageQueryType;
-    _alarmMessageQueryType =
-        new AlarmMessageQueryType(
-            functionId, numberOfObjects, returnCode, transportSize, messageObjects);
-    return _alarmMessageQueryType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AlarmMessageQueryType)) {
-      return false;
-    }
-    AlarmMessageQueryType that = (AlarmMessageQueryType) o;
-    return (getFunctionId() == that.getFunctionId())
-        && (getNumberOfObjects() == that.getNumberOfObjects())
-        && (getReturnCode() == that.getReturnCode())
-        && (getTransportSize() == that.getTransportSize())
-        && (getMessageObjects() == that.getMessageObjects())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getFunctionId(),
-        getNumberOfObjects(),
-        getReturnCode(),
-        getTransportSize(),
-        getMessageObjects());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java
deleted file mode 100644
index 5a03889295..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmStateType.java
+++ /dev/null
@@ -1,59 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum AlarmStateType {
-  SCAN_ABORT((short) 0x00),
-  SCAN_INITIATE((short) 0x01),
-  ALARM_ABORT((short) 0x04),
-  ALARM_INITIATE((short) 0x05),
-  ALARM_S_ABORT((short) 0x08),
-  ALARM_S_INITIATE((short) 0x09);
-  private static final Map<Short, AlarmStateType> map;
-
-  static {
-    map = new HashMap<>();
-    for (AlarmStateType value : AlarmStateType.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  AlarmStateType(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static AlarmStateType enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java
deleted file mode 100644
index 3693907d2a..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmType.java
+++ /dev/null
@@ -1,56 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum AlarmType {
-  SCAN((short) 0x01),
-  ALARM_8((short) 0x02),
-  ALARM_S((short) 0x04);
-  private static final Map<Short, AlarmType> map;
-
-  static {
-    map = new HashMap<>();
-    for (AlarmType value : AlarmType.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  AlarmType(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static AlarmType enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java
deleted file mode 100644
index 9f7a355161..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedQueryValueType.java
+++ /dev/null
@@ -1,204 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AssociatedQueryValueType implements Message {
-
-  // Properties.
-  protected final DataTransportErrorCode returnCode;
-  protected final DataTransportSize transportSize;
-  protected final int valueLength;
-  protected final List<Short> data;
-
-  public AssociatedQueryValueType(
-      DataTransportErrorCode returnCode,
-      DataTransportSize transportSize,
-      int valueLength,
-      List<Short> data) {
-    super();
-    this.returnCode = returnCode;
-    this.transportSize = transportSize;
-    this.valueLength = valueLength;
-    this.data = data;
-  }
-
-  public DataTransportErrorCode getReturnCode() {
-    return returnCode;
-  }
-
-  public DataTransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public int getValueLength() {
-    return valueLength;
-  }
-
-  public List<Short> getData() {
-    return data;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AssociatedQueryValueType");
-
-    // Simple Field (returnCode)
-    writeSimpleEnumField(
-        "returnCode",
-        "DataTransportErrorCode",
-        returnCode,
-        new DataWriterEnumDefault<>(
-            DataTransportErrorCode::getValue,
-            DataTransportErrorCode::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (transportSize)
-    writeSimpleEnumField(
-        "transportSize",
-        "DataTransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            DataTransportSize::getValue,
-            DataTransportSize::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (valueLength)
-    writeSimpleField("valueLength", valueLength, writeUnsignedInt(writeBuffer, 16));
-
-    // Array Field (data)
-    writeSimpleTypeArrayField("data", data, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("AssociatedQueryValueType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AssociatedQueryValueType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (returnCode)
-    lengthInBits += 8;
-
-    // Simple field (transportSize)
-    lengthInBits += 8;
-
-    // Simple field (valueLength)
-    lengthInBits += 16;
-
-    // Array field
-    if (data != null) {
-      lengthInBits += 8 * data.size();
-    }
-
-    return lengthInBits;
-  }
-
-  public static AssociatedQueryValueType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AssociatedQueryValueType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AssociatedQueryValueType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    DataTransportErrorCode returnCode =
-        readEnumField(
-            "returnCode",
-            "DataTransportErrorCode",
-            new DataReaderEnumDefault<>(
-                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    DataTransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "DataTransportSize",
-            new DataReaderEnumDefault<>(
-                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    int valueLength = readSimpleField("valueLength", readUnsignedInt(readBuffer, 16));
-
-    List<Short> data = readCountArrayField("data", readUnsignedShort(readBuffer, 8), valueLength);
-
-    readBuffer.closeContext("AssociatedQueryValueType");
-    // Create the instance
-    AssociatedQueryValueType _associatedQueryValueType;
-    _associatedQueryValueType =
-        new AssociatedQueryValueType(returnCode, transportSize, valueLength, data);
-    return _associatedQueryValueType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AssociatedQueryValueType)) {
-      return false;
-    }
-    AssociatedQueryValueType that = (AssociatedQueryValueType) o;
-    return (getReturnCode() == that.getReturnCode())
-        && (getTransportSize() == that.getTransportSize())
-        && (getValueLength() == that.getValueLength())
-        && (getData() == that.getData())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getReturnCode(), getTransportSize(), getValueLength(), getData());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java
deleted file mode 100644
index d3807cd386..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AssociatedValueType.java
+++ /dev/null
@@ -1,220 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class AssociatedValueType implements Message {
-
-  // Properties.
-  protected final DataTransportErrorCode returnCode;
-  protected final DataTransportSize transportSize;
-  protected final int valueLength;
-  protected final List<Short> data;
-
-  public AssociatedValueType(
-      DataTransportErrorCode returnCode,
-      DataTransportSize transportSize,
-      int valueLength,
-      List<Short> data) {
-    super();
-    this.returnCode = returnCode;
-    this.transportSize = transportSize;
-    this.valueLength = valueLength;
-    this.data = data;
-  }
-
-  public DataTransportErrorCode getReturnCode() {
-    return returnCode;
-  }
-
-  public DataTransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public int getValueLength() {
-    return valueLength;
-  }
-
-  public List<Short> getData() {
-    return data;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("AssociatedValueType");
-
-    // Simple Field (returnCode)
-    writeSimpleEnumField(
-        "returnCode",
-        "DataTransportErrorCode",
-        returnCode,
-        new DataWriterEnumDefault<>(
-            DataTransportErrorCode::getValue,
-            DataTransportErrorCode::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (transportSize)
-    writeSimpleEnumField(
-        "transportSize",
-        "DataTransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            DataTransportSize::getValue,
-            DataTransportSize::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Manual Field (valueLength)
-    writeManualField(
-        "valueLength",
-        () ->
-            org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.LeftShift3(
-                writeBuffer, valueLength),
-        writeBuffer);
-
-    // Array Field (data)
-    writeSimpleTypeArrayField("data", data, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("AssociatedValueType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    AssociatedValueType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (returnCode)
-    lengthInBits += 8;
-
-    // Simple field (transportSize)
-    lengthInBits += 8;
-
-    // Manual Field (valueLength)
-    lengthInBits += 2;
-
-    // Array field
-    if (data != null) {
-      lengthInBits += 8 * data.size();
-    }
-
-    return lengthInBits;
-  }
-
-  public static AssociatedValueType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static AssociatedValueType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("AssociatedValueType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    DataTransportErrorCode returnCode =
-        readEnumField(
-            "returnCode",
-            "DataTransportErrorCode",
-            new DataReaderEnumDefault<>(
-                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    DataTransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "DataTransportSize",
-            new DataReaderEnumDefault<>(
-                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    int valueLength =
-        readManualField(
-            "valueLength",
-            readBuffer,
-            () ->
-                (int)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.RightShift3(
-                        readBuffer, transportSize)));
-
-    List<Short> data =
-        readCountArrayField(
-            "data",
-            readUnsignedShort(readBuffer, 8),
-            org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.EventItemLength(
-                readBuffer, valueLength));
-
-    readBuffer.closeContext("AssociatedValueType");
-    // Create the instance
-    AssociatedValueType _associatedValueType;
-    _associatedValueType = new AssociatedValueType(returnCode, transportSize, valueLength, data);
-    return _associatedValueType;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof AssociatedValueType)) {
-      return false;
-    }
-    AssociatedValueType that = (AssociatedValueType) o;
-    return (getReturnCode() == that.getReturnCode())
-        && (getTransportSize() == that.getTransportSize())
-        && (getValueLength() == that.getValueLength())
-        && (getData() == that.getData())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getReturnCode(), getTransportSize(), getValueLength(), getData());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
deleted file mode 100644
index 6d4f3cd49b..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
+++ /dev/null
@@ -1,238 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class COTPPacket implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Short getTpduCode();
-
-  // Properties.
-  protected final List<COTPParameter> parameters;
-  protected final S7Message payload;
-
-  public COTPPacket(List<COTPParameter> parameters, S7Message payload) {
-    super();
-    this.parameters = parameters;
-    this.payload = payload;
-  }
-
-  public List<COTPParameter> getParameters() {
-    return parameters;
-  }
-
-  public S7Message getPayload() {
-    return payload;
-  }
-
-  protected abstract void serializeCOTPPacketChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    int startPos = positionAware.getPos();
-    writeBuffer.pushContext("COTPPacket");
-
-    // Implicit Field (headerLength) (Used for parsing, but its value is not stored as it's
-    // implicitly given by the objects content)
-    short headerLength =
-        (short)
-            ((getLengthInBytes())
-                - ((((((((getPayload()) != (null))) ? getPayload().getLengthInBytes() : 0)))
-                    + (1))));
-    writeImplicitField("headerLength", headerLength, writeUnsignedShort(writeBuffer, 8));
-
-    // Discriminator Field (tpduCode) (Used as input to a switch field)
-    writeDiscriminatorField("tpduCode", getTpduCode(), writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeCOTPPacketChild(writeBuffer);
-
-    // Array Field (parameters)
-    writeComplexTypeArrayField("parameters", parameters, writeBuffer);
-
-    // Optional Field (payload) (Can be skipped, if the value is null)
-    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
-
-    writeBuffer.popContext("COTPPacket");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    COTPPacket _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Implicit Field (headerLength)
-    lengthInBits += 8;
-
-    // Discriminator Field (tpduCode)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    // Array field
-    if (parameters != null) {
-      for (Message element : parameters) {
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    // Optional Field (payload)
-    if (payload != null) {
-      lengthInBits += payload.getLengthInBits();
-    }
-
-    return lengthInBits;
-  }
-
-  public static COTPPacket staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    if ((args == null) || (args.length != 1)) {
-      throw new PlcRuntimeException(
-          "Wrong number of arguments, expected 1, but got " + args.length);
-    }
-    Integer cotpLen;
-    if (args[0] instanceof Integer) {
-      cotpLen = (Integer) args[0];
-    } else if (args[0] instanceof String) {
-      cotpLen = Integer.valueOf((String) args[0]);
-    } else {
-      throw new PlcRuntimeException(
-          "Argument 0 expected to be of type Integer or a string which is parseable but was "
-              + args[0].getClass().getName());
-    }
-    return staticParse(readBuffer, cotpLen);
-  }
-
-  public static COTPPacket staticParse(ReadBuffer readBuffer, Integer cotpLen)
-      throws ParseException {
-    readBuffer.pullContext("COTPPacket");
-    PositionAware positionAware = readBuffer;
-    int startPos = positionAware.getPos();
-    int curPos;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short headerLength = readImplicitField("headerLength", readUnsignedShort(readBuffer, 8));
-
-    short tpduCode = readDiscriminatorField("tpduCode", readUnsignedShort(readBuffer, 8));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    COTPPacketBuilder builder = null;
-    if (EvaluationHelper.equals(tpduCode, (short) 0xF0)) {
-      builder = COTPPacketData.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    } else if (EvaluationHelper.equals(tpduCode, (short) 0xE0)) {
-      builder = COTPPacketConnectionRequest.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    } else if (EvaluationHelper.equals(tpduCode, (short) 0xD0)) {
-      builder = COTPPacketConnectionResponse.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    } else if (EvaluationHelper.equals(tpduCode, (short) 0x80)) {
-      builder = COTPPacketDisconnectRequest.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    } else if (EvaluationHelper.equals(tpduCode, (short) 0xC0)) {
-      builder = COTPPacketDisconnectResponse.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    } else if (EvaluationHelper.equals(tpduCode, (short) 0x70)) {
-      builder = COTPPacketTpduError.staticParseCOTPPacketBuilder(readBuffer, cotpLen);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "tpduCode="
-              + tpduCode
-              + "]");
-    }
-
-    List<COTPParameter> parameters =
-        readLengthArrayField(
-            "parameters",
-            new DataReaderComplexDefault<>(
-                () ->
-                    COTPParameter.staticParse(
-                        readBuffer,
-                        (short) ((((headerLength) + (1))) - ((positionAware.getPos() - startPos)))),
-                readBuffer),
-            (((headerLength) + (1))) - ((positionAware.getPos() - startPos)));
-
-    S7Message payload =
-        readOptionalField(
-            "payload",
-            new DataReaderComplexDefault<>(() -> S7Message.staticParse(readBuffer), readBuffer),
-            ((positionAware.getPos() - startPos)) < (cotpLen));
-
-    readBuffer.closeContext("COTPPacket");
-    // Create the instance
-    COTPPacket _cOTPPacket = builder.build(parameters, payload);
-    return _cOTPPacket;
-  }
-
-  public interface COTPPacketBuilder {
-    COTPPacket build(List<COTPParameter> parameters, S7Message payload);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacket)) {
-      return false;
-    }
-    COTPPacket that = (COTPPacket) o;
-    return (getParameters() == that.getParameters()) && (getPayload() == that.getPayload()) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getParameters(), getPayload());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
deleted file mode 100644
index f5c7bb1050..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
+++ /dev/null
@@ -1,200 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketConnectionRequest extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0xE0;
-  }
-
-  // Properties.
-  protected final int destinationReference;
-  protected final int sourceReference;
-  protected final COTPProtocolClass protocolClass;
-
-  public COTPPacketConnectionRequest(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      int destinationReference,
-      int sourceReference,
-      COTPProtocolClass protocolClass) {
-    super(parameters, payload);
-    this.destinationReference = destinationReference;
-    this.sourceReference = sourceReference;
-    this.protocolClass = protocolClass;
-  }
-
-  public int getDestinationReference() {
-    return destinationReference;
-  }
-
-  public int getSourceReference() {
-    return sourceReference;
-  }
-
-  public COTPProtocolClass getProtocolClass() {
-    return protocolClass;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketConnectionRequest");
-
-    // Simple Field (destinationReference)
-    writeSimpleField(
-        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (sourceReference)
-    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (protocolClass)
-    writeSimpleEnumField(
-        "protocolClass",
-        "COTPProtocolClass",
-        protocolClass,
-        new DataWriterEnumDefault<>(
-            COTPProtocolClass::getValue,
-            COTPProtocolClass::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    writeBuffer.popContext("COTPPacketConnectionRequest");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketConnectionRequest _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (destinationReference)
-    lengthInBits += 16;
-
-    // Simple field (sourceReference)
-    lengthInBits += 16;
-
-    // Simple field (protocolClass)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketConnectionRequest");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int destinationReference =
-        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
-
-    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
-
-    COTPProtocolClass protocolClass =
-        readEnumField(
-            "protocolClass",
-            "COTPProtocolClass",
-            new DataReaderEnumDefault<>(
-                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    readBuffer.closeContext("COTPPacketConnectionRequest");
-    // Create the instance
-    return new COTPPacketConnectionRequestBuilderImpl(
-        destinationReference, sourceReference, protocolClass);
-  }
-
-  public static class COTPPacketConnectionRequestBuilderImpl
-      implements COTPPacket.COTPPacketBuilder {
-    private final int destinationReference;
-    private final int sourceReference;
-    private final COTPProtocolClass protocolClass;
-
-    public COTPPacketConnectionRequestBuilderImpl(
-        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
-      this.destinationReference = destinationReference;
-      this.sourceReference = sourceReference;
-      this.protocolClass = protocolClass;
-    }
-
-    public COTPPacketConnectionRequest build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketConnectionRequest cOTPPacketConnectionRequest =
-          new COTPPacketConnectionRequest(
-              parameters, payload, destinationReference, sourceReference, protocolClass);
-      return cOTPPacketConnectionRequest;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketConnectionRequest)) {
-      return false;
-    }
-    COTPPacketConnectionRequest that = (COTPPacketConnectionRequest) o;
-    return (getDestinationReference() == that.getDestinationReference())
-        && (getSourceReference() == that.getSourceReference())
-        && (getProtocolClass() == that.getProtocolClass())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
deleted file mode 100644
index 1d64fa5fa2..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
+++ /dev/null
@@ -1,200 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketConnectionResponse extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0xD0;
-  }
-
-  // Properties.
-  protected final int destinationReference;
-  protected final int sourceReference;
-  protected final COTPProtocolClass protocolClass;
-
-  public COTPPacketConnectionResponse(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      int destinationReference,
-      int sourceReference,
-      COTPProtocolClass protocolClass) {
-    super(parameters, payload);
-    this.destinationReference = destinationReference;
-    this.sourceReference = sourceReference;
-    this.protocolClass = protocolClass;
-  }
-
-  public int getDestinationReference() {
-    return destinationReference;
-  }
-
-  public int getSourceReference() {
-    return sourceReference;
-  }
-
-  public COTPProtocolClass getProtocolClass() {
-    return protocolClass;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketConnectionResponse");
-
-    // Simple Field (destinationReference)
-    writeSimpleField(
-        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (sourceReference)
-    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (protocolClass)
-    writeSimpleEnumField(
-        "protocolClass",
-        "COTPProtocolClass",
-        protocolClass,
-        new DataWriterEnumDefault<>(
-            COTPProtocolClass::getValue,
-            COTPProtocolClass::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    writeBuffer.popContext("COTPPacketConnectionResponse");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketConnectionResponse _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (destinationReference)
-    lengthInBits += 16;
-
-    // Simple field (sourceReference)
-    lengthInBits += 16;
-
-    // Simple field (protocolClass)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketConnectionResponse");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int destinationReference =
-        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
-
-    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
-
-    COTPProtocolClass protocolClass =
-        readEnumField(
-            "protocolClass",
-            "COTPProtocolClass",
-            new DataReaderEnumDefault<>(
-                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    readBuffer.closeContext("COTPPacketConnectionResponse");
-    // Create the instance
-    return new COTPPacketConnectionResponseBuilderImpl(
-        destinationReference, sourceReference, protocolClass);
-  }
-
-  public static class COTPPacketConnectionResponseBuilderImpl
-      implements COTPPacket.COTPPacketBuilder {
-    private final int destinationReference;
-    private final int sourceReference;
-    private final COTPProtocolClass protocolClass;
-
-    public COTPPacketConnectionResponseBuilderImpl(
-        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
-      this.destinationReference = destinationReference;
-      this.sourceReference = sourceReference;
-      this.protocolClass = protocolClass;
-    }
-
-    public COTPPacketConnectionResponse build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketConnectionResponse cOTPPacketConnectionResponse =
-          new COTPPacketConnectionResponse(
-              parameters, payload, destinationReference, sourceReference, protocolClass);
-      return cOTPPacketConnectionResponse;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketConnectionResponse)) {
-      return false;
-    }
-    COTPPacketConnectionResponse that = (COTPPacketConnectionResponse) o;
-    return (getDestinationReference() == that.getDestinationReference())
-        && (getSourceReference() == that.getSourceReference())
-        && (getProtocolClass() == that.getProtocolClass())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
deleted file mode 100644
index 233483c1a7..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
+++ /dev/null
@@ -1,159 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketData extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0xF0;
-  }
-
-  // Properties.
-  protected final boolean eot;
-  protected final byte tpduRef;
-
-  public COTPPacketData(
-      List<COTPParameter> parameters, S7Message payload, boolean eot, byte tpduRef) {
-    super(parameters, payload);
-    this.eot = eot;
-    this.tpduRef = tpduRef;
-  }
-
-  public boolean getEot() {
-    return eot;
-  }
-
-  public byte getTpduRef() {
-    return tpduRef;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketData");
-
-    // Simple Field (eot)
-    writeSimpleField("eot", eot, writeBoolean(writeBuffer));
-
-    // Simple Field (tpduRef)
-    writeSimpleField("tpduRef", tpduRef, writeUnsignedByte(writeBuffer, 7));
-
-    writeBuffer.popContext("COTPPacketData");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketData _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (eot)
-    lengthInBits += 1;
-
-    // Simple field (tpduRef)
-    lengthInBits += 7;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketData");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    boolean eot = readSimpleField("eot", readBoolean(readBuffer));
-
-    byte tpduRef = readSimpleField("tpduRef", readUnsignedByte(readBuffer, 7));
-
-    readBuffer.closeContext("COTPPacketData");
-    // Create the instance
-    return new COTPPacketDataBuilderImpl(eot, tpduRef);
-  }
-
-  public static class COTPPacketDataBuilderImpl implements COTPPacket.COTPPacketBuilder {
-    private final boolean eot;
-    private final byte tpduRef;
-
-    public COTPPacketDataBuilderImpl(boolean eot, byte tpduRef) {
-      this.eot = eot;
-      this.tpduRef = tpduRef;
-    }
-
-    public COTPPacketData build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketData cOTPPacketData = new COTPPacketData(parameters, payload, eot, tpduRef);
-      return cOTPPacketData;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketData)) {
-      return false;
-    }
-    COTPPacketData that = (COTPPacketData) o;
-    return (getEot() == that.getEot())
-        && (getTpduRef() == that.getTpduRef())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getEot(), getTpduRef());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
deleted file mode 100644
index 8c1ef73f6f..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
+++ /dev/null
@@ -1,200 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketDisconnectRequest extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0x80;
-  }
-
-  // Properties.
-  protected final int destinationReference;
-  protected final int sourceReference;
-  protected final COTPProtocolClass protocolClass;
-
-  public COTPPacketDisconnectRequest(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      int destinationReference,
-      int sourceReference,
-      COTPProtocolClass protocolClass) {
-    super(parameters, payload);
-    this.destinationReference = destinationReference;
-    this.sourceReference = sourceReference;
-    this.protocolClass = protocolClass;
-  }
-
-  public int getDestinationReference() {
-    return destinationReference;
-  }
-
-  public int getSourceReference() {
-    return sourceReference;
-  }
-
-  public COTPProtocolClass getProtocolClass() {
-    return protocolClass;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketDisconnectRequest");
-
-    // Simple Field (destinationReference)
-    writeSimpleField(
-        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (sourceReference)
-    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (protocolClass)
-    writeSimpleEnumField(
-        "protocolClass",
-        "COTPProtocolClass",
-        protocolClass,
-        new DataWriterEnumDefault<>(
-            COTPProtocolClass::getValue,
-            COTPProtocolClass::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    writeBuffer.popContext("COTPPacketDisconnectRequest");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketDisconnectRequest _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (destinationReference)
-    lengthInBits += 16;
-
-    // Simple field (sourceReference)
-    lengthInBits += 16;
-
-    // Simple field (protocolClass)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketDisconnectRequest");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int destinationReference =
-        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
-
-    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
-
-    COTPProtocolClass protocolClass =
-        readEnumField(
-            "protocolClass",
-            "COTPProtocolClass",
-            new DataReaderEnumDefault<>(
-                COTPProtocolClass::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    readBuffer.closeContext("COTPPacketDisconnectRequest");
-    // Create the instance
-    return new COTPPacketDisconnectRequestBuilderImpl(
-        destinationReference, sourceReference, protocolClass);
-  }
-
-  public static class COTPPacketDisconnectRequestBuilderImpl
-      implements COTPPacket.COTPPacketBuilder {
-    private final int destinationReference;
-    private final int sourceReference;
-    private final COTPProtocolClass protocolClass;
-
-    public COTPPacketDisconnectRequestBuilderImpl(
-        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
-      this.destinationReference = destinationReference;
-      this.sourceReference = sourceReference;
-      this.protocolClass = protocolClass;
-    }
-
-    public COTPPacketDisconnectRequest build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketDisconnectRequest cOTPPacketDisconnectRequest =
-          new COTPPacketDisconnectRequest(
-              parameters, payload, destinationReference, sourceReference, protocolClass);
-      return cOTPPacketDisconnectRequest;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketDisconnectRequest)) {
-      return false;
-    }
-    COTPPacketDisconnectRequest that = (COTPPacketDisconnectRequest) o;
-    return (getDestinationReference() == that.getDestinationReference())
-        && (getSourceReference() == that.getSourceReference())
-        && (getProtocolClass() == that.getProtocolClass())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        super.hashCode(), getDestinationReference(), getSourceReference(), getProtocolClass());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
deleted file mode 100644
index 90bae29594..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
+++ /dev/null
@@ -1,167 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketDisconnectResponse extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0xC0;
-  }
-
-  // Properties.
-  protected final int destinationReference;
-  protected final int sourceReference;
-
-  public COTPPacketDisconnectResponse(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      int destinationReference,
-      int sourceReference) {
-    super(parameters, payload);
-    this.destinationReference = destinationReference;
-    this.sourceReference = sourceReference;
-  }
-
-  public int getDestinationReference() {
-    return destinationReference;
-  }
-
-  public int getSourceReference() {
-    return sourceReference;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketDisconnectResponse");
-
-    // Simple Field (destinationReference)
-    writeSimpleField(
-        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (sourceReference)
-    writeSimpleField("sourceReference", sourceReference, writeUnsignedInt(writeBuffer, 16));
-
-    writeBuffer.popContext("COTPPacketDisconnectResponse");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketDisconnectResponse _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (destinationReference)
-    lengthInBits += 16;
-
-    // Simple field (sourceReference)
-    lengthInBits += 16;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketDisconnectResponse");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int destinationReference =
-        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
-
-    int sourceReference = readSimpleField("sourceReference", readUnsignedInt(readBuffer, 16));
-
-    readBuffer.closeContext("COTPPacketDisconnectResponse");
-    // Create the instance
-    return new COTPPacketDisconnectResponseBuilderImpl(destinationReference, sourceReference);
-  }
-
-  public static class COTPPacketDisconnectResponseBuilderImpl
-      implements COTPPacket.COTPPacketBuilder {
-    private final int destinationReference;
-    private final int sourceReference;
-
-    public COTPPacketDisconnectResponseBuilderImpl(int destinationReference, int sourceReference) {
-      this.destinationReference = destinationReference;
-      this.sourceReference = sourceReference;
-    }
-
-    public COTPPacketDisconnectResponse build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketDisconnectResponse cOTPPacketDisconnectResponse =
-          new COTPPacketDisconnectResponse(
-              parameters, payload, destinationReference, sourceReference);
-      return cOTPPacketDisconnectResponse;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketDisconnectResponse)) {
-      return false;
-    }
-    COTPPacketDisconnectResponse that = (COTPPacketDisconnectResponse) o;
-    return (getDestinationReference() == that.getDestinationReference())
-        && (getSourceReference() == that.getSourceReference())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getDestinationReference(), getSourceReference());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
deleted file mode 100644
index bb6c4ed3aa..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
+++ /dev/null
@@ -1,165 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPPacketTpduError extends COTPPacket implements Message {
-
-  // Accessors for discriminator values.
-  public Short getTpduCode() {
-    return (short) 0x70;
-  }
-
-  // Properties.
-  protected final int destinationReference;
-  protected final short rejectCause;
-
-  public COTPPacketTpduError(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      int destinationReference,
-      short rejectCause) {
-    super(parameters, payload);
-    this.destinationReference = destinationReference;
-    this.rejectCause = rejectCause;
-  }
-
-  public int getDestinationReference() {
-    return destinationReference;
-  }
-
-  public short getRejectCause() {
-    return rejectCause;
-  }
-
-  @Override
-  protected void serializeCOTPPacketChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPPacketTpduError");
-
-    // Simple Field (destinationReference)
-    writeSimpleField(
-        "destinationReference", destinationReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (rejectCause)
-    writeSimpleField("rejectCause", rejectCause, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("COTPPacketTpduError");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPPacketTpduError _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (destinationReference)
-    lengthInBits += 16;
-
-    // Simple field (rejectCause)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPPacketBuilder staticParseCOTPPacketBuilder(
-      ReadBuffer readBuffer, Integer cotpLen) throws ParseException {
-    readBuffer.pullContext("COTPPacketTpduError");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int destinationReference =
-        readSimpleField("destinationReference", readUnsignedInt(readBuffer, 16));
-
-    short rejectCause = readSimpleField("rejectCause", readUnsignedShort(readBuffer, 8));
-
-    readBuffer.closeContext("COTPPacketTpduError");
-    // Create the instance
-    return new COTPPacketTpduErrorBuilderImpl(destinationReference, rejectCause);
-  }
-
-  public static class COTPPacketTpduErrorBuilderImpl implements COTPPacket.COTPPacketBuilder {
-    private final int destinationReference;
-    private final short rejectCause;
-
-    public COTPPacketTpduErrorBuilderImpl(int destinationReference, short rejectCause) {
-      this.destinationReference = destinationReference;
-      this.rejectCause = rejectCause;
-    }
-
-    public COTPPacketTpduError build(List<COTPParameter> parameters, S7Message payload) {
-      COTPPacketTpduError cOTPPacketTpduError =
-          new COTPPacketTpduError(parameters, payload, destinationReference, rejectCause);
-      return cOTPPacketTpduError;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPPacketTpduError)) {
-      return false;
-    }
-    COTPPacketTpduError that = (COTPPacketTpduError) o;
-    return (getDestinationReference() == that.getDestinationReference())
-        && (getRejectCause() == that.getRejectCause())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getDestinationReference(), getRejectCause());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
deleted file mode 100644
index d056c5f92f..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
+++ /dev/null
@@ -1,182 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class COTPParameter implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Short getParameterType();
-
-  public COTPParameter() {
-    super();
-  }
-
-  protected abstract void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameter");
-
-    // Discriminator Field (parameterType) (Used as input to a switch field)
-    writeDiscriminatorField(
-        "parameterType", getParameterType(), writeUnsignedShort(writeBuffer, 8));
-
-    // Implicit Field (parameterLength) (Used for parsing, but its value is not stored as it's
-    // implicitly given by the objects content)
-    short parameterLength = (short) ((getLengthInBytes()) - (2));
-    writeImplicitField("parameterLength", parameterLength, writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeCOTPParameterChild(writeBuffer);
-
-    writeBuffer.popContext("COTPParameter");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    COTPParameter _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Discriminator Field (parameterType)
-    lengthInBits += 8;
-
-    // Implicit Field (parameterLength)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    return lengthInBits;
-  }
-
-  public static COTPParameter staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    if ((args == null) || (args.length != 1)) {
-      throw new PlcRuntimeException(
-          "Wrong number of arguments, expected 1, but got " + args.length);
-    }
-    Short rest;
-    if (args[0] instanceof Short) {
-      rest = (Short) args[0];
-    } else if (args[0] instanceof String) {
-      rest = Short.valueOf((String) args[0]);
-    } else {
-      throw new PlcRuntimeException(
-          "Argument 0 expected to be of type Short or a string which is parseable but was "
-              + args[0].getClass().getName());
-    }
-    return staticParse(readBuffer, rest);
-  }
-
-  public static COTPParameter staticParse(ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameter");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short parameterType = readDiscriminatorField("parameterType", readUnsignedShort(readBuffer, 8));
-
-    short parameterLength = readImplicitField("parameterLength", readUnsignedShort(readBuffer, 8));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    COTPParameterBuilder builder = null;
-    if (EvaluationHelper.equals(parameterType, (short) 0xC0)) {
-      builder = COTPParameterTpduSize.staticParseCOTPParameterBuilder(readBuffer, rest);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0xC1)) {
-      builder = COTPParameterCallingTsap.staticParseCOTPParameterBuilder(readBuffer, rest);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0xC2)) {
-      builder = COTPParameterCalledTsap.staticParseCOTPParameterBuilder(readBuffer, rest);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0xC3)) {
-      builder = COTPParameterChecksum.staticParseCOTPParameterBuilder(readBuffer, rest);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0xE0)) {
-      builder =
-          COTPParameterDisconnectAdditionalInformation.staticParseCOTPParameterBuilder(
-              readBuffer, rest);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "parameterType="
-              + parameterType
-              + "]");
-    }
-
-    readBuffer.closeContext("COTPParameter");
-    // Create the instance
-    COTPParameter _cOTPParameter = builder.build();
-    return _cOTPParameter;
-  }
-
-  public interface COTPParameterBuilder {
-    COTPParameter build();
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameter)) {
-      return false;
-    }
-    COTPParameter that = (COTPParameter) o;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash();
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
deleted file mode 100644
index 154495f680..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
+++ /dev/null
@@ -1,141 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPParameterCalledTsap extends COTPParameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0xC2;
-  }
-
-  // Properties.
-  protected final int tsapId;
-
-  public COTPParameterCalledTsap(int tsapId) {
-    super();
-    this.tsapId = tsapId;
-  }
-
-  public int getTsapId() {
-    return tsapId;
-  }
-
-  @Override
-  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameterCalledTsap");
-
-    // Simple Field (tsapId)
-    writeSimpleField("tsapId", tsapId, writeUnsignedInt(writeBuffer, 16));
-
-    writeBuffer.popContext("COTPParameterCalledTsap");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPParameterCalledTsap _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (tsapId)
-    lengthInBits += 16;
-
-    return lengthInBits;
-  }
-
-  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
-      ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameterCalledTsap");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int tsapId = readSimpleField("tsapId", readUnsignedInt(readBuffer, 16));
-
-    readBuffer.closeContext("COTPParameterCalledTsap");
-    // Create the instance
-    return new COTPParameterCalledTsapBuilderImpl(tsapId);
-  }
-
-  public static class COTPParameterCalledTsapBuilderImpl
-      implements COTPParameter.COTPParameterBuilder {
-    private final int tsapId;
-
-    public COTPParameterCalledTsapBuilderImpl(int tsapId) {
-      this.tsapId = tsapId;
-    }
-
-    public COTPParameterCalledTsap build() {
-      COTPParameterCalledTsap cOTPParameterCalledTsap = new COTPParameterCalledTsap(tsapId);
-      return cOTPParameterCalledTsap;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameterCalledTsap)) {
-      return false;
-    }
-    COTPParameterCalledTsap that = (COTPParameterCalledTsap) o;
-    return (getTsapId() == that.getTsapId()) && super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getTsapId());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
deleted file mode 100644
index b61845ae97..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
+++ /dev/null
@@ -1,141 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPParameterCallingTsap extends COTPParameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0xC1;
-  }
-
-  // Properties.
-  protected final int tsapId;
-
-  public COTPParameterCallingTsap(int tsapId) {
-    super();
-    this.tsapId = tsapId;
-  }
-
-  public int getTsapId() {
-    return tsapId;
-  }
-
-  @Override
-  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameterCallingTsap");
-
-    // Simple Field (tsapId)
-    writeSimpleField("tsapId", tsapId, writeUnsignedInt(writeBuffer, 16));
-
-    writeBuffer.popContext("COTPParameterCallingTsap");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPParameterCallingTsap _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (tsapId)
-    lengthInBits += 16;
-
-    return lengthInBits;
-  }
-
-  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
-      ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameterCallingTsap");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    int tsapId = readSimpleField("tsapId", readUnsignedInt(readBuffer, 16));
-
-    readBuffer.closeContext("COTPParameterCallingTsap");
-    // Create the instance
-    return new COTPParameterCallingTsapBuilderImpl(tsapId);
-  }
-
-  public static class COTPParameterCallingTsapBuilderImpl
-      implements COTPParameter.COTPParameterBuilder {
-    private final int tsapId;
-
-    public COTPParameterCallingTsapBuilderImpl(int tsapId) {
-      this.tsapId = tsapId;
-    }
-
-    public COTPParameterCallingTsap build() {
-      COTPParameterCallingTsap cOTPParameterCallingTsap = new COTPParameterCallingTsap(tsapId);
-      return cOTPParameterCallingTsap;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameterCallingTsap)) {
-      return false;
-    }
-    COTPParameterCallingTsap that = (COTPParameterCallingTsap) o;
-    return (getTsapId() == that.getTsapId()) && super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getTsapId());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
deleted file mode 100644
index bfa89f0ff1..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
+++ /dev/null
@@ -1,141 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPParameterChecksum extends COTPParameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0xC3;
-  }
-
-  // Properties.
-  protected final short crc;
-
-  public COTPParameterChecksum(short crc) {
-    super();
-    this.crc = crc;
-  }
-
-  public short getCrc() {
-    return crc;
-  }
-
-  @Override
-  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameterChecksum");
-
-    // Simple Field (crc)
-    writeSimpleField("crc", crc, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("COTPParameterChecksum");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPParameterChecksum _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (crc)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
-      ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameterChecksum");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short crc = readSimpleField("crc", readUnsignedShort(readBuffer, 8));
-
-    readBuffer.closeContext("COTPParameterChecksum");
-    // Create the instance
-    return new COTPParameterChecksumBuilderImpl(crc);
-  }
-
-  public static class COTPParameterChecksumBuilderImpl
-      implements COTPParameter.COTPParameterBuilder {
-    private final short crc;
-
-    public COTPParameterChecksumBuilderImpl(short crc) {
-      this.crc = crc;
-    }
-
-    public COTPParameterChecksum build() {
-      COTPParameterChecksum cOTPParameterChecksum = new COTPParameterChecksum(crc);
-      return cOTPParameterChecksum;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameterChecksum)) {
-      return false;
-    }
-    COTPParameterChecksum that = (COTPParameterChecksum) o;
-    return (getCrc() == that.getCrc()) && super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getCrc());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
deleted file mode 100644
index 9846b0517f..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
+++ /dev/null
@@ -1,145 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPParameterDisconnectAdditionalInformation extends COTPParameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0xE0;
-  }
-
-  // Properties.
-  protected final byte[] data;
-
-  public COTPParameterDisconnectAdditionalInformation(byte[] data) {
-    super();
-    this.data = data;
-  }
-
-  public byte[] getData() {
-    return data;
-  }
-
-  @Override
-  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameterDisconnectAdditionalInformation");
-
-    // Array Field (data)
-    writeByteArrayField("data", data, writeByteArray(writeBuffer, 8));
-
-    writeBuffer.popContext("COTPParameterDisconnectAdditionalInformation");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPParameterDisconnectAdditionalInformation _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Array field
-    if (data != null) {
-      lengthInBits += 8 * data.length;
-    }
-
-    return lengthInBits;
-  }
-
-  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
-      ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameterDisconnectAdditionalInformation");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    byte[] data = readBuffer.readByteArray("data", Math.toIntExact(rest));
-
-    readBuffer.closeContext("COTPParameterDisconnectAdditionalInformation");
-    // Create the instance
-    return new COTPParameterDisconnectAdditionalInformationBuilderImpl(data);
-  }
-
-  public static class COTPParameterDisconnectAdditionalInformationBuilderImpl
-      implements COTPParameter.COTPParameterBuilder {
-    private final byte[] data;
-
-    public COTPParameterDisconnectAdditionalInformationBuilderImpl(byte[] data) {
-      this.data = data;
-    }
-
-    public COTPParameterDisconnectAdditionalInformation build() {
-      COTPParameterDisconnectAdditionalInformation cOTPParameterDisconnectAdditionalInformation =
-          new COTPParameterDisconnectAdditionalInformation(data);
-      return cOTPParameterDisconnectAdditionalInformation;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameterDisconnectAdditionalInformation)) {
-      return false;
-    }
-    COTPParameterDisconnectAdditionalInformation that =
-        (COTPParameterDisconnectAdditionalInformation) o;
-    return (getData() == that.getData()) && super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getData());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
deleted file mode 100644
index be740620a8..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
+++ /dev/null
@@ -1,151 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class COTPParameterTpduSize extends COTPParameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0xC0;
-  }
-
-  // Properties.
-  protected final COTPTpduSize tpduSize;
-
-  public COTPParameterTpduSize(COTPTpduSize tpduSize) {
-    super();
-    this.tpduSize = tpduSize;
-  }
-
-  public COTPTpduSize getTpduSize() {
-    return tpduSize;
-  }
-
-  @Override
-  protected void serializeCOTPParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("COTPParameterTpduSize");
-
-    // Simple Field (tpduSize)
-    writeSimpleEnumField(
-        "tpduSize",
-        "COTPTpduSize",
-        tpduSize,
-        new DataWriterEnumDefault<>(
-            COTPTpduSize::getValue, COTPTpduSize::name, writeUnsignedShort(writeBuffer, 8)));
-
-    writeBuffer.popContext("COTPParameterTpduSize");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    COTPParameterTpduSize _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (tpduSize)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static COTPParameterBuilder staticParseCOTPParameterBuilder(
-      ReadBuffer readBuffer, Short rest) throws ParseException {
-    readBuffer.pullContext("COTPParameterTpduSize");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    COTPTpduSize tpduSize =
-        readEnumField(
-            "tpduSize",
-            "COTPTpduSize",
-            new DataReaderEnumDefault<>(
-                COTPTpduSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    readBuffer.closeContext("COTPParameterTpduSize");
-    // Create the instance
-    return new COTPParameterTpduSizeBuilderImpl(tpduSize);
-  }
-
-  public static class COTPParameterTpduSizeBuilderImpl
-      implements COTPParameter.COTPParameterBuilder {
-    private final COTPTpduSize tpduSize;
-
-    public COTPParameterTpduSizeBuilderImpl(COTPTpduSize tpduSize) {
-      this.tpduSize = tpduSize;
-    }
-
-    public COTPParameterTpduSize build() {
-      COTPParameterTpduSize cOTPParameterTpduSize = new COTPParameterTpduSize(tpduSize);
-      return cOTPParameterTpduSize;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof COTPParameterTpduSize)) {
-      return false;
-    }
-    COTPParameterTpduSize that = (COTPParameterTpduSize) o;
-    return (getTpduSize() == that.getTpduSize()) && super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getTpduSize());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java
deleted file mode 100644
index 01715721bc..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPProtocolClass.java
+++ /dev/null
@@ -1,58 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum COTPProtocolClass {
-  CLASS_0((short) 0x00),
-  CLASS_1((short) 0x10),
-  CLASS_2((short) 0x20),
-  CLASS_3((short) 0x30),
-  CLASS_4((short) 0x40);
-  private static final Map<Short, COTPProtocolClass> map;
-
-  static {
-    map = new HashMap<>();
-    for (COTPProtocolClass value : COTPProtocolClass.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  COTPProtocolClass(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static COTPProtocolClass enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
deleted file mode 100644
index 9f7df7129a..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
+++ /dev/null
@@ -1,87 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum COTPTpduSize {
-  SIZE_128((short) 0x07, (int) 128),
-  SIZE_256((short) 0x08, (int) 256),
-  SIZE_512((short) 0x09, (int) 512),
-  SIZE_1024((short) 0x0a, (int) 1024),
-  SIZE_2048((short) 0x0b, (int) 2048),
-  SIZE_4096((short) 0x0c, (int) 4096),
-  SIZE_8192((short) 0x0d, (int) 8192);
-  private static final Map<Short, COTPTpduSize> map;
-
-  static {
-    map = new HashMap<>();
-    for (COTPTpduSize value : COTPTpduSize.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-  private final int sizeInBytes;
-
-  COTPTpduSize(short value, int sizeInBytes) {
-    this.value = value;
-    this.sizeInBytes = sizeInBytes;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public int getSizeInBytes() {
-    return sizeInBytes;
-  }
-
-  public static COTPTpduSize firstEnumForFieldSizeInBytes(int fieldValue) {
-    for (COTPTpduSize _val : COTPTpduSize.values()) {
-      if (_val.getSizeInBytes() == fieldValue) {
-        return _val;
-      }
-    }
-    return null;
-  }
-
-  public static List<COTPTpduSize> enumsForFieldSizeInBytes(int fieldValue) {
-    List<COTPTpduSize> _values = new ArrayList<>();
-    for (COTPTpduSize _val : COTPTpduSize.values()) {
-      if (_val.getSizeInBytes() == fieldValue) {
-        _values.add(_val);
-      }
-    }
-    return _values;
-  }
-
-  public static COTPTpduSize enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java
deleted file mode 100644
index 10be0b999d..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CpuSubscribeEvents.java
+++ /dev/null
@@ -1,57 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum CpuSubscribeEvents {
-  CPU((short) 0x01),
-  IM((short) 0x02),
-  FM((short) 0x04),
-  CP((short) 0x80);
-  private static final Map<Short, CpuSubscribeEvents> map;
-
-  static {
-    map = new HashMap<>();
-    for (CpuSubscribeEvents value : CpuSubscribeEvents.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  CpuSubscribeEvents(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static CpuSubscribeEvents enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java
deleted file mode 100644
index c15002a449..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemAnyType.java
+++ /dev/null
@@ -1,244 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class CycServiceItemAnyType extends CycServiceItemType implements Message {
-
-  // Accessors for discriminator values.
-
-  // Properties.
-  protected final TransportSize transportSize;
-  protected final int length;
-  protected final int dbNumber;
-  protected final MemoryArea memoryArea;
-  protected final int address;
-
-  public CycServiceItemAnyType(
-      short byteLength,
-      short syntaxId,
-      TransportSize transportSize,
-      int length,
-      int dbNumber,
-      MemoryArea memoryArea,
-      int address) {
-    super(byteLength, syntaxId);
-    this.transportSize = transportSize;
-    this.length = length;
-    this.dbNumber = dbNumber;
-    this.memoryArea = memoryArea;
-    this.address = address;
-  }
-
-  public TransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public int getLength() {
-    return length;
-  }
-
-  public int getDbNumber() {
-    return dbNumber;
-  }
-
-  public MemoryArea getMemoryArea() {
-    return memoryArea;
-  }
-
-  public int getAddress() {
-    return address;
-  }
-
-  @Override
-  protected void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("CycServiceItemAnyType");
-
-    // Enum field (transportSize)
-    writeEnumField(
-        "transportSize",
-        "TransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            TransportSize::getCode, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (length)
-    writeSimpleField("length", length, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (dbNumber)
-    writeSimpleField("dbNumber", dbNumber, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (memoryArea)
-    writeSimpleEnumField(
-        "memoryArea",
-        "MemoryArea",
-        memoryArea,
-        new DataWriterEnumDefault<>(
-            MemoryArea::getValue, MemoryArea::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (address)
-    writeSimpleField("address", address, writeUnsignedInt(writeBuffer, 24));
-
-    writeBuffer.popContext("CycServiceItemAnyType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    CycServiceItemAnyType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Enum Field (transportSize)
-    lengthInBits += 8;
-
-    // Simple field (length)
-    lengthInBits += 16;
-
-    // Simple field (dbNumber)
-    lengthInBits += 16;
-
-    // Simple field (memoryArea)
-    lengthInBits += 8;
-
-    // Simple field (address)
-    lengthInBits += 24;
-
-    return lengthInBits;
-  }
-
-  public static CycServiceItemTypeBuilder staticParseCycServiceItemTypeBuilder(
-      ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("CycServiceItemAnyType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    TransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "TransportSize",
-            readEnum(TransportSize::firstEnumForFieldCode, readUnsignedShort(readBuffer, 8)));
-
-    int length = readSimpleField("length", readUnsignedInt(readBuffer, 16));
-
-    int dbNumber = readSimpleField("dbNumber", readUnsignedInt(readBuffer, 16));
-
-    MemoryArea memoryArea =
-        readEnumField(
-            "memoryArea",
-            "MemoryArea",
-            new DataReaderEnumDefault<>(
-                MemoryArea::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    int address = readSimpleField("address", readUnsignedInt(readBuffer, 24));
-
-    readBuffer.closeContext("CycServiceItemAnyType");
-    // Create the instance
-    return new CycServiceItemAnyTypeBuilderImpl(
-        transportSize, length, dbNumber, memoryArea, address);
-  }
-
-  public static class CycServiceItemAnyTypeBuilderImpl
-      implements CycServiceItemType.CycServiceItemTypeBuilder {
-    private final TransportSize transportSize;
-    private final int length;
-    private final int dbNumber;
-    private final MemoryArea memoryArea;
-    private final int address;
-
-    public CycServiceItemAnyTypeBuilderImpl(
-        TransportSize transportSize, int length, int dbNumber, MemoryArea memoryArea, int address) {
-      this.transportSize = transportSize;
-      this.length = length;
-      this.dbNumber = dbNumber;
-      this.memoryArea = memoryArea;
-      this.address = address;
-    }
-
-    public CycServiceItemAnyType build(short byteLength, short syntaxId) {
-      CycServiceItemAnyType cycServiceItemAnyType =
-          new CycServiceItemAnyType(
-              byteLength, syntaxId, transportSize, length, dbNumber, memoryArea, address);
-      return cycServiceItemAnyType;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof CycServiceItemAnyType)) {
-      return false;
-    }
-    CycServiceItemAnyType that = (CycServiceItemAnyType) o;
-    return (getTransportSize() == that.getTransportSize())
-        && (getLength() == that.getLength())
-        && (getDbNumber() == that.getDbNumber())
-        && (getMemoryArea() == that.getMemoryArea())
-        && (getAddress() == that.getAddress())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        super.hashCode(),
-        getTransportSize(),
-        getLength(),
-        getDbNumber(),
-        getMemoryArea(),
-        getAddress());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java
deleted file mode 100644
index 73363758dd..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemDbReadType.java
+++ /dev/null
@@ -1,169 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class CycServiceItemDbReadType extends CycServiceItemType implements Message {
-
-  // Accessors for discriminator values.
-
-  // Properties.
-  protected final short numberOfAreas;
-  protected final List<SubItem> items;
-
-  public CycServiceItemDbReadType(
-      short byteLength, short syntaxId, short numberOfAreas, List<SubItem> items) {
-    super(byteLength, syntaxId);
-    this.numberOfAreas = numberOfAreas;
-    this.items = items;
-  }
-
-  public short getNumberOfAreas() {
-    return numberOfAreas;
-  }
-
-  public List<SubItem> getItems() {
-    return items;
-  }
-
-  @Override
-  protected void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("CycServiceItemDbReadType");
-
-    // Simple Field (numberOfAreas)
-    writeSimpleField("numberOfAreas", numberOfAreas, writeUnsignedShort(writeBuffer, 8));
-
-    // Array Field (items)
-    writeComplexTypeArrayField("items", items, writeBuffer);
-
-    writeBuffer.popContext("CycServiceItemDbReadType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    CycServiceItemDbReadType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (numberOfAreas)
-    lengthInBits += 8;
-
-    // Array field
-    if (items != null) {
-      int i = 0;
-      for (SubItem element : items) {
-        ThreadLocalHelper.lastItemThreadLocal.set(++i >= items.size());
-        lengthInBits += element.getLengthInBits();
-      }
-    }
-
-    return lengthInBits;
-  }
-
-  public static CycServiceItemTypeBuilder staticParseCycServiceItemTypeBuilder(
-      ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("CycServiceItemDbReadType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short numberOfAreas = readSimpleField("numberOfAreas", readUnsignedShort(readBuffer, 8));
-
-    List<SubItem> items =
-        readCountArrayField(
-            "items",
-            new DataReaderComplexDefault<>(() -> SubItem.staticParse(readBuffer), readBuffer),
-            numberOfAreas);
-
-    readBuffer.closeContext("CycServiceItemDbReadType");
-    // Create the instance
-    return new CycServiceItemDbReadTypeBuilderImpl(numberOfAreas, items);
-  }
-
-  public static class CycServiceItemDbReadTypeBuilderImpl
-      implements CycServiceItemType.CycServiceItemTypeBuilder {
-    private final short numberOfAreas;
-    private final List<SubItem> items;
-
-    public CycServiceItemDbReadTypeBuilderImpl(short numberOfAreas, List<SubItem> items) {
-      this.numberOfAreas = numberOfAreas;
-      this.items = items;
-    }
-
-    public CycServiceItemDbReadType build(short byteLength, short syntaxId) {
-      CycServiceItemDbReadType cycServiceItemDbReadType =
-          new CycServiceItemDbReadType(byteLength, syntaxId, numberOfAreas, items);
-      return cycServiceItemDbReadType;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof CycServiceItemDbReadType)) {
-      return false;
-    }
-    CycServiceItemDbReadType that = (CycServiceItemDbReadType) o;
-    return (getNumberOfAreas() == that.getNumberOfAreas())
-        && (getItems() == that.getItems())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getNumberOfAreas(), getItems());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java
deleted file mode 100644
index 9dca1f7e3e..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/CycServiceItemType.java
+++ /dev/null
@@ -1,189 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class CycServiceItemType implements Message {
-
-  // Abstract accessors for discriminator values.
-
-  // Constant values.
-  public static final Short FUNCTIONID = 0x12;
-
-  // Properties.
-  protected final short byteLength;
-  protected final short syntaxId;
-
-  public CycServiceItemType(short byteLength, short syntaxId) {
-    super();
-    this.byteLength = byteLength;
-    this.syntaxId = syntaxId;
-  }
-
-  public short getByteLength() {
-    return byteLength;
-  }
-
-  public short getSyntaxId() {
-    return syntaxId;
-  }
-
-  public short getFunctionId() {
-    return FUNCTIONID;
-  }
-
-  protected abstract void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("CycServiceItemType");
-
-    // Const Field (functionId)
-    writeConstField("functionId", FUNCTIONID, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (byteLength)
-    writeSimpleField("byteLength", byteLength, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (syntaxId)
-    writeSimpleField("syntaxId", syntaxId, writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeCycServiceItemTypeChild(writeBuffer);
-
-    writeBuffer.popContext("CycServiceItemType");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    CycServiceItemType _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (functionId)
-    lengthInBits += 8;
-
-    // Simple field (byteLength)
-    lengthInBits += 8;
-
-    // Simple field (syntaxId)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    return lengthInBits;
-  }
-
-  public static CycServiceItemType staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static CycServiceItemType staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("CycServiceItemType");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId =
-        readConstField(
-            "functionId", readUnsignedShort(readBuffer, 8), CycServiceItemType.FUNCTIONID);
-
-    short byteLength = readSimpleField("byteLength", readUnsignedShort(readBuffer, 8));
-
-    short syntaxId = readSimpleField("syntaxId", readUnsignedShort(readBuffer, 8));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    CycServiceItemTypeBuilder builder = null;
-    if (EvaluationHelper.equals(syntaxId, (short) 0x10)) {
-      builder = CycServiceItemAnyType.staticParseCycServiceItemTypeBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(syntaxId, (short) 0xb0)) {
-      builder = CycServiceItemDbReadType.staticParseCycServiceItemTypeBuilder(readBuffer);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "syntaxId="
-              + syntaxId
-              + "]");
-    }
-
-    readBuffer.closeContext("CycServiceItemType");
-    // Create the instance
-    CycServiceItemType _cycServiceItemType = builder.build(byteLength, syntaxId);
-    return _cycServiceItemType;
-  }
-
-  public interface CycServiceItemTypeBuilder {
-    CycServiceItemType build(short byteLength, short syntaxId);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof CycServiceItemType)) {
-      return false;
-    }
-    CycServiceItemType that = (CycServiceItemType) o;
-    return (getByteLength() == that.getByteLength())
-        && (getSyntaxId() == that.getSyntaxId())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getByteLength(), getSyntaxId());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
deleted file mode 100644
index 8cbcc67d76..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
+++ /dev/null
@@ -1,531 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.math.BigInteger;
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.WithOption;
-import org.apache.plc4x.java.spi.generation.ByteOrder;
-import org.apache.plc4x.java.spi.generation.EvaluationHelper;
-import org.apache.plc4x.java.spi.generation.ParseException;
-import org.apache.plc4x.java.spi.generation.ReadBuffer;
-import org.apache.plc4x.java.spi.generation.SerializationException;
-import org.apache.plc4x.java.spi.generation.WriteBuffer;
-import org.apache.plc4x.java.spi.values.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class DataItem {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(DataItem.class);
-
-  public static PlcValue staticParse(
-      ReadBuffer readBuffer, String dataProtocolId, Integer stringLength) throws ParseException {
-    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
-
-      // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-      {
-        byte reserved = /*TODO: migrate me*/ /*TODO: migrate me*/
-            readBuffer.readUnsignedByte("", 7);
-        if (reserved != (byte) 0x00) {
-          LOGGER.info(
-              "Expected constant value " + 0x00 + " but got " + reserved + " for reserved field.");
-        }
-      }
-
-      // Simple Field (value)
-      Boolean value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readBit("");
-
-      return new PlcBOOL(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
-
-      // Simple Field (value)
-      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      return new PlcBYTE(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
-
-      // Simple Field (value)
-      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
-
-      return new PlcWORD(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
-
-      // Simple Field (value)
-      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedLong("", 32);
-
-      return new PlcDWORD(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
-
-      // Simple Field (value)
-      BigInteger value = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedBigInteger("", 64);
-
-      return new PlcLWORD(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
-
-      // Simple Field (value)
-      Byte value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readSignedByte("", 8);
-
-      return new PlcSINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
-
-      // Simple Field (value)
-      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      return new PlcUSINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
-
-      // Simple Field (value)
-      Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readShort("", 16);
-
-      return new PlcINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
-
-      // Simple Field (value)
-      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
-
-      return new PlcUINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
-
-      // Simple Field (value)
-      Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readInt("", 32);
-
-      return new PlcDINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
-
-      // Simple Field (value)
-      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedLong("", 32);
-
-      return new PlcUDINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
-
-      // Simple Field (value)
-      Long value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readLong("", 64);
-
-      return new PlcLINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
-
-      // Simple Field (value)
-      BigInteger value = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedBigInteger("", 64);
-
-      return new PlcULINT(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
-
-      // Simple Field (value)
-      Float value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readFloat("", 32);
-
-      return new PlcREAL(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
-
-      // Simple Field (value)
-      Double value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readDouble("", 64);
-
-      return new PlcLREAL(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
-
-      // Simple Field (value)
-      String value = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readString("", 8, WithOption.WithEncoding("UTF-8"));
-
-      return new PlcCHAR(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
-
-      // Simple Field (value)
-      String value = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readString("", 16, WithOption.WithEncoding("UTF-16"));
-
-      return new PlcCHAR(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
-
-      // Manual Field (value)
-      String value =
-          (String)
-              (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.parseS7String(
-                  readBuffer, stringLength, "UTF-8"));
-
-      return new PlcSTRING(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
-
-      // Manual Field (value)
-      String value =
-          (String)
-              (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.parseS7String(
-                  readBuffer, stringLength, "UTF-16"));
-
-      return new PlcSTRING(value);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
-
-      // Simple Field (milliseconds)
-      Integer milliseconds = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readInt("", 32);
-
-      return PlcTIME.ofMilliseconds(milliseconds);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
-
-      // Simple Field (nanoseconds)
-      BigInteger nanoseconds = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedBigInteger("", 64);
-
-      return PlcLTIME.ofNanoseconds(nanoseconds);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
-
-      // Simple Field (daysSinceSiemensEpoch)
-      Integer daysSinceSiemensEpoch = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedInt("", 16);
-
-      return PlcDATE.ofDaysSinceSiemensEpoch(daysSinceSiemensEpoch);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
-
-      // Simple Field (millisecondsSinceMidnight)
-      Long millisecondsSinceMidnight = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedLong("", 32);
-
-      return PlcTIME_OF_DAY.ofMillisecondsSinceMidnight(millisecondsSinceMidnight);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
-
-      // Simple Field (nanosecondsSinceMidnight)
-      BigInteger nanosecondsSinceMidnight = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedBigInteger("", 64);
-
-      return PlcLTIME_OF_DAY.ofNanosecondsSinceMidnight(nanosecondsSinceMidnight);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
-
-      // Simple Field (year)
-      Integer year = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
-
-      // Simple Field (month)
-      Short month = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (day)
-      Short day = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (dayOfWeek)
-      Short dayOfWeek = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (hour)
-      Short hour = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (minutes)
-      Short minutes = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (seconds)
-      Short seconds = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
-
-      // Simple Field (nanoseconds)
-      Long nanoseconds = /*TODO: migrate me*/ /*TODO: migrate me*/
-          readBuffer.readUnsignedLong("", 32);
-
-      return PlcDATE_AND_TIME.ofSegments(
-          year.intValue(),
-          (month == 0) ? 1 : month.intValue(),
-          (day == 0) ? 1 : day.intValue(),
-          hour.intValue(),
-          minutes.intValue(),
-          seconds.intValue(),
-          nanoseconds.intValue());
-    }
-    return null;
-  }
-
-  public static void staticSerialize(
-      WriteBuffer writeBuffer, PlcValue _value, String dataProtocolId, Integer stringLength)
-      throws SerializationException {
-    staticSerialize(writeBuffer, _value, dataProtocolId, stringLength, ByteOrder.BIG_ENDIAN);
-  }
-
-  public static void staticSerialize(
-      WriteBuffer writeBuffer,
-      PlcValue _value,
-      String dataProtocolId,
-      Integer stringLength,
-      ByteOrder byteOrder)
-      throws SerializationException {
-    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
-      // Reserved Field
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedByte("", 7, ((Number) (byte) 0x00).byteValue());
-      // Simple Field (value)
-      boolean value = (boolean) _value.getBoolean();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeBit("", (boolean) (value));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
-      // Simple Field (value)
-      short value = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (value)).shortValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
-      // Simple Field (value)
-      int value = (int) _value.getInt();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (value)).intValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
-      // Simple Field (value)
-      long value = (long) _value.getLong();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong("", 32, ((Number) (value)).longValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
-      // Simple Field (value)
-      BigInteger value = (BigInteger) _value.getBigInteger();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (value));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
-      // Simple Field (value)
-      byte value = (byte) _value.getByte();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeSignedByte("", 8, ((Number) (value)).byteValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
-      // Simple Field (value)
-      short value = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (value)).shortValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
-      // Simple Field (value)
-      short value = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeShort("", 16, ((Number) (value)).shortValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
-      // Simple Field (value)
-      int value = (int) _value.getInt();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (value)).intValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
-      // Simple Field (value)
-      int value = (int) _value.getInt();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeInt("", 32, ((Number) (value)).intValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
-      // Simple Field (value)
-      long value = (long) _value.getLong();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong("", 32, ((Number) (value)).longValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
-      // Simple Field (value)
-      long value = (long) _value.getLong();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeLong("", 64, ((Number) (value)).longValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
-      // Simple Field (value)
-      BigInteger value = (BigInteger) _value.getBigInteger();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (value));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
-      // Simple Field (value)
-      float value = (float) _value.getFloat();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeFloat("", 32, (value));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
-      // Simple Field (value)
-      double value = (double) _value.getDouble();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeDouble("", 64, (value));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
-      // Simple Field (value)
-      String value = (String) _value.getString();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeString(
-          "", 8, (String) (value), WithOption.WithEncoding("UTF-8"));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
-      // Simple Field (value)
-      String value = (String) _value.getString();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeString(
-          "", 16, (String) (value), WithOption.WithEncoding("UTF-16"));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
-      // Manual Field (value)
-      org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.serializeS7String(
-          writeBuffer, _value, stringLength, "UTF-8");
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
-      // Manual Field (value)
-      org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.serializeS7String(
-          writeBuffer, _value, stringLength, "UTF-16");
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
-      // Simple Field (milliseconds)
-      int milliseconds = (int) _value.getInt();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeInt("", 32, ((Number) (milliseconds)).intValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
-      // Simple Field (nanoseconds)
-      BigInteger nanoseconds = (BigInteger) _value.getBigInteger();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger("", 64, (BigInteger) (nanoseconds));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
-      // Simple Field (daysSinceSiemensEpoch)
-      int daysSinceSiemensEpoch = (int) ((PlcDATE) _value).getDaysSinceSiemensEpoch();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt(
-          "", 16, ((Number) (daysSinceSiemensEpoch)).intValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
-      // Simple Field (millisecondsSinceMidnight)
-      long millisecondsSinceMidnight = (long) _value.getLong();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong(
-          "", 32, ((Number) (millisecondsSinceMidnight)).longValue());
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
-      // Simple Field (nanosecondsSinceMidnight)
-      BigInteger nanosecondsSinceMidnight = (BigInteger) _value.getBigInteger();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedBigInteger(
-          "", 64, (BigInteger) (nanosecondsSinceMidnight));
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
-      // Simple Field (year)
-      int year = (int) _value.getInt();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (year)).intValue());
-      // Simple Field (month)
-      short month = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (month)).shortValue());
-      // Simple Field (day)
-      short day = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (day)).shortValue());
-      // Simple Field (dayOfWeek)
-      short dayOfWeek = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort(
-          "", 8, ((Number) (dayOfWeek)).shortValue());
-      // Simple Field (hour)
-      short hour = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (hour)).shortValue());
-      // Simple Field (minutes)
-      short minutes = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (minutes)).shortValue());
-      // Simple Field (seconds)
-      short seconds = (short) _value.getShort();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (seconds)).shortValue());
-      // Simple Field (nanoseconds)
-      long nanoseconds = (long) _value.getLong();
-      /*TODO: migrate me*/
-      /*TODO: migrate me*/ writeBuffer.writeUnsignedLong(
-          "", 32, ((Number) (nanoseconds)).longValue());
-    }
-  }
-
-  public static int getLengthInBytes(PlcValue _value, String dataProtocolId, Integer stringLength) {
-    return (int) Math.ceil((float) getLengthInBits(_value, dataProtocolId, stringLength) / 8.0);
-  }
-
-  public static int getLengthInBits(PlcValue _value, String dataProtocolId, Integer stringLength) {
-    int sizeInBits = 0;
-    if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BOOL")) { // BOOL
-      // Reserved Field
-      sizeInBits += 7;
-      // Simple Field (value)
-      sizeInBits += 1;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_BYTE")) { // BYTE
-      // Simple Field (value)
-      sizeInBits += 8;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WORD")) { // WORD
-      // Simple Field (value)
-      sizeInBits += 16;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DWORD")) { // DWORD
-      // Simple Field (value)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LWORD")) { // LWORD
-      // Simple Field (value)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_SINT")) { // SINT
-      // Simple Field (value)
-      sizeInBits += 8;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_USINT")) { // USINT
-      // Simple Field (value)
-      sizeInBits += 8;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_INT")) { // INT
-      // Simple Field (value)
-      sizeInBits += 16;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UINT")) { // UINT
-      // Simple Field (value)
-      sizeInBits += 16;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DINT")) { // DINT
-      // Simple Field (value)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_UDINT")) { // UDINT
-      // Simple Field (value)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LINT")) { // LINT
-      // Simple Field (value)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_ULINT")) { // ULINT
-      // Simple Field (value)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_REAL")) { // REAL
-      // Simple Field (value)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LREAL")) { // LREAL
-      // Simple Field (value)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_CHAR")) { // CHAR
-      // Simple Field (value)
-      sizeInBits += 8;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WCHAR")) { // CHAR
-      // Simple Field (value)
-      sizeInBits += 16;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
-      // Manual Field (value)
-      sizeInBits += (((stringLength) * (8))) + (16);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
-      // Manual Field (value)
-      sizeInBits += (((stringLength) * (16))) + (32);
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
-      // Simple Field (milliseconds)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
-      // Simple Field (nanoseconds)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE")) { // DATE
-      // Simple Field (daysSinceSiemensEpoch)
-      sizeInBits += 16;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME_OF_DAY")) { // TIME_OF_DAY
-      // Simple Field (millisecondsSinceMidnight)
-      sizeInBits += 32;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME_OF_DAY")) { // LTIME_OF_DAY
-      // Simple Field (nanosecondsSinceMidnight)
-      sizeInBits += 64;
-    } else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_DATE_AND_TIME")) { // DATE_AND_TIME
-      // Simple Field (year)
-      sizeInBits += 16;
-      // Simple Field (month)
-      sizeInBits += 8;
-      // Simple Field (day)
-      sizeInBits += 8;
-      // Simple Field (dayOfWeek)
-      sizeInBits += 8;
-      // Simple Field (hour)
-      sizeInBits += 8;
-      // Simple Field (minutes)
-      sizeInBits += 8;
-      // Simple Field (seconds)
-      sizeInBits += 8;
-      // Simple Field (nanoseconds)
-      sizeInBits += 32;
-    }
-    return sizeInBits;
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java
deleted file mode 100644
index 72da9d7152..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportErrorCode.java
+++ /dev/null
@@ -1,59 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum DataTransportErrorCode {
-  RESERVED((short) 0x00),
-  OK((short) 0xFF),
-  ACCESS_DENIED((short) 0x03),
-  INVALID_ADDRESS((short) 0x05),
-  DATA_TYPE_NOT_SUPPORTED((short) 0x06),
-  NOT_FOUND((short) 0x0A);
-  private static final Map<Short, DataTransportErrorCode> map;
-
-  static {
-    map = new HashMap<>();
-    for (DataTransportErrorCode value : DataTransportErrorCode.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  DataTransportErrorCode(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static DataTransportErrorCode enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
deleted file mode 100644
index bc667c57c3..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
+++ /dev/null
@@ -1,87 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum DataTransportSize {
-  NULL((short) 0x00, (boolean) false),
-  BIT((short) 0x03, (boolean) true),
-  BYTE_WORD_DWORD((short) 0x04, (boolean) true),
-  INTEGER((short) 0x05, (boolean) true),
-  DINTEGER((short) 0x06, (boolean) false),
-  REAL((short) 0x07, (boolean) false),
-  OCTET_STRING((short) 0x09, (boolean) false);
-  private static final Map<Short, DataTransportSize> map;
-
-  static {
-    map = new HashMap<>();
-    for (DataTransportSize value : DataTransportSize.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-  private final boolean sizeInBits;
-
-  DataTransportSize(short value, boolean sizeInBits) {
-    this.value = value;
-    this.sizeInBits = sizeInBits;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public boolean getSizeInBits() {
-    return sizeInBits;
-  }
-
-  public static DataTransportSize firstEnumForFieldSizeInBits(boolean fieldValue) {
-    for (DataTransportSize _val : DataTransportSize.values()) {
-      if (_val.getSizeInBits() == fieldValue) {
-        return _val;
-      }
-    }
-    return null;
-  }
-
-  public static List<DataTransportSize> enumsForFieldSizeInBits(boolean fieldValue) {
-    List<DataTransportSize> _values = new ArrayList<>();
-    for (DataTransportSize _val : DataTransportSize.values()) {
-      if (_val.getSizeInBits() == fieldValue) {
-        _values.add(_val);
-      }
-    }
-    return _values;
-  }
-
-  public static DataTransportSize enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java
deleted file mode 100644
index 6b52808638..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DateAndTime.java
+++ /dev/null
@@ -1,313 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class DateAndTime implements Message {
-
-  // Properties.
-  protected final short year;
-  protected final short month;
-  protected final short day;
-  protected final short hour;
-  protected final short minutes;
-  protected final short seconds;
-  protected final short msec;
-  protected final byte dow;
-
-  public DateAndTime(
-      short year,
-      short month,
-      short day,
-      short hour,
-      short minutes,
-      short seconds,
-      short msec,
-      byte dow) {
-    super();
-    this.year = year;
-    this.month = month;
-    this.day = day;
-    this.hour = hour;
-    this.minutes = minutes;
-    this.seconds = seconds;
-    this.msec = msec;
-    this.dow = dow;
-  }
-
-  public short getYear() {
-    return year;
-  }
-
-  public short getMonth() {
-    return month;
-  }
-
-  public short getDay() {
-    return day;
-  }
-
-  public short getHour() {
-    return hour;
-  }
-
-  public short getMinutes() {
-    return minutes;
-  }
-
-  public short getSeconds() {
-    return seconds;
-  }
-
-  public short getMsec() {
-    return msec;
-  }
-
-  public byte getDow() {
-    return dow;
-  }
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("DateAndTime");
-
-    // Manual Field (year)
-    writeManualField(
-        "year",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, year),
-        writeBuffer);
-
-    // Manual Field (month)
-    writeManualField(
-        "month",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, month),
-        writeBuffer);
-
-    // Manual Field (day)
-    writeManualField(
-        "day",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, day),
-        writeBuffer);
-
-    // Manual Field (hour)
-    writeManualField(
-        "hour",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, hour),
-        writeBuffer);
-
-    // Manual Field (minutes)
-    writeManualField(
-        "minutes",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, minutes),
-        writeBuffer);
-
-    // Manual Field (seconds)
-    writeManualField(
-        "seconds",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.ByteToBcd(writeBuffer, seconds),
-        writeBuffer);
-
-    // Manual Field (msec)
-    writeManualField(
-        "msec",
-        () -> org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.IntToS7msec(writeBuffer, msec),
-        writeBuffer);
-
-    // Simple Field (dow)
-    writeSimpleField("dow", dow, writeUnsignedByte(writeBuffer, 4));
-
-    writeBuffer.popContext("DateAndTime");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    DateAndTime _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Manual Field (year)
-    lengthInBits += 8;
-
-    // Manual Field (month)
-    lengthInBits += 8;
-
-    // Manual Field (day)
-    lengthInBits += 8;
-
-    // Manual Field (hour)
-    lengthInBits += 8;
-
-    // Manual Field (minutes)
-    lengthInBits += 8;
-
-    // Manual Field (seconds)
-    lengthInBits += 8;
-
-    // Manual Field (msec)
-    lengthInBits += 12;
-
-    // Simple field (dow)
-    lengthInBits += 4;
-
-    return lengthInBits;
-  }
-
-  public static DateAndTime staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static DateAndTime staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("DateAndTime");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short year =
-        readManualField(
-            "year",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short month =
-        readManualField(
-            "month",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short day =
-        readManualField(
-            "day",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short hour =
-        readManualField(
-            "hour",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short minutes =
-        readManualField(
-            "minutes",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short seconds =
-        readManualField(
-            "seconds",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.BcdToInt(readBuffer)));
-
-    short msec =
-        readManualField(
-            "msec",
-            readBuffer,
-            () ->
-                (short)
-                    (org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.S7msecToInt(
-                        readBuffer)));
-
-    byte dow = readSimpleField("dow", readUnsignedByte(readBuffer, 4));
-
-    readBuffer.closeContext("DateAndTime");
-    // Create the instance
-    DateAndTime _dateAndTime;
-    _dateAndTime = new DateAndTime(year, month, day, hour, minutes, seconds, msec, dow);
-    return _dateAndTime;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof DateAndTime)) {
-      return false;
-    }
-    DateAndTime that = (DateAndTime) o;
-    return (getYear() == that.getYear())
-        && (getMonth() == that.getMonth())
-        && (getDay() == that.getDay())
-        && (getHour() == that.getHour())
-        && (getMinutes() == that.getMinutes())
-        && (getSeconds() == that.getSeconds())
-        && (getMsec() == that.getMsec())
-        && (getDow() == that.getDow())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        getYear(),
-        getMonth(),
-        getDay(),
-        getHour(),
-        getMinutes(),
-        getSeconds(),
-        getMsec(),
-        getDow());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java
deleted file mode 100644
index 6386830857..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DeviceGroup.java
+++ /dev/null
@@ -1,56 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum DeviceGroup {
-  PG_OR_PC((short) 0x01),
-  OS((short) 0x02),
-  OTHERS((short) 0x03);
-  private static final Map<Short, DeviceGroup> map;
-
-  static {
-    map = new HashMap<>();
-    for (DeviceGroup value : DeviceGroup.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  DeviceGroup(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static DeviceGroup enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java
deleted file mode 100644
index b80be90877..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/EventType.java
+++ /dev/null
@@ -1,58 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum EventType {
-  MODE((short) 0x01),
-  SYS((short) 0x02),
-  USR((short) 0x04),
-  ALM((short) 0x80),
-  CYC((short) 0x69);
-  private static final Map<Short, EventType> map;
-
-  static {
-    map = new HashMap<>();
-    for (EventType value : EventType.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  EventType(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static EventType enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
deleted file mode 100644
index 16146f7ab2..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
+++ /dev/null
@@ -1,89 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum MemoryArea {
-  COUNTERS((short) 0x1C, (String) "C"),
-  TIMERS((short) 0x1D, (String) "T"),
-  DIRECT_PERIPHERAL_ACCESS((short) 0x80, (String) "D"),
-  INPUTS((short) 0x81, (String) "I"),
-  OUTPUTS((short) 0x82, (String) "Q"),
-  FLAGS_MARKERS((short) 0x83, (String) "M"),
-  DATA_BLOCKS((short) 0x84, (String) "DB"),
-  INSTANCE_DATA_BLOCKS((short) 0x85, (String) "DBI"),
-  LOCAL_DATA((short) 0x86, (String) "LD");
-  private static final Map<Short, MemoryArea> map;
-
-  static {
-    map = new HashMap<>();
-    for (MemoryArea value : MemoryArea.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-  private final String shortName;
-
-  MemoryArea(short value, String shortName) {
-    this.value = value;
-    this.shortName = shortName;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public String getShortName() {
-    return shortName;
-  }
-
-  public static MemoryArea firstEnumForFieldShortName(String fieldValue) {
-    for (MemoryArea _val : MemoryArea.values()) {
-      if (_val.getShortName().equals(fieldValue)) {
-        return _val;
-      }
-    }
-    return null;
-  }
-
-  public static List<MemoryArea> enumsForFieldShortName(String fieldValue) {
-    List<MemoryArea> _values = new ArrayList<>();
-    for (MemoryArea _val : MemoryArea.values()) {
-      if (_val.getShortName().equals(fieldValue)) {
-        _values.add(_val);
-      }
-    }
-    return _values;
-  }
-
-  public static MemoryArea enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java
deleted file mode 100644
index affc7ccb3e..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/ModeTransitionType.java
+++ /dev/null
@@ -1,62 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum ModeTransitionType {
-  STOP((short) 0x00),
-  WARM_RESTART((short) 0x01),
-  RUN((short) 0x02),
-  HOT_RESTART((short) 0x03),
-  HOLD((short) 0x04),
-  COLD_RESTART((short) 0x06),
-  RUN_R((short) 0x09),
-  LINK_UP((short) 0x11),
-  UPDATE((short) 0x12);
-  private static final Map<Short, ModeTransitionType> map;
-
-  static {
-    map = new HashMap<>();
-    for (ModeTransitionType value : ModeTransitionType.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  ModeTransitionType(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static ModeTransitionType enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java
deleted file mode 100644
index 6a0986380c..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/QueryType.java
+++ /dev/null
@@ -1,57 +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 org.apache.plc4x.java.s7.readwrite;
-
-import java.util.HashMap;
-import java.util.Map;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public enum QueryType {
-  BYALARMTYPE((short) 0x01),
-  ALARM_8((short) 0x02),
-  ALARM_S((short) 0x04),
-  ALARM_8P((short) 0x09);
-  private static final Map<Short, QueryType> map;
-
-  static {
-    map = new HashMap<>();
-    for (QueryType value : QueryType.values()) {
-      map.put((short) value.getValue(), value);
-    }
-  }
-
-  private final short value;
-
-  QueryType(short value) {
-    this.value = value;
-  }
-
-  public short getValue() {
-    return value;
-  }
-
-  public static QueryType enumForValue(short value) {
-    return map.get(value);
-  }
-
-  public static Boolean isDefined(short value) {
-    return map.containsKey(value);
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java
deleted file mode 100644
index 3fdb19bcae..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Address.java
+++ /dev/null
@@ -1,146 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class S7Address implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Short getAddressType();
-
-  public S7Address() {
-    super();
-  }
-
-  protected abstract void serializeS7AddressChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7Address");
-
-    // Discriminator Field (addressType) (Used as input to a switch field)
-    writeDiscriminatorField("addressType", getAddressType(), writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeS7AddressChild(writeBuffer);
-
-    writeBuffer.popContext("S7Address");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    S7Address _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Discriminator Field (addressType)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    return lengthInBits;
-  }
-
-  public static S7Address staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static S7Address staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("S7Address");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short addressType = readDiscriminatorField("addressType", readUnsignedShort(readBuffer, 8));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    S7AddressBuilder builder = null;
-    if (EvaluationHelper.equals(addressType, (short) 0x10)) {
-      builder = S7AddressAny.staticParseS7AddressBuilder(readBuffer);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "addressType="
-              + addressType
-              + "]");
-    }
-
-    readBuffer.closeContext("S7Address");
-    // Create the instance
-    S7Address _s7Address = builder.build();
-    return _s7Address;
-  }
-
-  public interface S7AddressBuilder {
-    S7Address build();
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7Address)) {
-      return false;
-    }
-    S7Address that = (S7Address) o;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash();
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
deleted file mode 100644
index d990a8d900..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
+++ /dev/null
@@ -1,276 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7AddressAny extends S7Address implements Message {
-
-  // Accessors for discriminator values.
-  public Short getAddressType() {
-    return (short) 0x10;
-  }
-
-  // Properties.
-  protected final TransportSize transportSize;
-  protected final int numberOfElements;
-  protected final int dbNumber;
-  protected final MemoryArea area;
-  protected final int byteAddress;
-  protected final byte bitAddress;
-
-  public S7AddressAny(
-      TransportSize transportSize,
-      int numberOfElements,
-      int dbNumber,
-      MemoryArea area,
-      int byteAddress,
-      byte bitAddress) {
-    super();
-    this.transportSize = transportSize;
-    this.numberOfElements = numberOfElements;
-    this.dbNumber = dbNumber;
-    this.area = area;
-    this.byteAddress = byteAddress;
-    this.bitAddress = bitAddress;
-  }
-
-  public TransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  public int getNumberOfElements() {
-    return numberOfElements;
-  }
-
-  public int getDbNumber() {
-    return dbNumber;
-  }
-
-  public MemoryArea getArea() {
-    return area;
-  }
-
-  public int getByteAddress() {
-    return byteAddress;
-  }
-
-  public byte getBitAddress() {
-    return bitAddress;
-  }
-
-  @Override
-  protected void serializeS7AddressChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7AddressAny");
-
-    // Enum field (transportSize)
-    writeEnumField(
-        "transportSize",
-        "TransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            TransportSize::getCode, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (numberOfElements)
-    writeSimpleField("numberOfElements", numberOfElements, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (dbNumber)
-    writeSimpleField("dbNumber", dbNumber, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (area)
-    writeSimpleEnumField(
-        "area",
-        "MemoryArea",
-        area,
-        new DataWriterEnumDefault<>(
-            MemoryArea::getValue, MemoryArea::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (byte) 0x00, writeUnsignedByte(writeBuffer, 5));
-
-    // Simple Field (byteAddress)
-    writeSimpleField("byteAddress", byteAddress, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (bitAddress)
-    writeSimpleField("bitAddress", bitAddress, writeUnsignedByte(writeBuffer, 3));
-
-    writeBuffer.popContext("S7AddressAny");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7AddressAny _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Enum Field (transportSize)
-    lengthInBits += 8;
-
-    // Simple field (numberOfElements)
-    lengthInBits += 16;
-
-    // Simple field (dbNumber)
-    lengthInBits += 16;
-
-    // Simple field (area)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 5;
-
-    // Simple field (byteAddress)
-    lengthInBits += 16;
-
-    // Simple field (bitAddress)
-    lengthInBits += 3;
-
-    return lengthInBits;
-  }
-
-  public static S7AddressBuilder staticParseS7AddressBuilder(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("S7AddressAny");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    TransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "TransportSize",
-            readEnum(TransportSize::firstEnumForFieldCode, readUnsignedShort(readBuffer, 8)));
-
-    int numberOfElements = readSimpleField("numberOfElements", readUnsignedInt(readBuffer, 16));
-
-    int dbNumber = readSimpleField("dbNumber", readUnsignedInt(readBuffer, 16));
-
-    MemoryArea area =
-        readEnumField(
-            "area",
-            "MemoryArea",
-            new DataReaderEnumDefault<>(
-                MemoryArea::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    Byte reservedField0 =
-        readReservedField("reserved", readUnsignedByte(readBuffer, 5), (byte) 0x00);
-
-    int byteAddress = readSimpleField("byteAddress", readUnsignedInt(readBuffer, 16));
-
-    byte bitAddress = readSimpleField("bitAddress", readUnsignedByte(readBuffer, 3));
-
-    readBuffer.closeContext("S7AddressAny");
-    // Create the instance
-    return new S7AddressAnyBuilderImpl(
-        transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
-  }
-
-  public static class S7AddressAnyBuilderImpl implements S7Address.S7AddressBuilder {
-    private final TransportSize transportSize;
-    private final int numberOfElements;
-    private final int dbNumber;
-    private final MemoryArea area;
-    private final int byteAddress;
-    private final byte bitAddress;
-
-    public S7AddressAnyBuilderImpl(
-        TransportSize transportSize,
-        int numberOfElements,
-        int dbNumber,
-        MemoryArea area,
-        int byteAddress,
-        byte bitAddress) {
-      this.transportSize = transportSize;
-      this.numberOfElements = numberOfElements;
-      this.dbNumber = dbNumber;
-      this.area = area;
-      this.byteAddress = byteAddress;
-      this.bitAddress = bitAddress;
-    }
-
-    public S7AddressAny build() {
-      S7AddressAny s7AddressAny =
-          new S7AddressAny(
-              transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
-      return s7AddressAny;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7AddressAny)) {
-      return false;
-    }
-    S7AddressAny that = (S7AddressAny) o;
-    return (getTransportSize() == that.getTransportSize())
-        && (getNumberOfElements() == that.getNumberOfElements())
-        && (getDbNumber() == that.getDbNumber())
-        && (getArea() == that.getArea())
-        && (getByteAddress() == that.getByteAddress())
-        && (getBitAddress() == that.getBitAddress())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        super.hashCode(),
-        getTransportSize(),
-        getNumberOfElements(),
-        getDbNumber(),
-        getArea(),
-        getByteAddress(),
-        getBitAddress());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java
deleted file mode 100644
index 92e453cc40..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7DataAlarmMessage.java
+++ /dev/null
@@ -1,192 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class S7DataAlarmMessage implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Byte getCpuFunctionType();
-
-  // Constant values.
-  public static final Short FUNCTIONID = 0x00;
-  public static final Short NUMBERMESSAGEOBJ = 0x01;
-
-  public S7DataAlarmMessage() {
-    super();
-  }
-
-  public short getFunctionId() {
-    return FUNCTIONID;
-  }
-
-  public short getNumberMessageObj() {
-    return NUMBERMESSAGEOBJ;
-  }
-
-  protected abstract void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7DataAlarmMessage");
-
-    // Const Field (functionId)
-    writeConstField("functionId", FUNCTIONID, writeUnsignedShort(writeBuffer, 8));
-
-    // Const Field (numberMessageObj)
-    writeConstField("numberMessageObj", NUMBERMESSAGEOBJ, writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeS7DataAlarmMessageChild(writeBuffer);
-
-    writeBuffer.popContext("S7DataAlarmMessage");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    S7DataAlarmMessage _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (functionId)
-    lengthInBits += 8;
-
-    // Const Field (numberMessageObj)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    return lengthInBits;
-  }
-
-  public static S7DataAlarmMessage staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    if ((args == null) || (args.length != 1)) {
-      throw new PlcRuntimeException(
-          "Wrong number of arguments, expected 1, but got " + args.length);
-    }
-    Byte cpuFunctionType;
-    if (args[0] instanceof Byte) {
-      cpuFunctionType = (Byte) args[0];
-    } else if (args[0] instanceof String) {
-      cpuFunctionType = Byte.valueOf((String) args[0]);
-    } else {
-      throw new PlcRuntimeException(
-          "Argument 0 expected to be of type Byte or a string which is parseable but was "
-              + args[0].getClass().getName());
-    }
-    return staticParse(readBuffer, cpuFunctionType);
-  }
-
-  public static S7DataAlarmMessage staticParse(ReadBuffer readBuffer, Byte cpuFunctionType)
-      throws ParseException {
-    readBuffer.pullContext("S7DataAlarmMessage");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short functionId =
-        readConstField(
-            "functionId", readUnsignedShort(readBuffer, 8), S7DataAlarmMessage.FUNCTIONID);
-
-    short numberMessageObj =
-        readConstField(
-            "numberMessageObj",
-            readUnsignedShort(readBuffer, 8),
-            S7DataAlarmMessage.NUMBERMESSAGEOBJ);
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    S7DataAlarmMessageBuilder builder = null;
-    if (EvaluationHelper.equals(cpuFunctionType, (byte) 0x04)) {
-      builder =
-          S7MessageObjectRequest.staticParseS7DataAlarmMessageBuilder(readBuffer, cpuFunctionType);
-    } else if (EvaluationHelper.equals(cpuFunctionType, (byte) 0x08)) {
-      builder =
-          S7MessageObjectResponse.staticParseS7DataAlarmMessageBuilder(readBuffer, cpuFunctionType);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "cpuFunctionType="
-              + cpuFunctionType
-              + "]");
-    }
-
-    readBuffer.closeContext("S7DataAlarmMessage");
-    // Create the instance
-    S7DataAlarmMessage _s7DataAlarmMessage = builder.build();
-    return _s7DataAlarmMessage;
-  }
-
-  public interface S7DataAlarmMessageBuilder {
-    S7DataAlarmMessage build();
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7DataAlarmMessage)) {
-      return false;
-    }
-    S7DataAlarmMessage that = (S7DataAlarmMessage) o;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash();
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
deleted file mode 100644
index 19cf023dbf..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
+++ /dev/null
@@ -1,262 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class S7Message implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Short getMessageType();
-
-  // Constant values.
-  public static final Short PROTOCOLID = 0x32;
-
-  // Properties.
-  protected final int tpduReference;
-  protected final S7Parameter parameter;
-  protected final S7Payload payload;
-
-  public S7Message(int tpduReference, S7Parameter parameter, S7Payload payload) {
-    super();
-    this.tpduReference = tpduReference;
-    this.parameter = parameter;
-    this.payload = payload;
-  }
-
-  public int getTpduReference() {
-    return tpduReference;
-  }
-
-  public S7Parameter getParameter() {
-    return parameter;
-  }
-
-  public S7Payload getPayload() {
-    return payload;
-  }
-
-  public short getProtocolId() {
-    return PROTOCOLID;
-  }
-
-  protected abstract void serializeS7MessageChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7Message");
-
-    // Const Field (protocolId)
-    writeConstField("protocolId", PROTOCOLID, writeUnsignedShort(writeBuffer, 8));
-
-    // Discriminator Field (messageType) (Used as input to a switch field)
-    writeDiscriminatorField("messageType", getMessageType(), writeUnsignedShort(writeBuffer, 8));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
-
-    // Simple Field (tpduReference)
-    writeSimpleField("tpduReference", tpduReference, writeUnsignedInt(writeBuffer, 16));
-
-    // Implicit Field (parameterLength) (Used for parsing, but its value is not stored as it's
-    // implicitly given by the objects content)
-    int parameterLength =
-        (int) ((((getParameter()) != (null)) ? getParameter().getLengthInBytes() : 0));
-    writeImplicitField("parameterLength", parameterLength, writeUnsignedInt(writeBuffer, 16));
-
-    // Implicit Field (payloadLength) (Used for parsing, but its value is not stored as it's
-    // implicitly given by the objects content)
-    int payloadLength = (int) ((((getPayload()) != (null)) ? getPayload().getLengthInBytes() : 0));
-    writeImplicitField("payloadLength", payloadLength, writeUnsignedInt(writeBuffer, 16));
-
-    // Switch field (Serialize the sub-type)
-    serializeS7MessageChild(writeBuffer);
-
-    // Optional Field (parameter) (Can be skipped, if the value is null)
-    writeOptionalField("parameter", parameter, new DataWriterComplexDefault<>(writeBuffer));
-
-    // Optional Field (payload) (Can be skipped, if the value is null)
-    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
-
-    writeBuffer.popContext("S7Message");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    S7Message _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (protocolId)
-    lengthInBits += 8;
-
-    // Discriminator Field (messageType)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 16;
-
-    // Simple field (tpduReference)
-    lengthInBits += 16;
-
-    // Implicit Field (parameterLength)
-    lengthInBits += 16;
-
-    // Implicit Field (payloadLength)
-    lengthInBits += 16;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    // Optional Field (parameter)
-    if (parameter != null) {
-      lengthInBits += parameter.getLengthInBits();
-    }
-
-    // Optional Field (payload)
-    if (payload != null) {
-      lengthInBits += payload.getLengthInBits();
-    }
-
-    return lengthInBits;
-  }
-
-  public static S7Message staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
-    PositionAware positionAware = readBuffer;
-    return staticParse(readBuffer);
-  }
-
-  public static S7Message staticParse(ReadBuffer readBuffer) throws ParseException {
-    readBuffer.pullContext("S7Message");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short protocolId =
-        readConstField("protocolId", readUnsignedShort(readBuffer, 8), S7Message.PROTOCOLID);
-
-    short messageType = readDiscriminatorField("messageType", readUnsignedShort(readBuffer, 8));
-
-    Integer reservedField0 =
-        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
-
-    int tpduReference = readSimpleField("tpduReference", readUnsignedInt(readBuffer, 16));
-
-    int parameterLength = readImplicitField("parameterLength", readUnsignedInt(readBuffer, 16));
-
-    int payloadLength = readImplicitField("payloadLength", readUnsignedInt(readBuffer, 16));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    S7MessageBuilder builder = null;
-    if (EvaluationHelper.equals(messageType, (short) 0x01)) {
-      builder = S7MessageRequest.staticParseS7MessageBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(messageType, (short) 0x02)) {
-      builder = S7MessageResponse.staticParseS7MessageBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(messageType, (short) 0x03)) {
-      builder = S7MessageResponseData.staticParseS7MessageBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(messageType, (short) 0x07)) {
-      builder = S7MessageUserData.staticParseS7MessageBuilder(readBuffer);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "messageType="
-              + messageType
-              + "]");
-    }
-
-    S7Parameter parameter =
-        readOptionalField(
-            "parameter",
-            new DataReaderComplexDefault<>(
-                () -> S7Parameter.staticParse(readBuffer, (short) (messageType)), readBuffer),
-            (parameterLength) > (0));
-
-    S7Payload payload =
-        readOptionalField(
-            "payload",
-            new DataReaderComplexDefault<>(
-                () ->
-                    S7Payload.staticParse(
-                        readBuffer, (short) (messageType), (S7Parameter) (parameter)),
-                readBuffer),
-            (payloadLength) > (0));
-
-    readBuffer.closeContext("S7Message");
-    // Create the instance
-    S7Message _s7Message = builder.build(tpduReference, parameter, payload);
-    return _s7Message;
-  }
-
-  public interface S7MessageBuilder {
-    S7Message build(int tpduReference, S7Parameter parameter, S7Payload payload);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7Message)) {
-      return false;
-    }
-    S7Message that = (S7Message) o;
-    return (getTpduReference() == that.getTpduReference())
-        && (getParameter() == that.getParameter())
-        && (getPayload() == that.getPayload())
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(getTpduReference(), getParameter(), getPayload());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
deleted file mode 100644
index fcdf0b49c2..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
+++ /dev/null
@@ -1,256 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageObjectRequest extends S7DataAlarmMessage implements Message {
-
-  // Accessors for discriminator values.
-  public Byte getCpuFunctionType() {
-    return (byte) 0x04;
-  }
-
-  // Constant values.
-  public static final Short VARIABLESPEC = 0x12;
-  public static final Short LENGTH = 0x08;
-
-  // Properties.
-  protected final SyntaxIdType syntaxId;
-  protected final QueryType queryType;
-  protected final AlarmType alarmType;
-
-  public S7MessageObjectRequest(SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
-    super();
-    this.syntaxId = syntaxId;
-    this.queryType = queryType;
-    this.alarmType = alarmType;
-  }
-
-  public SyntaxIdType getSyntaxId() {
-    return syntaxId;
-  }
-
-  public QueryType getQueryType() {
-    return queryType;
-  }
-
-  public AlarmType getAlarmType() {
-    return alarmType;
-  }
-
-  public short getVariableSpec() {
-    return VARIABLESPEC;
-  }
-
-  public short getLength() {
-    return LENGTH;
-  }
-
-  @Override
-  protected void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageObjectRequest");
-
-    // Const Field (variableSpec)
-    writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
-
-    // Const Field (length)
-    writeConstField("length", LENGTH, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (syntaxId)
-    writeSimpleEnumField(
-        "syntaxId",
-        "SyntaxIdType",
-        syntaxId,
-        new DataWriterEnumDefault<>(
-            SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (queryType)
-    writeSimpleEnumField(
-        "queryType",
-        "QueryType",
-        queryType,
-        new DataWriterEnumDefault<>(
-            QueryType::getValue, QueryType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (short) 0x34, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (alarmType)
-    writeSimpleEnumField(
-        "alarmType",
-        "AlarmType",
-        alarmType,
-        new DataWriterEnumDefault<>(
-            AlarmType::getValue, AlarmType::name, writeUnsignedShort(writeBuffer, 8)));
-
-    writeBuffer.popContext("S7MessageObjectRequest");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageObjectRequest _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Const Field (variableSpec)
-    lengthInBits += 8;
-
-    // Const Field (length)
-    lengthInBits += 8;
-
-    // Simple field (syntaxId)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 8;
-
-    // Simple field (queryType)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 8;
-
-    // Simple field (alarmType)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static S7DataAlarmMessageBuilder staticParseS7DataAlarmMessageBuilder(
-      ReadBuffer readBuffer, Byte cpuFunctionType) throws ParseException {
-    readBuffer.pullContext("S7MessageObjectRequest");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short variableSpec =
-        readConstField(
-            "variableSpec", readUnsignedShort(readBuffer, 8), S7MessageObjectRequest.VARIABLESPEC);
-
-    short length =
-        readConstField("length", readUnsignedShort(readBuffer, 8), S7MessageObjectRequest.LENGTH);
-
-    SyntaxIdType syntaxId =
-        readEnumField(
-            "syntaxId",
-            "SyntaxIdType",
-            new DataReaderEnumDefault<>(
-                SyntaxIdType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    Short reservedField0 =
-        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
-
-    QueryType queryType =
-        readEnumField(
-            "queryType",
-            "QueryType",
-            new DataReaderEnumDefault<>(QueryType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    Short reservedField1 =
-        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x34);
-
-    AlarmType alarmType =
-        readEnumField(
-            "alarmType",
-            "AlarmType",
-            new DataReaderEnumDefault<>(AlarmType::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    readBuffer.closeContext("S7MessageObjectRequest");
-    // Create the instance
-    return new S7MessageObjectRequestBuilderImpl(syntaxId, queryType, alarmType);
-  }
-
-  public static class S7MessageObjectRequestBuilderImpl
-      implements S7DataAlarmMessage.S7DataAlarmMessageBuilder {
-    private final SyntaxIdType syntaxId;
-    private final QueryType queryType;
-    private final AlarmType alarmType;
-
-    public S7MessageObjectRequestBuilderImpl(
-        SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
-      this.syntaxId = syntaxId;
-      this.queryType = queryType;
-      this.alarmType = alarmType;
-    }
-
-    public S7MessageObjectRequest build() {
-      S7MessageObjectRequest s7MessageObjectRequest =
-          new S7MessageObjectRequest(syntaxId, queryType, alarmType);
-      return s7MessageObjectRequest;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageObjectRequest)) {
-      return false;
-    }
-    S7MessageObjectRequest that = (S7MessageObjectRequest) o;
-    return (getSyntaxId() == that.getSyntaxId())
-        && (getQueryType() == that.getQueryType())
-        && (getAlarmType() == that.getAlarmType())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getSyntaxId(), getQueryType(), getAlarmType());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
deleted file mode 100644
index 812a27a0bc..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
+++ /dev/null
@@ -1,196 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageObjectResponse extends S7DataAlarmMessage implements Message {
-
-  // Accessors for discriminator values.
-  public Byte getCpuFunctionType() {
-    return (byte) 0x08;
-  }
-
-  // Properties.
-  protected final DataTransportErrorCode returnCode;
-  protected final DataTransportSize transportSize;
-
-  public S7MessageObjectResponse(
-      DataTransportErrorCode returnCode, DataTransportSize transportSize) {
-    super();
-    this.returnCode = returnCode;
-    this.transportSize = transportSize;
-  }
-
-  public DataTransportErrorCode getReturnCode() {
-    return returnCode;
-  }
-
-  public DataTransportSize getTransportSize() {
-    return transportSize;
-  }
-
-  @Override
-  protected void serializeS7DataAlarmMessageChild(WriteBuffer writeBuffer)
-      throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageObjectResponse");
-
-    // Simple Field (returnCode)
-    writeSimpleEnumField(
-        "returnCode",
-        "DataTransportErrorCode",
-        returnCode,
-        new DataWriterEnumDefault<>(
-            DataTransportErrorCode::getValue,
-            DataTransportErrorCode::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Simple Field (transportSize)
-    writeSimpleEnumField(
-        "transportSize",
-        "DataTransportSize",
-        transportSize,
-        new DataWriterEnumDefault<>(
-            DataTransportSize::getValue,
-            DataTransportSize::name,
-            writeUnsignedShort(writeBuffer, 8)));
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("S7MessageObjectResponse");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageObjectResponse _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (returnCode)
-    lengthInBits += 8;
-
-    // Simple field (transportSize)
-    lengthInBits += 8;
-
-    // Reserved Field (reserved)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static S7DataAlarmMessageBuilder staticParseS7DataAlarmMessageBuilder(
-      ReadBuffer readBuffer, Byte cpuFunctionType) throws ParseException {
-    readBuffer.pullContext("S7MessageObjectResponse");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    DataTransportErrorCode returnCode =
-        readEnumField(
-            "returnCode",
-            "DataTransportErrorCode",
-            new DataReaderEnumDefault<>(
-                DataTransportErrorCode::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    DataTransportSize transportSize =
-        readEnumField(
-            "transportSize",
-            "DataTransportSize",
-            new DataReaderEnumDefault<>(
-                DataTransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
-
-    Short reservedField0 =
-        readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
-
-    readBuffer.closeContext("S7MessageObjectResponse");
-    // Create the instance
-    return new S7MessageObjectResponseBuilderImpl(returnCode, transportSize);
-  }
-
-  public static class S7MessageObjectResponseBuilderImpl
-      implements S7DataAlarmMessage.S7DataAlarmMessageBuilder {
-    private final DataTransportErrorCode returnCode;
-    private final DataTransportSize transportSize;
-
-    public S7MessageObjectResponseBuilderImpl(
-        DataTransportErrorCode returnCode, DataTransportSize transportSize) {
-      this.returnCode = returnCode;
-      this.transportSize = transportSize;
-    }
-
-    public S7MessageObjectResponse build() {
-      S7MessageObjectResponse s7MessageObjectResponse =
-          new S7MessageObjectResponse(returnCode, transportSize);
-      return s7MessageObjectResponse;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageObjectResponse)) {
-      return false;
-    }
-    S7MessageObjectResponse that = (S7MessageObjectResponse) o;
-    return (getReturnCode() == that.getReturnCode())
-        && (getTransportSize() == that.getTransportSize())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getReturnCode(), getTransportSize());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java
deleted file mode 100644
index d7f55537d4..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageRequest.java
+++ /dev/null
@@ -1,120 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageRequest extends S7Message implements Message {
-
-  // Accessors for discriminator values.
-  public Short getMessageType() {
-    return (short) 0x01;
-  }
-
-  public S7MessageRequest(int tpduReference, S7Parameter parameter, S7Payload payload) {
-    super(tpduReference, parameter, payload);
-  }
-
-  @Override
-  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageRequest");
-
-    writeBuffer.popContext("S7MessageRequest");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageRequest _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    return lengthInBits;
-  }
-
-  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("S7MessageRequest");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    readBuffer.closeContext("S7MessageRequest");
-    // Create the instance
-    return new S7MessageRequestBuilderImpl();
-  }
-
-  public static class S7MessageRequestBuilderImpl implements S7Message.S7MessageBuilder {
-
-    public S7MessageRequestBuilderImpl() {}
-
-    public S7MessageRequest build(int tpduReference, S7Parameter parameter, S7Payload payload) {
-      S7MessageRequest s7MessageRequest = new S7MessageRequest(tpduReference, parameter, payload);
-      return s7MessageRequest;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageRequest)) {
-      return false;
-    }
-    S7MessageRequest that = (S7MessageRequest) o;
-    return super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java
deleted file mode 100644
index c32725f02a..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponse.java
+++ /dev/null
@@ -1,164 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageResponse extends S7Message implements Message {
-
-  // Accessors for discriminator values.
-  public Short getMessageType() {
-    return (short) 0x02;
-  }
-
-  // Properties.
-  protected final short errorClass;
-  protected final short errorCode;
-
-  public S7MessageResponse(
-      int tpduReference,
-      S7Parameter parameter,
-      S7Payload payload,
-      short errorClass,
-      short errorCode) {
-    super(tpduReference, parameter, payload);
-    this.errorClass = errorClass;
-    this.errorCode = errorCode;
-  }
-
-  public short getErrorClass() {
-    return errorClass;
-  }
-
-  public short getErrorCode() {
-    return errorCode;
-  }
-
-  @Override
-  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageResponse");
-
-    // Simple Field (errorClass)
-    writeSimpleField("errorClass", errorClass, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (errorCode)
-    writeSimpleField("errorCode", errorCode, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("S7MessageResponse");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageResponse _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (errorClass)
-    lengthInBits += 8;
-
-    // Simple field (errorCode)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("S7MessageResponse");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short errorClass = readSimpleField("errorClass", readUnsignedShort(readBuffer, 8));
-
-    short errorCode = readSimpleField("errorCode", readUnsignedShort(readBuffer, 8));
-
-    readBuffer.closeContext("S7MessageResponse");
-    // Create the instance
-    return new S7MessageResponseBuilderImpl(errorClass, errorCode);
-  }
-
-  public static class S7MessageResponseBuilderImpl implements S7Message.S7MessageBuilder {
-    private final short errorClass;
-    private final short errorCode;
-
-    public S7MessageResponseBuilderImpl(short errorClass, short errorCode) {
-      this.errorClass = errorClass;
-      this.errorCode = errorCode;
-    }
-
-    public S7MessageResponse build(int tpduReference, S7Parameter parameter, S7Payload payload) {
-      S7MessageResponse s7MessageResponse =
-          new S7MessageResponse(tpduReference, parameter, payload, errorClass, errorCode);
-      return s7MessageResponse;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageResponse)) {
-      return false;
-    }
-    S7MessageResponse that = (S7MessageResponse) o;
-    return (getErrorClass() == that.getErrorClass())
-        && (getErrorCode() == that.getErrorCode())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getErrorClass(), getErrorCode());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java
deleted file mode 100644
index a4e957df96..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageResponseData.java
+++ /dev/null
@@ -1,165 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageResponseData extends S7Message implements Message {
-
-  // Accessors for discriminator values.
-  public Short getMessageType() {
-    return (short) 0x03;
-  }
-
-  // Properties.
-  protected final short errorClass;
-  protected final short errorCode;
-
-  public S7MessageResponseData(
-      int tpduReference,
-      S7Parameter parameter,
-      S7Payload payload,
-      short errorClass,
-      short errorCode) {
-    super(tpduReference, parameter, payload);
-    this.errorClass = errorClass;
-    this.errorCode = errorCode;
-  }
-
-  public short getErrorClass() {
-    return errorClass;
-  }
-
-  public short getErrorCode() {
-    return errorCode;
-  }
-
-  @Override
-  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageResponseData");
-
-    // Simple Field (errorClass)
-    writeSimpleField("errorClass", errorClass, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (errorCode)
-    writeSimpleField("errorCode", errorCode, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("S7MessageResponseData");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageResponseData _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Simple field (errorClass)
-    lengthInBits += 8;
-
-    // Simple field (errorCode)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("S7MessageResponseData");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short errorClass = readSimpleField("errorClass", readUnsignedShort(readBuffer, 8));
-
-    short errorCode = readSimpleField("errorCode", readUnsignedShort(readBuffer, 8));
-
-    readBuffer.closeContext("S7MessageResponseData");
-    // Create the instance
-    return new S7MessageResponseDataBuilderImpl(errorClass, errorCode);
-  }
-
-  public static class S7MessageResponseDataBuilderImpl implements S7Message.S7MessageBuilder {
-    private final short errorClass;
-    private final short errorCode;
-
-    public S7MessageResponseDataBuilderImpl(short errorClass, short errorCode) {
-      this.errorClass = errorClass;
-      this.errorCode = errorCode;
-    }
-
-    public S7MessageResponseData build(
-        int tpduReference, S7Parameter parameter, S7Payload payload) {
-      S7MessageResponseData s7MessageResponseData =
-          new S7MessageResponseData(tpduReference, parameter, payload, errorClass, errorCode);
-      return s7MessageResponseData;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageResponseData)) {
-      return false;
-    }
-    S7MessageResponseData that = (S7MessageResponseData) o;
-    return (getErrorClass() == that.getErrorClass())
-        && (getErrorCode() == that.getErrorCode())
-        && super.equals(that)
-        && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), getErrorClass(), getErrorCode());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java
deleted file mode 100644
index 93c380103c..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageUserData.java
+++ /dev/null
@@ -1,121 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7MessageUserData extends S7Message implements Message {
-
-  // Accessors for discriminator values.
-  public Short getMessageType() {
-    return (short) 0x07;
-  }
-
-  public S7MessageUserData(int tpduReference, S7Parameter parameter, S7Payload payload) {
-    super(tpduReference, parameter, payload);
-  }
-
-  @Override
-  protected void serializeS7MessageChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7MessageUserData");
-
-    writeBuffer.popContext("S7MessageUserData");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7MessageUserData _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    return lengthInBits;
-  }
-
-  public static S7MessageBuilder staticParseS7MessageBuilder(ReadBuffer readBuffer)
-      throws ParseException {
-    readBuffer.pullContext("S7MessageUserData");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    readBuffer.closeContext("S7MessageUserData");
-    // Create the instance
-    return new S7MessageUserDataBuilderImpl();
-  }
-
-  public static class S7MessageUserDataBuilderImpl implements S7Message.S7MessageBuilder {
-
-    public S7MessageUserDataBuilderImpl() {}
-
-    public S7MessageUserData build(int tpduReference, S7Parameter parameter, S7Payload payload) {
-      S7MessageUserData s7MessageUserData =
-          new S7MessageUserData(tpduReference, parameter, payload);
-      return s7MessageUserData;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7MessageUserData)) {
-      return false;
-    }
-    S7MessageUserData that = (S7MessageUserData) o;
-    return super.equals(that) && true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode());
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java
deleted file mode 100644
index d02b952230..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Parameter.java
+++ /dev/null
@@ -1,187 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public abstract class S7Parameter implements Message {
-
-  // Abstract accessors for discriminator values.
-  public abstract Short getMessageType();
-
-  public abstract Short getParameterType();
-
-  public S7Parameter() {
-    super();
-  }
-
-  protected abstract void serializeS7ParameterChild(WriteBuffer writeBuffer)
-      throws SerializationException;
-
-  public void serialize(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7Parameter");
-
-    // Discriminator Field (parameterType) (Used as input to a switch field)
-    writeDiscriminatorField(
-        "parameterType", getParameterType(), writeUnsignedShort(writeBuffer, 8));
-
-    // Switch field (Serialize the sub-type)
-    serializeS7ParameterChild(writeBuffer);
-
-    writeBuffer.popContext("S7Parameter");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = 0;
-    S7Parameter _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Discriminator Field (parameterType)
-    lengthInBits += 8;
-
-    // Length of sub-type elements will be added by sub-type...
-
-    return lengthInBits;
-  }
-
-  public static S7Parameter staticParse(ReadBuffer readBuffer, Object... args)
-      throws ParseException {
-    PositionAware positionAware = readBuffer;
-    if ((args == null) || (args.length != 1)) {
-      throw new PlcRuntimeException(
-          "Wrong number of arguments, expected 1, but got " + args.length);
-    }
-    Short messageType;
-    if (args[0] instanceof Short) {
-      messageType = (Short) args[0];
-    } else if (args[0] instanceof String) {
-      messageType = Short.valueOf((String) args[0]);
-    } else {
-      throw new PlcRuntimeException(
-          "Argument 0 expected to be of type Short or a string which is parseable but was "
-              + args[0].getClass().getName());
-    }
-    return staticParse(readBuffer, messageType);
-  }
-
-  public static S7Parameter staticParse(ReadBuffer readBuffer, Short messageType)
-      throws ParseException {
-    readBuffer.pullContext("S7Parameter");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    short parameterType = readDiscriminatorField("parameterType", readUnsignedShort(readBuffer, 8));
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    S7ParameterBuilder builder = null;
-    if (EvaluationHelper.equals(parameterType, (short) 0xF0)) {
-      builder =
-          S7ParameterSetupCommunication.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x04)
-        && EvaluationHelper.equals(messageType, (short) 0x01)) {
-      builder = S7ParameterReadVarRequest.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x04)
-        && EvaluationHelper.equals(messageType, (short) 0x03)) {
-      builder = S7ParameterReadVarResponse.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x05)
-        && EvaluationHelper.equals(messageType, (short) 0x01)) {
-      builder = S7ParameterWriteVarRequest.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x05)
-        && EvaluationHelper.equals(messageType, (short) 0x03)) {
-      builder = S7ParameterWriteVarResponse.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x00)
-        && EvaluationHelper.equals(messageType, (short) 0x07)) {
-      builder = S7ParameterUserData.staticParseS7ParameterBuilder(readBuffer, messageType);
-    } else if (EvaluationHelper.equals(parameterType, (short) 0x01)
-        && EvaluationHelper.equals(messageType, (short) 0x07)) {
-      builder = S7ParameterModeTransition.staticParseS7ParameterBuilder(readBuffer, messageType);
-    }
-    if (builder == null) {
-      throw new ParseException(
-          "Unsupported case for discriminated type"
-              + " parameters ["
-              + "parameterType="
-              + parameterType
-              + " "
-              + "messageType="
-              + messageType
-              + "]");
-    }
-
-    readBuffer.closeContext("S7Parameter");
-    // Create the instance
-    S7Parameter _s7Parameter = builder.build();
-    return _s7Parameter;
-  }
-
-  public interface S7ParameterBuilder {
-    S7Parameter build();
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof S7Parameter)) {
-      return false;
-    }
-    S7Parameter that = (S7Parameter) o;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash();
-  }
-
-  @Override
-  public String toString() {
-    WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
-    try {
-      writeBufferBoxBased.writeSerializable(this);
-    } catch (SerializationException e) {
-      throw new RuntimeException(e);
-    }
-    return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
-  }
-}
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
deleted file mode 100644
index 8858e89a02..0000000000
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
+++ /dev/null
@@ -1,252 +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 org.apache.plc4x.java.s7.readwrite;
-
-import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
-import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import java.time.*;
-import java.util.*;
-import org.apache.plc4x.java.api.exceptions.*;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.codegen.*;
-import org.apache.plc4x.java.spi.codegen.fields.*;
-import org.apache.plc4x.java.spi.codegen.io.*;
-import org.apache.plc4x.java.spi.generation.*;
-
-// Code generated by code-generation. DO NOT EDIT.
-
-public class S7ParameterModeTransition extends S7Parameter implements Message {
-
-  // Accessors for discriminator values.
-  public Short getParameterType() {
-    return (short) 0x01;
-  }
-
-  public Short getMessageType() {
-    return (short) 0x07;
-  }
-
-  // Properties.
-  protected final short method;
-  protected final byte cpuFunctionType;
-  protected final byte cpuFunctionGroup;
-  protected final short currentMode;
-  protected final short sequenceNumber;
-
-  public S7ParameterModeTransition(
-      short method,
-      byte cpuFunctionType,
-      byte cpuFunctionGroup,
-      short currentMode,
-      short sequenceNumber) {
-    super();
-    this.method = method;
-    this.cpuFunctionType = cpuFunctionType;
-    this.cpuFunctionGroup = cpuFunctionGroup;
-    this.currentMode = currentMode;
-    this.sequenceNumber = sequenceNumber;
-  }
-
-  public short getMethod() {
-    return method;
-  }
-
-  public byte getCpuFunctionType() {
-    return cpuFunctionType;
-  }
-
-  public byte getCpuFunctionGroup() {
-    return cpuFunctionGroup;
-  }
-
-  public short getCurrentMode() {
-    return currentMode;
-  }
-
-  public short getSequenceNumber() {
-    return sequenceNumber;
-  }
-
-  @Override
-  protected void serializeS7ParameterChild(WriteBuffer writeBuffer) throws SerializationException {
-    PositionAware positionAware = writeBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-    writeBuffer.pushContext("S7ParameterModeTransition");
-
-    // Reserved Field (reserved)
-    writeReservedField("reserved", (int) 0x0010, writeUnsignedInt(writeBuffer, 16));
-
-    // Implicit Field (itemLength) (Used for parsing, but its value is not stored as it's implicitly
-    // given by the objects content)
-    short itemLength = (short) ((getLengthInBytes()) - (2));
-    writeImplicitField("itemLength", itemLength, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (method)
-    writeSimpleField("method", method, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (cpuFunctionType)
-    writeSimpleField("cpuFunctionType", cpuFunctionType, writeUnsignedByte(writeBuffer, 4));
-
-    // Simple Field (cpuFunctionGroup)
-    writeSimpleField("cpuFunctionGroup", cpuFunctionGroup, writeUnsignedByte(writeBuffer, 4));
-
-    // Simple Field (currentMode)
-    writeSimpleField("currentMode", currentMode, writeUnsignedShort(writeBuffer, 8));
-
-    // Simple Field (sequenceNumber)
-    writeSimpleField("sequenceNumber", sequenceNumber, writeUnsignedShort(writeBuffer, 8));
-
-    writeBuffer.popContext("S7ParameterModeTransition");
-  }
-
-  @Override
-  public int getLengthInBytes() {
-    return (int) Math.ceil((float) getLengthInBits() / 8.0);
-  }
-
-  @Override
-  public int getLengthInBits() {
-    int lengthInBits = super.getLengthInBits();
-    S7ParameterModeTransition _value = this;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    // Reserved Field (reserved)
-    lengthInBits += 16;
-
-    // Implicit Field (itemLength)
-    lengthInBits += 8;
-
-    // Simple field (method)
-    lengthInBits += 8;
-
-    // Simple field (cpuFunctionType)
-    lengthInBits += 4;
-
-    // Simple field (cpuFunctionGroup)
-    lengthInBits += 4;
-
-    // Simple field (currentMode)
-    lengthInBits += 8;
-
-    // Simple field (sequenceNumber)
-    lengthInBits += 8;
-
-    return lengthInBits;
-  }
-
-  public static S7ParameterBuilder staticParseS7ParameterBuilder(
-      ReadBuffer readBuffer, Short messageType) throws ParseException {
-    readBuffer.pullContext("S7ParameterModeTransition");
-    PositionAware positionAware = readBuffer;
-    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
-
-    Integer reservedField0 =
-        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0010);
-
-    short itemLength = readImplicitField("itemLength", readUnsignedShort(readBuffer, 8));
-
-    short method = readSimpleField("method", readUnsignedShort(readBuffer, 8));
-
-    byte cpuFunctionType = readSimpleField("cpuFunctionType", readUnsignedByte(readBuffer, 4));
-
-    byte cpuFunctionGroup = readSimpleField("cpuFunctionGroup", readUnsignedByte(readBuffer, 4));
-
-    short currentMode = readSimpleField("currentMode", readUnsignedShort(readBuffer, 8));
-
-    short sequenceNumber = readSimpleField("sequenceNumber", readUnsignedShort(readBuffer, 8));
-
-    readBuffer.closeContext("S7ParameterModeTransition");
-    // Create the instance
-    return new S7ParameterModeTransitionBuilderImpl(
-        method, cpuFunctionType, cpuFunctionGroup, currentMode, sequenceNumber);
-  }
-
-  public static class S7ParameterModeTransitionBuilderImpl
-      implements S7Parameter.S7ParameterBuilder {
-    private final short method;
-    private final byte cpuFunctionType;
-    private final byte cpuFunctionGroup;
-    private final short currentMode;
-    private final short sequenceNumber;
-
-    public S7ParameterModeTransitionBuilderImpl(
-        short method,
-        byte cpuFunctionType,
-        byte cpuFunctionGroup,
-        short currentMode,
-        short sequenceNumber) {
-      this.method = method;
-      this.cpuFunctionType = cpuFunctionType;
... 12563 lines suppressed ...