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 2021/11/16 16:00:07 UTC

[plc4x] branch feature/mspec-ng updated: - Finished porting the write code

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

cdutz pushed a commit to branch feature/mspec-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/mspec-ng by this push:
     new 70262be  - Finished porting the write code
70262be is described below

commit 70262be90c4dd4fb2b0083aaffe0c0f316abb2de
Author: cdutz <ch...@c-ware.de>
AuthorDate: Tue Nov 16 16:55:17 2021 +0100

    - Finished porting the write code
---
 .../templates/java/pojo-template.java.ftlh         | 18 +++++--------
 .../plc4x/java/spi/codegen/FieldCommons.java       | 26 +++++++++++-------
 .../java/spi/codegen/fields/FieldReaderArray.java  |  3 ---
 .../java/spi/codegen/fields/FieldWriterArray.java  | 31 +++++++++++-----------
 .../java/spi/codegen/fields/FieldWriterEnum.java   |  3 ++-
 .../spi/codegen/fields/FieldWriterFactory.java     | 15 +++++++++++
 ...FieldWriterEnum.java => FieldWriterManual.java} | 12 ++++-----
 ...WriterEnum.java => FieldWriterManualArray.java} | 18 +++++++++----
 .../spi/codegen/fields/FieldWriterPadding.java     | 12 +++++----
 .../spi/codegen/io/DataReaderComplexDefault.java   |  2 --
 .../plc4x/java/spi/codegen/io/DataWriter.java      |  2 +-
 .../java/spi/codegen/io/DataWriterComplex.java     |  3 ---
 .../spi/codegen/io/DataWriterComplexDefault.java   |  3 +--
 .../plc4x/java/spi/codegen/io/DataWriterEnum.java  |  2 +-
 .../java/spi/codegen/io/DataWriterEnumDefault.java | 15 ++++++-----
 .../spi/codegen/io/DataWriterSimpleBigDecimal.java |  4 +--
 .../spi/codegen/io/DataWriterSimpleBoolean.java    |  6 +----
 .../java/spi/codegen/io/DataWriterSimpleByte.java  |  3 +--
 .../spi/codegen/io/DataWriterSimpleByteArray.java  |  3 +--
 .../spi/codegen/io/DataWriterSimpleDouble.java     |  6 +----
 .../java/spi/codegen/io/DataWriterSimpleFloat.java |  6 +----
 .../io/DataWriterSimpleSignedBigInteger.java       |  5 +---
 .../spi/codegen/io/DataWriterSimpleSignedByte.java |  6 +----
 .../spi/codegen/io/DataWriterSimpleSignedInt.java  |  6 +----
 .../spi/codegen/io/DataWriterSimpleSignedLong.java |  6 +----
 .../codegen/io/DataWriterSimpleSignedShort.java    |  6 +----
 .../spi/codegen/io/DataWriterSimpleString.java     |  3 +--
 .../io/DataWriterSimpleUnsignedBigInteger.java     |  5 +---
 .../codegen/io/DataWriterSimpleUnsignedByte.java   |  6 +----
 .../codegen/io/DataWriterSimpleUnsignedInt.java    |  4 +--
 .../codegen/io/DataWriterSimpleUnsignedLong.java   |  4 +--
 .../codegen/io/DataWriterSimpleUnsignedShort.java  |  4 +--
 .../df1/src/main/resources/protocols/df1/df1.mspec |  2 +-
 .../main/resources/protocols/firmata/firmata.mspec |  2 +-
 34 files changed, 113 insertions(+), 139 deletions(-)

diff --git a/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
index fd3e415..a385ea3 100644
--- a/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
@@ -195,7 +195,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
                         <#assign namedField = field.asNamedField().orElseThrow()>
 
                         // Checksum Field (checksum) (Calculated)
-                        writeChecksumField("${namedField.name}", (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, parserArguments)}), ${helper.getDataWriterCall(typedField.type, namedField.name)});
+                        writeChecksumField("${namedField.name}", (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(checksumField, checksumField.checksumExpression, parserArguments)}), ${helper.getDataWriterCall(typedField.type, namedField.name)});
                         <#break>
                     <#case "const">
                         <#assign constField = field.asConstField().orElseThrow()>
