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:04 UTC
(plc4x) 02/02: Arreglando el manejo de los tipos TIME. modificacion del PlcTIME y s7.mspec.
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 ...