diff --git a/images/s7h_image01.png b/images/s7h_image01.png
new file mode 100644
index 00000000000..e474902b2fb
Binary files /dev/null and b/images/s7h_image01.png differ
diff --git a/images/s7h_image02.png b/images/s7h_image02.png
new file mode 100644
index 00000000000..9dc9db266ad
Binary files /dev/null and b/images/s7h_image02.png differ
diff --git a/images/s7h_image03.png b/images/s7h_image03.png
new file mode 100644
index 00000000000..d4a0c0ad81d
Binary files /dev/null and b/images/s7h_image03.png differ
diff --git a/images/s7h_image04.png b/images/s7h_image04.png
new file mode 100644
index 00000000000..782b2bbc7e4
Binary files /dev/null and b/images/s7h_image04.png differ
diff --git a/images/s7h_image05.png b/images/s7h_image05.png
new file mode 100644
index 00000000000..4db044b8874
Binary files /dev/null and b/images/s7h_image05.png differ
diff --git a/images/s7h_image06.png b/images/s7h_image06.png
new file mode 100644
index 00000000000..7c742206dcb
Binary files /dev/null and b/images/s7h_image06.png differ
diff --git a/images/s7h_image07.png b/images/s7h_image07.png
new file mode 100644
index 00000000000..a69e853e00e
Binary files /dev/null and b/images/s7h_image07.png differ
diff --git a/images/s7h_szlxy11demo.png b/images/s7h_szlxy11demo.png
new file mode 100644
index 00000000000..4f9d1ad3806
Binary files /dev/null and b/images/s7h_szlxy11demo.png differ
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index 488790f6cf4..0d22747f9ee 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -33,6 +33,25 @@
+
+ org.apache.plc4x.plugins
+ plc4x-maven-plugin
+
+
+ generate-driver
+ generate-sources
+
+ generate-driver
+
+
+ s7
+ java
+ read-write
+ src/main/generated
+
+
+
+
org.apache.karaf.tooling
karaf-maven-plugin
@@ -81,6 +100,16 @@
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ org.apache.plc4x:plc4x-code-generation-language-java
+ org.apache.plc4x:plc4x-protocols-s7
+
+
+
@@ -118,26 +147,10 @@
io.netty
netty-transport
-
- io.netty
- netty-handler
-
-
- io.netty
- netty-codec
-
-
- io.netty
- netty-common
-
io.vavr
vavr
-
- org.json
- json
-
org.apache.plc4x
@@ -145,19 +158,34 @@
0.12.0-SNAPSHOT
test
-
org.skyscreamer
jsonassert
+ 1.5.1
test
+
+
+ com.vaadin.external.google
+ android-json
+
+
- com.fasterxml.jackson.core
- jackson-annotations
- test
+ org.apache.plc4x
+ plc4x-code-generation-language-java
+ 0.12.0-SNAPSHOT
+
+ provided
+
+ org.apache.plc4x
+ plc4x-protocols-s7
+ 0.12.0-SNAPSHOT
+
+ provided
+
org.apache.plc4x
plc4x-protocols-s7
@@ -166,53 +194,32 @@
test-jar
test
+
+ io.netty
+ netty-handler
+ ${netty.version}
+
+
+ io.netty
+ netty-codec
+ ${netty.version}
+
+
+ io.netty
+ netty-common
+ ${netty.version}
+
+
+ org.json
+ json
+ 20230618
+ jar
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ test
+
-
-
- update-generated-code
-
-
-
- org.apache.plc4x.plugins
- plc4x-maven-plugin
-
-
- generate-driver
- generate-sources
-
- generate-driver
-
-
- s7
- java
- read-write
- src/main/generated
-
-
-
-
-
-
-
-
-
- org.apache.plc4x
- plc4x-code-generation-language-java
- 0.12.0-SNAPSHOT
-
- provided
-
-
-
- org.apache.plc4x
- plc4x-protocols-s7
- 0.12.0-SNAPSHOT
-
- provided
-
-
-
-
-
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
index 6676675a724..c15002a449e 100644
--- 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
@@ -89,13 +89,13 @@ protected void serializeCycServiceItemTypeChild(WriteBuffer writeBuffer)
boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
writeBuffer.pushContext("CycServiceItemAnyType");
- // Simple Field (transportSize)
- writeSimpleEnumField(
+ // Enum field (transportSize)
+ writeEnumField(
"transportSize",
"TransportSize",
transportSize,
new DataWriterEnumDefault<>(
- TransportSize::getValue, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
+ TransportSize::getCode, TransportSize::name, writeUnsignedShort(writeBuffer, 8)));
// Simple Field (length)
writeSimpleField("length", length, writeUnsignedInt(writeBuffer, 16));
@@ -128,7 +128,7 @@ public int getLengthInBits() {
CycServiceItemAnyType _value = this;
boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
- // Simple field (transportSize)
+ // Enum Field (transportSize)
lengthInBits += 8;
// Simple field (length)
@@ -156,8 +156,7 @@ public static CycServiceItemTypeBuilder staticParseCycServiceItemTypeBuilder(
readEnumField(
"transportSize",
"TransportSize",
- new DataReaderEnumDefault<>(
- TransportSize::enumForValue, readUnsignedShort(readBuffer, 8)));
+ readEnum(TransportSize::firstEnumForFieldCode, readUnsignedShort(readBuffer, 8)));
int length = readSimpleField("length", readUnsignedInt(readBuffer, 16));
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
index 40dfd1d4d61..66f58e40f42 100644
--- 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
@@ -491,10 +491,10 @@ public static int getLengthInBits(PlcValue _value, String dataProtocolId, Intege
sizeInBits += 16;
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_STRING")) { // STRING
// Manual Field (value)
- sizeInBits += (((stringLength) * (8))) + (16);
+ sizeInBits += (STR_LEN(_value)) + (2);
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_WSTRING")) { // STRING
// Manual Field (value)
- sizeInBits += (((stringLength) * (16))) + (32);
+ sizeInBits += (((STR_LEN(_value)) * (2))) + (2);
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
// Simple Field (milliseconds)
sizeInBits += 32;
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItem.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItem.java
index 89e58d08883..16ef4c273d8 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItem.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItem.java
@@ -383,6 +383,42 @@ public static S7PayloadUserDataItem staticParse(
S7PayloadUserDataItemCpuFunctionAlarmQueryResponse
.staticParseS7PayloadUserDataItemBuilder(
readBuffer, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x04)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x01)) {
+ builder =
+ S7PayloadUserDataItemClkRequest.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x08)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x01)) {
+ builder =
+ S7PayloadUserDataItemClkResponse.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x04)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x03)) {
+ builder =
+ S7PayloadUserDataItemClkFRequest.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x08)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x03)) {
+ builder =
+ S7PayloadUserDataItemClkFResponse.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x04)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x04)) {
+ builder =
+ S7PayloadUserDataItemClkSetRequest.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
+ } else if (EvaluationHelper.equals(cpuFunctionGroup, (byte) 0x07)
+ && EvaluationHelper.equals(cpuFunctionType, (byte) 0x08)
+ && EvaluationHelper.equals(cpuSubfunction, (short) 0x04)) {
+ builder =
+ S7PayloadUserDataItemClkSetResponse.staticParseS7PayloadUserDataItemBuilder(
+ readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction);
}
if (builder == null) {
throw new ParseException(
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkFRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkFRequest.java
new file mode 100644
index 00000000000..4c527a9242a
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkFRequest.java
@@ -0,0 +1,134 @@
+/*
+ * 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 S7PayloadUserDataItemClkFRequest extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x04;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x03;
+ }
+
+ public S7PayloadUserDataItemClkFRequest(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ super(returnCode, transportSize, dataLength);
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkFRequest");
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkFRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkFRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer, Byte cpuFunctionGroup, Byte cpuFunctionType, Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkFRequest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkFRequest");
+ // Create the instance
+ return new S7PayloadUserDataItemClkFRequestBuilderImpl();
+ }
+
+ public static class S7PayloadUserDataItemClkFRequestBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+
+ public S7PayloadUserDataItemClkFRequestBuilderImpl() {}
+
+ public S7PayloadUserDataItemClkFRequest build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkFRequest s7PayloadUserDataItemClkFRequest =
+ new S7PayloadUserDataItemClkFRequest(returnCode, transportSize, dataLength);
+ return s7PayloadUserDataItemClkFRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkFRequest)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkFRequest that = (S7PayloadUserDataItemClkFRequest) 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/S7PayloadUserDataItemClkFResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkFResponse.java
new file mode 100644
index 00000000000..6f7d4540f79
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkFResponse.java
@@ -0,0 +1,203 @@
+/*
+ * 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 S7PayloadUserDataItemClkFResponse extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x08;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x03;
+ }
+
+ // Properties.
+ protected final short Reserved;
+ protected final short Year1;
+ protected final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkFResponse(
+ DataTransportErrorCode returnCode,
+ DataTransportSize transportSize,
+ int dataLength,
+ short Reserved,
+ short Year1,
+ DateAndTime TimeStamp) {
+ super(returnCode, transportSize, dataLength);
+ this.Reserved = Reserved;
+ this.Year1 = Year1;
+ this.TimeStamp = TimeStamp;
+ }
+
+ public short getReserved() {
+ return Reserved;
+ }
+
+ public short getYear1() {
+ return Year1;
+ }
+
+ public DateAndTime getTimeStamp() {
+ return TimeStamp;
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkFResponse");
+
+ // Simple Field (Reserved)
+ writeSimpleField("Reserved", Reserved, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (Year1)
+ writeSimpleField("Year1", Year1, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (TimeStamp)
+ writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkFResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkFResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (Reserved)
+ lengthInBits += 8;
+
+ // Simple field (Year1)
+ lengthInBits += 8;
+
+ // Simple field (TimeStamp)
+ lengthInBits += TimeStamp.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer,
+ Integer dataLength,
+ Byte cpuFunctionGroup,
+ Byte cpuFunctionType,
+ Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkFResponse");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short Reserved = readSimpleField("Reserved", readUnsignedShort(readBuffer, 8));
+
+ short Year1 = readSimpleField("Year1", readUnsignedShort(readBuffer, 8));
+
+ DateAndTime TimeStamp =
+ readSimpleField(
+ "TimeStamp",
+ new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkFResponse");
+ // Create the instance
+ return new S7PayloadUserDataItemClkFResponseBuilderImpl(Reserved, Year1, TimeStamp);
+ }
+
+ public static class S7PayloadUserDataItemClkFResponseBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+ private final short Reserved;
+ private final short Year1;
+ private final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkFResponseBuilderImpl(
+ short Reserved, short Year1, DateAndTime TimeStamp) {
+ this.Reserved = Reserved;
+ this.Year1 = Year1;
+ this.TimeStamp = TimeStamp;
+ }
+
+ public S7PayloadUserDataItemClkFResponse build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkFResponse s7PayloadUserDataItemClkFResponse =
+ new S7PayloadUserDataItemClkFResponse(
+ returnCode, transportSize, dataLength, Reserved, Year1, TimeStamp);
+ return s7PayloadUserDataItemClkFResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkFResponse)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkFResponse that = (S7PayloadUserDataItemClkFResponse) o;
+ return (getReserved() == that.getReserved())
+ && (getYear1() == that.getYear1())
+ && (getTimeStamp() == that.getTimeStamp())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getReserved(), getYear1(), getTimeStamp());
+ }
+
+ @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/S7PayloadUserDataItemClkRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkRequest.java
new file mode 100644
index 00000000000..2ac4fc7b39f
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkRequest.java
@@ -0,0 +1,134 @@
+/*
+ * 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 S7PayloadUserDataItemClkRequest extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x04;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x01;
+ }
+
+ public S7PayloadUserDataItemClkRequest(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ super(returnCode, transportSize, dataLength);
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkRequest");
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer, Byte cpuFunctionGroup, Byte cpuFunctionType, Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkRequest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkRequest");
+ // Create the instance
+ return new S7PayloadUserDataItemClkRequestBuilderImpl();
+ }
+
+ public static class S7PayloadUserDataItemClkRequestBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+
+ public S7PayloadUserDataItemClkRequestBuilderImpl() {}
+
+ public S7PayloadUserDataItemClkRequest build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkRequest s7PayloadUserDataItemClkRequest =
+ new S7PayloadUserDataItemClkRequest(returnCode, transportSize, dataLength);
+ return s7PayloadUserDataItemClkRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkRequest)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkRequest that = (S7PayloadUserDataItemClkRequest) 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/S7PayloadUserDataItemClkResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkResponse.java
new file mode 100644
index 00000000000..3ebeb32ca99
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkResponse.java
@@ -0,0 +1,203 @@
+/*
+ * 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 S7PayloadUserDataItemClkResponse extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x08;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x01;
+ }
+
+ // Properties.
+ protected final short Reserved;
+ protected final short Year1;
+ protected final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkResponse(
+ DataTransportErrorCode returnCode,
+ DataTransportSize transportSize,
+ int dataLength,
+ short Reserved,
+ short Year1,
+ DateAndTime TimeStamp) {
+ super(returnCode, transportSize, dataLength);
+ this.Reserved = Reserved;
+ this.Year1 = Year1;
+ this.TimeStamp = TimeStamp;
+ }
+
+ public short getReserved() {
+ return Reserved;
+ }
+
+ public short getYear1() {
+ return Year1;
+ }
+
+ public DateAndTime getTimeStamp() {
+ return TimeStamp;
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkResponse");
+
+ // Simple Field (Reserved)
+ writeSimpleField("Reserved", Reserved, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (Year1)
+ writeSimpleField("Year1", Year1, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (TimeStamp)
+ writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (Reserved)
+ lengthInBits += 8;
+
+ // Simple field (Year1)
+ lengthInBits += 8;
+
+ // Simple field (TimeStamp)
+ lengthInBits += TimeStamp.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer,
+ Integer dataLength,
+ Byte cpuFunctionGroup,
+ Byte cpuFunctionType,
+ Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkResponse");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short Reserved = readSimpleField("Reserved", readUnsignedShort(readBuffer, 8));
+
+ short Year1 = readSimpleField("Year1", readUnsignedShort(readBuffer, 8));
+
+ DateAndTime TimeStamp =
+ readSimpleField(
+ "TimeStamp",
+ new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkResponse");
+ // Create the instance
+ return new S7PayloadUserDataItemClkResponseBuilderImpl(Reserved, Year1, TimeStamp);
+ }
+
+ public static class S7PayloadUserDataItemClkResponseBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+ private final short Reserved;
+ private final short Year1;
+ private final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkResponseBuilderImpl(
+ short Reserved, short Year1, DateAndTime TimeStamp) {
+ this.Reserved = Reserved;
+ this.Year1 = Year1;
+ this.TimeStamp = TimeStamp;
+ }
+
+ public S7PayloadUserDataItemClkResponse build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkResponse s7PayloadUserDataItemClkResponse =
+ new S7PayloadUserDataItemClkResponse(
+ returnCode, transportSize, dataLength, Reserved, Year1, TimeStamp);
+ return s7PayloadUserDataItemClkResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkResponse)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkResponse that = (S7PayloadUserDataItemClkResponse) o;
+ return (getReserved() == that.getReserved())
+ && (getYear1() == that.getYear1())
+ && (getTimeStamp() == that.getTimeStamp())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getReserved(), getYear1(), getTimeStamp());
+ }
+
+ @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/S7PayloadUserDataItemClkSetRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkSetRequest.java
new file mode 100644
index 00000000000..9de7ca3487d
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkSetRequest.java
@@ -0,0 +1,177 @@
+/*
+ * 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 S7PayloadUserDataItemClkSetRequest extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x04;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x04;
+ }
+
+ // Properties.
+ protected final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkSetRequest(
+ DataTransportErrorCode returnCode,
+ DataTransportSize transportSize,
+ int dataLength,
+ DateAndTime TimeStamp) {
+ super(returnCode, transportSize, dataLength);
+ this.TimeStamp = TimeStamp;
+ }
+
+ public DateAndTime getTimeStamp() {
+ return TimeStamp;
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkSetRequest");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (TimeStamp)
+ writeSimpleField("TimeStamp", TimeStamp, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkSetRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkSetRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Simple field (TimeStamp)
+ lengthInBits += TimeStamp.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer, Byte cpuFunctionGroup, Byte cpuFunctionType, Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkSetRequest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ Short reservedField1 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ DateAndTime TimeStamp =
+ readSimpleField(
+ "TimeStamp",
+ new DataReaderComplexDefault<>(() -> DateAndTime.staticParse(readBuffer), readBuffer));
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkSetRequest");
+ // Create the instance
+ return new S7PayloadUserDataItemClkSetRequestBuilderImpl(TimeStamp);
+ }
+
+ public static class S7PayloadUserDataItemClkSetRequestBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+ private final DateAndTime TimeStamp;
+
+ public S7PayloadUserDataItemClkSetRequestBuilderImpl(DateAndTime TimeStamp) {
+ this.TimeStamp = TimeStamp;
+ }
+
+ public S7PayloadUserDataItemClkSetRequest build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkSetRequest s7PayloadUserDataItemClkSetRequest =
+ new S7PayloadUserDataItemClkSetRequest(returnCode, transportSize, dataLength, TimeStamp);
+ return s7PayloadUserDataItemClkSetRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkSetRequest)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkSetRequest that = (S7PayloadUserDataItemClkSetRequest) o;
+ return (getTimeStamp() == that.getTimeStamp()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getTimeStamp());
+ }
+
+ @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/S7PayloadUserDataItemClkSetResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkSetResponse.java
new file mode 100644
index 00000000000..ece52dd08ee
--- /dev/null
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemClkSetResponse.java
@@ -0,0 +1,134 @@
+/*
+ * 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 S7PayloadUserDataItemClkSetResponse extends S7PayloadUserDataItem implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCpuFunctionGroup() {
+ return (byte) 0x07;
+ }
+
+ public Byte getCpuFunctionType() {
+ return (byte) 0x08;
+ }
+
+ public Short getCpuSubfunction() {
+ return (short) 0x04;
+ }
+
+ public S7PayloadUserDataItemClkSetResponse(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ super(returnCode, transportSize, dataLength);
+ }
+
+ @Override
+ protected void serializeS7PayloadUserDataItemChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("S7PayloadUserDataItemClkSetResponse");
+
+ writeBuffer.popContext("S7PayloadUserDataItemClkSetResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ S7PayloadUserDataItemClkSetResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ return lengthInBits;
+ }
+
+ public static S7PayloadUserDataItemBuilder staticParseS7PayloadUserDataItemBuilder(
+ ReadBuffer readBuffer, Byte cpuFunctionGroup, Byte cpuFunctionType, Short cpuSubfunction)
+ throws ParseException {
+ readBuffer.pullContext("S7PayloadUserDataItemClkSetResponse");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ readBuffer.closeContext("S7PayloadUserDataItemClkSetResponse");
+ // Create the instance
+ return new S7PayloadUserDataItemClkSetResponseBuilderImpl();
+ }
+
+ public static class S7PayloadUserDataItemClkSetResponseBuilderImpl
+ implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
+
+ public S7PayloadUserDataItemClkSetResponseBuilderImpl() {}
+
+ public S7PayloadUserDataItemClkSetResponse build(
+ DataTransportErrorCode returnCode, DataTransportSize transportSize, int dataLength) {
+ S7PayloadUserDataItemClkSetResponse s7PayloadUserDataItemClkSetResponse =
+ new S7PayloadUserDataItemClkSetResponse(returnCode, transportSize, dataLength);
+ return s7PayloadUserDataItemClkSetResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof S7PayloadUserDataItemClkSetResponse)) {
+ return false;
+ }
+ S7PayloadUserDataItemClkSetResponse that = (S7PayloadUserDataItemClkSetResponse) 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/TransportSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
index b15a9817d8b..d99705e7540 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
@@ -231,7 +231,7 @@ public enum TransportSize {
(boolean) true,
(short) 'B',
(boolean) true,
- DataTransportSize.OCTET_STRING,
+ DataTransportSize.BYTE_WORD_DWORD,
(String) "IEC61131_CHAR",
null),
WCHAR(
@@ -244,7 +244,7 @@ public enum TransportSize {
(boolean) true,
(short) 'X',
(boolean) true,
- DataTransportSize.OCTET_STRING,
+ null,
(String) "IEC61131_WCHAR",
null),
STRING(
@@ -257,7 +257,7 @@ public enum TransportSize {
(boolean) true,
(short) 'X',
(boolean) true,
- DataTransportSize.OCTET_STRING,
+ DataTransportSize.BYTE_WORD_DWORD,
(String) "IEC61131_STRING",
null),
WSTRING(
@@ -270,7 +270,7 @@ public enum TransportSize {
(boolean) true,
(short) 'X',
(boolean) true,
- DataTransportSize.OCTET_STRING,
+ null,
(String) "IEC61131_WSTRING",
null),
TIME(
@@ -325,6 +325,19 @@ public enum TransportSize {
DataTransportSize.BYTE_WORD_DWORD,
(String) "IEC61131_TIME_OF_DAY",
null),
+ TOD(
+ (short) 0x19,
+ (boolean) true,
+ (boolean) true,
+ (short) 0x06,
+ (short) 4,
+ (boolean) true,
+ (boolean) true,
+ (short) 'X',
+ (boolean) true,
+ DataTransportSize.BYTE_WORD_DWORD,
+ (String) "IEC61131_TIME_OF_DAY",
+ null),
DATE_AND_TIME(
(short) 0x1A,
(boolean) true,
@@ -337,6 +350,19 @@ public enum TransportSize {
(boolean) true,
null,
(String) "IEC61131_DATE_AND_TIME",
+ null),
+ DT(
+ (short) 0x1B,
+ (boolean) true,
+ (boolean) false,
+ (short) 0x0F,
+ (short) 12,
+ (boolean) true,
+ (boolean) false,
+ (short) 'X',
+ (boolean) true,
+ null,
+ (String) "IEC61131_DATE_AND_TIME",
null);
private static final Map map;
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7AlarmEvent.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7AlarmEvent.java
index d338e1f0937..d88475ef091 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7AlarmEvent.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7AlarmEvent.java
@@ -141,8 +141,8 @@ public enum Fields{
SIG_7_DATA_LENGTH,
SIG_8_DATA_LENGTH,
- }
-
+ };
+
private final Instant timeStamp;
private final Map map;
@@ -291,9 +291,10 @@ public S7AlarmEvent(Object obj) {
}
- }
-
-
+ };
+
+
+
@Override
public Map getMap() {
return map;
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7CyclicEvent.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7CyclicEvent.java
index a6d9fc37b9e..1010e3eee3a 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7CyclicEvent.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/events/S7CyclicEvent.java
@@ -7,7 +7,7 @@
* "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
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -20,136 +20,205 @@
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-import org.apache.plc4x.java.api.messages.PlcReadRequest;
-import org.apache.plc4x.java.api.messages.PlcSubscriptionRequest;
-import org.apache.plc4x.java.api.model.PlcTag;
-import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.api.value.PlcValue;
-import org.apache.plc4x.java.s7.readwrite.*;
-
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.Charset;
+import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
-import java.util.*;
+import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.api.messages.PlcSubscriptionRequest;
+import org.apache.plc4x.java.api.model.PlcTag;
+import org.apache.plc4x.java.api.types.PlcResponseCode;
+import org.apache.plc4x.java.api.value.PlcValue;
+import org.apache.plc4x.java.s7.readwrite.S7PayloadUserDataItemCyclicServicesChangeDrivenPush;
+import org.apache.plc4x.java.s7.readwrite.S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse;
+import org.apache.plc4x.java.s7.readwrite.S7PayloadUserDataItemCyclicServicesPush;
+import org.apache.plc4x.java.s7.readwrite.S7PayloadUserDataItemCyclicServicesSubscribeResponse;
+import org.apache.plc4x.java.s7.readwrite.utils.StaticHelper;
/**
+ *
* @author cgarcia
*/
public class S7CyclicEvent implements S7Event {
- public enum Fields {
+ public enum Fields{
TYPE,
JOBID,
- TIMESTAMP,
+ TIMESTAMP,
ITEMSCOUNT,
REQUEST,
MAP,
RETURNCODE_,
TRANSPORTSIZE_,
DATA_
- }
-
+ }
+
private final PlcSubscriptionRequest request;
-
+
private final Instant timeStamp;
- private final Map map;
-
+ private final Map map;
+
private int j;
-
- public S7CyclicEvent(PlcSubscriptionRequest request, short jobId, S7PayloadUserDataItemCyclicServicesPush event) {
- this.map = new HashMap<>();
- this.timeStamp = Instant.now();
- this.request = request;
- map.put(Fields.TYPE.name(), "CYCEVENT");
- map.put(Fields.TIMESTAMP.name(), this.timeStamp);
- map.put(Fields.JOBID.name(), jobId);
- map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
- for (int i = 0; i < event.getItemsCount(); i++) {
- AssociatedValueType associatedValueType = event.getItems().get(i);
- map.put(Fields.RETURNCODE_.name() + i, associatedValueType.getReturnCode().getValue());
- map.put(Fields.TRANSPORTSIZE_.name() + i, associatedValueType.getTransportSize().getValue());
- byte[] buffer = new byte[associatedValueType.getData().size()];
+
+ public S7CyclicEvent(PlcSubscriptionRequest request, short jobid, S7PayloadUserDataItemCyclicServicesPush event) {
+ this.map = new HashMap();
+ this.timeStamp = Instant.now();
+ this.request = request;
+ map.put(Fields.TYPE.name(), "CYCEVENT");
+ map.put(Fields.TIMESTAMP.name(),this.timeStamp);
+ map.put(Fields.JOBID.name(), jobid);
+ map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
+ int[] n = new int[1];
+ n[0] = 0;
+ request.getTagNames().forEach(tagname -> {
+ int i = n[0];
+ map.put(Fields.RETURNCODE_.name()+i, event.getItems().get(i).getReturnCode().getValue());
+ map.put(Fields.TRANSPORTSIZE_.name()+i, event.getItems().get(i).getTransportSize().getValue());
+ byte[] buffer = new byte[event.getItems().get(i).getData().size()];
j = 0;
- associatedValueType.getData().forEach(s -> {
- buffer[j] = s.byteValue();
- j++;
- });
- map.put(Fields.DATA_.name() + i, buffer);
- }
- }
-
- public S7CyclicEvent(PlcSubscriptionRequest request, short jobId, S7PayloadUserDataItemCyclicServicesChangeDrivenPush event) {
- this.map = new HashMap<>();
- this.timeStamp = Instant.now();
+ event.getItems().get(i).getData().forEach(s->{
+ buffer[j] = s.byteValue();
+ j ++;
+ });
+ map.put(tagname, buffer);
+ n[0]++;
+ });
+
+
+// for (int i=0; i{
+// buffer[j] = s.byteValue();
+// j ++;
+// });
+// map.put(Fields.DATA_.name()+i, buffer);
+// }
+ }
+
+ public S7CyclicEvent(PlcSubscriptionRequest request, short jobid, S7PayloadUserDataItemCyclicServicesChangeDrivenPush event) {
+ this.map = new HashMap();
+ this.timeStamp = Instant.now();
this.request = request;
- map.put(Fields.TYPE.name(), "CYCEVENT");
- map.put(Fields.TIMESTAMP.name(), this.timeStamp);
- map.put(Fields.JOBID.name(), jobId);
- map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
- for (int i = 0; i < event.getItemsCount(); i++) {
- AssociatedQueryValueType associatedQueryValueType = event.getItems().get(i);
- map.put(Fields.RETURNCODE_.name() + i, associatedQueryValueType.getReturnCode().getValue());
- map.put(Fields.TRANSPORTSIZE_.name() + i, associatedQueryValueType.getTransportSize().getValue());
- byte[] buffer = new byte[associatedQueryValueType.getData().size()];
+ map.put(Fields.TYPE.name(), "CYCEVENT");
+ map.put(Fields.TIMESTAMP.name(),this.timeStamp);
+ map.put(Fields.JOBID.name(), jobid);
+ map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
+ int[] n = new int[1];
+ n[0] = 0;
+ request.getTagNames().forEach(tagname -> {
+ int i = n[0];
+ map.put(Fields.RETURNCODE_.name()+i, event.getItems().get(i).getReturnCode().getValue());
+ map.put(Fields.TRANSPORTSIZE_.name()+i, event.getItems().get(i).getTransportSize().getValue());
+ byte[] buffer = new byte[event.getItems().get(i).getData().size()];
j = 0;
- associatedQueryValueType.getData().forEach(s -> {
- buffer[j] = s.byteValue();
- j++;
- });
- map.put(Fields.DATA_.name() + i, buffer);
- }
- }
-
- public S7CyclicEvent(PlcSubscriptionRequest request, short jobId, S7PayloadUserDataItemCyclicServicesSubscribeResponse event) {
- this.map = new HashMap<>();
- this.timeStamp = Instant.now();
+ event.getItems().get(i).getData().forEach(s->{
+ buffer[j] = s.byteValue();
+ j ++;
+ });
+ map.put(tagname, buffer);
+ n[0]++;
+ });
+// for (int i=0; i{
+// buffer[j] = s.byteValue();
+// j ++;
+// });
+// map.put(Fields.DATA_.name()+i, buffer);
+// }
+ }
+
+ public S7CyclicEvent(PlcSubscriptionRequest request, short jobid, S7PayloadUserDataItemCyclicServicesSubscribeResponse event) {
+ this.map = new HashMap();
+ this.timeStamp = Instant.now();
this.request = request;
- map.put(Fields.TYPE.name(), "CYCEVENT");
- map.put(Fields.TIMESTAMP.name(), this.timeStamp);
- map.put(Fields.JOBID.name(), jobId);
+ map.put(Fields.TYPE.name(), "CYCEVENT");
+ map.put(Fields.TIMESTAMP.name(),this.timeStamp);
+ map.put(Fields.JOBID.name(), jobid);
map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
- for (int i = 0; i < event.getItemsCount(); i++) {
- AssociatedValueType associatedValueType = event.getItems().get(i);
- map.put(Fields.RETURNCODE_.name() + i, associatedValueType.getReturnCode().getValue());
- map.put(Fields.TRANSPORTSIZE_.name() + i, associatedValueType.getTransportSize().getValue());
- byte[] buffer = new byte[associatedValueType.getData().size()];
+ int[] n = new int[1];
+ n[0] = 0;
+ request.getTagNames().forEach(tagname -> {
+ int i = n[0];
+ map.put(Fields.RETURNCODE_.name()+i, event.getItems().get(i).getReturnCode().getValue());
+ map.put(Fields.TRANSPORTSIZE_.name()+i, event.getItems().get(i).getTransportSize().getValue());
+ byte[] buffer = new byte[event.getItems().get(i).getData().size()];
j = 0;
- associatedValueType.getData().forEach(s -> {
- buffer[j] = s.byteValue();
- j++;
- });
- map.put(Fields.DATA_.name() + i, buffer);
- }
- }
-
- public S7CyclicEvent(PlcSubscriptionRequest request, short jobId, S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse event) {
- this.map = new HashMap<>();
- this.timeStamp = Instant.now();
+ event.getItems().get(i).getData().forEach(s->{
+ buffer[j] = s.byteValue();
+ j ++;
+ });
+ map.put(tagname, buffer);
+ n[0]++;
+ });
+// for (int i=0; i{
+// buffer[j] = s.byteValue();
+// j ++;
+// });
+// map.put(Fields.DATA_.name()+i, buffer);
+// }
+ }
+
+ public S7CyclicEvent(PlcSubscriptionRequest request, short jobid, S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse event) {
+ this.map = new HashMap();
+ this.timeStamp = Instant.now();
this.request = request;
- map.put(Fields.TYPE.name(), "CYCEVENT");
- map.put(Fields.TIMESTAMP.name(), this.timeStamp);
- map.put(Fields.JOBID.name(), jobId);
+ map.put(Fields.TYPE.name(), "CYCEVENT");
+ map.put(Fields.TIMESTAMP.name(),this.timeStamp);
+ map.put(Fields.JOBID.name(), jobid);
map.put(Fields.ITEMSCOUNT.name(), event.getItemsCount());
- for (int i = 0; i < event.getItemsCount(); i++) {
- AssociatedQueryValueType associatedQueryValueType = event.getItems().get(i);
- map.put(Fields.RETURNCODE_.name() + i, associatedQueryValueType.getReturnCode().getValue());
- map.put(Fields.TRANSPORTSIZE_.name() + i, associatedQueryValueType.getTransportSize().getValue());
- byte[] buffer = new byte[associatedQueryValueType.getData().size()];
+ int[] n = new int[1];
+ n[0] = 0;
+ request.getTagNames().forEach(tagname -> {
+ int i = n[0];
+ map.put(Fields.RETURNCODE_.name()+i, event.getItems().get(i).getReturnCode().getValue());
+ map.put(Fields.TRANSPORTSIZE_.name()+i, event.getItems().get(i).getTransportSize().getValue());
+ byte[] buffer = new byte[event.getItems().get(i).getData().size()];
j = 0;
- associatedQueryValueType.getData().forEach(s -> {
- buffer[j] = s.byteValue();
- j++;
- });
- map.put(Fields.DATA_.name() + i, buffer);
- }
- }
-
+ event.getItems().get(i).getData().forEach(s->{
+ buffer[j] = s.byteValue();
+ j ++;
+ });
+ map.put(tagname, buffer);
+ n[0]++;
+ });
+// for (int i=0; i{
+// buffer[j] = s.byteValue();
+// j ++;
+// });
+// map.put(Fields.DATA_.name()+i, buffer);
+// }
+ }
+
@Override
public Map getMap() {
return this.map;
@@ -162,22 +231,22 @@ public Instant getTimestamp() {
@Override
public PlcReadRequest getRequest() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public PlcValue getAsPlcValue() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public PlcValue getPlcValue(String name) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getNumberOfValues(String name) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet.");
}
@Override
@@ -188,60 +257,72 @@ public Object getObject(String name) {
@Override
public Object getObject(String name, int index) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Collection