@@ -233,23 +233,19 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
                         <#break>
                     <#case "manualArray">
                         <#assign manualArrayField = field.asManualArrayField().orElseThrow()>
+                        <#assign typedField = field.asTypedField().orElseThrow()>
+                        <#assign namedField = field.asNamedField().orElseThrow()>
 
                         // Manual Array Field (${manualArrayField.name})
-                        <#-- TODO: Port this -->
-                        if(${manualArrayField.name} != null) {
-                        writeBuffer.pushContext("${manualArrayField.name}", WithReaderWriterArgs.WithRenderAsList(true));
-                        for(${helper.getLanguageTypeNameForField(field)} element : ${manualArrayField.name}) {
-                        ${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, parserArguments)};
-                        }
-                        writeBuffer.popContext("${manualArrayField.name}", WithReaderWriterArgs.WithRenderAsList(true));
-                        }
+                        writeManualArrayField("${namedField.name}", ${namedField.name}, (${helper.getNonPrimitiveLanguageTypeNameForField(typedField)} _value) -> ${helper.toParseExpression(manualArrayField, manualArrayField.serializeExpression, parserArguments)}, writeBuffer);
                         <#break>
                     <#case "manual">
                         <#assign manualField = field.asManualField().orElseThrow()>
+                        <#assign typedField = field.asTypedField().orElseThrow()>
+                        <#assign namedField = field.asNamedField().orElseThrow()>
 
                         // Manual Field (${manualField.name})
-                        <#-- TODO: Port this -->
-                        ${helper.toSerializationExpression(manualField, manualField.serializeExpression, parserArguments)};
+                        writeManualField("${namedField.name}", () -> ${helper.toParseExpression(manualField, manualField.serializeExpression, parserArguments)}, writeBuffer);
                         <#break>
                     <#case "optional">
                         <#assign optionalField = field.asOptionalField().orElseThrow()>
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/FieldCommons.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/FieldCommons.java
index d36e2ca..5225f60 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/FieldCommons.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/FieldCommons.java
@@ -59,18 +59,19 @@ public interface FieldCommons {
         }
     }
 
