You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/01/23 21:08:06 UTC
[plc4x] branch develop updated: feat(plc4j/driver/open-protocol): Implemented a rough skeleton for an open-protocol driver (Not functional yet ... It just compiles the mspec generated types)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new e3cbcdf4ae feat(plc4j/driver/open-protocol): Implemented a rough skeleton for an open-protocol driver (Not functional yet ... It just compiles the mspec generated types)
e3cbcdf4ae is described below
commit e3cbcdf4aeea7991e934cdcac664d85bacbd391c
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jan 23 22:07:57 2023 +0100
feat(plc4j/driver/open-protocol): Implemented a rough skeleton for an open-protocol driver (Not functional yet ... It just compiles the mspec generated types)
---
plc4j/drivers/open-protocol/pom.xml | 175 ++++++++
...licationCommunicationStartAcknowledgeBlock.java | 203 +++++++++
...onCommunicationStartAcknowledgeBlockCellId.java | 150 +++++++
...ommunicationStartAcknowledgeBlockChannelId.java | 153 +++++++
...CommunicationStartAcknowledgeBlockClientId.java | 153 +++++++
...icationStartAcknowledgeBlockControllerName.java | 154 +++++++
...tartAcknowledgeBlockControllerSerialNumber.java | 159 +++++++
...tAcknowledgeBlockControllerSoftwareVersion.java | 165 +++++++
...tartAcknowledgeBlockLinkingHandlingSupport.java | 171 +++++++
...onStartAcknowledgeBlockOpenProtocolVersion.java | 159 +++++++
...nCommunicationStartAcknowledgeBlockRbuType.java | 149 +++++++
...StartAcknowledgeBlockSequenceNumberSupport.java | 171 +++++++
...ommunicationStartAcknowledgeBlockStationId.java | 149 +++++++
...municationStartAcknowledgeBlockStationName.java | 153 +++++++
...unicationStartAcknowledgeBlockSupplierCode.java | 153 +++++++
...nicationStartAcknowledgeBlockSystemSubtype.java | 153 +++++++
...mmunicationStartAcknowledgeBlockSystemType.java | 149 +++++++
...onStartAcknowledgeBlockToolSoftwareVersion.java | 159 +++++++
.../java/openprotocol/readwrite/Constants.java | 126 ++++++
.../plc4x/java/openprotocol/readwrite/Error.java | 142 ++++++
.../plc4x/java/openprotocol/readwrite/Mid.java | 239 ++++++++++
.../java/openprotocol/readwrite/MidTypes.java | 74 ++++
.../readwrite/OpenProtocolMessage.java | 373 ++++++++++++++++
...nProtocolMessageApplicationCommandAccepted.java | 183 ++++++++
...OpenProtocolMessageApplicationCommandError.java | 213 +++++++++
...otocolMessageApplicationCommunicationStart.java | 154 +++++++
...geApplicationCommunicationStartAcknowledge.java | 190 ++++++++
...rotocolMessageApplicationCommunicationStop.java | 154 +++++++
...otocolMessageApplicationGenericDataRequest.java | 250 +++++++++++
.../readwrite/OpenProtocolRevision.java | 88 ++++
.../java/openprotocol/OpenProtocolDriver.java | 130 ++++++
.../config/OpenProtocolConfiguration.java | 38 ++
.../protocol/OpenProtocolProtocolLogic.java | 76 ++++
.../java/openprotocol/tag/OpenProtocolTag.java | 48 ++
.../openprotocol/tag/OpenProtocolTagHandler.java | 38 ++
.../services/org.apache.plc4x.java.api.PlcDriver | 19 +
plc4j/drivers/pom.xml | 1 +
.../protocols/openprotocol/open-protocol.mspec | 490 ++++++++++-----------
38 files changed, 5659 insertions(+), 245 deletions(-)
diff --git a/plc4j/drivers/open-protocol/pom.xml b/plc4j/drivers/open-protocol/pom.xml
new file mode 100644
index 0000000000..4ba4128eef
--- /dev/null
+++ b/plc4j/drivers/open-protocol/pom.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-drivers</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>plc4j-driver-open-protocol</artifactId>
+ <name>PLC4J: Driver: Open-Protocol</name>
+ <description>Implementation of a PLC4X driver for the Open-Protocol protocol.</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>open-protocol</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-feature-xml</id>
+ <phase>compile</phase>
+ <goals>
+ <!-- Generate the feature.xml -->
+ <goal>features-generate-descriptor</goal>
+ <!-- Check the feature.xml -->
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <enableGeneration>true</enableGeneration>
+ <aggregateFeatures>true</aggregateFeatures>
+ </configuration>
+ </execution>
+ <execution>
+ <id>build-kar</id>
+ <phase>package</phase>
+ <goals>
+ <!--
+ Build a kar archive (Jar containing the feature.xml
+ as well as the module content and it's dependencies.
+ -->
+ <goal>kar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
+ <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.modbus.tcp.ModbusTcpDriver</Export-Service>
+ <Import-Package>
+ com.fasterxml.jackson.annotation;resolution:=optional,
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <usedDependencies combine.children="append">
+ <usedDependency>org.apache.plc4x:plc4j-transport-serial</usedDependency>
+ <usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
+ <usedDependency>org.apache.plc4x:plc4x-protocols-open-protocol</usedDependency>
+ </usedDependencies>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-api</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-spi</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-transport-tcp</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-transport-serial</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-buffer</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-utils-test-utils</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-code-generation-language-java</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ <!-- Scope is 'provided' as this way it's not shipped with the driver -->
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-protocols-open-protocol</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ <!-- Scope is 'provided' as this way it's not shipped with the driver -->
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-protocols-open-protocol</artifactId>
+ <version>0.11.0-SNAPSHOT</version>
+ <classifier>tests</classifier>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlock.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlock.java
new file mode 100644
index 0000000000..e4f6a33adf
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlock.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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Integer getBlockType();
+
+ public ApplicationCommunicationStartAcknowledgeBlock() {
+ super();
+ }
+
+ protected abstract void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlock");
+
+ // Discriminator Field (blockType) (Used as input to a switch field)
+ writeDiscriminatorField("blockType", getBlockType(), writeUnsignedInt(writeBuffer, 16));
+
+ // Switch field (Serialize the sub-type)
+ serializeApplicationCommunicationStartAcknowledgeBlockChild(writeBuffer);
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlock");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ApplicationCommunicationStartAcknowledgeBlock _value = this;
+
+ // Discriminator Field (blockType)
+ lengthInBits += 16;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlock staticParse(
+ ReadBuffer readBuffer, Object... args) throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlock staticParse(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlock");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ int blockType =
+ readDiscriminatorField(
+ "blockType", readUnsignedInt(readBuffer, 16), WithOption.WithEncoding("AsciiUint"));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ ApplicationCommunicationStartAcknowledgeBlockBuilder builder = null;
+ if (EvaluationHelper.equals(blockType, (int) 1)) {
+ builder = ApplicationCommunicationStartAcknowledgeBlockCellId.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 2)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockChannelId.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 3)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockControllerName.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 4)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockSupplierCode.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 5)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 6)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 7)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 8)) {
+ builder = ApplicationCommunicationStartAcknowledgeBlockRbuType.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 9)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 10)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockSystemType.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 11)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockSystemSubtype.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 12)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 13)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport.staticParseBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 14)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockStationId.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 15)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockStationName.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(blockType, (int) 16)) {
+ builder =
+ ApplicationCommunicationStartAcknowledgeBlockClientId.staticParseBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "blockType="
+ + blockType
+ + "]");
+ }
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlock");
+ // Create the instance
+ ApplicationCommunicationStartAcknowledgeBlock _applicationCommunicationStartAcknowledgeBlock =
+ builder.build();
+ return _applicationCommunicationStartAcknowledgeBlock;
+ }
+
+ public static interface ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ ApplicationCommunicationStartAcknowledgeBlock build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlock)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlock that =
+ (ApplicationCommunicationStartAcknowledgeBlock) 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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockCellId.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockCellId.java
new file mode 100644
index 0000000000..b74b70fc2c
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockCellId.java
@@ -0,0 +1,150 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockCellId
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 1;
+ }
+
+ // Properties.
+ protected final long cellId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockCellId(long cellId) {
+ super();
+ this.cellId = cellId;
+ }
+
+ public long getCellId() {
+ return cellId;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockCellId");
+
+ // Simple Field (cellId)
+ writeSimpleField(
+ "cellId", cellId, writeUnsignedLong(writeBuffer, 32), WithOption.WithEncoding("AsciiUint"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockCellId");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockCellId _value = this;
+
+ // Simple field (cellId)
+ lengthInBits += 32;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockCellIdBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockCellId");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ long cellId =
+ readSimpleField(
+ "cellId", readUnsignedLong(readBuffer, 32), WithOption.WithEncoding("AsciiUint"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockCellId");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockCellIdBuilder(cellId);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockCellIdBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final long cellId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockCellIdBuilder(long cellId) {
+
+ this.cellId = cellId;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockCellId build() {
+ ApplicationCommunicationStartAcknowledgeBlockCellId
+ applicationCommunicationStartAcknowledgeBlockCellId =
+ new ApplicationCommunicationStartAcknowledgeBlockCellId(cellId);
+ return applicationCommunicationStartAcknowledgeBlockCellId;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockCellId)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockCellId that =
+ (ApplicationCommunicationStartAcknowledgeBlockCellId) o;
+ return (getCellId() == that.getCellId()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getCellId());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockChannelId.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockChannelId.java
new file mode 100644
index 0000000000..b5103122fa
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockChannelId.java
@@ -0,0 +1,153 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockChannelId
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 2;
+ }
+
+ // Properties.
+ protected final int channelId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockChannelId(int channelId) {
+ super();
+ this.channelId = channelId;
+ }
+
+ public int getChannelId() {
+ return channelId;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockChannelId");
+
+ // Simple Field (channelId)
+ writeSimpleField(
+ "channelId",
+ channelId,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithEncoding("AsciiUint"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockChannelId");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockChannelId _value = this;
+
+ // Simple field (channelId)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockChannelIdBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockChannelId");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ int channelId =
+ readSimpleField(
+ "channelId", readUnsignedInt(readBuffer, 16), WithOption.WithEncoding("AsciiUint"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockChannelId");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockChannelIdBuilder(channelId);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockChannelIdBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final int channelId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockChannelIdBuilder(int channelId) {
+
+ this.channelId = channelId;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockChannelId build() {
+ ApplicationCommunicationStartAcknowledgeBlockChannelId
+ applicationCommunicationStartAcknowledgeBlockChannelId =
+ new ApplicationCommunicationStartAcknowledgeBlockChannelId(channelId);
+ return applicationCommunicationStartAcknowledgeBlockChannelId;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockChannelId)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockChannelId that =
+ (ApplicationCommunicationStartAcknowledgeBlockChannelId) o;
+ return (getChannelId() == that.getChannelId()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getChannelId());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockClientId.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockClientId.java
new file mode 100644
index 0000000000..1f7efac0b8
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockClientId.java
@@ -0,0 +1,153 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockClientId
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 16;
+ }
+
+ // Properties.
+ protected final short clientId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockClientId(short clientId) {
+ super();
+ this.clientId = clientId;
+ }
+
+ public short getClientId() {
+ return clientId;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockClientId");
+
+ // Simple Field (clientId)
+ writeSimpleField(
+ "clientId",
+ clientId,
+ writeUnsignedShort(writeBuffer, 8),
+ WithOption.WithEncoding("AsciiUint"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockClientId");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockClientId _value = this;
+
+ // Simple field (clientId)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockClientIdBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockClientId");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ short clientId =
+ readSimpleField(
+ "clientId", readUnsignedShort(readBuffer, 8), WithOption.WithEncoding("AsciiUint"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockClientId");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockClientIdBuilder(clientId);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockClientIdBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final short clientId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockClientIdBuilder(short clientId) {
+
+ this.clientId = clientId;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockClientId build() {
+ ApplicationCommunicationStartAcknowledgeBlockClientId
+ applicationCommunicationStartAcknowledgeBlockClientId =
+ new ApplicationCommunicationStartAcknowledgeBlockClientId(clientId);
+ return applicationCommunicationStartAcknowledgeBlockClientId;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockClientId)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockClientId that =
+ (ApplicationCommunicationStartAcknowledgeBlockClientId) o;
+ return (getClientId() == that.getClientId()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getClientId());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerName.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerName.java
new file mode 100644
index 0000000000..d275d266e9
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerName.java
@@ -0,0 +1,154 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockControllerName
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 3;
+ }
+
+ // Properties.
+ protected final String controllerName;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerName(String controllerName) {
+ super();
+ this.controllerName = controllerName;
+ }
+
+ public String getControllerName() {
+ return controllerName;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockControllerName");
+
+ // Simple Field (controllerName)
+ writeSimpleField(
+ "controllerName",
+ controllerName,
+ writeString(writeBuffer, 200),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockControllerName");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockControllerName _value = this;
+
+ // Simple field (controllerName)
+ lengthInBits += 200;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockControllerNameBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockControllerName");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String controllerName =
+ readSimpleField(
+ "controllerName", readString(readBuffer, 200), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockControllerName");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockControllerNameBuilder(controllerName);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockControllerNameBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String controllerName;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerNameBuilder(
+ String controllerName) {
+
+ this.controllerName = controllerName;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerName build() {
+ ApplicationCommunicationStartAcknowledgeBlockControllerName
+ applicationCommunicationStartAcknowledgeBlockControllerName =
+ new ApplicationCommunicationStartAcknowledgeBlockControllerName(controllerName);
+ return applicationCommunicationStartAcknowledgeBlockControllerName;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockControllerName)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockControllerName that =
+ (ApplicationCommunicationStartAcknowledgeBlockControllerName) o;
+ return (getControllerName() == that.getControllerName()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getControllerName());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber.java
new file mode 100644
index 0000000000..f5ef2e20d8
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber.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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 9;
+ }
+
+ // Properties.
+ protected final String controllerSerialNumber;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber(
+ String controllerSerialNumber) {
+ super();
+ this.controllerSerialNumber = controllerSerialNumber;
+ }
+
+ public String getControllerSerialNumber() {
+ return controllerSerialNumber;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber");
+
+ // Simple Field (controllerSerialNumber)
+ writeSimpleField(
+ "controllerSerialNumber",
+ controllerSerialNumber,
+ writeString(writeBuffer, 80),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber _value = this;
+
+ // Simple field (controllerSerialNumber)
+ lengthInBits += 80;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumberBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String controllerSerialNumber =
+ readSimpleField(
+ "controllerSerialNumber", readString(readBuffer, 80), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumberBuilder(
+ controllerSerialNumber);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumberBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String controllerSerialNumber;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumberBuilder(
+ String controllerSerialNumber) {
+
+ this.controllerSerialNumber = controllerSerialNumber;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber build() {
+ ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber
+ applicationCommunicationStartAcknowledgeBlockControllerSerialNumber =
+ new ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber(
+ controllerSerialNumber);
+ return applicationCommunicationStartAcknowledgeBlockControllerSerialNumber;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber that =
+ (ApplicationCommunicationStartAcknowledgeBlockControllerSerialNumber) o;
+ return (getControllerSerialNumber() == that.getControllerSerialNumber())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getControllerSerialNumber());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion.java
new file mode 100644
index 0000000000..e2be9f9585
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion.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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 6;
+ }
+
+ // Properties.
+ protected final String controllerSoftwareVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion(
+ String controllerSoftwareVersion) {
+ super();
+ this.controllerSoftwareVersion = controllerSoftwareVersion;
+ }
+
+ public String getControllerSoftwareVersion() {
+ return controllerSoftwareVersion;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext(
+ "ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion");
+
+ // Simple Field (controllerSoftwareVersion)
+ writeSimpleField(
+ "controllerSoftwareVersion",
+ controllerSoftwareVersion,
+ writeString(writeBuffer, 152),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext(
+ "ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion _value = this;
+
+ // Simple field (controllerSoftwareVersion)
+ lengthInBits += 152;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersionBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext(
+ "ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String controllerSoftwareVersion =
+ readSimpleField(
+ "controllerSoftwareVersion",
+ readString(readBuffer, 152),
+ WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext(
+ "ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersionBuilder(
+ controllerSoftwareVersion);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersionBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String controllerSoftwareVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersionBuilder(
+ String controllerSoftwareVersion) {
+
+ this.controllerSoftwareVersion = controllerSoftwareVersion;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion build() {
+ ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion
+ applicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion =
+ new ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion(
+ controllerSoftwareVersion);
+ return applicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion that =
+ (ApplicationCommunicationStartAcknowledgeBlockControllerSoftwareVersion) o;
+ return (getControllerSoftwareVersion() == that.getControllerSoftwareVersion())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getControllerSoftwareVersion());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport.java
new file mode 100644
index 0000000000..94fe1027a9
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport.java
@@ -0,0 +1,171 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 13;
+ }
+
+ // Properties.
+ protected final boolean linkingHandlingSupport;
+ // Reserved Fields
+ private Short reservedField0;
+
+ public ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport(
+ boolean linkingHandlingSupport) {
+ super();
+ this.linkingHandlingSupport = linkingHandlingSupport;
+ }
+
+ public boolean getLinkingHandlingSupport() {
+ return linkingHandlingSupport;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport");
+
+ // Reserved Field (reserved)
+ writeReservedField(
+ "reserved",
+ reservedField0 != null ? reservedField0 : (short) 0x00,
+ writeUnsignedShort(writeBuffer, 7));
+
+ // Simple Field (linkingHandlingSupport)
+ writeSimpleField("linkingHandlingSupport", linkingHandlingSupport, writeBoolean(writeBuffer));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport _value = this;
+
+ // Reserved Field (reserved)
+ lengthInBits += 7;
+
+ // Simple field (linkingHandlingSupport)
+ lengthInBits += 1;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupportBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 7), (short) 0x00);
+
+ boolean linkingHandlingSupport =
+ readSimpleField("linkingHandlingSupport", readBoolean(readBuffer));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupportBuilder(
+ linkingHandlingSupport, reservedField0);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupportBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final boolean linkingHandlingSupport;
+ private final Short reservedField0;
+
+ public ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupportBuilder(
+ boolean linkingHandlingSupport, Short reservedField0) {
+ this.linkingHandlingSupport = linkingHandlingSupport;
+ this.reservedField0 = reservedField0;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport build() {
+ ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport
+ applicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport =
+ new ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport(
+ linkingHandlingSupport);
+ applicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport.reservedField0 =
+ reservedField0;
+ return applicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport that =
+ (ApplicationCommunicationStartAcknowledgeBlockLinkingHandlingSupport) o;
+ return (getLinkingHandlingSupport() == that.getLinkingHandlingSupport())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getLinkingHandlingSupport());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion.java
new file mode 100644
index 0000000000..7ed5d4a2c9
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion.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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 5;
+ }
+
+ // Properties.
+ protected final String openProtocolVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion(
+ String openProtocolVersion) {
+ super();
+ this.openProtocolVersion = openProtocolVersion;
+ }
+
+ public String getOpenProtocolVersion() {
+ return openProtocolVersion;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion");
+
+ // Simple Field (openProtocolVersion)
+ writeSimpleField(
+ "openProtocolVersion",
+ openProtocolVersion,
+ writeString(writeBuffer, 152),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion _value = this;
+
+ // Simple field (openProtocolVersion)
+ lengthInBits += 152;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersionBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String openProtocolVersion =
+ readSimpleField(
+ "openProtocolVersion", readString(readBuffer, 152), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersionBuilder(
+ openProtocolVersion);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersionBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String openProtocolVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersionBuilder(
+ String openProtocolVersion) {
+
+ this.openProtocolVersion = openProtocolVersion;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion build() {
+ ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion
+ applicationCommunicationStartAcknowledgeBlockOpenProtocolVersion =
+ new ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion(
+ openProtocolVersion);
+ return applicationCommunicationStartAcknowledgeBlockOpenProtocolVersion;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion that =
+ (ApplicationCommunicationStartAcknowledgeBlockOpenProtocolVersion) o;
+ return (getOpenProtocolVersion() == that.getOpenProtocolVersion())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getOpenProtocolVersion());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockRbuType.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockRbuType.java
new file mode 100644
index 0000000000..d1b26a9fca
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockRbuType.java
@@ -0,0 +1,149 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockRbuType
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 8;
+ }
+
+ // Properties.
+ protected final String rbuType;
+
+ public ApplicationCommunicationStartAcknowledgeBlockRbuType(String rbuType) {
+ super();
+ this.rbuType = rbuType;
+ }
+
+ public String getRbuType() {
+ return rbuType;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockRbuType");
+
+ // Simple Field (rbuType)
+ writeSimpleField(
+ "rbuType", rbuType, writeString(writeBuffer, 192), WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockRbuType");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockRbuType _value = this;
+
+ // Simple field (rbuType)
+ lengthInBits += 192;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockRbuTypeBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockRbuType");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String rbuType =
+ readSimpleField("rbuType", readString(readBuffer, 192), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockRbuType");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockRbuTypeBuilder(rbuType);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockRbuTypeBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String rbuType;
+
+ public ApplicationCommunicationStartAcknowledgeBlockRbuTypeBuilder(String rbuType) {
+
+ this.rbuType = rbuType;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockRbuType build() {
+ ApplicationCommunicationStartAcknowledgeBlockRbuType
+ applicationCommunicationStartAcknowledgeBlockRbuType =
+ new ApplicationCommunicationStartAcknowledgeBlockRbuType(rbuType);
+ return applicationCommunicationStartAcknowledgeBlockRbuType;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockRbuType)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockRbuType that =
+ (ApplicationCommunicationStartAcknowledgeBlockRbuType) o;
+ return (getRbuType() == that.getRbuType()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getRbuType());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport.java
new file mode 100644
index 0000000000..c96be1bf96
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport.java
@@ -0,0 +1,171 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 12;
+ }
+
+ // Properties.
+ protected final boolean sequenceNumberSupport;
+ // Reserved Fields
+ private Short reservedField0;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport(
+ boolean sequenceNumberSupport) {
+ super();
+ this.sequenceNumberSupport = sequenceNumberSupport;
+ }
+
+ public boolean getSequenceNumberSupport() {
+ return sequenceNumberSupport;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport");
+
+ // Reserved Field (reserved)
+ writeReservedField(
+ "reserved",
+ reservedField0 != null ? reservedField0 : (short) 0x00,
+ writeUnsignedShort(writeBuffer, 7));
+
+ // Simple Field (sequenceNumberSupport)
+ writeSimpleField("sequenceNumberSupport", sequenceNumberSupport, writeBoolean(writeBuffer));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport _value = this;
+
+ // Reserved Field (reserved)
+ lengthInBits += 7;
+
+ // Simple field (sequenceNumberSupport)
+ lengthInBits += 1;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupportBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 7), (short) 0x00);
+
+ boolean sequenceNumberSupport =
+ readSimpleField("sequenceNumberSupport", readBoolean(readBuffer));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupportBuilder(
+ sequenceNumberSupport, reservedField0);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupportBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final boolean sequenceNumberSupport;
+ private final Short reservedField0;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupportBuilder(
+ boolean sequenceNumberSupport, Short reservedField0) {
+ this.sequenceNumberSupport = sequenceNumberSupport;
+ this.reservedField0 = reservedField0;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport build() {
+ ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport
+ applicationCommunicationStartAcknowledgeBlockSequenceNumberSupport =
+ new ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport(
+ sequenceNumberSupport);
+ applicationCommunicationStartAcknowledgeBlockSequenceNumberSupport.reservedField0 =
+ reservedField0;
+ return applicationCommunicationStartAcknowledgeBlockSequenceNumberSupport;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport that =
+ (ApplicationCommunicationStartAcknowledgeBlockSequenceNumberSupport) o;
+ return (getSequenceNumberSupport() == that.getSequenceNumberSupport())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSequenceNumberSupport());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationId.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationId.java
new file mode 100644
index 0000000000..91c3eb72a5
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationId.java
@@ -0,0 +1,149 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockStationId
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 14;
+ }
+
+ // Properties.
+ protected final String stationId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationId(String stationId) {
+ super();
+ this.stationId = stationId;
+ }
+
+ public String getStationId() {
+ return stationId;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockStationId");
+
+ // Simple Field (stationId)
+ writeSimpleField(
+ "stationId", stationId, writeString(writeBuffer, 80), WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockStationId");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockStationId _value = this;
+
+ // Simple field (stationId)
+ lengthInBits += 80;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockStationIdBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockStationId");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String stationId =
+ readSimpleField("stationId", readString(readBuffer, 80), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockStationId");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockStationIdBuilder(stationId);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockStationIdBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String stationId;
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationIdBuilder(String stationId) {
+
+ this.stationId = stationId;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationId build() {
+ ApplicationCommunicationStartAcknowledgeBlockStationId
+ applicationCommunicationStartAcknowledgeBlockStationId =
+ new ApplicationCommunicationStartAcknowledgeBlockStationId(stationId);
+ return applicationCommunicationStartAcknowledgeBlockStationId;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockStationId)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockStationId that =
+ (ApplicationCommunicationStartAcknowledgeBlockStationId) o;
+ return (getStationId() == that.getStationId()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getStationId());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationName.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationName.java
new file mode 100644
index 0000000000..3e2fb65b4c
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockStationName.java
@@ -0,0 +1,153 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockStationName
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 15;
+ }
+
+ // Properties.
+ protected final String stationName;
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationName(String stationName) {
+ super();
+ this.stationName = stationName;
+ }
+
+ public String getStationName() {
+ return stationName;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockStationName");
+
+ // Simple Field (stationName)
+ writeSimpleField(
+ "stationName",
+ stationName,
+ writeString(writeBuffer, 200),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockStationName");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockStationName _value = this;
+
+ // Simple field (stationName)
+ lengthInBits += 200;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockStationNameBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockStationName");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String stationName =
+ readSimpleField(
+ "stationName", readString(readBuffer, 200), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockStationName");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockStationNameBuilder(stationName);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockStationNameBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String stationName;
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationNameBuilder(String stationName) {
+
+ this.stationName = stationName;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockStationName build() {
+ ApplicationCommunicationStartAcknowledgeBlockStationName
+ applicationCommunicationStartAcknowledgeBlockStationName =
+ new ApplicationCommunicationStartAcknowledgeBlockStationName(stationName);
+ return applicationCommunicationStartAcknowledgeBlockStationName;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockStationName)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockStationName that =
+ (ApplicationCommunicationStartAcknowledgeBlockStationName) o;
+ return (getStationName() == that.getStationName()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getStationName());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSupplierCode.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSupplierCode.java
new file mode 100644
index 0000000000..18e35b3deb
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSupplierCode.java
@@ -0,0 +1,153 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockSupplierCode
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 4;
+ }
+
+ // Properties.
+ protected final long supplierCode;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSupplierCode(long supplierCode) {
+ super();
+ this.supplierCode = supplierCode;
+ }
+
+ public long getSupplierCode() {
+ return supplierCode;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockSupplierCode");
+
+ // Simple Field (supplierCode)
+ writeSimpleField(
+ "supplierCode",
+ supplierCode,
+ writeUnsignedLong(writeBuffer, 24),
+ WithOption.WithEncoding("AsciiUint"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockSupplierCode");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockSupplierCode _value = this;
+
+ // Simple field (supplierCode)
+ lengthInBits += 24;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockSupplierCodeBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockSupplierCode");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ long supplierCode =
+ readSimpleField(
+ "supplierCode", readUnsignedLong(readBuffer, 24), WithOption.WithEncoding("AsciiUint"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockSupplierCode");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockSupplierCodeBuilder(supplierCode);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockSupplierCodeBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final long supplierCode;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSupplierCodeBuilder(long supplierCode) {
+
+ this.supplierCode = supplierCode;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockSupplierCode build() {
+ ApplicationCommunicationStartAcknowledgeBlockSupplierCode
+ applicationCommunicationStartAcknowledgeBlockSupplierCode =
+ new ApplicationCommunicationStartAcknowledgeBlockSupplierCode(supplierCode);
+ return applicationCommunicationStartAcknowledgeBlockSupplierCode;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockSupplierCode)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockSupplierCode that =
+ (ApplicationCommunicationStartAcknowledgeBlockSupplierCode) o;
+ return (getSupplierCode() == that.getSupplierCode()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSupplierCode());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemSubtype.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemSubtype.java
new file mode 100644
index 0000000000..ea4c9bd025
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemSubtype.java
@@ -0,0 +1,153 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockSystemSubtype
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 11;
+ }
+
+ // Properties.
+ protected final String systemSubtype;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemSubtype(String systemSubtype) {
+ super();
+ this.systemSubtype = systemSubtype;
+ }
+
+ public String getSystemSubtype() {
+ return systemSubtype;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockSystemSubtype");
+
+ // Simple Field (systemSubtype)
+ writeSimpleField(
+ "systemSubtype",
+ systemSubtype,
+ writeString(writeBuffer, 24),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockSystemSubtype");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockSystemSubtype _value = this;
+
+ // Simple field (systemSubtype)
+ lengthInBits += 24;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockSystemSubtypeBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockSystemSubtype");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String systemSubtype =
+ readSimpleField(
+ "systemSubtype", readString(readBuffer, 24), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockSystemSubtype");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockSystemSubtypeBuilder(systemSubtype);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockSystemSubtypeBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String systemSubtype;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemSubtypeBuilder(String systemSubtype) {
+
+ this.systemSubtype = systemSubtype;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemSubtype build() {
+ ApplicationCommunicationStartAcknowledgeBlockSystemSubtype
+ applicationCommunicationStartAcknowledgeBlockSystemSubtype =
+ new ApplicationCommunicationStartAcknowledgeBlockSystemSubtype(systemSubtype);
+ return applicationCommunicationStartAcknowledgeBlockSystemSubtype;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockSystemSubtype)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockSystemSubtype that =
+ (ApplicationCommunicationStartAcknowledgeBlockSystemSubtype) o;
+ return (getSystemSubtype() == that.getSystemSubtype()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSystemSubtype());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemType.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemType.java
new file mode 100644
index 0000000000..6a8d0cce78
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockSystemType.java
@@ -0,0 +1,149 @@
+/*
+ * 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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockSystemType
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 10;
+ }
+
+ // Properties.
+ protected final String systemType;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemType(String systemType) {
+ super();
+ this.systemType = systemType;
+ }
+
+ public String getSystemType() {
+ return systemType;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockSystemType");
+
+ // Simple Field (systemType)
+ writeSimpleField(
+ "systemType", systemType, writeString(writeBuffer, 24), WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockSystemType");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockSystemType _value = this;
+
+ // Simple field (systemType)
+ lengthInBits += 24;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockSystemTypeBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockSystemType");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String systemType =
+ readSimpleField("systemType", readString(readBuffer, 24), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockSystemType");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockSystemTypeBuilder(systemType);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockSystemTypeBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String systemType;
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemTypeBuilder(String systemType) {
+
+ this.systemType = systemType;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockSystemType build() {
+ ApplicationCommunicationStartAcknowledgeBlockSystemType
+ applicationCommunicationStartAcknowledgeBlockSystemType =
+ new ApplicationCommunicationStartAcknowledgeBlockSystemType(systemType);
+ return applicationCommunicationStartAcknowledgeBlockSystemType;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockSystemType)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockSystemType that =
+ (ApplicationCommunicationStartAcknowledgeBlockSystemType) o;
+ return (getSystemType() == that.getSystemType()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSystemType());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion.java
new file mode 100644
index 0000000000..0ddd7b72be
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion.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.openprotocol.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 ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion
+ extends ApplicationCommunicationStartAcknowledgeBlock implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getBlockType() {
+ return (int) 7;
+ }
+
+ // Properties.
+ protected final String toolSoftwareVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion(
+ String toolSoftwareVersion) {
+ super();
+ this.toolSoftwareVersion = toolSoftwareVersion;
+ }
+
+ public String getToolSoftwareVersion() {
+ return toolSoftwareVersion;
+ }
+
+ @Override
+ protected void serializeApplicationCommunicationStartAcknowledgeBlockChild(
+ WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion");
+
+ // Simple Field (toolSoftwareVersion)
+ writeSimpleField(
+ "toolSoftwareVersion",
+ toolSoftwareVersion,
+ writeString(writeBuffer, 152),
+ WithOption.WithEncoding("ASCII"));
+
+ writeBuffer.popContext("ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion _value = this;
+
+ // Simple field (toolSoftwareVersion)
+ lengthInBits += 152;
+
+ return lengthInBits;
+ }
+
+ public static ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersionBuilder
+ staticParseBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ String toolSoftwareVersion =
+ readSimpleField(
+ "toolSoftwareVersion", readString(readBuffer, 152), WithOption.WithEncoding("ASCII"));
+
+ readBuffer.closeContext("ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion");
+ // Create the instance
+ return new ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersionBuilder(
+ toolSoftwareVersion);
+ }
+
+ public static class ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersionBuilder
+ implements ApplicationCommunicationStartAcknowledgeBlock
+ .ApplicationCommunicationStartAcknowledgeBlockBuilder {
+ private final String toolSoftwareVersion;
+
+ public ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersionBuilder(
+ String toolSoftwareVersion) {
+
+ this.toolSoftwareVersion = toolSoftwareVersion;
+ }
+
+ public ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion build() {
+ ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion
+ applicationCommunicationStartAcknowledgeBlockToolSoftwareVersion =
+ new ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion(
+ toolSoftwareVersion);
+ return applicationCommunicationStartAcknowledgeBlockToolSoftwareVersion;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion)) {
+ return false;
+ }
+ ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion that =
+ (ApplicationCommunicationStartAcknowledgeBlockToolSoftwareVersion) o;
+ return (getToolSoftwareVersion() == that.getToolSoftwareVersion())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getToolSoftwareVersion());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Constants.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Constants.java
new file mode 100644
index 0000000000..d0bdbdb53b
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Constants.java
@@ -0,0 +1,126 @@
+/*
+ * 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.openprotocol.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 Constants implements Message {
+
+ // Constant values.
+ public static final Integer TCPDEFAULTPORT = 4545;
+
+ public Constants() {
+ super();
+ }
+
+ public int getTcpDefaultPort() {
+ return TCPDEFAULTPORT;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("Constants");
+
+ // Const Field (tcpDefaultPort)
+ writeConstField("tcpDefaultPort", TCPDEFAULTPORT, writeUnsignedInt(writeBuffer, 16));
+
+ writeBuffer.popContext("Constants");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ Constants _value = this;
+
+ // Const Field (tcpDefaultPort)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static Constants staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static Constants staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("Constants");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ int tcpDefaultPort =
+ readConstField("tcpDefaultPort", readUnsignedInt(readBuffer, 16), Constants.TCPDEFAULTPORT);
+
+ readBuffer.closeContext("Constants");
+ // Create the instance
+ Constants _constants;
+ _constants = new Constants();
+ return _constants;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Constants)) {
+ return false;
+ }
+ Constants that = (Constants) 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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Error.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Error.java
new file mode 100644
index 0000000000..002f461fb5
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Error.java
@@ -0,0 +1,142 @@
+/*
+ * 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.openprotocol.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum Error {
+ NoError((int) 0),
+ InvalidData((int) 1),
+ ParameterSetIdNotPresent((int) 2),
+ ParameterSetCanNotBeSet((int) 3),
+ ParameterSetNotRunning((int) 4),
+ VinUploadSubscriptionAlreadyExists((int) 6),
+ VinUploadSubscriptionDoesNotExist((int) 7),
+ VinInputSourceNotGranted((int) 8),
+ LastTighteningResultSubscriptionAlreadyExists((int) 9),
+ LastTighteningResultSubscriptionDoesNowExist((int) 10),
+ AlarmSubscriptionAlreadyExists((int) 11),
+ AlarmSubscriptionDoesNotExist((int) 12),
+ ParameterSetSubscriptionAlreadyExists((int) 13),
+ ParameterSetSubscriptionDoesNotExist((int) 14),
+ TighteningIdRequestedNotFound((int) 15),
+ ConnectionRejectedProtocolBusy((int) 16),
+ JobIdNotPresent((int) 17),
+ JobInfoSubscriptionAlreadyExists((int) 18),
+ JobInfoSubscriptionDoesNotExist((int) 19),
+ JobCanNotBeSet((int) 20),
+ JobNotRunning((int) 21),
+ NotPossibleToExecuteDynamicJobRequest((int) 22),
+ JobBatchDecrementFailed((int) 23),
+ NotPossibleToCreatePset((int) 24),
+ ProgrammingControlNotGranted((int) 25),
+ WrongToolTypeToPsetDownloadConnected((int) 26),
+ ToolIsInaccessible((int) 27),
+ JobAbortionIsInProgress((int) 28),
+ ControllerIdNotASyncMasterOrStationController((int) 30),
+ MultiSpindleStatusSubscriptionAlreadyExists((int) 31),
+ MultiSpindleStatusSubscriptionDoesNotExist((int) 32),
+ MultiSpindleResultSubscriptionAlreadyExists((int) 33),
+ MultiSpindleResultSubscriptionDoesNotExist((int) 34),
+ OtherMasterClientAlreadyConnected((int) 35),
+ JobLineControlInfoSubscriptionAlreadyExists((int) 40),
+ JobLineControlInfoSubscriptionDoesNotExist((int) 41),
+ IdentifierInputSourceNotGranted((int) 42),
+ MultipleIdentifiersWorkOrderSubscriptionAlreadyExists((int) 43),
+ MultipleIdentifiersWorkOrderSubscriptionDoesNotExist((int) 44),
+ StatusExternalMonitoredInputsSubscriptionAlreadyExists((int) 50),
+ StatusExternalMonitoredInputsSubscriptionDoesNotExist((int) 51),
+ IoDeviceNotConnected((int) 52),
+ FaultyIoDeviceId((int) 53),
+ ToolTagIdUnknown((int) 54),
+ ToolTagIdSubscriptionAlreadyExists((int) 55),
+ ToolTagIdSubscriptionDoesNotExist((int) 56),
+ ToolMotorTuningFailed((int) 57),
+ NoAlarmPresent((int) 58),
+ ToolCurrentlyInUse((int) 59),
+ NoHistogramAvailable((int) 60),
+ PairingFailed((int) 61),
+ PairingDenied((int) 62),
+ PairingOrPairingAbortionAttemptOrWrongToolType((int) 63),
+ PairingAbortionDenied((int) 64),
+ PairingAbortionFailed((int) 65),
+ PairingDisconnectionFailed((int) 66),
+ PairingInProgressOrAlreadyDone((int) 67),
+ PairingDeniedNoProgramControl((int) 68),
+ UnsupportedExtraDataRevision((int) 69),
+ CalibrationFailed((int) 70),
+ SubscriptionAlreadyExists((int) 71),
+ SubscriptionDoesNotExist((int) 72),
+ SubscribedMidUnsupported((int) 73),
+ SubscribedMidRevisionUnsupported((int) 74),
+ RequestedMidUnsupported((int) 75),
+ RequestedMidRevisionUnsupported((int) 76),
+ RequestedOnSpecificDataNotSupported((int) 77),
+ SubscriptionOnSpecificDataNotSupported((int) 78),
+ CommandFailed((int) 79),
+ AudiEmergencyStatusSubscriptionAlreadyExists((int) 80),
+ AudiEmergencyStatusSubscriptionDoesNotExist((int) 81),
+ AutomaticOrManualModeSubscriptionAlreadyExists((int) 82),
+ AutomaticOrManualModeSubscriptionDoesNotExist((int) 83),
+ TheRelayFunctionSubscriptionAlreadyExists((int) 84),
+ TheRelayFunctionSubscriptionDoesNotExist((int) 85),
+ TheSelectorSocketInfoSubscriptionAlreadyExists((int) 86),
+ TheSelectorSocketInfoSubscriptionDoesNotExist((int) 87),
+ TheDiginInfoSubscriptionAlreadyExists((int) 88),
+ TheDiginInfoSubscriptionDoesNotExist((int) 89),
+ LockAtBatchDoneSubscriptionAlreadyExists((int) 90),
+ LockAtBatchDoneSubscriptionDoesNotExist((int) 91),
+ OpenProtocolCommendsDisabled((int) 92),
+ OpenProtocolCommendsDisabledSubscriptionAlreadyExists((int) 93),
+ OpenProtocolCommendsDisabledSubscriptionDoesNotExist((int) 94),
+ RejectRequestPowerMacsIsInManualMode((int) 95),
+ RejectConnectionClientAlreadyConnected((int) 96),
+ MidRevisionUnsupported((int) 97),
+ ControllerInternalRequestTimeout((int) 98),
+ UnknownMid((int) 99);
+ private static final Map<Integer, Error> map;
+
+ static {
+ map = new HashMap<>();
+ for (Error value : Error.values()) {
+ map.put((int) value.getValue(), value);
+ }
+ }
+
+ private int value;
+
+ Error(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public static Error enumForValue(int value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(int value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Mid.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Mid.java
new file mode 100644
index 0000000000..6e4793200c
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/Mid.java
@@ -0,0 +1,239 @@
+/*
+ * 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.openprotocol.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum Mid {
+ ApplicationCommunicationStart((long) 1L),
+ ApplicationCommunicationStartAcknowledge((long) 2L),
+ ApplicationCommunicationStop((long) 3L),
+ ApplicationCommandError((long) 4L),
+ ApplicationCommandAccepted((long) 5L),
+ ApplicationGenericDataRequest((long) 6L),
+ Reserved((long) 7L),
+ ApplicationGenericSubscription((long) 8L),
+ ApplicationGenericUnsubscribe((long) 9L),
+ ParameterSetIdUploadRequest((long) 10L),
+ ParameterSetIdUploadReply((long) 11L),
+ ParameterSetDataUploadRequest((long) 12L),
+ ParameterSetDataUploadReply((long) 13L),
+ ParameterSetSelectedSubscribe((long) 14L),
+ ParameterSetSelected((long) 15L),
+ ParameterSetSelectedAcknowledge((long) 16L),
+ ParameterSetSelectedUnsubscribe((long) 17L),
+ SelectParameterSet((long) 18L),
+ SetParameterSetBatchSize((long) 19L),
+ ResetParameterSetBatchCounter((long) 20L),
+ LockAtBatchDoneSubscribe((long) 21L),
+ LockAtBatchDoneUpload((long) 22L),
+ LockAtBatchDoneUploadAcknowledge((long) 23L),
+ LockAtBatchDoneUnsubscribe((long) 24L),
+ ReservedForFord((long) 25L),
+ JobIdUploadRequest((long) 30L),
+ JobIdUploadReply((long) 31L),
+ JobDataUploadRequest((long) 32L),
+ JobDataUploadReply((long) 33L),
+ JobInfoSubscribe((long) 34L),
+ JobInfo((long) 35L),
+ JobInfoAcknowledge((long) 36L),
+ JobInfoUnsubscribe((long) 37L),
+ SelectJob((long) 38L),
+ JobRestart((long) 39L),
+ ToolDataUploadRequest((long) 40L),
+ ToolDataUploadReply((long) 41L),
+ DisableTool((long) 42L),
+ EnableTool((long) 43L),
+ DisconnectToolRequest((long) 44L),
+ SetCalibrationValueRequest((long) 45L),
+ SetPrimaryToolRequest((long) 46L),
+ PairingHandling((long) 47L),
+ PairingStatus((long) 48L),
+ PairingStatusAcknowledge((long) 49L),
+ VehicleIdNumberDownloadRequest((long) 50L),
+ VehicleIdNumberSubscribe((long) 51L),
+ VehicleIdNumber((long) 52L),
+ VehicleIdNumberAcknowledge((long) 53L),
+ VehicleIdNumberUnsubscribe((long) 54L),
+ LastTighteningResultDataSubscribe((long) 60L),
+ LastTighteningResultData((long) 61L),
+ LastTighteningResultDataAcknowledge((long) 62L),
+ LastTighteningResultDataUnsubscribe((long) 63L),
+ OldTighteningResultUploadRequest((long) 64L),
+ OldTighteningResultUploadReply((long) 65L),
+ AlarmSubscribe((long) 70L),
+ Alarm((long) 71L),
+ AlarmAcknowledge((long) 72L),
+ AlarmUnsubscribe((long) 73L),
+ AlarmAcknowledgedOnController((long) 74L),
+ AlarmAcknowledgedOnControllerAcknowledge((long) 75L),
+ AlarmStatus((long) 76L),
+ AlarmStatusAcknowledge((long) 77L),
+ AcknowledgeAlarmRemotelyOnController((long) 78L),
+ ReadTimeUploadRequest((long) 80L),
+ ReadTimeUploadReply((long) 81L),
+ SetTime((long) 82L),
+ MultiSpindleStatusSubscribe((long) 90L),
+ MultiSpindleStatus((long) 91L),
+ MultiSpindleStatusAcknowledge((long) 92L),
+ MultiSpindleStatusUnsubscribe((long) 93L),
+ MultiSpindleResultSubscribe((long) 100L),
+ MultiSpindleResult((long) 101L),
+ MultiSpindleResultAcknowledge((long) 102L),
+ MultiSpindleResultUnsubscribe((long) 103L),
+ LastPowerMacsTighteningResultDataSubscribe((long) 105L),
+ LastPowerMacsTighteningResultStationData((long) 106L),
+ LastPowerMacsTighteningResultBoltData((long) 107L),
+ LastPowerMacsTighteningResultDataAcknowledge((long) 108L),
+ LastPowerMacsTighteningResultDataUnsubscribe((long) 109L),
+ DisplayUserTextOnCompact((long) 110L),
+ DisplayUserTextOnGraph((long) 111L),
+ FlashGreenLightOnTool((long) 113L),
+ JobLineControlInfoSubscribe((long) 120L),
+ JobLineControlStarted((long) 121L),
+ JobLineControlAlert1((long) 122L),
+ JobLineControlAlert2((long) 123L),
+ JobLineControlDone((long) 124L),
+ JobLineControlInfoAcknowledge((long) 125L),
+ JobLineControlUnsubscribe((long) 126L),
+ AbortJob((long) 127L),
+ JobBatchIncrement((long) 128L),
+ JobBatchDecrement((long) 129L),
+ JobOff((long) 130L),
+ SetJobLineControlStart((long) 131L),
+ SetJobLineControlAlert1((long) 132L),
+ SetJobLineControlAlert2((long) 133L),
+ ExecuteDynamicJobRequest((long) 140L),
+ IdentifierDownloadRequest((long) 150L),
+ MultipleIdentifiersWorkOrderSubscribe((long) 151L),
+ MultipleIdentifiersWorkOrder((long) 152L),
+ MultipleIdentifiersWorkOrderAcknowledge((long) 153L),
+ MultipleIdentifiersWorkOrderUnsubscribe((long) 154L),
+ BypassIdentifier((long) 155L),
+ ResetLatestIdentifier((long) 156L),
+ ResetAllIdentifiers((long) 157L),
+ SetExternalControlledRelays((long) 200L),
+ StatusExternalMonitoredInputsSubscribe((long) 210L),
+ StatusExternalMonitoredInputs((long) 211L),
+ StatusExternalMonitoredInputsAcknowledge((long) 212L),
+ StatusExternalMonitoredInputsUnsubscribe((long) 213L),
+ IoDeviceStatusRequest((long) 214L),
+ IoDeviceStatusReply((long) 215L),
+ RelayFunctionSubscribe((long) 216L),
+ RelayFunction((long) 217L),
+ RelayFunctionAcknowledge((long) 218L),
+ RelayFunctionUnsubscribe((long) 219L),
+ DigitalInputFunctionSubscribe((long) 220L),
+ DigitalInputFunction((long) 221L),
+ DigitalInputFunctionAcknowledge((long) 222L),
+ DigitalInputFunctionUnsubscribe((long) 223L),
+ SetDigitalInputFunction((long) 224L),
+ ResetDigitalInputFunction((long) 225L),
+ UserDataDownload((long) 240L),
+ UserDataSubscribe((long) 241L),
+ UserData((long) 242L),
+ UserDataAcknowledge((long) 243L),
+ UserDataUnsubscribe((long) 244L),
+ UserDataDownloadWithOffset((long) 245L),
+ SelectorSocketInfoSubscribe((long) 250L),
+ SelectorSocketInfo((long) 251L),
+ SelectorSocketInfoAcknowledge((long) 252L),
+ SelectorSocketInfoUnsubscribe((long) 253L),
+ SelectorControlGreenLights((long) 254L),
+ SelectorControlRedLights((long) 255L),
+ ToolTagIdRequest((long) 260L),
+ ToolTagIdSubscribe((long) 261L),
+ ToolTagId((long) 262L),
+ ToolTagIdAcknowledge((long) 263L),
+ ToolTagIdUnsubscribe((long) 264L),
+ ControllerRebootRequest((long) 270L),
+ HistogramUploadRequest((long) 300L),
+ HistogramUploadReply((long) 301L),
+ AutomaticManualModeSubscribe((long) 400L),
+ AutomaticManualMode((long) 401L),
+ AutomaticManualModeAcknowledge((long) 402L),
+ AutomaticManualModeUnsubscribe((long) 403L),
+ AutoDisableSettingsRequest((long) 410L),
+ AutoDisableSettingsReply((long) 411L),
+ OpenProtocolCommandsDisabledSubscribe((long) 420L),
+ OpenProtocolCommandsDisabled((long) 421L),
+ OpenProtocolCommandsDisabledAcknowledge((long) 422L),
+ OpenProtocolCommandsDisabledUnsubscribe((long) 423L),
+ MotorTuningResultDataSubscribe((long) 500L),
+ MotorTuningResultData((long) 501L),
+ MotorTuningResultDataAcknowledge((long) 502L),
+ MotorTuningResultDataUnsubscribe((long) 503L),
+ MotorTuningRequest((long) 504L),
+ TighteningDataDownloadStatusForRadioTools((long) 700L),
+ ResultTracesCurve((long) 900L),
+ ResultTracesCurvePlotData((long) 901L),
+ LastOperationResultOverallData((long) 1201L),
+ LastOperationResultObjectData((long) 1202L),
+ LastOperationResultDataAcknowledge((long) 1203L),
+ DeviceCommand((long) 2100L),
+ ProgramDataDownload((long) 2500L),
+ ProgramDataUploadReply((long) 2501L),
+ PasswordRequest((long) 2502L),
+ PasswordReply((long) 2503L),
+ ProgramPsetSelectionInDynamicJob((long) 2504L),
+ DynamicPsetSelection((long) 2505L),
+ ModeIdUploadRequest((long) 2600L),
+ ModeIdUploadReply((long) 2601L),
+ ModeDataUploadRequest((long) 2602L),
+ ModeDataUploadReply((long) 2603L),
+ ModeSelected((long) 2604L),
+ ModeSelectedAcknowledge((long) 2605L),
+ SelectMode((long) 2606L),
+ AudiEmergencyStatusSubscribe((long) 8000L),
+ AudiEmergencyStatus((long) 8001L),
+ AudiEmergencyStatusAcknowledge((long) 8002L),
+ AudiEmergencyStatusUnsubscribe((long) 8003L),
+ LinkLevelPositiveAcknowledge((long) 9997L),
+ LinkLevelNegativeAcknowledge((long) 9998L),
+ KeepAliveOpenProtocolCommunication((long) 9999L);
+ private static final Map<Long, Mid> map;
+
+ static {
+ map = new HashMap<>();
+ for (Mid value : Mid.values()) {
+ map.put((long) value.getValue(), value);
+ }
+ }
+
+ private long value;
+
+ Mid(long value) {
+ this.value = value;
+ }
+
+ public long getValue() {
+ return value;
+ }
+
+ public static Mid enumForValue(long value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(long value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/MidTypes.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/MidTypes.java
new file mode 100644
index 0000000000..5cf75deaad
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/MidTypes.java
@@ -0,0 +1,74 @@
+/*
+ * 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.openprotocol.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum MidTypes {
+ JobMessage((long) 0L),
+ ToolMessage((long) 1L),
+ VinMessage((long) 2L),
+ TighteningResultMessage((long) 3L),
+ AlarmMessage((long) 4L),
+ TimeMessage((long) 5L),
+ MultiSpindleStatusMessage((long) 6L),
+ MultiSpindleResultMessage((long) 7L),
+ UserInterfaceMessage((long) 8L),
+ JobMessageAdvanced((long) 9L),
+ MultipleIdentifiersMessage((long) 10L),
+ IOInterfaceMessage((long) 11L),
+ PlcUserDataMessage((long) 12L),
+ SelectorMessage((long) 13L),
+ ToolLocationSystemMessage((long) 14L),
+ ControllerMessage((long) 15L),
+ StatisticMessage((long) 16L),
+ AutomaticManualModeMessage((long) 17L),
+ OpenProtocolCommandsDisabledMessage((long) 18L),
+ ParameterSetMessage((long) 19L),
+ NewGroupsMessage((long) 20L);
+ private static final Map<Long, MidTypes> map;
+
+ static {
+ map = new HashMap<>();
+ for (MidTypes value : MidTypes.values()) {
+ map.put((long) value.getValue(), value);
+ }
+ }
+
+ private long value;
+
+ MidTypes(long value) {
+ this.value = value;
+ }
+
+ public long getValue() {
+ return value;
+ }
+
+ public static MidTypes enumForValue(long value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(long value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessage.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessage.java
new file mode 100644
index 0000000000..50aae65ee4
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessage.java
@@ -0,0 +1,373 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessage implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Mid getMid();
+
+ // Constant values.
+ public static final Short END = 0x00;
+
+ // Properties.
+ protected final OpenProtocolRevision revision;
+ protected final short noAckFlag;
+ protected final int stationId;
+ protected final int spindleId;
+ protected final int sequenceNumber;
+ protected final short numberOfMessageParts;
+ protected final short messagePartNumber;
+
+ public OpenProtocolMessage(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ super();
+ this.revision = revision;
+ this.noAckFlag = noAckFlag;
+ this.stationId = stationId;
+ this.spindleId = spindleId;
+ this.sequenceNumber = sequenceNumber;
+ this.numberOfMessageParts = numberOfMessageParts;
+ this.messagePartNumber = messagePartNumber;
+ }
+
+ public OpenProtocolRevision getRevision() {
+ return revision;
+ }
+
+ public short getNoAckFlag() {
+ return noAckFlag;
+ }
+
+ public int getStationId() {
+ return stationId;
+ }
+
+ public int getSpindleId() {
+ return spindleId;
+ }
+
+ public int getSequenceNumber() {
+ return sequenceNumber;
+ }
+
+ public short getNumberOfMessageParts() {
+ return numberOfMessageParts;
+ }
+
+ public short getMessagePartNumber() {
+ return messagePartNumber;
+ }
+
+ public short getEnd() {
+ return END;
+ }
+
+ protected abstract void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessage");
+
+ // Implicit Field (length) (Used for parsing, but its value is not stored as it's implicitly
+ // given by the objects content)
+ long length = (long) (getLengthInBytes());
+ writeImplicitField("length", length, writeUnsignedLong(writeBuffer, 32));
+
+ // Discriminator Field (mid) (Used as input to a switch field)
+ writeDiscriminatorEnumField(
+ "mid",
+ "Mid",
+ getMid(),
+ new DataWriterEnumDefault<>(Mid::getValue, Mid::name, writeUnsignedLong(writeBuffer, 32)));
+
+ // Simple Field (revision)
+ writeSimpleEnumField(
+ "revision",
+ "OpenProtocolRevision",
+ revision,
+ new DataWriterEnumDefault<>(
+ OpenProtocolRevision::getValue,
+ OpenProtocolRevision::name,
+ writeUnsignedLong(writeBuffer, 24)));
+
+ // Simple Field (noAckFlag)
+ writeSimpleField("noAckFlag", noAckFlag, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (stationId)
+ writeSimpleField(
+ "stationId",
+ stationId,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Simple Field (spindleId)
+ writeSimpleField(
+ "spindleId",
+ spindleId,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Simple Field (sequenceNumber)
+ writeSimpleField(
+ "sequenceNumber",
+ sequenceNumber,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Simple Field (numberOfMessageParts)
+ writeSimpleField(
+ "numberOfMessageParts",
+ numberOfMessageParts,
+ writeUnsignedShort(writeBuffer, 8),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Simple Field (messagePartNumber)
+ writeSimpleField(
+ "messagePartNumber",
+ messagePartNumber,
+ writeUnsignedShort(writeBuffer, 8),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Switch field (Serialize the sub-type)
+ serializeOpenProtocolMessageChild(writeBuffer);
+
+ // Const Field (end)
+ writeConstField("end", END, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("OpenProtocolMessage");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ OpenProtocolMessage _value = this;
+
+ // Implicit Field (length)
+ lengthInBits += 32;
+
+ // Discriminator Field (mid)
+ lengthInBits += 32;
+
+ // Simple field (revision)
+ lengthInBits += 24;
+
+ // Simple field (noAckFlag)
+ lengthInBits += 8;
+
+ // Simple field (stationId)
+ lengthInBits += 16;
+
+ // Simple field (spindleId)
+ lengthInBits += 16;
+
+ // Simple field (sequenceNumber)
+ lengthInBits += 16;
+
+ // Simple field (numberOfMessageParts)
+ lengthInBits += 8;
+
+ // Simple field (messagePartNumber)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ // Const Field (end)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessage staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static OpenProtocolMessage staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessage");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ long length =
+ readImplicitField(
+ "length", readUnsignedLong(readBuffer, 32), WithOption.WithEncoding("AsciiUint"));
+
+ Mid mid =
+ readDiscriminatorField(
+ "mid",
+ new DataReaderEnumDefault<>(Mid::enumForValue, readUnsignedLong(readBuffer, 32)));
+
+ OpenProtocolRevision revision =
+ readEnumField(
+ "revision",
+ "OpenProtocolRevision",
+ new DataReaderEnumDefault<>(
+ OpenProtocolRevision::enumForValue, readUnsignedLong(readBuffer, 24)));
+
+ short noAckFlag = readSimpleField("noAckFlag", readUnsignedShort(readBuffer, 8));
+
+ int stationId =
+ readSimpleField(
+ "stationId", readUnsignedInt(readBuffer, 16), WithOption.WithEncoding("AsciiUint"));
+
+ int spindleId =
+ readSimpleField(
+ "spindleId", readUnsignedInt(readBuffer, 16), WithOption.WithEncoding("AsciiUint"));
+
+ int sequenceNumber =
+ readSimpleField(
+ "sequenceNumber",
+ readUnsignedInt(readBuffer, 16),
+ WithOption.WithEncoding("AsciiUint"));
+
+ short numberOfMessageParts =
+ readSimpleField(
+ "numberOfMessageParts",
+ readUnsignedShort(readBuffer, 8),
+ WithOption.WithEncoding("AsciiUint"));
+
+ short messagePartNumber =
+ readSimpleField(
+ "messagePartNumber",
+ readUnsignedShort(readBuffer, 8),
+ WithOption.WithEncoding("AsciiUint"));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ OpenProtocolMessageBuilder builder = null;
+ if (EvaluationHelper.equals(mid, Mid.ApplicationCommunicationStart)) {
+ builder = OpenProtocolMessageApplicationCommunicationStart.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(mid, Mid.ApplicationCommunicationStartAcknowledge)) {
+ builder =
+ OpenProtocolMessageApplicationCommunicationStartAcknowledge.staticParseBuilder(
+ readBuffer, revision);
+ } else if (EvaluationHelper.equals(mid, Mid.ApplicationCommunicationStop)) {
+ builder = OpenProtocolMessageApplicationCommunicationStop.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(mid, Mid.ApplicationCommandError)) {
+ builder = OpenProtocolMessageApplicationCommandError.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(mid, Mid.ApplicationCommandAccepted)) {
+ builder = OpenProtocolMessageApplicationCommandAccepted.staticParseBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(mid, Mid.ApplicationGenericDataRequest)) {
+ builder = OpenProtocolMessageApplicationGenericDataRequest.staticParseBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "mid=" + mid + "]");
+ }
+
+ short end = readConstField("end", readUnsignedShort(readBuffer, 8), OpenProtocolMessage.END);
+
+ readBuffer.closeContext("OpenProtocolMessage");
+ // Create the instance
+ OpenProtocolMessage _openProtocolMessage =
+ builder.build(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ return _openProtocolMessage;
+ }
+
+ public static interface OpenProtocolMessageBuilder {
+ OpenProtocolMessage build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessage)) {
+ return false;
+ }
+ OpenProtocolMessage that = (OpenProtocolMessage) o;
+ return (getRevision() == that.getRevision())
+ && (getNoAckFlag() == that.getNoAckFlag())
+ && (getStationId() == that.getStationId())
+ && (getSpindleId() == that.getSpindleId())
+ && (getSequenceNumber() == that.getSequenceNumber())
+ && (getNumberOfMessageParts() == that.getNumberOfMessageParts())
+ && (getMessagePartNumber() == that.getMessagePartNumber())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getRevision(),
+ getNoAckFlag(),
+ getStationId(),
+ getSpindleId(),
+ getSequenceNumber(),
+ getNumberOfMessageParts(),
+ getMessagePartNumber());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandAccepted.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandAccepted.java
new file mode 100644
index 0000000000..ded7fd7e39
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandAccepted.java
@@ -0,0 +1,183 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationCommandAccepted extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationCommandAccepted;
+ }
+
+ // Properties.
+ protected final Mid requestMid;
+
+ public OpenProtocolMessageApplicationCommandAccepted(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber,
+ Mid requestMid) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ this.requestMid = requestMid;
+ }
+
+ public Mid getRequestMid() {
+ return requestMid;
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationCommandAccepted");
+
+ // Simple Field (requestMid)
+ writeSimpleEnumField(
+ "requestMid",
+ "Mid",
+ requestMid,
+ new DataWriterEnumDefault<>(Mid::getValue, Mid::name, writeUnsignedLong(writeBuffer, 32)));
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationCommandAccepted");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationCommandAccepted _value = this;
+
+ // Simple field (requestMid)
+ lengthInBits += 32;
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationCommandAcceptedBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationCommandAccepted");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ Mid requestMid =
+ readEnumField(
+ "requestMid",
+ "Mid",
+ new DataReaderEnumDefault<>(Mid::enumForValue, readUnsignedLong(readBuffer, 32)));
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationCommandAccepted");
+ // Create the instance
+ return new OpenProtocolMessageApplicationCommandAcceptedBuilder(requestMid);
+ }
+
+ public static class OpenProtocolMessageApplicationCommandAcceptedBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+ private final Mid requestMid;
+
+ public OpenProtocolMessageApplicationCommandAcceptedBuilder(Mid requestMid) {
+
+ this.requestMid = requestMid;
+ }
+
+ public OpenProtocolMessageApplicationCommandAccepted build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationCommandAccepted openProtocolMessageApplicationCommandAccepted =
+ new OpenProtocolMessageApplicationCommandAccepted(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber,
+ requestMid);
+ return openProtocolMessageApplicationCommandAccepted;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationCommandAccepted)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationCommandAccepted that =
+ (OpenProtocolMessageApplicationCommandAccepted) o;
+ return (getRequestMid() == that.getRequestMid()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getRequestMid());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandError.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandError.java
new file mode 100644
index 0000000000..8ca76c10a5
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommandError.java
@@ -0,0 +1,213 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationCommandError extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationCommandError;
+ }
+
+ // Properties.
+ protected final Mid requestMid;
+ protected final Error error;
+
+ public OpenProtocolMessageApplicationCommandError(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber,
+ Mid requestMid,
+ Error error) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ this.requestMid = requestMid;
+ this.error = error;
+ }
+
+ public Mid getRequestMid() {
+ return requestMid;
+ }
+
+ public Error getError() {
+ return error;
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationCommandError");
+
+ // Simple Field (requestMid)
+ writeSimpleEnumField(
+ "requestMid",
+ "Mid",
+ requestMid,
+ new DataWriterEnumDefault<>(Mid::getValue, Mid::name, writeUnsignedLong(writeBuffer, 32)));
+
+ // Simple Field (error)
+ writeSimpleEnumField(
+ "error",
+ "Error",
+ error,
+ new DataWriterEnumDefault<>(
+ Error::getValue, Error::name, writeUnsignedInt(writeBuffer, 16)));
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationCommandError");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationCommandError _value = this;
+
+ // Simple field (requestMid)
+ lengthInBits += 32;
+
+ // Simple field (error)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationCommandErrorBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationCommandError");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ Mid requestMid =
+ readEnumField(
+ "requestMid",
+ "Mid",
+ new DataReaderEnumDefault<>(Mid::enumForValue, readUnsignedLong(readBuffer, 32)));
+
+ Error error =
+ readEnumField(
+ "error",
+ "Error",
+ new DataReaderEnumDefault<>(Error::enumForValue, readUnsignedInt(readBuffer, 16)));
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationCommandError");
+ // Create the instance
+ return new OpenProtocolMessageApplicationCommandErrorBuilder(requestMid, error);
+ }
+
+ public static class OpenProtocolMessageApplicationCommandErrorBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+ private final Mid requestMid;
+ private final Error error;
+
+ public OpenProtocolMessageApplicationCommandErrorBuilder(Mid requestMid, Error error) {
+
+ this.requestMid = requestMid;
+ this.error = error;
+ }
+
+ public OpenProtocolMessageApplicationCommandError build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationCommandError openProtocolMessageApplicationCommandError =
+ new OpenProtocolMessageApplicationCommandError(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber,
+ requestMid,
+ error);
+ return openProtocolMessageApplicationCommandError;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationCommandError)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationCommandError that =
+ (OpenProtocolMessageApplicationCommandError) o;
+ return (getRequestMid() == that.getRequestMid())
+ && (getError() == that.getError())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getRequestMid(), getError());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStart.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStart.java
new file mode 100644
index 0000000000..4cb9c89ba1
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStart.java
@@ -0,0 +1,154 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationCommunicationStart extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationCommunicationStart;
+ }
+
+ public OpenProtocolMessageApplicationCommunicationStart(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationCommunicationStart");
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationCommunicationStart");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationCommunicationStart _value = this;
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationCommunicationStartBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationCommunicationStart");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationCommunicationStart");
+ // Create the instance
+ return new OpenProtocolMessageApplicationCommunicationStartBuilder();
+ }
+
+ public static class OpenProtocolMessageApplicationCommunicationStartBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+
+ public OpenProtocolMessageApplicationCommunicationStartBuilder() {}
+
+ public OpenProtocolMessageApplicationCommunicationStart build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationCommunicationStart
+ openProtocolMessageApplicationCommunicationStart =
+ new OpenProtocolMessageApplicationCommunicationStart(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ return openProtocolMessageApplicationCommunicationStart;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationCommunicationStart)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationCommunicationStart that =
+ (OpenProtocolMessageApplicationCommunicationStart) 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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStartAcknowledge.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStartAcknowledge.java
new file mode 100644
index 0000000000..bc8bfdd7ca
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStartAcknowledge.java
@@ -0,0 +1,190 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationCommunicationStartAcknowledge extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationCommunicationStartAcknowledge;
+ }
+
+ // Properties.
+ protected final List<ApplicationCommunicationStartAcknowledgeBlock> blocks;
+
+ public OpenProtocolMessageApplicationCommunicationStartAcknowledge(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber,
+ List<ApplicationCommunicationStartAcknowledgeBlock> blocks) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ this.blocks = blocks;
+ }
+
+ public List<ApplicationCommunicationStartAcknowledgeBlock> getBlocks() {
+ return blocks;
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationCommunicationStartAcknowledge");
+
+ // Array Field (blocks)
+ writeComplexTypeArrayField("blocks", blocks, writeBuffer);
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationCommunicationStartAcknowledge");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationCommunicationStartAcknowledge _value = this;
+
+ // Array field
+ if (blocks != null) {
+ int i = 0;
+ for (ApplicationCommunicationStartAcknowledgeBlock element : blocks) {
+ boolean last = ++i >= blocks.size();
+ lengthInBits += element.getLengthInBits();
+ }
+ }
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationCommunicationStartAcknowledgeBuilder
+ staticParseBuilder(ReadBuffer readBuffer, OpenProtocolRevision revision)
+ throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationCommunicationStartAcknowledge");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ List<ApplicationCommunicationStartAcknowledgeBlock> blocks =
+ readCountArrayField(
+ "blocks",
+ new DataReaderComplexDefault<>(
+ () -> ApplicationCommunicationStartAcknowledgeBlock.staticParse(readBuffer),
+ readBuffer),
+ revision.getNumCommunicationStartAcknowledgeBlocks());
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationCommunicationStartAcknowledge");
+ // Create the instance
+ return new OpenProtocolMessageApplicationCommunicationStartAcknowledgeBuilder(blocks);
+ }
+
+ public static class OpenProtocolMessageApplicationCommunicationStartAcknowledgeBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+ private final List<ApplicationCommunicationStartAcknowledgeBlock> blocks;
+
+ public OpenProtocolMessageApplicationCommunicationStartAcknowledgeBuilder(
+ List<ApplicationCommunicationStartAcknowledgeBlock> blocks) {
+
+ this.blocks = blocks;
+ }
+
+ public OpenProtocolMessageApplicationCommunicationStartAcknowledge build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationCommunicationStartAcknowledge
+ openProtocolMessageApplicationCommunicationStartAcknowledge =
+ new OpenProtocolMessageApplicationCommunicationStartAcknowledge(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber,
+ blocks);
+ return openProtocolMessageApplicationCommunicationStartAcknowledge;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationCommunicationStartAcknowledge)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationCommunicationStartAcknowledge that =
+ (OpenProtocolMessageApplicationCommunicationStartAcknowledge) o;
+ return (getBlocks() == that.getBlocks()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getBlocks());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStop.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStop.java
new file mode 100644
index 0000000000..83ca7ec577
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationCommunicationStop.java
@@ -0,0 +1,154 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationCommunicationStop extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationCommunicationStop;
+ }
+
+ public OpenProtocolMessageApplicationCommunicationStop(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationCommunicationStop");
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationCommunicationStop");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationCommunicationStop _value = this;
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationCommunicationStopBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationCommunicationStop");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationCommunicationStop");
+ // Create the instance
+ return new OpenProtocolMessageApplicationCommunicationStopBuilder();
+ }
+
+ public static class OpenProtocolMessageApplicationCommunicationStopBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+
+ public OpenProtocolMessageApplicationCommunicationStopBuilder() {}
+
+ public OpenProtocolMessageApplicationCommunicationStop build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationCommunicationStop
+ openProtocolMessageApplicationCommunicationStop =
+ new OpenProtocolMessageApplicationCommunicationStop(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ return openProtocolMessageApplicationCommunicationStop;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationCommunicationStop)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationCommunicationStop that =
+ (OpenProtocolMessageApplicationCommunicationStop) 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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationGenericDataRequest.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationGenericDataRequest.java
new file mode 100644
index 0000000000..5381c55931
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolMessageApplicationGenericDataRequest.java
@@ -0,0 +1,250 @@
+/*
+ * 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.openprotocol.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 OpenProtocolMessageApplicationGenericDataRequest extends OpenProtocolMessage
+ implements Message {
+
+ // Accessors for discriminator values.
+ public Mid getMid() {
+ return Mid.ApplicationGenericDataRequest;
+ }
+
+ // Properties.
+ protected final Mid requestMid;
+ protected final OpenProtocolRevision wantedRevision;
+ protected final byte[] extraData;
+
+ public OpenProtocolMessageApplicationGenericDataRequest(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber,
+ Mid requestMid,
+ OpenProtocolRevision wantedRevision,
+ byte[] extraData) {
+ super(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber);
+ this.requestMid = requestMid;
+ this.wantedRevision = wantedRevision;
+ this.extraData = extraData;
+ }
+
+ public Mid getRequestMid() {
+ return requestMid;
+ }
+
+ public OpenProtocolRevision getWantedRevision() {
+ return wantedRevision;
+ }
+
+ public byte[] getExtraData() {
+ return extraData;
+ }
+
+ @Override
+ protected void serializeOpenProtocolMessageChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("OpenProtocolMessageApplicationGenericDataRequest");
+
+ // Simple Field (requestMid)
+ writeSimpleEnumField(
+ "requestMid",
+ "Mid",
+ requestMid,
+ new DataWriterEnumDefault<>(Mid::getValue, Mid::name, writeUnsignedLong(writeBuffer, 32)));
+
+ // Simple Field (wantedRevision)
+ writeSimpleEnumField(
+ "wantedRevision",
+ "OpenProtocolRevision",
+ wantedRevision,
+ new DataWriterEnumDefault<>(
+ OpenProtocolRevision::getValue,
+ OpenProtocolRevision::name,
+ writeUnsignedLong(writeBuffer, 24)));
+
+ // Implicit Field (extraDataLength) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ int extraDataLength = (int) (COUNT(getExtraData()));
+ writeImplicitField("extraDataLength", extraDataLength, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (extraData)
+ writeByteArrayField("extraData", extraData, writeByteArray(writeBuffer, 8));
+
+ writeBuffer.popContext("OpenProtocolMessageApplicationGenericDataRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ OpenProtocolMessageApplicationGenericDataRequest _value = this;
+
+ // Simple field (requestMid)
+ lengthInBits += 32;
+
+ // Simple field (wantedRevision)
+ lengthInBits += 24;
+
+ // Implicit Field (extraDataLength)
+ lengthInBits += 16;
+
+ // Array field
+ if (extraData != null) {
+ lengthInBits += 8 * extraData.length;
+ }
+
+ return lengthInBits;
+ }
+
+ public static OpenProtocolMessageApplicationGenericDataRequestBuilder staticParseBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OpenProtocolMessageApplicationGenericDataRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+
+ Mid requestMid =
+ readEnumField(
+ "requestMid",
+ "Mid",
+ new DataReaderEnumDefault<>(Mid::enumForValue, readUnsignedLong(readBuffer, 32)));
+
+ OpenProtocolRevision wantedRevision =
+ readEnumField(
+ "wantedRevision",
+ "OpenProtocolRevision",
+ new DataReaderEnumDefault<>(
+ OpenProtocolRevision::enumForValue, readUnsignedLong(readBuffer, 24)));
+
+ int extraDataLength = readImplicitField("extraDataLength", readUnsignedInt(readBuffer, 16));
+
+ byte[] extraData = readBuffer.readByteArray("extraData", Math.toIntExact(extraDataLength));
+
+ readBuffer.closeContext("OpenProtocolMessageApplicationGenericDataRequest");
+ // Create the instance
+ return new OpenProtocolMessageApplicationGenericDataRequestBuilder(
+ requestMid, wantedRevision, extraData);
+ }
+
+ public static class OpenProtocolMessageApplicationGenericDataRequestBuilder
+ implements OpenProtocolMessage.OpenProtocolMessageBuilder {
+ private final Mid requestMid;
+ private final OpenProtocolRevision wantedRevision;
+ private final byte[] extraData;
+
+ public OpenProtocolMessageApplicationGenericDataRequestBuilder(
+ Mid requestMid, OpenProtocolRevision wantedRevision, byte[] extraData) {
+
+ this.requestMid = requestMid;
+ this.wantedRevision = wantedRevision;
+ this.extraData = extraData;
+ }
+
+ public OpenProtocolMessageApplicationGenericDataRequest build(
+ OpenProtocolRevision revision,
+ short noAckFlag,
+ int stationId,
+ int spindleId,
+ int sequenceNumber,
+ short numberOfMessageParts,
+ short messagePartNumber) {
+ OpenProtocolMessageApplicationGenericDataRequest
+ openProtocolMessageApplicationGenericDataRequest =
+ new OpenProtocolMessageApplicationGenericDataRequest(
+ revision,
+ noAckFlag,
+ stationId,
+ spindleId,
+ sequenceNumber,
+ numberOfMessageParts,
+ messagePartNumber,
+ requestMid,
+ wantedRevision,
+ extraData);
+ return openProtocolMessageApplicationGenericDataRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OpenProtocolMessageApplicationGenericDataRequest)) {
+ return false;
+ }
+ OpenProtocolMessageApplicationGenericDataRequest that =
+ (OpenProtocolMessageApplicationGenericDataRequest) o;
+ return (getRequestMid() == that.getRequestMid())
+ && (getWantedRevision() == that.getWantedRevision())
+ && (getExtraData() == that.getExtraData())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getRequestMid(), getWantedRevision(), getExtraData());
+ }
+
+ @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/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolRevision.java b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolRevision.java
new file mode 100644
index 0000000000..2c669614f7
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/generated/org/apache/plc4x/java/openprotocol/readwrite/OpenProtocolRevision.java
@@ -0,0 +1,88 @@
+/*
+ * 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.openprotocol.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 OpenProtocolRevision {
+ Revision1((long) 1, (short) 3),
+ Revision2((long) 2, (short) 4),
+ Revision3((long) 3, (short) 7),
+ Revision4((long) 4, (short) 9),
+ Revision5((long) 5, (short) 11),
+ Revision6((long) 6, (short) 16);
+ private static final Map<Long, OpenProtocolRevision> map;
+
+ static {
+ map = new HashMap<>();
+ for (OpenProtocolRevision value : OpenProtocolRevision.values()) {
+ map.put((long) value.getValue(), value);
+ }
+ }
+
+ private long value;
+ private short numCommunicationStartAcknowledgeBlocks;
+
+ OpenProtocolRevision(long value, short numCommunicationStartAcknowledgeBlocks) {
+ this.value = value;
+ this.numCommunicationStartAcknowledgeBlocks = numCommunicationStartAcknowledgeBlocks;
+ }
+
+ public long getValue() {
+ return value;
+ }
+
+ public short getNumCommunicationStartAcknowledgeBlocks() {
+ return numCommunicationStartAcknowledgeBlocks;
+ }
+
+ public static OpenProtocolRevision firstEnumForFieldNumCommunicationStartAcknowledgeBlocks(
+ short fieldValue) {
+ for (OpenProtocolRevision _val : OpenProtocolRevision.values()) {
+ if (_val.getNumCommunicationStartAcknowledgeBlocks() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<OpenProtocolRevision> enumsForFieldNumCommunicationStartAcknowledgeBlocks(
+ short fieldValue) {
+ List<OpenProtocolRevision> _values = new ArrayList();
+ for (OpenProtocolRevision _val : OpenProtocolRevision.values()) {
+ if (_val.getNumCommunicationStartAcknowledgeBlocks() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public static OpenProtocolRevision enumForValue(long value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(long value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java
new file mode 100644
index 0000000000..3dfe5e3388
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java
@@ -0,0 +1,130 @@
+/*
+ * 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.openprotocol;
+
+import io.netty.buffer.ByteBuf;
+import org.apache.plc4x.java.api.metadata.PlcDriverMetadata;
+import org.apache.plc4x.java.openprotocol.config.OpenProtocolConfiguration;
+import org.apache.plc4x.java.openprotocol.protocol.OpenProtocolProtocolLogic;
+import org.apache.plc4x.java.openprotocol.readwrite.OpenProtocolMessage;
+import org.apache.plc4x.java.openprotocol.tag.OpenProtocolTag;
+import org.apache.plc4x.java.openprotocol.tag.OpenProtocolTagHandler;
+import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
+import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer;
+import org.apache.plc4x.java.spi.connection.SingleProtocolStackConfigurer;
+import org.apache.plc4x.java.spi.optimizer.BaseOptimizer;
+import org.apache.plc4x.java.spi.optimizer.SingleTagOptimizer;
+import org.apache.plc4x.java.spi.values.PlcValueHandler;
+
+import java.util.function.ToIntFunction;
+
+public class OpenProtocolDriver extends GeneratedDriverBase<OpenProtocolMessage> {
+
+ @Override
+ public String getProtocolCode() {
+ return "open-protocol";
+ }
+
+ @Override
+ public String getProtocolName() {
+ return "Open-Protocol";
+ }
+
+ @Override
+ protected Class<? extends Configuration> getConfigurationType() {
+ return OpenProtocolConfiguration.class;
+ }
+
+ @Override
+ protected String getDefaultTransport() {
+ return "tcp";
+ }
+
+ @Override
+ public PlcDriverMetadata getMetadata() {
+ return new PlcDriverMetadata() {
+ @Override
+ public boolean canDiscover() {
+ return false;
+ }
+ };
+ }
+
+ @Override
+ protected boolean awaitSetupComplete() {
+ return false;
+ }
+
+ @Override
+ protected boolean awaitDisconnectComplete() {
+ return false;
+ }
+
+ @Override
+ protected boolean canRead() {
+ return true;
+ }
+
+ @Override
+ protected boolean canWrite() {
+ return true;
+ }
+
+ @Override
+ protected BaseOptimizer getOptimizer() {
+ return new SingleTagOptimizer();
+ }
+
+ @Override
+ protected OpenProtocolTagHandler getTagHandler() {
+ return new OpenProtocolTagHandler();
+ }
+
+ @Override
+ protected org.apache.plc4x.java.api.value.PlcValueHandler getValueHandler() {
+ return new PlcValueHandler();
+ }
+
+ @Override
+ protected ProtocolStackConfigurer<OpenProtocolMessage> getStackConfigurer() {
+ return SingleProtocolStackConfigurer.builder(OpenProtocolMessage.class,
+ OpenProtocolMessage::staticParse)
+ .withProtocol(OpenProtocolProtocolLogic.class)
+ .withPacketSizeEstimator(ByteLengthEstimator.class)
+ .build();
+ }
+
+ /** Estimate the Length of a Packet */
+ public static class ByteLengthEstimator implements ToIntFunction<ByteBuf> {
+ @Override
+ public int applyAsInt(ByteBuf byteBuf) {
+ if (byteBuf.readableBytes() >= 6) {
+ return byteBuf.getUnsignedShort(byteBuf.readerIndex() + 4) + 6;
+ }
+ return -1;
+ }
+ }
+
+ @Override
+ public OpenProtocolTag prepareTag(String tagAddress){
+ return OpenProtocolTag.of(tagAddress);
+ }
+
+}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
new file mode 100644
index 0000000000..18252b2a3a
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
@@ -0,0 +1,38 @@
+/*
+ * 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.openprotocol.config;
+
+import org.apache.plc4x.java.openprotocol.readwrite.Constants;
+import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+
+public class OpenProtocolConfiguration implements Configuration, TcpTransportConfiguration {
+
+ @Override
+ public int getDefaultPort() {
+ return Constants.TCPDEFAULTPORT;
+ }
+
+ @Override
+ public String toString() {
+ return "OpenProtocolConfiguration{" +
+ '}';
+ }
+
+}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/protocol/OpenProtocolProtocolLogic.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/protocol/OpenProtocolProtocolLogic.java
new file mode 100644
index 0000000000..deafb87871
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/protocol/OpenProtocolProtocolLogic.java
@@ -0,0 +1,76 @@
+/*
+ * 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.openprotocol.protocol;
+
+import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.model.PlcConsumerRegistration;
+import org.apache.plc4x.java.api.model.PlcSubscriptionHandle;
+import org.apache.plc4x.java.openprotocol.readwrite.OpenProtocolMessage;
+import org.apache.plc4x.java.spi.ConversationContext;
+import org.apache.plc4x.java.spi.Plc4xProtocolBase;
+import org.apache.plc4x.java.spi.messages.PlcSubscriber;
+import org.apache.plc4x.java.spi.model.DefaultPlcConsumerRegistration;
+
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
+
+public class OpenProtocolProtocolLogic extends Plc4xProtocolBase<OpenProtocolMessage> implements PlcSubscriber {
+
+ @Override
+ public void onConnect(ConversationContext<OpenProtocolMessage> context) {
+ }
+
+ @Override
+ public CompletableFuture<PlcWriteResponse> write(PlcWriteRequest writeRequest) {
+ CompletableFuture<PlcWriteResponse> future = new CompletableFuture<>();
+ return future;
+ }
+
+ @Override
+ public CompletableFuture<PlcSubscriptionResponse> subscribe(PlcSubscriptionRequest subscriptionRequest) {
+ CompletableFuture<PlcSubscriptionResponse> future = new CompletableFuture<>();
+ return future;
+ }
+
+ @Override
+ public CompletableFuture<PlcUnsubscriptionResponse> unsubscribe(PlcUnsubscriptionRequest unsubscriptionRequest) {
+ return null;
+ }
+
+ @Override
+ protected void decode(ConversationContext<OpenProtocolMessage> context, OpenProtocolMessage msg) {
+ }
+
+ @Override
+ public void close(ConversationContext<OpenProtocolMessage> context) {
+ }
+
+ @Override
+ public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> collection) {
+ final DefaultPlcConsumerRegistration consumerRegistration =
+ new DefaultPlcConsumerRegistration(this, consumer, collection.toArray(new PlcSubscriptionHandle[0]));
+ return consumerRegistration;
+ }
+
+ @Override
+ public void unregister(PlcConsumerRegistration plcConsumerRegistration) {
+ }
+
+}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTag.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTag.java
new file mode 100644
index 0000000000..8b94ad63fa
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTag.java
@@ -0,0 +1,48 @@
+/*
+ * 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.openprotocol.tag;
+
+import org.apache.plc4x.java.api.model.ArrayInfo;
+import org.apache.plc4x.java.api.model.PlcTag;
+import org.apache.plc4x.java.api.types.PlcValueType;
+
+import java.util.List;
+
+public class OpenProtocolTag implements PlcTag {
+
+ public static OpenProtocolTag of(String addressString) {
+ return null;
+ }
+
+ @Override
+ public String getAddressString() {
+ return null;
+ }
+
+ @Override
+ public PlcValueType getPlcValueType() {
+ return PlcTag.super.getPlcValueType();
+ }
+
+ @Override
+ public List<ArrayInfo> getArrayInfo() {
+ return PlcTag.super.getArrayInfo();
+ }
+
+}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTagHandler.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTagHandler.java
new file mode 100644
index 0000000000..5a7be0b523
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/tag/OpenProtocolTagHandler.java
@@ -0,0 +1,38 @@
+/*
+ * 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.openprotocol.tag;
+
+import org.apache.plc4x.java.api.exceptions.PlcInvalidTagException;
+import org.apache.plc4x.java.api.model.PlcQuery;
+import org.apache.plc4x.java.api.model.PlcTag;
+import org.apache.plc4x.java.spi.connection.PlcTagHandler;
+
+public class OpenProtocolTagHandler implements PlcTagHandler {
+
+ @Override
+ public PlcTag parseTag(String tagAddress) {
+ throw new PlcInvalidTagException(tagAddress);
+ }
+
+ @Override
+ public PlcQuery parseQuery(String query) {
+ throw new UnsupportedOperationException("This driver doesn't support browsing");
+ }
+
+}
diff --git a/plc4j/drivers/open-protocol/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver b/plc4j/drivers/open-protocol/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
new file mode 100644
index 0000000000..912141435a
--- /dev/null
+++ b/plc4j/drivers/open-protocol/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.plc4x.java.openprotocol.OpenProtocolDriver
diff --git a/plc4j/drivers/pom.xml b/plc4j/drivers/pom.xml
index 6c85845ad3..c0b47ba33a 100644
--- a/plc4j/drivers/pom.xml
+++ b/plc4j/drivers/pom.xml
@@ -44,6 +44,7 @@
<module>firmata</module>
<module>knxnetip</module>
<module>mock</module>
+ <module>open-protocol</module>
<module>modbus</module>
<module>opcua</module>
<module>plc4x</module>
diff --git a/protocols/open-protocol/src/main/resources/protocols/openprotocol/open-protocol.mspec b/protocols/open-protocol/src/main/resources/protocols/openprotocol/open-protocol.mspec
index 3b3697f21d..91234ac3ed 100644
--- a/protocols/open-protocol/src/main/resources/protocols/openprotocol/open-protocol.mspec
+++ b/protocols/open-protocol/src/main/resources/protocols/openprotocol/open-protocol.mspec
@@ -25,34 +25,34 @@
]
[discriminatedType OpenProtocolMessage
- [implicit uint 32 length 'lengthInBytes' encoding="AsciiUint"]
- [discriminator MID mid ]
- [simple OpenProtocolRevision revision ]
- [simple uint 8 noAckFlag ]
- [simple uint 16 stationId encoding="AsciiUint"]
- [simple uint 16 spindleId encoding="AsciiUint"]
- [simple uint 16 sequenceNumber encoding="AsciiUint"]
- [simple uint 8 numberOfMessageParts encoding="AsciiUint"]
- [simple uint 8 messagePartNumber encoding="AsciiUint"]
+ [implicit uint 32 length 'lengthInBytes' encoding='"AsciiUint"']
+ [discriminator Mid mid ]
+ [simple OpenProtocolRevision revision ]
+ [simple uint 8 noAckFlag ]
+ [simple uint 16 stationId encoding='"AsciiUint"']
+ [simple uint 16 spindleId encoding='"AsciiUint"']
+ [simple uint 16 sequenceNumber encoding='"AsciiUint"']
+ [simple uint 8 numberOfMessageParts encoding='"AsciiUint"']
+ [simple uint 8 messagePartNumber encoding='"AsciiUint"']
[typeSwitch mid
['ApplicationCommunicationStart' *ApplicationCommunicationStart
]
- ['ApplicationCommunicationStartAcknowledge' *ApplicationCommunicationStartAcknowledge(revision)
+ ['ApplicationCommunicationStartAcknowledge' *ApplicationCommunicationStartAcknowledge(OpenProtocolRevision revision)
[array ApplicationCommunicationStartAcknowledgeBlock blocks count 'revision.numCommunicationStartAcknowledgeBlocks']
]
['ApplicationCommunicationStop' *ApplicationCommunicationStop
]
['ApplicationCommandError' *ApplicationCommandError
- [simple MID requestMid]
+ [simple Mid requestMid]
[simple Error error ]
]
['ApplicationCommandAccepted' *ApplicationCommandAccepted
- [simple MID requestMid]
+ [simple Mid requestMid]
]
['ApplicationGenericDataRequest' *ApplicationGenericDataRequest
- [simple MID requestMid ]
+ [simple Mid requestMid ]
[simple OpenProtocolRevision wantedRevision ]
- [implicit uint 16 extraDataLength 'LEN(extraData)' ]
+ [implicit uint 16 extraDataLength 'COUNT(extraData)' ]
[array byte extraData count 'extraDataLength']
]
]
@@ -60,80 +60,80 @@
]
[discriminatedType ApplicationCommunicationStartAcknowledgeBlock
- [discriminator uint 16 blockType encoding="AsciiUint"]
+ [discriminator uint 16 blockType encoding='"AsciiUint"']
[typeSwitch blockType
// Revision 1
- ['01' *CellId
- [simple uint 32 cellId encoding="AsciiUint"]
+ ['1' *CellId
+ [simple uint 32 cellId encoding='"AsciiUint"']
]
- ['02' *ChannelId
- [simple uint 16 channelId encoding="AsciiUint"]
+ ['2' *ChannelId
+ [simple uint 16 channelId encoding='"AsciiUint"']
]
- ['03' *ControllerName
- [simple string 200 controllerName encoding="ASCII" ]
+ ['3' *ControllerName
+ [simple string 200 controllerName encoding='"ASCII"' ]
]
// Additional Blocks for Revision 2
- ['04' *SupplierCode
- [simple uint 24 supplierCode encoding="AsciiUint"]
+ ['4' *SupplierCode
+ [simple uint 24 supplierCode encoding='"AsciiUint"']
]
// Additional Blocks for Revision 3
- ['05' *OpenProtocolVersion
- [simple string 152 openProtocolVersion encoding="ASCII" ]
+ ['5' *OpenProtocolVersion
+ [simple string 152 openProtocolVersion encoding='"ASCII"' ]
]
- ['06' *ControllerSoftwareVersion
- [simple string 152 controllerSoftwareVersion encoding="ASCII" ]
+ ['6' *ControllerSoftwareVersion
+ [simple string 152 controllerSoftwareVersion encoding='"ASCII"' ]
]
- ['07' *ToolSoftwareVersion
- [simple string 152 toolSoftwareVersion encoding="ASCII" ]
+ ['7' *ToolSoftwareVersion
+ [simple string 152 toolSoftwareVersion encoding='"ASCII"' ]
]
// Additional Blocks for Revision 4
- ['08' *RbuType
- [simple string 192 rbuType encoding="ASCII" ]
+ ['8' *RbuType
+ [simple string 192 rbuType encoding='"ASCII"' ]
]
- ['09' *ControllerSerialNumber
- [simple string 80 controllerSerialNumber encoding="ASCII" ]
+ ['9' *ControllerSerialNumber
+ [simple string 80 controllerSerialNumber encoding='"ASCII"' ]
]
// Additional Blocks for Revision 5
['10' *SystemType
- [simple string 24 systemType encoding="ASCII" ]
+ [simple string 24 systemType encoding='"ASCII"' ]
]
['11' *SystemSubtype
- [simple string 24 systemSubtype encoding="ASCII" ]
+ [simple string 24 systemSubtype encoding='"ASCII"' ]
]
// Additional Blocks for Revision 6
['12' *SequenceNumberSupport
- [reserved uint 7 0 ]
+ [reserved uint 7 '0x00' ]
[simple bit sequenceNumberSupport ]
]
['13' *LinkingHandlingSupport
- [reserved uint 7 0 ]
+ [reserved uint 7 '0x00' ]
[simple bit linkingHandlingSupport ]
]
['14' *StationId
- [simple string 80 stationId encoding="ASCII" ]
+ [simple string 80 stationId encoding='"ASCII"' ]
]
['15' *StationName
- [simple string 200 stationName encoding="ASCII" ]
+ [simple string 200 stationName encoding='"ASCII"' ]
]
['16' *ClientId
- [simple uint 8 clientId encoding="AsciiUint"]
+ [simple uint 8 clientId encoding='"AsciiUint"']
]
]
]
// Depending on the revision of the device, a different number of blocks are supported.
-[enum uint 24 OpenProtocolRevision(uint 8 numCommunicationStartAcknowledgeBlocks) encoding="AsciiUint"
- ['1' Revision1 ( 3 )]
- ['2' Revision2 ( 4 )]
- ['3' Revision3 ( 7 )]
- ['4' Revision4 ( 9 )]
- ['5' Revision5 ( 11 )]
- ['6' Revision6 ( 16 )]
+[enum uint 24 OpenProtocolRevision(uint 8 numCommunicationStartAcknowledgeBlocks) encoding='"AsciiUint"'
+ ['1' Revision1 [ '3' ]]
+ ['2' Revision2 [ '4' ]]
+ ['3' Revision3 [ '7' ]]
+ ['4' Revision4 [ '9' ]]
+ ['5' Revision5 [ '11' ]]
+ ['6' Revision6 [ '16' ]]
]
[enum MidTypes
@@ -160,193 +160,193 @@
[NewGroupsMessage ] // 2600 - 9999
]
-[enum uint 32 Mid encoding="AsciiUint"
- ['0001' ApplicationCommunicationStart ] // *
- ['0002' ApplicationCommunicationStartAcknowledge ] // *
- ['0003' ApplicationCommunicationStop ]
- ['0004' ApplicationCommandError ] // *
- ['0005' ApplicationCommandAccepted ] // *
- ['0006' ApplicationGenericDataRequest ]
- ['0007' Reserved ]
- ['0008' ApplicationGenericSubscription ] // *
- ['0009' ApplicationGenericUnsubscribe ] // *
- ['0010' ParameterSetIdUploadRequest ] // *
- ['0011' ParameterSetIdUploadReply ] // *
- ['0012' ParameterSetDataUploadRequest ] // *
- ['0013' ParameterSetDataUploadReply ] // *
- ['0014' ParameterSetSelectedSubscribe ]
- ['0015' ParameterSetSelected ]
- ['0016' ParameterSetSelectedAcknowledge ]
- ['0017' ParameterSetSelectedUnsubscribe ]
- ['0018' SelectParameterSet ] // *
- ['0019' SetParameterSetBatchSize ]
- ['0020' ResetParameterSetBatchCounter ]
- ['0021' LockAtBatchDoneSubscribe ]
- ['0022' LockAtBatchDoneUpload ]
- ['0023' LockAtBatchDoneUploadAcknowledge ]
- ['0024' LockAtBatchDoneUnsubscribe ]
- ['0025' ReservedForFord ]
-
- ['0030' JobIdUploadRequest ]
- ['0031' JobIdUploadReply ]
- ['0032' JobDataUploadRequest ]
- ['0033' JobDataUploadReply ]
- ['0034' JobInfoSubscribe ]
- ['0035' JobInfo ]
- ['0036' JobInfoAcknowledge ]
- ['0037' JobInfoUnsubscribe ]
- ['0038' SelectJob ]
- ['0039' JobRestart ]
- ['0040' ToolDataUploadRequest ]
- ['0041' ToolDataUploadReply ]
- ['0042' DisableTool ] // *
- ['0043' EnableTool ] // *
- ['0044' DisconnectToolRequest ]
- ['0045' SetCalibrationValueRequest ]
- ['0046' SetPrimaryToolRequest ]
- ['0047' PairingHandling ]
- ['0048' PairingStatus ]
- ['0049' PairingStatusAcknowledge ]
- ['0050' VehicleIdNumberDownloadRequest ]
- ['0051' VehicleIdNumberSubscribe ]
- ['0052' VehicleIdNumber ]
- ['0053' VehicleIdNumberAcknowledge ]
- ['0054' VehicleIdNumberUnsubscribe ]
-
- ['0060' LastTighteningResultDataSubscribe ] // *
- ['0061' LastTighteningResultData ] // *
- ['0062' LastTighteningResultDataAcknowledge ]
- ['0063' LastTighteningResultDataUnsubscribe ]
- ['0064' OldTighteningResultUploadRequest ]
- ['0065' OldTighteningResultUploadReply ]
-
- ['0070' AlarmSubscribe ] // *
- ['0071' Alarm ] // *
- ['0072' AlarmAcknowledge ] // *
- ['0073' AlarmUnsubscribe ] // *
- ['0074' AlarmAcknowledgedOnController ]
- ['0075' AlarmAcknowledgedOnControllerAcknowledge ]
- ['0076' AlarmStatus ] // *
- ['0077' AlarmStatusAcknowledge ] // *
- ['0078' AcknowledgeAlarmRemotelyOnController ]
-
- ['0080' ReadTimeUploadRequest ]
- ['0081' ReadTimeUploadReply ]
- ['0082' SetTime ] // *
-
- ['0090' MultiSpindleStatusSubscribe ]
- ['0091' MultiSpindleStatus ]
- ['0092' MultiSpindleStatusAcknowledge ]
- ['0093' MultiSpindleStatusUnsubscribe ]
-
- ['0100' MultiSpindleResultSubscribe ]
- ['0101' MultiSpindleResult ]
- ['0102' MultiSpindleResultAcknowledge ]
- ['0103' MultiSpindleResultUnsubscribe ]
-
- ['0105' LastPowerMacsTighteningResultDataSubscribe ]
- ['0106' LastPowerMacsTighteningResultStationData ]
- ['0107' LastPowerMacsTighteningResultBoltData ]
- ['0108' LastPowerMacsTighteningResultDataAcknowledge]
- ['0109' LastPowerMacsTighteningResultDataUnsubscribe]
- ['0110' DisplayUserTextOnCompact ]
- ['0111' DisplayUserTextOnGraph ]
-
- ['0113' FlashGreenLightOnTool ]
-
- ['0120' JobLineControlInfoSubscribe ]
- ['0121' JobLineControlStarted ]
- ['0122' JobLineControlAlert1 ]
- ['0123' JobLineControlAlert2 ]
- ['0124' JobLineControlDone ]
- ['0125' JobLineControlInfoAcknowledge ]
- ['0126' JobLineControlUnsubscribe ]
- ['0127' AbortJob ]
- ['0128' JobBatchIncrement ]
- ['0129' JobBatchDecrement ]
- ['0130' JobOff ]
- ['0131' SetJobLineControlStart ]
- ['0132' SetJobLineControlAlert1 ]
- ['0133' SetJobLineControlAlert2 ]
-
- ['0140' ExecuteDynamicJobRequest ] // *
-
- ['0150' IdentifierDownloadRequest ] // *
- ['0151' MultipleIdentifiersWorkOrderSubscribe ]
- ['0152' MultipleIdentifiersWorkOrder ]
- ['0153' MultipleIdentifiersWorkOrderAcknowledge ]
- ['0154' MultipleIdentifiersWorkOrderUnsubscribe ]
- ['0155' BypassIdentifier ]
- ['0156' ResetLatestIdentifier ]
- ['0157' ResetAllIdentifiers ]
-
- ['0200' SetExternalControlledRelays ]
-
- ['0210' StatusExternalMonitoredInputsSubscribe ]
- ['0211' StatusExternalMonitoredInputs ]
- ['0212' StatusExternalMonitoredInputsAcknowledge ]
- ['0213' StatusExternalMonitoredInputsUnsubscribe ]
- ['0214' IoDeviceStatusRequest ]
- ['0215' IoDeviceStatusReply ]
- ['0216' RelayFunctionSubscribe ]
- ['0217' RelayFunction ]
- ['0218' RelayFunctionAcknowledge ]
- ['0219' RelayFunctionUnsubscribe ]
- ['0220' DigitalInputFunctionSubscribe ]
- ['0221' DigitalInputFunction ]
- ['0222' DigitalInputFunctionAcknowledge ]
- ['0223' DigitalInputFunctionUnsubscribe ]
- ['0224' SetDigitalInputFunction ]
- ['0225' ResetDigitalInputFunction ]
-
- ['0240' UserDataDownload ]
- ['0241' UserDataSubscribe ]
- ['0242' UserData ]
- ['0243' UserDataAcknowledge ]
- ['0244' UserDataUnsubscribe ]
- ['0245' UserDataDownloadWithOffset ]
-
- ['0250' SelectorSocketInfoSubscribe ]
- ['0251' SelectorSocketInfo ]
- ['0252' SelectorSocketInfoAcknowledge ]
- ['0253' SelectorSocketInfoUnsubscribe ]
- ['0254' SelectorControlGreenLights ]
- ['0255' SelectorControlRedLights ]
-
- ['0260' ToolTagIdRequest ]
- ['0261' ToolTagIdSubscribe ]
- ['0262' ToolTagId ]
- ['0263' ToolTagIdAcknowledge ]
- ['0264' ToolTagIdUnsubscribe ]
-
- ['0270' ControllerRebootRequest ]
-
- ['0300' HistogramUploadRequest ]
- ['0301' HistogramUploadReply ]
-
- ['0400' AutomaticManualModeSubscribe ]
- ['0401' AutomaticManualMode ]
- ['0402' AutomaticManualModeAcknowledge ]
- ['0403' AutomaticManualModeUnsubscribe ]
-
- ['0410' AutoDisableSettingsRequest ]
- ['0411' AutoDisableSettingsReply ]
-
- ['0420' OpenProtocolCommandsDisabledSubscribe ]
- ['0421' OpenProtocolCommandsDisabled ]
- ['0422' OpenProtocolCommandsDisabledAcknowledge ]
- ['0423' OpenProtocolCommandsDisabledUnsubscribe ]
-
- ['0500' MotorTuningResultDataSubscribe ]
- ['0501' MotorTuningResultData ]
- ['0502' MotorTuningResultDataAcknowledge ]
- ['0503' MotorTuningResultDataUnsubscribe ]
- ['0504' MotorTuningRequest ]
-
- ['0700' TighteningDataDownloadStatusForRadioTools ]
-
- ['0900' ResultTracesCurve ] // *
- ['0901' ResultTracesCurvePlotData ] // *
+[enum uint 32 Mid encoding='"AsciiUint"'
+ ['1' ApplicationCommunicationStart ] // *
+ ['2' ApplicationCommunicationStartAcknowledge ] // *
+ ['3' ApplicationCommunicationStop ]
+ ['4' ApplicationCommandError ] // *
+ ['5' ApplicationCommandAccepted ] // *
+ ['6' ApplicationGenericDataRequest ]
+ ['7' Reserved ]
+ ['8' ApplicationGenericSubscription ] // *
+ ['9' ApplicationGenericUnsubscribe ] // *
+ ['10' ParameterSetIdUploadRequest ] // *
+ ['11' ParameterSetIdUploadReply ] // *
+ ['12' ParameterSetDataUploadRequest ] // *
+ ['13' ParameterSetDataUploadReply ] // *
+ ['14' ParameterSetSelectedSubscribe ]
+ ['15' ParameterSetSelected ]
+ ['16' ParameterSetSelectedAcknowledge ]
+ ['17' ParameterSetSelectedUnsubscribe ]
+ ['18' SelectParameterSet ] // *
+ ['19' SetParameterSetBatchSize ]
+ ['20' ResetParameterSetBatchCounter ]
+ ['21' LockAtBatchDoneSubscribe ]
+ ['22' LockAtBatchDoneUpload ]
+ ['23' LockAtBatchDoneUploadAcknowledge ]
+ ['24' LockAtBatchDoneUnsubscribe ]
+ ['25' ReservedForFord ]
+
+ ['30' JobIdUploadRequest ]
+ ['31' JobIdUploadReply ]
+ ['32' JobDataUploadRequest ]
+ ['33' JobDataUploadReply ]
+ ['34' JobInfoSubscribe ]
+ ['35' JobInfo ]
+ ['36' JobInfoAcknowledge ]
+ ['37' JobInfoUnsubscribe ]
+ ['38' SelectJob ]
+ ['39' JobRestart ]
+ ['40' ToolDataUploadRequest ]
+ ['41' ToolDataUploadReply ]
+ ['42' DisableTool ] // *
+ ['43' EnableTool ] // *
+ ['44' DisconnectToolRequest ]
+ ['45' SetCalibrationValueRequest ]
+ ['46' SetPrimaryToolRequest ]
+ ['47' PairingHandling ]
+ ['48' PairingStatus ]
+ ['49' PairingStatusAcknowledge ]
+ ['50' VehicleIdNumberDownloadRequest ]
+ ['51' VehicleIdNumberSubscribe ]
+ ['52' VehicleIdNumber ]
+ ['53' VehicleIdNumberAcknowledge ]
+ ['54' VehicleIdNumberUnsubscribe ]
+
+ ['60' LastTighteningResultDataSubscribe ] // *
+ ['61' LastTighteningResultData ] // *
+ ['62' LastTighteningResultDataAcknowledge ]
+ ['63' LastTighteningResultDataUnsubscribe ]
+ ['64' OldTighteningResultUploadRequest ]
+ ['65' OldTighteningResultUploadReply ]
+
+ ['70' AlarmSubscribe ] // *
+ ['71' Alarm ] // *
+ ['72' AlarmAcknowledge ] // *
+ ['73' AlarmUnsubscribe ] // *
+ ['74' AlarmAcknowledgedOnController ]
+ ['75' AlarmAcknowledgedOnControllerAcknowledge ]
+ ['76' AlarmStatus ] // *
+ ['77' AlarmStatusAcknowledge ] // *
+ ['78' AcknowledgeAlarmRemotelyOnController ]
+
+ ['80' ReadTimeUploadRequest ]
+ ['81' ReadTimeUploadReply ]
+ ['82' SetTime ] // *
+
+ ['90' MultiSpindleStatusSubscribe ]
+ ['91' MultiSpindleStatus ]
+ ['92' MultiSpindleStatusAcknowledge ]
+ ['93' MultiSpindleStatusUnsubscribe ]
+
+ ['100' MultiSpindleResultSubscribe ]
+ ['101' MultiSpindleResult ]
+ ['102' MultiSpindleResultAcknowledge ]
+ ['103' MultiSpindleResultUnsubscribe ]
+
+ ['105' LastPowerMacsTighteningResultDataSubscribe ]
+ ['106' LastPowerMacsTighteningResultStationData ]
+ ['107' LastPowerMacsTighteningResultBoltData ]
+ ['108' LastPowerMacsTighteningResultDataAcknowledge]
+ ['109' LastPowerMacsTighteningResultDataUnsubscribe]
+ ['110' DisplayUserTextOnCompact ]
+ ['111' DisplayUserTextOnGraph ]
+
+ ['113' FlashGreenLightOnTool ]
+
+ ['120' JobLineControlInfoSubscribe ]
+ ['121' JobLineControlStarted ]
+ ['122' JobLineControlAlert1 ]
+ ['123' JobLineControlAlert2 ]
+ ['124' JobLineControlDone ]
+ ['125' JobLineControlInfoAcknowledge ]
+ ['126' JobLineControlUnsubscribe ]
+ ['127' AbortJob ]
+ ['128' JobBatchIncrement ]
+ ['129' JobBatchDecrement ]
+ ['130' JobOff ]
+ ['131' SetJobLineControlStart ]
+ ['132' SetJobLineControlAlert1 ]
+ ['133' SetJobLineControlAlert2 ]
+
+ ['140' ExecuteDynamicJobRequest ] // *
+
+ ['150' IdentifierDownloadRequest ] // *
+ ['151' MultipleIdentifiersWorkOrderSubscribe ]
+ ['152' MultipleIdentifiersWorkOrder ]
+ ['153' MultipleIdentifiersWorkOrderAcknowledge ]
+ ['154' MultipleIdentifiersWorkOrderUnsubscribe ]
+ ['155' BypassIdentifier ]
+ ['156' ResetLatestIdentifier ]
+ ['157' ResetAllIdentifiers ]
+
+ ['200' SetExternalControlledRelays ]
+
+ ['210' StatusExternalMonitoredInputsSubscribe ]
+ ['211' StatusExternalMonitoredInputs ]
+ ['212' StatusExternalMonitoredInputsAcknowledge ]
+ ['213' StatusExternalMonitoredInputsUnsubscribe ]
+ ['214' IoDeviceStatusRequest ]
+ ['215' IoDeviceStatusReply ]
+ ['216' RelayFunctionSubscribe ]
+ ['217' RelayFunction ]
+ ['218' RelayFunctionAcknowledge ]
+ ['219' RelayFunctionUnsubscribe ]
+ ['220' DigitalInputFunctionSubscribe ]
+ ['221' DigitalInputFunction ]
+ ['222' DigitalInputFunctionAcknowledge ]
+ ['223' DigitalInputFunctionUnsubscribe ]
+ ['224' SetDigitalInputFunction ]
+ ['225' ResetDigitalInputFunction ]
+
+ ['240' UserDataDownload ]
+ ['241' UserDataSubscribe ]
+ ['242' UserData ]
+ ['243' UserDataAcknowledge ]
+ ['244' UserDataUnsubscribe ]
+ ['245' UserDataDownloadWithOffset ]
+
+ ['250' SelectorSocketInfoSubscribe ]
+ ['251' SelectorSocketInfo ]
+ ['252' SelectorSocketInfoAcknowledge ]
+ ['253' SelectorSocketInfoUnsubscribe ]
+ ['254' SelectorControlGreenLights ]
+ ['255' SelectorControlRedLights ]
+
+ ['260' ToolTagIdRequest ]
+ ['261' ToolTagIdSubscribe ]
+ ['262' ToolTagId ]
+ ['263' ToolTagIdAcknowledge ]
+ ['264' ToolTagIdUnsubscribe ]
+
+ ['270' ControllerRebootRequest ]
+
+ ['300' HistogramUploadRequest ]
+ ['301' HistogramUploadReply ]
+
+ ['400' AutomaticManualModeSubscribe ]
+ ['401' AutomaticManualMode ]
+ ['402' AutomaticManualModeAcknowledge ]
+ ['403' AutomaticManualModeUnsubscribe ]
+
+ ['410' AutoDisableSettingsRequest ]
+ ['411' AutoDisableSettingsReply ]
+
+ ['420' OpenProtocolCommandsDisabledSubscribe ]
+ ['421' OpenProtocolCommandsDisabled ]
+ ['422' OpenProtocolCommandsDisabledAcknowledge ]
+ ['423' OpenProtocolCommandsDisabledUnsubscribe ]
+
+ ['500' MotorTuningResultDataSubscribe ]
+ ['501' MotorTuningResultData ]
+ ['502' MotorTuningResultDataAcknowledge ]
+ ['503' MotorTuningResultDataUnsubscribe ]
+ ['504' MotorTuningRequest ]
+
+ ['700' TighteningDataDownloadStatusForRadioTools ]
+
+ ['900' ResultTracesCurve ] // *
+ ['901' ResultTracesCurvePlotData ] // *
['1201' LastOperationResultOverallData ]
['1202' LastOperationResultObjectData ]
@@ -379,17 +379,17 @@
['9999' KeepAliveOpenProtocolCommunication ] // *
]
-[enum uint 16 Error encoding="AsciiUint"
- ['00' NoError]
- ['01' InvalidData]
- ['02' ParameterSetIdNotPresent]
- ['03' ParameterSetCanNotBeSet]
- ['04' ParameterSetNotRunning]
-
- ['06' VinUploadSubscriptionAlreadyExists]
- ['07' VinUploadSubscriptionDoesNotExist]
- ['08' VinInputSourceNotGranted]
- ['09' LastTighteningResultSubscriptionAlreadyExists]
+[enum uint 16 Error encoding='"AsciiUint"'
+ ['0' NoError]
+ ['1' InvalidData]
+ ['2' ParameterSetIdNotPresent]
+ ['3' ParameterSetCanNotBeSet]
+ ['4' ParameterSetNotRunning]
+
+ ['6' VinUploadSubscriptionAlreadyExists]
+ ['7' VinUploadSubscriptionDoesNotExist]
+ ['8' VinInputSourceNotGranted]
+ ['9' LastTighteningResultSubscriptionAlreadyExists]
['10' LastTighteningResultSubscriptionDoesNowExist]
['11' AlarmSubscriptionAlreadyExists]
['12' AlarmSubscriptionDoesNotExist]