-    default <T> T switchSerializeByteOrderIfNecessary(RunSerializeWrapped<T> runnable, ByteOrderAware byteOrderAware, ByteOrder wantedByteOrder) throws SerializationException {
+    default void switchSerializeByteOrderIfNecessary(RunSerializeWrapped runnable, ByteOrderAware byteOrderAware, ByteOrder wantedByteOrder) throws SerializationException {
         Objects.requireNonNull(runnable);
         Objects.requireNonNull(byteOrderAware);
         ByteOrder currentByteOrder = byteOrderAware.getByteOrder();
         if (wantedByteOrder == null || currentByteOrder == wantedByteOrder) {
-            return runnable.run();
-        }
-        try {
-            byteOrderAware.setByteOrder(wantedByteOrder);
-            return runnable.run();
-        } finally {
-            byteOrderAware.setByteOrder(currentByteOrder);
+            runnable.run();
+        } else {
+            try {
+                byteOrderAware.setByteOrder(wantedByteOrder);
+                runnable.run();
+            } finally {
+                byteOrderAware.setByteOrder(currentByteOrder);
+            }
         }
     }
 
@@ -80,8 +81,13 @@ public interface FieldCommons {
     }
 
     @FunctionalInterface
-    interface RunSerializeWrapped<T> {
-        T run() throws SerializationException;
+    interface RunSerializeWrapped {
+        void run() throws SerializationException;
+    }
+
+    @FunctionalInterface
+    interface ConsumeSerializeWrapped<T> {
+        void consume(T value) throws SerializationException;
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderArray.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderArray.java
index d245103..98c89d4 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderArray.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderArray.java
@@ -25,10 +25,7 @@ import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 import org.apache.plc4x.java.spi.generation.WithReaderWriterArgs;
 
-import java.lang.reflect.Array;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Supplier;
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterArray.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterArray.java
index 1a5ef0f..fafff7e 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterArray.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterArray.java
@@ -32,32 +32,33 @@ public class FieldWriterArray<T> implements FieldWriter<T> {
     }
 
     public void writeByteArrayField(String logicalName, byte[] values, DataWriter<byte[]> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
-        if(values != null) {
+        if (values != null) {
             dataWriter.write(logicalName, values, writerArgs);
         }
     }
 
     public void writeSimpleTypeArrayField(String logicalName, List<T> values, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
-        dataWriter.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
-        if(values != null) {
-            for (T value : values) {
-                switchSerializeByteOrderIfNecessary(() -> dataWriter.write("value", value, writerArgs), dataWriter, extractByteOder(writerArgs).orElse(null));
+        switchSerializeByteOrderIfNecessary(() -> {
+            if (values != null) {
+                dataWriter.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+                for (T value : values) {
+                    dataWriter.write("value", value, writerArgs);
+                }
+                dataWriter.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
             }
-        }
-        dataWriter.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+        }, dataWriter, extractByteOder(writerArgs).orElse(null));
     }
 
     public void writeComplexTypeArrayField(String logicalName, List<? extends Message> values, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
-        writeBuffer.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
-        if(values != null) {
-            for (Message value : values) {
-                switchSerializeByteOrderIfNecessary(() -> {
+        switchSerializeByteOrderIfNecessary(() -> {
+            if (values != null) {
+                writeBuffer.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+                for (Message value : values) {
                     value.serialize(writeBuffer);
-                    return null;
-                }, writeBuffer, extractByteOder(writerArgs).orElse(null));
+                }
+                writeBuffer.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
             }
-        }
-        writeBuffer.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+        }, writeBuffer, extractByteOder(writerArgs).orElse(null));
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
index 73e75e1..2722bc9 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
@@ -20,7 +20,8 @@ package org.apache.plc4x.java.spi.codegen.fields;
 
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.plc4x.java.spi.codegen.io.DataWriter;
-import org.apache.plc4x.java.spi.generation.*;
+import org.apache.plc4x.java.spi.generation.SerializationException;
+import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 
 public class FieldWriterEnum<T> implements FieldWriter<T> {
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterFactory.java
index 67db5a0..f74fe0b 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterFactory.java
@@ -18,12 +18,15 @@
  */
 package org.apache.plc4x.java.spi.codegen.fields;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.plc4x.java.spi.codegen.FieldCommons;
 import org.apache.plc4x.java.spi.codegen.io.DataWriter;
 import org.apache.plc4x.java.spi.generation.Message;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
+import java.util.Arrays;
 import java.util.List;
 
 public class FieldWriterFactory {
@@ -64,6 +67,18 @@ public class FieldWriterFactory {
         new FieldWriterImplicit<T>().writeField(logicalName, value, dataWriter, writerArgs);
     }
 
+    public static <T> void writeManualField(String logicalName, FieldCommons.RunSerializeWrapped runnable, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
+        new FieldWriterManual<>().writeManualField(logicalName, runnable, writeBuffer, writerArgs);
+    }
+
+    public static void writeManualArrayField(String logicalName, byte[] bytes, FieldCommons.ConsumeSerializeWrapped<Byte> runnable, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
+        new FieldWriterManualArray<Byte>().writeManualArrayField(logicalName, Arrays.asList(ArrayUtils.toObject(bytes)), runnable, writeBuffer, writerArgs);
+    }
+
+    public static <T> void writeManualArrayField(String logicalName, List<T> values, FieldCommons.ConsumeSerializeWrapped<T> runnable, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
+        new FieldWriterManualArray<T>().writeManualArrayField(logicalName, values, runnable, writeBuffer, writerArgs);
+    }
+
     public static <T> void writeOptionalField(String logicalName, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
         new FieldWriterOptional<T>().writeField(logicalName, value, dataWriter, writerArgs);
     }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManual.java
similarity index 69%
copy from plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManual.java
index 73e75e1..ae6fe00 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManual.java
@@ -20,19 +20,19 @@ package org.apache.plc4x.java.spi.codegen.fields;
 
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.plc4x.java.spi.codegen.io.DataWriter;
-import org.apache.plc4x.java.spi.generation.*;
+import org.apache.plc4x.java.spi.generation.SerializationException;
+import org.apache.plc4x.java.spi.generation.WithWriterArgs;
+import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-public class FieldWriterEnum<T> implements FieldWriter<T> {
+public class FieldWriterManual<T> implements FieldWriter<T> {
 
     @Override
     public void writeField(String logicalName, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
         throw new NotImplementedException();
     }
 
-    public void writeField(String logicalName, String innerName, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
-        dataWriter.pushContext(logicalName);
-        switchSerializeByteOrderIfNecessary(() -> dataWriter.write(innerName, value, writerArgs), dataWriter, extractByteOder(writerArgs).orElse(null));
-        dataWriter.popContext(logicalName);
+    public void writeManualField(String logicalName, RunSerializeWrapped consumer, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
+        switchSerializeByteOrderIfNecessary(consumer, writeBuffer, extractByteOder(writerArgs).orElse(null));
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManualArray.java
similarity index 62%
copy from plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManualArray.java
index 73e75e1..3a0b830 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterEnum.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterManualArray.java
@@ -22,17 +22,25 @@ import org.apache.commons.lang3.NotImplementedException;
 import org.apache.plc4x.java.spi.codegen.io.DataWriter;
 import org.apache.plc4x.java.spi.generation.*;
 
-public class FieldWriterEnum<T> implements FieldWriter<T> {
+import java.util.List;
+
+public class FieldWriterManualArray<T> implements FieldWriter<T> {
 
     @Override
     public void writeField(String logicalName, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
         throw new NotImplementedException();
     }
 
-    public void writeField(String logicalName, String innerName, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
-        dataWriter.pushContext(logicalName);
-        switchSerializeByteOrderIfNecessary(() -> dataWriter.write(innerName, value, writerArgs), dataWriter, extractByteOder(writerArgs).orElse(null));
-        dataWriter.popContext(logicalName);
+    public void writeManualArrayField(String logicalName, List<T> values, ConsumeSerializeWrapped<T> consumer, WriteBuffer writeBuffer, WithWriterArgs... writerArgs) throws SerializationException {
+        switchSerializeByteOrderIfNecessary(() -> {
+            if (values != null) {
+                writeBuffer.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+                for (T value : values) {
+                    consumer.consume(value);
+                }
+                writeBuffer.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+            }
+        }, writeBuffer, extractByteOder(writerArgs).orElse(null));
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterPadding.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterPadding.java
index 6fb0b1e..426491b 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterPadding.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldWriterPadding.java
@@ -32,11 +32,13 @@ public class FieldWriterPadding<T> implements FieldWriter<T> {
     }
 
     public void writeField(String logicalName, int timesPadding, T value, DataWriter<T> dataWriter, WithWriterArgs... writerArgs) throws SerializationException {
-        dataWriter.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
-        for(int i = 0; i < timesPadding; i++) {
-            switchSerializeByteOrderIfNecessary(() -> dataWriter.write("value", value, writerArgs), dataWriter, extractByteOder(writerArgs).orElse(null));
-        }
-        dataWriter.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+        switchSerializeByteOrderIfNecessary(() -> {
+            dataWriter.pushContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+            for (int i = 0; i < timesPadding; i++) {
+                dataWriter.write("value", value, writerArgs);
+            }
+            dataWriter.popContext(logicalName, WithReaderWriterArgs.WithRenderAsList(true));
+        }, dataWriter, extractByteOder(writerArgs).orElse(null));
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
index aded4a6..fb57752 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
@@ -24,8 +24,6 @@ import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.ReadBuffer;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 
-import java.util.function.Supplier;
-
 public class DataReaderComplexDefault<T> implements DataReaderComplex<T> {
 
     private final ComplexTypeSupplier<T> complexSupplier;
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriter.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriter.java
index caada0b..925d4d3 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriter.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriter.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 
 public interface DataWriter<T> extends ByteOrderAware {
 
-    T write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException;
+    void write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException;
 
     void pushContext(String logicalName, WithWriterArgs... writerArgs);
     void popContext(String logicalName, WithWriterArgs... writerArgs);
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplex.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplex.java
index b757471..6e11072 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplex.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplex.java
@@ -18,9 +18,6 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
-import org.apache.plc4x.java.spi.generation.WithReaderArgs;
-
 public interface DataWriterComplex<T> extends DataWriter<T> {
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
index 44dc704..26bddff 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
@@ -50,7 +50,7 @@ public class DataWriterComplexDefault<T extends Message> implements DataWriterCo
     }
 
     @Override
-    public T write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException {
         boolean hasLogicalName = StringUtils.isNotBlank(logicalName);
         if (hasLogicalName) {
             writeBuffer.pushContext(logicalName);
@@ -59,7 +59,6 @@ public class DataWriterComplexDefault<T extends Message> implements DataWriterCo
         if (hasLogicalName) {
             writeBuffer.popContext(logicalName);
         }
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnum.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnum.java
index 0368e7d..ed9ce47 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnum.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnum.java
@@ -23,6 +23,6 @@ import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 
 public interface DataWriterEnum<T> extends DataWriter<T> {
 
-    T write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException;
+    void write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException;
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
index d27f960..855e306 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
@@ -18,7 +18,11 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.*;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.plc4x.java.spi.generation.ByteOrder;
+import org.apache.plc4x.java.spi.generation.SerializationException;
+import org.apache.plc4x.java.spi.generation.WithReaderWriterArgs;
+import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 
 import java.util.function.Function;
 
@@ -45,14 +49,13 @@ public class DataWriterEnumDefault<T, I> implements DataWriterEnum<T> {
     }
 
     @Override
-    public T write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException {
-        return write(logicalName, value, enumSerializer, enumNamer, dataWriter, writerArgs);
+    public void write(String logicalName, T value, WithWriterArgs... writerArgs) throws SerializationException {
+        write(logicalName, value, enumSerializer, enumNamer, dataWriter, writerArgs);
     }
 
-    public T write(String logicalName, T value, Function<T, I> enumSerializer, Function<T, String> enumNamer, DataWriter<I> rawWriter, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, T value, Function<T, I> enumSerializer, Function<T, String> enumNamer, DataWriter<I> rawWriter, WithWriterArgs... writerArgs) throws SerializationException {
         final I rawValue = enumSerializer.apply(value);
-        rawWriter.write(logicalName, rawValue, WithReaderWriterArgs.WithAdditionalStringRepresentation(enumNamer.apply(value)));
-        return value;
+        rawWriter.write(logicalName, rawValue, ArrayUtils.addAll(writerArgs, WithReaderWriterArgs.WithAdditionalStringRepresentation(enumNamer.apply(value))));
     }
 
     @Override
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBigDecimal.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBigDecimal.java
index c52ca56..7d30f0c 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBigDecimal.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBigDecimal.java
@@ -18,7 +18,6 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -32,9 +31,8 @@ public class DataWriterSimpleBigDecimal extends DataWriterSimpleBase<BigDecimal>
     }
 
     @Override
-    public BigDecimal write(String logicalName, BigDecimal value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, BigDecimal value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeBigDecimal(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBoolean.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBoolean.java
index 0637f11..a25f2c4 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBoolean.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleBoolean.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleBoolean extends DataWriterSimpleBase<Boolean> {
 
     public DataWriterSimpleBoolean(WriteBuffer writeBuffer, int bitLength) {
@@ -32,12 +29,11 @@ public class DataWriterSimpleBoolean extends DataWriterSimpleBase<Boolean> {
     }
 
     @Override
-    public Boolean write(String logicalName, Boolean value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Boolean value, WithWriterArgs... writerArgs) throws SerializationException {
         if (bitLength != 1) {
             throw new SerializationException("Bit fields only support bitLength of 1");
         }
         writeBuffer.writeBit(logicalName, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByte.java
index 7a35eb3..0a612b0 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByte.java
@@ -29,12 +29,11 @@ public class DataWriterSimpleByte extends DataWriterSimpleBase<Byte> {
     }
 
     @Override
-    public Byte write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
         if(bitLength != 8) {
             throw new SerializationException("Byte fields only support bitLength of 8");
         }
         writeBuffer.writeByte(logicalName, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByteArray.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByteArray.java
index 4c6544f..96c447f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByteArray.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleByteArray.java
@@ -29,13 +29,12 @@ public class DataWriterSimpleByteArray extends DataWriterSimpleBase<byte[]> {
     }
 
     @Override
-    public byte[] write(String logicalName, byte[] value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, byte[] value, WithWriterArgs... writerArgs) throws SerializationException {
         if (bitLength != 8) {
             throw new SerializationException("ByteArray fields only support bitLength of 8");
         }
         // TODO: Get a WirReaderArgs parameter for the number of bytes ...
         writeBuffer.writeByteArray(logicalName, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleDouble.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleDouble.java
index d667e4e..4ad5f44 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleDouble.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleDouble.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleDouble extends DataWriterSimpleBase<Double> {
 
     public DataWriterSimpleDouble(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleDouble extends DataWriterSimpleBase<Double> {
     }
 
     @Override
-    public Double write(String logicalName, Double value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Double value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeDouble(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleFloat.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleFloat.java
index aa4f300..8937ac2 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleFloat.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleFloat.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleFloat extends DataWriterSimpleBase<Float> {
 
     public DataWriterSimpleFloat(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleFloat extends DataWriterSimpleBase<Float> {
     }
 
     @Override
-    public Float write(String logicalName, Float value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Float value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeFloat(logicalName, bitLength, value);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedBigInteger.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedBigInteger.java
index 814394f..462eb51 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedBigInteger.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedBigInteger.java
@@ -18,13 +18,11 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
 import java.math.BigInteger;
-import java.util.Objects;
 
 public class DataWriterSimpleSignedBigInteger extends DataWriterSimpleBase<BigInteger> {
 
@@ -33,9 +31,8 @@ public class DataWriterSimpleSignedBigInteger extends DataWriterSimpleBase<BigIn
     }
 
     @Override
-    public BigInteger write(String logicalName, BigInteger value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, BigInteger value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeBigInteger(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedByte.java
index aa73b3e..09c10d7 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedByte.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleSignedByte extends DataWriterSimpleBase<Byte> {
 
     public DataWriterSimpleSignedByte(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleSignedByte extends DataWriterSimpleBase<Byte> {
     }
 
     @Override
-    public Byte write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeSignedByte(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedInt.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedInt.java
index 73435dd..5d7e51d 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedInt.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedInt.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleSignedInt extends DataWriterSimpleBase<Integer> {
 
     public DataWriterSimpleSignedInt(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleSignedInt extends DataWriterSimpleBase<Integer> {
     }
 
     @Override
-    public Integer write(String logicalName, Integer value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Integer value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeInt(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedLong.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedLong.java
index 8545a29..6f9fb06 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedLong.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedLong.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleSignedLong extends DataWriterSimpleBase<Long> {
 
     public DataWriterSimpleSignedLong(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleSignedLong extends DataWriterSimpleBase<Long> {
     }
 
     @Override
-    public Long write(String logicalName, Long value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Long value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeLong(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedShort.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedShort.java
index 109d77fd..afab96a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedShort.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleSignedShort.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleSignedShort extends DataWriterSimpleBase<Short> {
 
     public DataWriterSimpleSignedShort(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleSignedShort extends DataWriterSimpleBase<Short> {
     }
 
     @Override
-    public Short write(String logicalName, Short value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Short value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeShort(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleString.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleString.java
index b9edc83..2e2e63c 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleString.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleString.java
@@ -29,9 +29,8 @@ public class DataWriterSimpleString extends DataWriterSimpleBase<String> {
     }
 
     @Override
-    public String write(String logicalName, String value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, String value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeString(logicalName, bitLength,"UTF-8", value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedBigInteger.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedBigInteger.java
index 9c1ced1..79ca11a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedBigInteger.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedBigInteger.java
@@ -18,13 +18,11 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
 import java.math.BigInteger;
-import java.util.Objects;
 
 public class DataWriterSimpleUnsignedBigInteger extends DataWriterSimpleBase<BigInteger> {
 
@@ -33,9 +31,8 @@ public class DataWriterSimpleUnsignedBigInteger extends DataWriterSimpleBase<Big
     }
 
     @Override
-    public BigInteger write(String logicalName, BigInteger value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, BigInteger value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeUnsignedBigInteger(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedByte.java
index 4a48f68..f16ca44 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedByte.java
@@ -18,13 +18,10 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
-import java.util.Objects;
-
 public class DataWriterSimpleUnsignedByte extends DataWriterSimpleBase<Byte> {
 
     public DataWriterSimpleUnsignedByte(WriteBuffer writeBuffer, int bitLength) {
@@ -32,9 +29,8 @@ public class DataWriterSimpleUnsignedByte extends DataWriterSimpleBase<Byte> {
     }
 
     @Override
-    public Byte write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Byte value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeUnsignedByte(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedInt.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedInt.java
index bd27d96..a5e618b 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedInt.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedInt.java
@@ -18,7 +18,6 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -30,9 +29,8 @@ public class DataWriterSimpleUnsignedInt extends DataWriterSimpleBase<Integer> {
     }
 
     @Override
-    public Integer write(String logicalName, Integer value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Integer value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeUnsignedInt(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedLong.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedLong.java
index 6142293..7d3e1e6 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedLong.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedLong.java
@@ -18,7 +18,6 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -30,9 +29,8 @@ public class DataWriterSimpleUnsignedLong extends DataWriterSimpleBase<Long> {
     }
 
     @Override
-    public Long write(String logicalName, Long value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Long value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeUnsignedLong(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedShort.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedShort.java
index 30f57d5..6a30ec6 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedShort.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterSimpleUnsignedShort.java
@@ -18,7 +18,6 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -30,9 +29,8 @@ public class DataWriterSimpleUnsignedShort extends DataWriterSimpleBase<Short> {
     }
 
     @Override
-    public Short write(String logicalName, Short value, WithWriterArgs... writerArgs) throws SerializationException {
+    public void write(String logicalName, Short value, WithWriterArgs... writerArgs) throws SerializationException {
         writeBuffer.writeUnsignedShort(logicalName, bitLength, value, writerArgs);
-        return value;
     }
 
 }
diff --git a/protocols/df1/src/main/resources/protocols/df1/df1.mspec b/protocols/df1/src/main/resources/protocols/df1/df1.mspec
index b53a558..756e1da 100644
--- a/protocols/df1/src/main/resources/protocols/df1/df1.mspec
+++ b/protocols/df1/src/main/resources/protocols/df1/df1.mspec
@@ -46,7 +46,7 @@
             [simple uint  8    size     ]
         ]
         ['0x41' DF1UnprotectedReadResponse
-            [manualArray  byte data terminated 'STATIC_CALL("dataTerminate", readBuffer)' 'STATIC_CALL("readData", readBuffer)' 'STATIC_CALL("writeData", writeBuffer, element)' 'STATIC_CALL("dataLength", data)']
+            [manualArray byte data terminated 'STATIC_CALL("dataTerminate", readBuffer)' 'STATIC_CALL("readData", readBuffer)' 'STATIC_CALL("writeData", writeBuffer, _value)' 'STATIC_CALL("dataLength", data)']
         ]
     ]
 ]
diff --git a/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec b/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
index 02d319f..f11ebd9 100644
--- a/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
+++ b/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
@@ -115,7 +115,7 @@
         ['0x79','true' SysexCommandReportFirmwareResponse
             [simple uint 8 majorVersion]
             [simple uint 8 minorVersion]
-            [manualArray byte 'fileName' terminated 'STATIC_CALL("isSysexEnd", readBuffer)' 'STATIC_CALL("parseSysexString", readBuffer)' 'STATIC_CALL("serializeSysexString", writeBuffer, element)' 'STATIC_CALL("lengthSysexString", fileName)']
+            [manualArray byte 'fileName' terminated 'STATIC_CALL("isSysexEnd", readBuffer)' 'STATIC_CALL("parseSysexString", readBuffer)' 'STATIC_CALL("serializeSysexString", writeBuffer, _value)' 'STATIC_CALL("lengthSysexString", fileName)']
         ]
         ['0x7A' SysexCommandSamplingInterval
         ]