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 2022/03/08 14:10:17 UTC

[plc4x] branch develop updated: fix(codegen): Added more testcases for the new field types and added support for them in Java, C and Go

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 831db3e  fix(codegen): Added more testcases for the new field types and added support for them in Java, C and Go
831db3e is described below

commit 831db3ec70b45dc9655c1f93711109717c5bd211
Author: cdutz <ch...@c-ware.de>
AuthorDate: Tue Mar 8 15:04:16 2022 +0100

    fix(codegen): Added more testcases for the new field types and added support for them in Java, C and Go
---
 .../apache/plc4x/language/c/CLanguageOutput.java   |   4 +-
 .../plc4x/language/c/CLanguageTemplateHelper.java  |   8 +-
 ...emplate.c.ftlh => complex-type-template.c.ftlh} |   8 +-
 ...emplate.h.ftlh => complex-type-template.h.ftlh} |   0
 .../resources/templates/go/model-template.go.ftlh  |  22 +-
 .../plc4go/test/readwrite/model/StaticHelper.go    |   4 +
 .../templates/java/model-template.java.ftlh        |   8 +-
 .../java/test/readwrite/utils/StaticHelper.java    |   8 +
 .../plugins/codegenerator/language/mspec/MSpec.g4  |   2 +-
 .../src/main/resources/protocols/test/test.mspec   |  46 ++--
 .../modbus/include/modbus_ascii_adu.h              |  67 ++++++
 .../modbus/include/modbus_rtu_adu.h                |  69 ++++++
 .../modbus/src/modbus_ascii_adu.c                  | 155 ++++++++++++
 .../generated-sources/modbus/src/modbus_rtu_adu.c  | 176 ++++++++++++++
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  12 +
 .../plc4go/cbus/readwrite/model/CALReply.go        |  16 ++
 .../plc4go/cbus/readwrite/model/CBusCommand.go     |  12 +
 .../CBusCommandPointToPointToMultiPointNormal.go   |  12 +
 .../CBusCommandPointToPointToMultiPointStatus.go   |  12 +
 .../model/CBusPointToMultiPointCommandNormal.go    |  12 +
 .../model/CBusPointToMultiPointCommandStatus.go    |  12 +
 .../readwrite/model/CBusPointToPointCommand.go     |  12 +
 .../readwrite/model/ExtendedFormatStatusReply.go   |  16 ++
 .../model/IdentifyReplyCommandNetworkVoltage.go    |  16 ++
 .../plc4go/cbus/readwrite/model/MonitoredSAL.go    |  16 ++
 .../plc4go/cbus/readwrite/model/ParameterChange.go |  25 ++
 .../plc4go/cbus/readwrite/model/PowerUp.go         |  21 ++
 .../readwrite/model/StandardFormatStatusReply.go   |  16 ++
 .../plc4go/df1/readwrite/model/DF1Symbol.go        |  13 ++
 .../df1/readwrite/model/DF1SymbolMessageFrame.go   |  16 ++
 .../readwrite/model/DF1UnprotectedReadResponse.go  |   3 +-
 .../plc4go/eip/readwrite/model/CipExchange.go      |  20 ++
 .../eip/readwrite/model/CipUnconnectedRequest.go   |  12 +
 .../eip/readwrite/model/EipConnectionRequest.go    |  17 ++
 .../eip/readwrite/model/MultipleServiceRequest.go  |  16 ++
 .../model/SysexCommandReportFirmwareResponse.go    |   3 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  12 +
 .../CEMIAdditionalInformationRelativeTimestamp.go  |  12 +
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |  13 ++
 .../modbus/readwrite/model/ModbusAsciiADU.go       | 241 +++++++++++++++++++
 .../modbus/readwrite/model/ModbusConstants.go      |  13 ++
 .../ModbusPDUReadDeviceIdentificationRequest.go    |  12 +
 .../ModbusPDUReadDeviceIdentificationResponse.go   |  12 +
 .../plc4go/modbus/readwrite/model/ModbusRtuADU.go  | 260 +++++++++++++++++++++
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |  12 +
 .../model/AlarmMessageAckObjectPushType.go         |  12 +
 .../readwrite/model/AlarmMessageObjectAckType.go   |  16 ++
 .../readwrite/model/AlarmMessageObjectPushType.go  |  12 +
 .../readwrite/model/AlarmMessageObjectQueryType.go |  12 +
 .../s7/readwrite/model/AlarmMessageQueryType.go    |  12 +
 .../s7/readwrite/model/S7DataAlarmMessage.go       |  17 ++
 .../plc4go/s7/readwrite/model/S7Message.go         |  12 +
 .../s7/readwrite/model/S7MessageObjectRequest.go   |  16 ++
 .../S7PayloadUserDataItemCpuFunctionAlarmQuery.go  |  24 ++
 ...oadUserDataItemCpuFunctionAlarmQueryResponse.go |  16 ++
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  12 +
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |  12 +
 57 files changed, 1614 insertions(+), 33 deletions(-)

diff --git a/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageOutput.java b/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageOutput.java
index f0ce768..de13b31 100644
--- a/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageOutput.java
+++ b/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageOutput.java
@@ -56,8 +56,8 @@ public class CLanguageOutput extends FreemarkerLanguageOutput {
     @Override
     protected List<Template> getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException {
         return Arrays.asList(
-            freemarkerConfiguration.getTemplate("templates/c/pojo-template.h.ftlh"),
-            freemarkerConfiguration.getTemplate("templates/c/pojo-template.c.ftlh"));
+            freemarkerConfiguration.getTemplate("templates/c/complex-type-template.h.ftlh"),
+            freemarkerConfiguration.getTemplate("templates/c/complex-type-template.c.ftlh"));
     }
 
     @Override
diff --git a/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java b/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
index 076db19..45eb9be 100644
--- a/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
+++ b/code-generation/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
@@ -697,6 +697,12 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
             }
         }
 
+        // If the literal is referencing a constant field, we need to reference the constant variable instead.
+        final Optional<NamedField> namedField = ((ComplexTypeDefinition) baseType).getNamedFieldByName(name);
+        if(namedField.isPresent() && namedField.get() instanceof ConstField) {
+            return getCTypeName(baseType.getName()).toUpperCase() + "_" + name.toUpperCase() + "()";
+        }
+
         // Try to find the type of the addressed property.
         Optional<TypeReference> propertyTypeOptional =
             ((ComplexTypeDefinition) baseType).getTypeReferenceForProperty(name);
@@ -716,7 +722,7 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
 
         final TypeReference propertyType = propertyTypeOptional.get();
 
-        // If it's a simple field, there is no sub-type to access.
+        // If it's a simple field, there is no subtype to access.
         if (propertyType instanceof SimpleTypeReference) {
             if (variableLiteral.getChild().isPresent()) {
                 throw new FreemarkerException("Simple property '" + name + "' doesn't have child properties.");
diff --git a/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh b/code-generation/language-c/src/main/resources/templates/c/complex-type-template.c.ftlh
similarity index 98%
rename from code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh
rename to code-generation/language-c/src/main/resources/templates/c/complex-type-template.c.ftlh
index f4cef18..48462ff 100644
--- a/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh
+++ b/code-generation/language-c/src/main/resources/templates/c/complex-type-template.c.ftlh
@@ -188,7 +188,7 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
             <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
             <#elseif arrayField.isTerminatedArrayField()>
     // Terminated array
-    while(!((boolean) (${helper.toParseExpression(baseType, arrayField, arrayField.loopExpression, parserArguments)}))) {
+    while(!((bool) (${helper.toParseExpression(baseType, arrayField, arrayField.loopExpression, parserArguments)}))) {
             <#-- Inizialize a local variable with the simple type (Intentionally keeping the java-style names so they can be used in expressions) -->
 <#if elementTypeReference.isSimpleTypeReference()>
     <#assign simpleTypeReference = elementTypeReference.asSimpleTypeReference().orElseThrow()>
@@ -432,7 +432,7 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
         <#case "virtual">
             <#assign virtualField = field.asVirtualField().orElseThrow()>
 
-  // Virtual field (Just declare a local variable so we can access it in the parser)
+  // Virtual field (Just declare a local variable, so we can access it in the parser)
   ${helper.getLanguageTypeNameForField(field)} ${virtualField.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(baseType, virtualField, virtualField.valueExpression, parserArguments)});
             <#break>
     </#switch>
@@ -700,13 +700,13 @@ uint16_t ${helper.getCTypeName(type.name)}_length_in_bits(${helper.getCTypeName(
                 <#assign manualArrayField = field.asManualArrayField().orElseThrow()>
 
   // Manual Array Field (${manualArrayField.name})
-  lengthInBits += ${helper.toParseExpression(type, manualArrayField, manualArrayField.lengthExpression, parserArguments)};
+  lengthInBits += ${helper.toSerializationExpression(type, manualArrayField, manualArrayField.lengthExpression, parserArguments)};
                 <#break>
             <#case "manual">
                 <#assign manualField = field.asManualField().orElseThrow()>
 
   // Manual Field (${manualField.name})
-  lengthInBits += ${helper.toParseExpression(type, manualField, manualField.lengthExpression, parserArguments)};
+  lengthInBits += ${helper.toSerializationExpression(type, manualField, manualField.lengthExpression, parserArguments)};
                 <#break>
             <#case "optional">
                 <#assign optionalField = field.asOptionalField().orElseThrow()>
diff --git a/code-generation/language-c/src/main/resources/templates/c/pojo-template.h.ftlh b/code-generation/language-c/src/main/resources/templates/c/complex-type-template.h.ftlh
similarity index 100%
rename from code-generation/language-c/src/main/resources/templates/c/pojo-template.h.ftlh
rename to code-generation/language-c/src/main/resources/templates/c/complex-type-template.h.ftlh
diff --git a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
index 65ae289..d30e11a 100644
--- a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
@@ -270,6 +270,23 @@ func (m *${type.name}) Get${field.name?cap_first}() <#if helper.needsPointerAcce
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
 </#if>
+<#if type.constFields?has_content>
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+	<#list type.constFields as field>
+		<#assign typeRef=field.asTypedField().orElseThrow().type>
+func (m *${type.name}) Get${field.name?cap_first}() ${helper.getLanguageTypeNameForTypeReference(typeRef)} {
+	return ${type.name}_${field.name?upper_case}
+}
+
+	</#list>
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+</#if>
 
 <#if type.parentType.isPresent() && type.parentType.orElseThrow().allParserArguments.isPresent()>
     <#assign filteredParentParserArguments = type.parentType.orElseThrow().allParserArguments.orElseThrow()?filter(arg -> !type.parentType.orElseThrow().asComplexTypeDefinition().orElseThrow().isDiscriminatorField(arg.name))>
@@ -450,14 +467,13 @@ func (m *${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 	                <#assign arrayElementType = manualArrayField.type.elementTypeReference>
 
 	// Manual Array Field (${manualArrayField.name})
-	${manualArrayField.name} := m.${manualArrayField.name?cap_first}<#-- TODO: ugly workaround for missing static evaluation-->
-	lengthInBits += uint16(${helper.toParseExpression(manualArrayField, helper.intTypeReference, manualArrayField.lengthExpression, parserArguments)})
+	lengthInBits += uint16(${helper.toSerializationExpression(manualArrayField, helper.intTypeReference, manualArrayField.lengthExpression, parserArguments)})
 					<#break>
 				<#case "manual">
 					<#assign manualField = field.asManualField().orElseThrow()>
 
 	// Manual Field (${manualField.name})
-	lengthInBits += uint16(${helper.toParseExpression(manualField, helper.intTypeReference, manualField.lengthExpression, parserArguments)})
+	lengthInBits += uint16(${helper.toSerializationExpression(manualField, helper.intTypeReference, manualField.lengthExpression, parserArguments)})
 					<#break>
 				<#case "optional">
 					<#assign optionalField = field.asOptionalField().orElseThrow()>
diff --git a/code-generation/language-go/src/test/resources/plc4go/internal/plc4go/test/readwrite/model/StaticHelper.go b/code-generation/language-go/src/test/resources/plc4go/internal/plc4go/test/readwrite/model/StaticHelper.go
index cd182ab..10e695c 100644
--- a/code-generation/language-go/src/test/resources/plc4go/internal/plc4go/test/readwrite/model/StaticHelper.go
+++ b/code-generation/language-go/src/test/resources/plc4go/internal/plc4go/test/readwrite/model/StaticHelper.go
@@ -76,3 +76,7 @@ func Parse(io utils.ReadBuffer) int8 {
 
 func Serialize(io utils.WriteBuffer, data byte) {
 }
+
+func ReadManualField(io utils.ReadBuffer, simpleField uint8) (uint8, error) {
+	return 0, nil
+}
diff --git a/code-generation/language-java/src/main/resources/templates/java/model-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/model-template.java.ftlh
index 8835dd2..8333edd 100644
--- a/code-generation/language-java/src/main/resources/templates/java/model-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/model-template.java.ftlh
@@ -211,6 +211,12 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
     }
 
 </#list>
+<#list type.constFields as field>
+    public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
+        return ${field.name?upper_case};
+    }
+
+</#list>
 
     <#if outputFlavor != "passive">
 <#if type.isDiscriminatedChildTypeDefinition()>
@@ -612,7 +618,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
                 <#assign typedField = field.asTypedField().orElseThrow()>
                 <#assign namedField = field.asNamedField().orElseThrow()>
 
-                ${helper.getLanguageTypeNameForField(field)} ${namedField.name} = read${field.typeName?cap_first}Field("${namedField.name}", ${helper.getDataReaderCall(typedField.type)}, ${helper.toParseExpression(assertField, assertField.type, assertField.conditionExpression, parserArguments)}${helper.getFieldOptions(typedField, parserArguments)});
+                ${helper.getLanguageTypeNameForField(field)} ${namedField.name} = read${field.typeName?cap_first}Field("${namedField.name}", ${helper.getDataReaderCall(typedField.type)}, (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(assertField, assertField.type, assertField.conditionExpression, parserArguments)})${helper.getFieldOptions(typedField, parserArguments)});
                 <#break>
             <#case "checksum">
                 <#assign checksumField = field.asChecksumField().orElseThrow()>
diff --git a/code-generation/language-java/src/test/resources/integration-test/src/main/java/org/apache/plc4x/java/test/readwrite/utils/StaticHelper.java b/code-generation/language-java/src/test/resources/integration-test/src/main/java/org/apache/plc4x/java/test/readwrite/utils/StaticHelper.java
index f847c66..4e278a2 100644
--- a/code-generation/language-java/src/test/resources/integration-test/src/main/java/org/apache/plc4x/java/test/readwrite/utils/StaticHelper.java
+++ b/code-generation/language-java/src/test/resources/integration-test/src/main/java/org/apache/plc4x/java/test/readwrite/utils/StaticHelper.java
@@ -71,4 +71,12 @@ public class StaticHelper {
     public static void serializeString(WriteBuffer io, String data) {
     }
 
+    public static short readManualField(ReadBuffer io, short simpleField) {
+        return 0;
+    }
+
+    public static void writeManualField(WriteBuffer io, short simpleFlied) {
+
+    }
+
 }
diff --git a/code-generation/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 b/code-generation/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
index fd3b8ec..332d3b2 100644
--- a/code-generation/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
+++ b/code-generation/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
@@ -49,12 +49,12 @@ dataIoDefinition
 field
  : abstractField
  | arrayField
+ | assertField
  | checksumField
  | constField
  | discriminatorField
  | enumField
  | implicitField
- | assertField
  | manualArrayField
  | manualField
  | optionalField
diff --git a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
index 77f5227..d3400cd 100644
--- a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
+++ b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
@@ -31,21 +31,35 @@
 // end::SimpleBitTypeTest[]
 
 [type FieldTypeTest
-    [simple         uint 8 simpleField]
+    [simple         uint 8 simpleField                         ]
     //Abstract fields can only be used within discriminated base types.
-    //[abstract       unit 8  abstractField]
-    [array          uint 8  arrayField        count      '5']
-    [checksum       uint 8  checksumField     '100']
-    [const          uint 8  constField        5]
+    //[abstract       unit 8  abstractField                      ]
+    [array          uint 8  arrayFieldCount      count      '5'   ]
+    [array          uint 8  arrayFieldLength     length     '5'   ]
+    [array          uint 8  arrayFieldTerminated terminated 'true']
+    [assert         uint 8  assertField          '42'             ]
+    [checksum       uint 8  checksumField        '100'            ]
+    [const          uint 8  constField           5                ]
     // Discriminated Field can't be used in simple type
     //[discriminator  uint 8  discriminatorField]
-    [enum           EnumTypeParameters  enumField intType]
-    [implicit       uint 8  implicitField 'simpleField']
-    [optional       uint 8  optionalField 'simpleField == 5']
+    [enum           EnumTypeParameters  enumField intType      ]
+    [implicit       uint 8  implicitField 'simpleField'        ]
+    // TODO: Currently manual array seems to only support the flavor "terminated"
+    //[manualArray    uint 8  manualArrayField count      '1'    ] // TODO: Implement ...
+    //[manualArray    uint 8  manualArrayField length     '1'    ] // TODO: Implement ...
+    //[manualArray    uint 8  manualArrayField terminated '1'    ] // TODO: Implement ...
+    [manual         uint 8  manualField 'STATIC_CALL("readManualField", readBuffer, simpleField)'
+                                        'STATIC_CALL("writeManualField", writeBuffer, simpleField)'
+                                        'simpleField*8'                   ]
+    [optional       uint 8  optionalField 'simpleField == 5'   ]
     [padding        uint 8  paddingField  '0x00'  'simpleField']
-    [reserved       uint 8  '0x00']
+    [reserved       uint 8  '0x00'                             ]
     // TypeSwitch field can't be used in non discriminatedTypes
-    //[typeSwitch simpleField ]
+    //[typeSwitch simpleField                                    ]
+    [unknown        uint 8                                     ]
+    [virtual        uint 8  virtualField  'constField + 10'    ]
+    [validation     'false' "Validation Message"               ]
+    [peek           uint 8  peekField                          ]
 ]
 
 // If a type has an unknown field, the entire serializer is reduced to firing an exception
@@ -164,7 +178,6 @@
 
 [type ImplicitTypeTest
     //Implicit types have the requirement that the expression is of a similar type to the field
-    //TODO: i.e Integers can't be cast to Booleans
     [simple   uint 8 simpleField]
 
     [implicit bit bitField 'simpleField > 0']
@@ -172,8 +185,7 @@
     [implicit uint 8 uintField 'simpleField']
     [implicit float 32 floatField 'simpleField']
     [implicit float 64 doubleField 'simpleField']
-    //TODO: String literals can't be used in the expression
-    //[implicit string 8 stringField 'simpleField > 0 ? "HELLO TODDY" : "BYE TODDY"']
+    [implicit string 8 stringField 'simpleField > 0 ? "HELLO TODDY" : "BYE TODDY"']
 ]
 
 [type OptionalTypeTest
@@ -364,14 +376,14 @@
     ['0x11' BYTE_ARRAY]
 ]
 
-//TODO:  C doesn't support non integer switch fields
+//TODO:  C doesn't support non integer switch fields (However this feature might not make sense)
 //[enum float 32 EnumTypeFloat
 //    ['100.0' LOW]
 //    ['101.0' MID]
 //    ['102.0' BIG]
 //]
 
-//TODO:  C doesn't support non integer switch fields
+//TODO:  C doesn't support non integer switch fields (However this feature might not make sense)
 //[enum float 64 EnumTypeDouble
 //    ['100.0' LOW]
 //    ['101.0' MID]
@@ -383,7 +395,7 @@
 //    ['Toddy1' TODDY]
 //]
 
-//TODO:  Fails to import the base Enum in C, need to find it in getComplexTypeReferences
+//TODO:  Fails to import the base Enum in C, need to find it in getComplexTypeReferences (However this feature might not make sense)
 //[enum EnumType EnumTypeEnum
 //    ['BOOL' BOOL]
 //    ['UINT' UINT]
@@ -396,7 +408,7 @@
 //    ['0x02' BYTE             ['true'       , '2'               , '2'                 , '101.1'                  , '101.1'              , 'BYTE'         , 'UINT']]
 //]
 
-//TODO:  Keyword named parameters aren't allowed
+//TODO:  Keyword named parameters aren't allowed (This won't be fixed)
 //[enum int 8 EnumTypeIntTest(int 8 int)
 //    ['0x01' BOOL             ['1']]
 //    ['0x02' BYTE             ['2']]
diff --git a/plc4c/generated-sources/modbus/include/modbus_ascii_adu.h b/plc4c/generated-sources/modbus/include/modbus_ascii_adu.h
new file mode 100644
index 0000000..ae827ef
--- /dev/null
+++ b/plc4c/generated-sources/modbus/include/modbus_ascii_adu.h
@@ -0,0 +1,67 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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.
+ */
+
+#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_H_
+#define PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_H_
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <plc4c/driver_modbus_static.h>
+#include <plc4c/spi/read_buffer.h>
+#include <plc4c/spi/write_buffer.h>
+#include <plc4c/utils/list.h>
+#include "modbus_pdu.h"
+
+// Code generated by code-generation. DO NOT EDIT.
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// Constant values.
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START();
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR();
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF();
+
+struct plc4c_modbus_read_write_modbus_ascii_adu {
+  /* Properties */
+  uint8_t start;
+  uint8_t address;
+  plc4c_modbus_read_write_modbus_pdu* pdu;
+  uint8_t cr;
+  uint8_t lf;
+};
+typedef struct plc4c_modbus_read_write_modbus_ascii_adu plc4c_modbus_read_write_modbus_ascii_adu;
+
+// Create an empty NULL-struct
+plc4c_modbus_read_write_modbus_ascii_adu plc4c_modbus_read_write_modbus_ascii_adu_null();
+
+plc4c_return_code plc4c_modbus_read_write_modbus_ascii_adu_parse(plc4c_spi_read_buffer* readBuffer, bool response, plc4c_modbus_read_write_modbus_ascii_adu** message);
+
+plc4c_return_code plc4c_modbus_read_write_modbus_ascii_adu_serialize(plc4c_spi_write_buffer* writeBuffer, plc4c_modbus_read_write_modbus_ascii_adu* message);
+
+uint16_t plc4c_modbus_read_write_modbus_ascii_adu_length_in_bytes(plc4c_modbus_read_write_modbus_ascii_adu* message);
+
+uint16_t plc4c_modbus_read_write_modbus_ascii_adu_length_in_bits(plc4c_modbus_read_write_modbus_ascii_adu* message);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_H_
diff --git a/plc4c/generated-sources/modbus/include/modbus_rtu_adu.h b/plc4c/generated-sources/modbus/include/modbus_rtu_adu.h
new file mode 100644
index 0000000..08d1b84
--- /dev/null
+++ b/plc4c/generated-sources/modbus/include/modbus_rtu_adu.h
@@ -0,0 +1,69 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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.
+ */
+
+#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_H_
+#define PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_H_
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <plc4c/driver_modbus_static.h>
+#include <plc4c/spi/read_buffer.h>
+#include <plc4c/spi/write_buffer.h>
+#include <plc4c/utils/list.h>
+#include "modbus_pdu.h"
+
+// Code generated by code-generation. DO NOT EDIT.
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// Constant values.
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1();
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2();
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3();
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4();
+
+struct plc4c_modbus_read_write_modbus_rtu_adu {
+  /* Properties */
+  uint8_t space1;
+  uint8_t space2;
+  uint8_t space3;
+  uint8_t space4;
+  uint8_t address;
+  plc4c_modbus_read_write_modbus_pdu* pdu;
+};
+typedef struct plc4c_modbus_read_write_modbus_rtu_adu plc4c_modbus_read_write_modbus_rtu_adu;
+
+// Create an empty NULL-struct
+plc4c_modbus_read_write_modbus_rtu_adu plc4c_modbus_read_write_modbus_rtu_adu_null();
+
+plc4c_return_code plc4c_modbus_read_write_modbus_rtu_adu_parse(plc4c_spi_read_buffer* readBuffer, bool response, plc4c_modbus_read_write_modbus_rtu_adu** message);
+
+plc4c_return_code plc4c_modbus_read_write_modbus_rtu_adu_serialize(plc4c_spi_write_buffer* writeBuffer, plc4c_modbus_read_write_modbus_rtu_adu* message);
+
+uint16_t plc4c_modbus_read_write_modbus_rtu_adu_length_in_bytes(plc4c_modbus_read_write_modbus_rtu_adu* message);
+
+uint16_t plc4c_modbus_read_write_modbus_rtu_adu_length_in_bits(plc4c_modbus_read_write_modbus_rtu_adu* message);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_H_
diff --git a/plc4c/generated-sources/modbus/src/modbus_ascii_adu.c b/plc4c/generated-sources/modbus/src/modbus_ascii_adu.c
new file mode 100644
index 0000000..50d0b1b
--- /dev/null
+++ b/plc4c/generated-sources/modbus/src/modbus_ascii_adu.c
@@ -0,0 +1,155 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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.
+ */
+
+#include <stdio.h>
+#include <plc4c/spi/evaluation_helper.h>
+#include "modbus_ascii_adu.h"
+
+// Code generated by code-generation. DO NOT EDIT.
+
+
+// Constant values.
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START_const = 0x3A;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START_const;
+}
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR_const = 0x0D;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR_const;
+}
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF_const = 0x0A;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF_const;
+}
+
+// Parse function.
+plc4c_return_code plc4c_modbus_read_write_modbus_ascii_adu_parse(plc4c_spi_read_buffer* readBuffer, bool response, plc4c_modbus_read_write_modbus_ascii_adu** _message) {
+  uint16_t startPos = plc4c_spi_read_get_pos(readBuffer);
+  plc4c_return_code _res = OK;
+
+  // Allocate enough memory to contain this data structure.
+  (*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_ascii_adu));
+  if(*_message == NULL) {
+    return NO_MEMORY;
+  }
+
+  // Const Field (start)
+  uint8_t start = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &start);
+  if(_res != OK) {
+    return _res;
+  }
+  if(start != PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START + " but got " + start);
+  }
+
+  // Simple Field (address)
+  uint8_t address = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &address);
+  if(_res != OK) {
+    return _res;
+  }
+  (*_message)->address = address;
+
+  // Simple Field (pdu)
+  plc4c_modbus_read_write_modbus_pdu* pdu;
+  _res = plc4c_modbus_read_write_modbus_pdu_parse(readBuffer, response, (void*) &pdu);
+  if(_res != OK) {
+    return _res;
+  }
+  (*_message)->pdu = pdu;
+
+  // Const Field (cr)
+  uint8_t cr = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &cr);
+  if(_res != OK) {
+    return _res;
+  }
+  if(cr != PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR + " but got " + cr);
+  }
+
+  // Const Field (lf)
+  uint8_t lf = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &lf);
+  if(_res != OK) {
+    return _res;
+  }
+  if(lf != PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF + " but got " + lf);
+  }
+
+  return OK;
+}
+
+plc4c_return_code plc4c_modbus_read_write_modbus_ascii_adu_serialize(plc4c_spi_write_buffer* writeBuffer, plc4c_modbus_read_write_modbus_ascii_adu* _message) {
+  plc4c_return_code _res = OK;
+
+  // Const Field (start)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_START());
+
+  // Simple Field (address)
+  _res = plc4c_spi_write_unsigned_byte(writeBuffer, 8, _message->address);
+  if(_res != OK) {
+    return _res;
+  }
+
+  // Simple Field (pdu)
+  _res = plc4c_modbus_read_write_modbus_pdu_serialize(writeBuffer, _message->pdu);
+  if(_res != OK) {
+    return _res;
+  }
+
+  // Const Field (cr)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_CR());
+
+  // Const Field (lf)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_ASCII_ADU_LF());
+
+  return OK;
+}
+
+uint16_t plc4c_modbus_read_write_modbus_ascii_adu_length_in_bytes(plc4c_modbus_read_write_modbus_ascii_adu* _message) {
+  return plc4c_modbus_read_write_modbus_ascii_adu_length_in_bits(_message) / 8;
+}
+
+uint16_t plc4c_modbus_read_write_modbus_ascii_adu_length_in_bits(plc4c_modbus_read_write_modbus_ascii_adu* _message) {
+  uint16_t lengthInBits = 0;
+
+  // Const Field (start)
+  lengthInBits += 8;
+
+  // Simple field (address)
+  lengthInBits += 8;
+
+  // Simple field (pdu)
+  lengthInBits += plc4c_modbus_read_write_modbus_pdu_length_in_bits(_message->pdu);
+
+  // Const Field (cr)
+  lengthInBits += 8;
+
+  // Const Field (lf)
+  lengthInBits += 8;
+
+  return lengthInBits;
+}
+
diff --git a/plc4c/generated-sources/modbus/src/modbus_rtu_adu.c b/plc4c/generated-sources/modbus/src/modbus_rtu_adu.c
new file mode 100644
index 0000000..c30c242
--- /dev/null
+++ b/plc4c/generated-sources/modbus/src/modbus_rtu_adu.c
@@ -0,0 +1,176 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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.
+ */
+
+#include <stdio.h>
+#include <plc4c/spi/evaluation_helper.h>
+#include "modbus_rtu_adu.h"
+
+// Code generated by code-generation. DO NOT EDIT.
+
+
+// Constant values.
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1_const = 0x00;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1_const;
+}
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2_const = 0x00;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2_const;
+}
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3_const = 0x00;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3_const;
+}
+static const uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4_const = 0x00;
+uint8_t PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4() {
+  return PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4_const;
+}
+
+// Parse function.
+plc4c_return_code plc4c_modbus_read_write_modbus_rtu_adu_parse(plc4c_spi_read_buffer* readBuffer, bool response, plc4c_modbus_read_write_modbus_rtu_adu** _message) {
+  uint16_t startPos = plc4c_spi_read_get_pos(readBuffer);
+  plc4c_return_code _res = OK;
+
+  // Allocate enough memory to contain this data structure.
+  (*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_rtu_adu));
+  if(*_message == NULL) {
+    return NO_MEMORY;
+  }
+
+  // Const Field (space1)
+  uint8_t space1 = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &space1);
+  if(_res != OK) {
+    return _res;
+  }
+  if(space1 != PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1 + " but got " + space1);
+  }
+
+  // Const Field (space2)
+  uint8_t space2 = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &space2);
+  if(_res != OK) {
+    return _res;
+  }
+  if(space2 != PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2 + " but got " + space2);
+  }
+
+  // Const Field (space3)
+  uint8_t space3 = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &space3);
+  if(_res != OK) {
+    return _res;
+  }
+  if(space3 != PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3 + " but got " + space3);
+  }
+
+  // Const Field (space4)
+  uint8_t space4 = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &space4);
+  if(_res != OK) {
+    return _res;
+  }
+  if(space4 != PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4()) {
+    return PARSE_ERROR;
+    // throw new ParseException("Expected constant value " + PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4 + " but got " + space4);
+  }
+
+  // Simple Field (address)
+  uint8_t address = 0;
+  _res = plc4c_spi_read_unsigned_byte(readBuffer, 8, (uint8_t*) &address);
+  if(_res != OK) {
+    return _res;
+  }
+  (*_message)->address = address;
+
+  // Simple Field (pdu)
+  plc4c_modbus_read_write_modbus_pdu* pdu;
+  _res = plc4c_modbus_read_write_modbus_pdu_parse(readBuffer, response, (void*) &pdu);
+  if(_res != OK) {
+    return _res;
+  }
+  (*_message)->pdu = pdu;
+
+  return OK;
+}
+
+plc4c_return_code plc4c_modbus_read_write_modbus_rtu_adu_serialize(plc4c_spi_write_buffer* writeBuffer, plc4c_modbus_read_write_modbus_rtu_adu* _message) {
+  plc4c_return_code _res = OK;
+
+  // Const Field (space1)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE1());
+
+  // Const Field (space2)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE2());
+
+  // Const Field (space3)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE3());
+
+  // Const Field (space4)
+  plc4c_spi_write_unsigned_byte(writeBuffer, 8, PLC4C_MODBUS_READ_WRITE_MODBUS_RTU_ADU_SPACE4());
+
+  // Simple Field (address)
+  _res = plc4c_spi_write_unsigned_byte(writeBuffer, 8, _message->address);
+  if(_res != OK) {
+    return _res;
+  }
+
+  // Simple Field (pdu)
+  _res = plc4c_modbus_read_write_modbus_pdu_serialize(writeBuffer, _message->pdu);
+  if(_res != OK) {
+    return _res;
+  }
+
+  return OK;
+}
+
+uint16_t plc4c_modbus_read_write_modbus_rtu_adu_length_in_bytes(plc4c_modbus_read_write_modbus_rtu_adu* _message) {
+  return plc4c_modbus_read_write_modbus_rtu_adu_length_in_bits(_message) / 8;
+}
+
+uint16_t plc4c_modbus_read_write_modbus_rtu_adu_length_in_bits(plc4c_modbus_read_write_modbus_rtu_adu* _message) {
+  uint16_t lengthInBits = 0;
+
+  // Const Field (space1)
+  lengthInBits += 8;
+
+  // Const Field (space2)
+  lengthInBits += 8;
+
+  // Const Field (space3)
+  lengthInBits += 8;
+
+  // Const Field (space4)
+  lengthInBits += 8;
+
+  // Simple field (address)
+  lengthInBits += 8;
+
+  // Simple field (pdu)
+  lengthInBits += plc4c_modbus_read_write_modbus_pdu_length_in_bits(_message->pdu);
+
+  return lengthInBits;
+}
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index 54f5c9f..b659313 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -75,6 +75,18 @@ func (m *BVLC) GetBvlcPayloadLength() uint16 {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *BVLC) GetBacnetType() uint8 {
+	return BVLC_BACNETTYPE
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewBVLC factory function for BVLC
 func NewBVLC() *BVLC {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CALReply.go b/plc4go/internal/plc4go/cbus/readwrite/model/CALReply.go
index 8e0a54c..78c0466 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CALReply.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CALReply.go
@@ -82,6 +82,22 @@ func (m *CALReply) GetCalData() *CALData {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CALReply) GetCr() byte {
+	return CALReply_CR
+}
+
+func (m *CALReply) GetLf() byte {
+	return CALReply_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCALReply factory function for CALReply
 func NewCALReply(calType byte, calData *CALData) *CALReply {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommand.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommand.go
index b62051e..6b57a82 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommand.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommand.go
@@ -91,6 +91,18 @@ func (m *CBusCommand) GetDestinationAddressType() DestinationAddressType {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusCommand) GetInitiator() byte {
+	return CBusCommand_INITIATOR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusCommand factory function for CBusCommand
 func NewCBusCommand(header *CBusHeader, srchk bool) *CBusCommand {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointNormal.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointNormal.go
index e1e50ae..8ab05c5 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointNormal.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointNormal.go
@@ -112,6 +112,18 @@ func (m *CBusCommandPointToPointToMultiPointNormal) GetAlpha() *Alpha {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusCommandPointToPointToMultiPointNormal) GetCr() byte {
+	return CBusCommandPointToPointToMultiPointNormal_CR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusCommandPointToPointToMultiPointNormal factory function for CBusCommandPointToPointToMultiPointNormal
 func NewCBusCommandPointToPointToMultiPointNormal(application ApplicationIdContainer, salData *SALData, crc *Checksum, peekAlpha byte, alpha *Alpha, bridgeAddress *BridgeAddress, networkRoute *NetworkRoute, peekedApplication byte, srchk bool) *CBusCommandPointToPointToMultiPointNormal {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointStatus.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointStatus.go
index f5d13cd..4f809f7 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointStatus.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusCommandPointToPointToMultiPointStatus.go
@@ -106,6 +106,18 @@ func (m *CBusCommandPointToPointToMultiPointStatus) GetAlpha() *Alpha {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusCommandPointToPointToMultiPointStatus) GetCr() byte {
+	return CBusCommandPointToPointToMultiPointStatus_CR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusCommandPointToPointToMultiPointStatus factory function for CBusCommandPointToPointToMultiPointStatus
 func NewCBusCommandPointToPointToMultiPointStatus(statusRequest *StatusRequest, crc *Checksum, peekAlpha byte, alpha *Alpha, bridgeAddress *BridgeAddress, networkRoute *NetworkRoute, peekedApplication byte, srchk bool) *CBusCommandPointToPointToMultiPointStatus {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
index 325c000..38e288a 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
@@ -111,6 +111,18 @@ func (m *CBusPointToMultiPointCommandNormal) GetAlpha() *Alpha {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusPointToMultiPointCommandNormal) GetCr() byte {
+	return CBusPointToMultiPointCommandNormal_CR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusPointToMultiPointCommandNormal factory function for CBusPointToMultiPointCommandNormal
 func NewCBusPointToMultiPointCommandNormal(application ApplicationIdContainer, salData *SALData, crc *Checksum, peekAlpha byte, alpha *Alpha, peekedApplication byte, srchk bool) *CBusPointToMultiPointCommandNormal {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
index f7f6a81..30d0275 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
@@ -104,6 +104,18 @@ func (m *CBusPointToMultiPointCommandStatus) GetAlpha() *Alpha {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusPointToMultiPointCommandStatus) GetCr() byte {
+	return CBusPointToMultiPointCommandStatus_CR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusPointToMultiPointCommandStatus factory function for CBusPointToMultiPointCommandStatus
 func NewCBusPointToMultiPointCommandStatus(statusRequest *StatusRequest, crc *Checksum, peekAlpha byte, alpha *Alpha, peekedApplication byte, srchk bool) *CBusPointToMultiPointCommandStatus {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToPointCommand.go b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToPointCommand.go
index 54c0169..cd77ccc 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToPointCommand.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/CBusPointToPointCommand.go
@@ -124,6 +124,18 @@ func (m *CBusPointToPointCommand) GetIsDirect() bool {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CBusPointToPointCommand) GetCr() byte {
+	return CBusPointToPointCommand_CR
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCBusPointToPointCommand factory function for CBusPointToPointCommand
 func NewCBusPointToPointCommand(bridgeAddressCountPeek uint16, calData *CALData, crc *Checksum, peekAlpha byte, alpha *Alpha, srchk bool) *CBusPointToPointCommand {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/ExtendedFormatStatusReply.go b/plc4go/internal/plc4go/cbus/readwrite/model/ExtendedFormatStatusReply.go
index 5d424e4..9ce444b 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/ExtendedFormatStatusReply.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/ExtendedFormatStatusReply.go
@@ -95,6 +95,22 @@ func (m *ExtendedFormatStatusReply) GetCrc() *Checksum {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ExtendedFormatStatusReply) GetCr() byte {
+	return ExtendedFormatStatusReply_CR
+}
+
+func (m *ExtendedFormatStatusReply) GetLf() byte {
+	return ExtendedFormatStatusReply_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewExtendedFormatStatusReply factory function for ExtendedFormatStatusReply
 func NewExtendedFormatStatusReply(statusHeader *ExtendedStatusHeader, coding StatusCoding, application ApplicationIdContainer, blockStart uint8, statusBytes []*StatusByte, crc *Checksum) *ExtendedFormatStatusReply {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/IdentifyReplyCommandNetworkVoltage.go b/plc4go/internal/plc4go/cbus/readwrite/model/IdentifyReplyCommandNetworkVoltage.go
index 2137624..f17a94a 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/IdentifyReplyCommandNetworkVoltage.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/IdentifyReplyCommandNetworkVoltage.go
@@ -88,6 +88,22 @@ func (m *IdentifyReplyCommandNetworkVoltage) GetVoltsDecimalPlace() string {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *IdentifyReplyCommandNetworkVoltage) GetDot() byte {
+	return IdentifyReplyCommandNetworkVoltage_DOT
+}
+
+func (m *IdentifyReplyCommandNetworkVoltage) GetV() byte {
+	return IdentifyReplyCommandNetworkVoltage_V
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewIdentifyReplyCommandNetworkVoltage factory function for IdentifyReplyCommandNetworkVoltage
 func NewIdentifyReplyCommandNetworkVoltage(volts string, voltsDecimalPlace string) *IdentifyReplyCommandNetworkVoltage {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/MonitoredSAL.go b/plc4go/internal/plc4go/cbus/readwrite/model/MonitoredSAL.go
index 0682bb1..4a68c91 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/MonitoredSAL.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/MonitoredSAL.go
@@ -83,6 +83,22 @@ func (m *MonitoredSAL) GetSalData() *SALData {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *MonitoredSAL) GetCr() byte {
+	return MonitoredSAL_CR
+}
+
+func (m *MonitoredSAL) GetLf() byte {
+	return MonitoredSAL_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewMonitoredSAL factory function for MonitoredSAL
 func NewMonitoredSAL(salType byte, salData *SALData) *MonitoredSAL {
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/ParameterChange.go b/plc4go/internal/plc4go/cbus/readwrite/model/ParameterChange.go
index ed5cf18..28e666d 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/ParameterChange.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/ParameterChange.go
@@ -47,6 +47,31 @@ type IParameterChange interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ParameterChange) GetSpecialChar1() byte {
+	return ParameterChange_SPECIALCHAR1
+}
+
+func (m *ParameterChange) GetSpecialChar2() byte {
+	return ParameterChange_SPECIALCHAR2
+}
+
+func (m *ParameterChange) GetCr() byte {
+	return ParameterChange_CR
+}
+
+func (m *ParameterChange) GetLf() byte {
+	return ParameterChange_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewParameterChange factory function for ParameterChange
 func NewParameterChange() *ParameterChange {
 	return &ParameterChange{}
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/PowerUp.go b/plc4go/internal/plc4go/cbus/readwrite/model/PowerUp.go
index c4ddf2f..43e5c12 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/PowerUp.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/PowerUp.go
@@ -46,6 +46,27 @@ type IPowerUp interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *PowerUp) GetPlus() byte {
+	return PowerUp_PLUS
+}
+
+func (m *PowerUp) GetCr() byte {
+	return PowerUp_CR
+}
+
+func (m *PowerUp) GetLf() byte {
+	return PowerUp_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewPowerUp factory function for PowerUp
 func NewPowerUp() *PowerUp {
 	return &PowerUp{}
diff --git a/plc4go/internal/plc4go/cbus/readwrite/model/StandardFormatStatusReply.go b/plc4go/internal/plc4go/cbus/readwrite/model/StandardFormatStatusReply.go
index 957128d..8a39947 100644
--- a/plc4go/internal/plc4go/cbus/readwrite/model/StandardFormatStatusReply.go
+++ b/plc4go/internal/plc4go/cbus/readwrite/model/StandardFormatStatusReply.go
@@ -88,6 +88,22 @@ func (m *StandardFormatStatusReply) GetCrc() *Checksum {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *StandardFormatStatusReply) GetCr() byte {
+	return StandardFormatStatusReply_CR
+}
+
+func (m *StandardFormatStatusReply) GetLf() byte {
+	return StandardFormatStatusReply_LF
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewStandardFormatStatusReply factory function for StandardFormatStatusReply
 func NewStandardFormatStatusReply(statusHeader *StatusHeader, application ApplicationIdContainer, blockStart uint8, statusBytes []*StatusByte, crc *Checksum) *StandardFormatStatusReply {
diff --git a/plc4go/internal/plc4go/df1/readwrite/model/DF1Symbol.go b/plc4go/internal/plc4go/df1/readwrite/model/DF1Symbol.go
index dba2263..08d3a27 100644
--- a/plc4go/internal/plc4go/df1/readwrite/model/DF1Symbol.go
+++ b/plc4go/internal/plc4go/df1/readwrite/model/DF1Symbol.go
@@ -61,6 +61,19 @@ type IDF1SymbolChild interface {
 	IDF1Symbol
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *DF1Symbol) GetMessageStart() uint8 {
+	return DF1Symbol_MESSAGESTART
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewDF1Symbol factory function for DF1Symbol
 func NewDF1Symbol() *DF1Symbol {
 	return &DF1Symbol{}
diff --git a/plc4go/internal/plc4go/df1/readwrite/model/DF1SymbolMessageFrame.go b/plc4go/internal/plc4go/df1/readwrite/model/DF1SymbolMessageFrame.go
index 26a804e..ea7d52e 100644
--- a/plc4go/internal/plc4go/df1/readwrite/model/DF1SymbolMessageFrame.go
+++ b/plc4go/internal/plc4go/df1/readwrite/model/DF1SymbolMessageFrame.go
@@ -95,6 +95,22 @@ func (m *DF1SymbolMessageFrame) GetCommand() *DF1Command {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *DF1SymbolMessageFrame) GetMessageEnd() uint8 {
+	return DF1SymbolMessageFrame_MESSAGEEND
+}
+
+func (m *DF1SymbolMessageFrame) GetEndTransaction() uint8 {
+	return DF1SymbolMessageFrame_ENDTRANSACTION
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewDF1SymbolMessageFrame factory function for DF1SymbolMessageFrame
 func NewDF1SymbolMessageFrame(destinationAddress uint8, sourceAddress uint8, command *DF1Command) *DF1SymbolMessageFrame {
diff --git a/plc4go/internal/plc4go/df1/readwrite/model/DF1UnprotectedReadResponse.go b/plc4go/internal/plc4go/df1/readwrite/model/DF1UnprotectedReadResponse.go
index 72ca6fe..5c36752 100644
--- a/plc4go/internal/plc4go/df1/readwrite/model/DF1UnprotectedReadResponse.go
+++ b/plc4go/internal/plc4go/df1/readwrite/model/DF1UnprotectedReadResponse.go
@@ -117,8 +117,7 @@ func (m *DF1UnprotectedReadResponse) GetLengthInBitsConditional(lastItem bool) u
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Manual Array Field (data)
-	data := m.Data
-	lengthInBits += uint16(DataLength(data))
+	lengthInBits += uint16(DataLength(m.GetData()))
 
 	return lengthInBits
 }
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/CipExchange.go b/plc4go/internal/plc4go/eip/readwrite/model/CipExchange.go
index 56441f6..e9c9810 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/CipExchange.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/CipExchange.go
@@ -64,6 +64,26 @@ func (m *CipExchange) GetService() *CipService {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CipExchange) GetItemCount() uint16 {
+	return CipExchange_ITEMCOUNT
+}
+
+func (m *CipExchange) GetNullPtr() uint32 {
+	return CipExchange_NULLPTR
+}
+
+func (m *CipExchange) GetUnconnectedData() uint16 {
+	return CipExchange_UNCONNECTEDDATA
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCipExchange factory function for CipExchange
 func NewCipExchange(service *CipService, exchangeLen uint16) *CipExchange {
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/CipUnconnectedRequest.go b/plc4go/internal/plc4go/eip/readwrite/model/CipUnconnectedRequest.go
index 5a5e7e0..086acaf 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/CipUnconnectedRequest.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/CipUnconnectedRequest.go
@@ -98,6 +98,18 @@ func (m *CipUnconnectedRequest) GetSlot() int8 {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CipUnconnectedRequest) GetRoute() uint16 {
+	return CipUnconnectedRequest_ROUTE
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCipUnconnectedRequest factory function for CipUnconnectedRequest
 func NewCipUnconnectedRequest(unconnectedService *CipService, backPlane int8, slot int8, serviceLen uint16) *CipUnconnectedRequest {
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/EipConnectionRequest.go b/plc4go/internal/plc4go/eip/readwrite/model/EipConnectionRequest.go
index 6fc7573..681788a 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/EipConnectionRequest.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/EipConnectionRequest.go
@@ -71,6 +71,23 @@ func (m *EipConnectionRequest) GetParent() *EipPacket {
 	return m.EipPacket
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *EipConnectionRequest) GetProtocolVersion() uint16 {
+	return EipConnectionRequest_PROTOCOLVERSION
+}
+
+func (m *EipConnectionRequest) GetFlags() uint16 {
+	return EipConnectionRequest_FLAGS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewEipConnectionRequest factory function for EipConnectionRequest
 func NewEipConnectionRequest(sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *EipConnectionRequest {
 	_result := &EipConnectionRequest{
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/MultipleServiceRequest.go b/plc4go/internal/plc4go/eip/readwrite/model/MultipleServiceRequest.go
index 67aba9c..12e6957 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/MultipleServiceRequest.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/MultipleServiceRequest.go
@@ -84,6 +84,22 @@ func (m *MultipleServiceRequest) GetData() *Services {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *MultipleServiceRequest) GetRequestPathSize() int8 {
+	return MultipleServiceRequest_REQUESTPATHSIZE
+}
+
+func (m *MultipleServiceRequest) GetRequestPath() uint32 {
+	return MultipleServiceRequest_REQUESTPATH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewMultipleServiceRequest factory function for MultipleServiceRequest
 func NewMultipleServiceRequest(data *Services, serviceLen uint16) *MultipleServiceRequest {
diff --git a/plc4go/internal/plc4go/firmata/readwrite/model/SysexCommandReportFirmwareResponse.go b/plc4go/internal/plc4go/firmata/readwrite/model/SysexCommandReportFirmwareResponse.go
index 28f02ee..d7618ed 100644
--- a/plc4go/internal/plc4go/firmata/readwrite/model/SysexCommandReportFirmwareResponse.go
+++ b/plc4go/internal/plc4go/firmata/readwrite/model/SysexCommandReportFirmwareResponse.go
@@ -141,8 +141,7 @@ func (m *SysexCommandReportFirmwareResponse) GetLengthInBitsConditional(lastItem
 	lengthInBits += 8
 
 	// Manual Array Field (fileName)
-	fileName := m.FileName
-	lengthInBits += uint16(LengthSysexString(fileName))
+	lengthInBits += uint16(LengthSysexString(m.GetFileName()))
 
 	return lengthInBits
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index 13cd9dc..14973d9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -116,6 +116,18 @@ func (m *CEMIAdditionalInformationBusmonitorInfo) GetSequenceNumber() uint8 {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CEMIAdditionalInformationBusmonitorInfo) GetLen() uint8 {
+	return CEMIAdditionalInformationBusmonitorInfo_LEN
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCEMIAdditionalInformationBusmonitorInfo factory function for CEMIAdditionalInformationBusmonitorInfo
 func NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag bool, bitErrorFlag bool, parityErrorFlag bool, unknownFlag bool, lostFlag bool, sequenceNumber uint8) *CEMIAdditionalInformationBusmonitorInfo {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
index 26b30a1..1a0bc2f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
@@ -81,6 +81,18 @@ func (m *CEMIAdditionalInformationRelativeTimestamp) GetRelativeTimestamp() *Rel
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *CEMIAdditionalInformationRelativeTimestamp) GetLen() uint8 {
+	return CEMIAdditionalInformationRelativeTimestamp_LEN
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewCEMIAdditionalInformationRelativeTimestamp factory function for CEMIAdditionalInformationRelativeTimestamp
 func NewCEMIAdditionalInformationRelativeTimestamp(relativeTimestamp *RelativeTimestamp) *CEMIAdditionalInformationRelativeTimestamp {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
index 9e938c7..23bff23 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -61,6 +61,19 @@ type IKnxNetIpMessageChild interface {
 	IKnxNetIpMessage
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *KnxNetIpMessage) GetProtocolVersion() uint8 {
+	return KnxNetIpMessage_PROTOCOLVERSION
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewKnxNetIpMessage factory function for KnxNetIpMessage
 func NewKnxNetIpMessage() *KnxNetIpMessage {
 	return &KnxNetIpMessage{}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusAsciiADU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusAsciiADU.go
new file mode 100644
index 0000000..d5b7282
--- /dev/null
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusAsciiADU.go
@@ -0,0 +1,241 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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 model
+
+import (
+	"fmt"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// Constant values.
+const ModbusAsciiADU_START uint8 = 0x3A
+const ModbusAsciiADU_CR uint8 = 0x0D
+const ModbusAsciiADU_LF uint8 = 0x0A
+
+// The data-structure of this message
+type ModbusAsciiADU struct {
+	Address uint8
+	Pdu     *ModbusPDU
+
+	// Arguments.
+	Response bool
+}
+
+// The corresponding interface
+type IModbusAsciiADU interface {
+	// GetAddress returns Address
+	GetAddress() uint8
+	// GetPdu returns Pdu
+	GetPdu() *ModbusPDU
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
+	// Serialize serializes this type
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for property fields.
+///////////////////////////////////////////////////////////
+func (m *ModbusAsciiADU) GetAddress() uint8 {
+	return m.Address
+}
+
+func (m *ModbusAsciiADU) GetPdu() *ModbusPDU {
+	return m.Pdu
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for virtual fields.
+///////////////////////////////////////////////////////////
+
+// NewModbusAsciiADU factory function for ModbusAsciiADU
+func NewModbusAsciiADU(address uint8, pdu *ModbusPDU, response bool) *ModbusAsciiADU {
+	return &ModbusAsciiADU{Address: address, Pdu: pdu, Response: response}
+}
+
+func CastModbusAsciiADU(structType interface{}) *ModbusAsciiADU {
+	castFunc := func(typ interface{}) *ModbusAsciiADU {
+		if casted, ok := typ.(ModbusAsciiADU); ok {
+			return &casted
+		}
+		if casted, ok := typ.(*ModbusAsciiADU); ok {
+			return casted
+		}
+		return nil
+	}
+	return castFunc(structType)
+}
+
+func (m *ModbusAsciiADU) GetTypeName() string {
+	return "ModbusAsciiADU"
+}
+
+func (m *ModbusAsciiADU) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *ModbusAsciiADU) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Const Field (start)
+	lengthInBits += 8
+
+	// Simple field (address)
+	lengthInBits += 8
+
+	// Simple field (pdu)
+	lengthInBits += m.Pdu.GetLengthInBits()
+
+	// Const Field (cr)
+	lengthInBits += 8
+
+	// Const Field (lf)
+	lengthInBits += 8
+
+	return lengthInBits
+}
+
+func (m *ModbusAsciiADU) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ModbusAsciiADUParse(readBuffer utils.ReadBuffer, response bool) (*ModbusAsciiADU, error) {
+	if pullErr := readBuffer.PullContext("ModbusAsciiADU"); pullErr != nil {
+		return nil, pullErr
+	}
+	currentPos := readBuffer.GetPos()
+	_ = currentPos
+
+	// Const Field (start)
+	start, _startErr := readBuffer.ReadUint8("start", 8)
+	if _startErr != nil {
+		return nil, errors.Wrap(_startErr, "Error parsing 'start' field")
+	}
+	if start != ModbusAsciiADU_START {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusAsciiADU_START) + " but got " + fmt.Sprintf("%d", start))
+	}
+
+	// Simple Field (address)
+	_address, _addressErr := readBuffer.ReadUint8("address", 8)
+	if _addressErr != nil {
+		return nil, errors.Wrap(_addressErr, "Error parsing 'address' field")
+	}
+	address := _address
+
+	// Simple Field (pdu)
+	if pullErr := readBuffer.PullContext("pdu"); pullErr != nil {
+		return nil, pullErr
+	}
+	_pdu, _pduErr := ModbusPDUParse(readBuffer, bool(response))
+	if _pduErr != nil {
+		return nil, errors.Wrap(_pduErr, "Error parsing 'pdu' field")
+	}
+	pdu := CastModbusPDU(_pdu)
+	if closeErr := readBuffer.CloseContext("pdu"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Const Field (cr)
+	cr, _crErr := readBuffer.ReadUint8("cr", 8)
+	if _crErr != nil {
+		return nil, errors.Wrap(_crErr, "Error parsing 'cr' field")
+	}
+	if cr != ModbusAsciiADU_CR {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusAsciiADU_CR) + " but got " + fmt.Sprintf("%d", cr))
+	}
+
+	// Const Field (lf)
+	lf, _lfErr := readBuffer.ReadUint8("lf", 8)
+	if _lfErr != nil {
+		return nil, errors.Wrap(_lfErr, "Error parsing 'lf' field")
+	}
+	if lf != ModbusAsciiADU_LF {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusAsciiADU_LF) + " but got " + fmt.Sprintf("%d", lf))
+	}
+
+	if closeErr := readBuffer.CloseContext("ModbusAsciiADU"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create the instance
+	return NewModbusAsciiADU(address, pdu, response), nil
+}
+
+func (m *ModbusAsciiADU) Serialize(writeBuffer utils.WriteBuffer) error {
+	if pushErr := writeBuffer.PushContext("ModbusAsciiADU"); pushErr != nil {
+		return pushErr
+	}
+
+	// Const Field (start)
+	_startErr := writeBuffer.WriteUint8("start", 8, 0x3A)
+	if _startErr != nil {
+		return errors.Wrap(_startErr, "Error serializing 'start' field")
+	}
+
+	// Simple Field (address)
+	address := uint8(m.Address)
+	_addressErr := writeBuffer.WriteUint8("address", 8, (address))
+	if _addressErr != nil {
+		return errors.Wrap(_addressErr, "Error serializing 'address' field")
+	}
+
+	// Simple Field (pdu)
+	if pushErr := writeBuffer.PushContext("pdu"); pushErr != nil {
+		return pushErr
+	}
+	_pduErr := m.Pdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("pdu"); popErr != nil {
+		return popErr
+	}
+	if _pduErr != nil {
+		return errors.Wrap(_pduErr, "Error serializing 'pdu' field")
+	}
+
+	// Const Field (cr)
+	_crErr := writeBuffer.WriteUint8("cr", 8, 0x0D)
+	if _crErr != nil {
+		return errors.Wrap(_crErr, "Error serializing 'cr' field")
+	}
+
+	// Const Field (lf)
+	_lfErr := writeBuffer.WriteUint8("lf", 8, 0x0A)
+	if _lfErr != nil {
+		return errors.Wrap(_lfErr, "Error serializing 'lf' field")
+	}
+
+	if popErr := writeBuffer.PopContext("ModbusAsciiADU"); popErr != nil {
+		return popErr
+	}
+	return nil
+}
+
+func (m *ModbusAsciiADU) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	m.Serialize(buffer)
+	return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
index b5fbe41..50fe321 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
@@ -44,6 +44,19 @@ type IModbusConstants interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ModbusConstants) GetModbusTcpDefaultPort() uint16 {
+	return ModbusConstants_MODBUSTCPDEFAULTPORT
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewModbusConstants factory function for ModbusConstants
 func NewModbusConstants() *ModbusConstants {
 	return &ModbusConstants{}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
index 11fa35d..3294e45 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
@@ -95,6 +95,18 @@ func (m *ModbusPDUReadDeviceIdentificationRequest) GetObjectId() uint8 {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ModbusPDUReadDeviceIdentificationRequest) GetMeiType() uint8 {
+	return ModbusPDUReadDeviceIdentificationRequest_MEITYPE
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewModbusPDUReadDeviceIdentificationRequest factory function for ModbusPDUReadDeviceIdentificationRequest
 func NewModbusPDUReadDeviceIdentificationRequest(level ModbusDeviceInformationLevel, objectId uint8) *ModbusPDUReadDeviceIdentificationRequest {
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
index abe95cb..2bca38e 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
@@ -123,6 +123,18 @@ func (m *ModbusPDUReadDeviceIdentificationResponse) GetObjects() []*ModbusDevice
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ModbusPDUReadDeviceIdentificationResponse) GetMeiType() uint8 {
+	return ModbusPDUReadDeviceIdentificationResponse_MEITYPE
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewModbusPDUReadDeviceIdentificationResponse factory function for ModbusPDUReadDeviceIdentificationResponse
 func NewModbusPDUReadDeviceIdentificationResponse(level ModbusDeviceInformationLevel, individualAccess bool, conformityLevel ModbusDeviceInformationConformityLevel, moreFollows ModbusDeviceInformationMoreFollows, nextObjectId uint8, objects []*ModbusDeviceInformationObject) *ModbusPDUReadDeviceIdentificationResponse {
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusRtuADU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusRtuADU.go
new file mode 100644
index 0000000..8004c3a
--- /dev/null
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusRtuADU.go
@@ -0,0 +1,260 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "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 model
+
+import (
+	"fmt"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// Constant values.
+const ModbusRtuADU_SPACE1 uint8 = 0x00
+const ModbusRtuADU_SPACE2 uint8 = 0x00
+const ModbusRtuADU_SPACE3 uint8 = 0x00
+const ModbusRtuADU_SPACE4 uint8 = 0x00
+
+// The data-structure of this message
+type ModbusRtuADU struct {
+	Address uint8
+	Pdu     *ModbusPDU
+
+	// Arguments.
+	Response bool
+}
+
+// The corresponding interface
+type IModbusRtuADU interface {
+	// GetAddress returns Address
+	GetAddress() uint8
+	// GetPdu returns Pdu
+	GetPdu() *ModbusPDU
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
+	// Serialize serializes this type
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for property fields.
+///////////////////////////////////////////////////////////
+func (m *ModbusRtuADU) GetAddress() uint8 {
+	return m.Address
+}
+
+func (m *ModbusRtuADU) GetPdu() *ModbusPDU {
+	return m.Pdu
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for virtual fields.
+///////////////////////////////////////////////////////////
+
+// NewModbusRtuADU factory function for ModbusRtuADU
+func NewModbusRtuADU(address uint8, pdu *ModbusPDU, response bool) *ModbusRtuADU {
+	return &ModbusRtuADU{Address: address, Pdu: pdu, Response: response}
+}
+
+func CastModbusRtuADU(structType interface{}) *ModbusRtuADU {
+	castFunc := func(typ interface{}) *ModbusRtuADU {
+		if casted, ok := typ.(ModbusRtuADU); ok {
+			return &casted
+		}
+		if casted, ok := typ.(*ModbusRtuADU); ok {
+			return casted
+		}
+		return nil
+	}
+	return castFunc(structType)
+}
+
+func (m *ModbusRtuADU) GetTypeName() string {
+	return "ModbusRtuADU"
+}
+
+func (m *ModbusRtuADU) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *ModbusRtuADU) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Const Field (space1)
+	lengthInBits += 8
+
+	// Const Field (space2)
+	lengthInBits += 8
+
+	// Const Field (space3)
+	lengthInBits += 8
+
+	// Const Field (space4)
+	lengthInBits += 8
+
+	// Simple field (address)
+	lengthInBits += 8
+
+	// Simple field (pdu)
+	lengthInBits += m.Pdu.GetLengthInBits()
+
+	return lengthInBits
+}
+
+func (m *ModbusRtuADU) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ModbusRtuADUParse(readBuffer utils.ReadBuffer, response bool) (*ModbusRtuADU, error) {
+	if pullErr := readBuffer.PullContext("ModbusRtuADU"); pullErr != nil {
+		return nil, pullErr
+	}
+	currentPos := readBuffer.GetPos()
+	_ = currentPos
+
+	// Const Field (space1)
+	space1, _space1Err := readBuffer.ReadUint8("space1", 8)
+	if _space1Err != nil {
+		return nil, errors.Wrap(_space1Err, "Error parsing 'space1' field")
+	}
+	if space1 != ModbusRtuADU_SPACE1 {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusRtuADU_SPACE1) + " but got " + fmt.Sprintf("%d", space1))
+	}
+
+	// Const Field (space2)
+	space2, _space2Err := readBuffer.ReadUint8("space2", 8)
+	if _space2Err != nil {
+		return nil, errors.Wrap(_space2Err, "Error parsing 'space2' field")
+	}
+	if space2 != ModbusRtuADU_SPACE2 {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusRtuADU_SPACE2) + " but got " + fmt.Sprintf("%d", space2))
+	}
+
+	// Const Field (space3)
+	space3, _space3Err := readBuffer.ReadUint8("space3", 8)
+	if _space3Err != nil {
+		return nil, errors.Wrap(_space3Err, "Error parsing 'space3' field")
+	}
+	if space3 != ModbusRtuADU_SPACE3 {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusRtuADU_SPACE3) + " but got " + fmt.Sprintf("%d", space3))
+	}
+
+	// Const Field (space4)
+	space4, _space4Err := readBuffer.ReadUint8("space4", 8)
+	if _space4Err != nil {
+		return nil, errors.Wrap(_space4Err, "Error parsing 'space4' field")
+	}
+	if space4 != ModbusRtuADU_SPACE4 {
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ModbusRtuADU_SPACE4) + " but got " + fmt.Sprintf("%d", space4))
+	}
+
+	// Simple Field (address)
+	_address, _addressErr := readBuffer.ReadUint8("address", 8)
+	if _addressErr != nil {
+		return nil, errors.Wrap(_addressErr, "Error parsing 'address' field")
+	}
+	address := _address
+
+	// Simple Field (pdu)
+	if pullErr := readBuffer.PullContext("pdu"); pullErr != nil {
+		return nil, pullErr
+	}
+	_pdu, _pduErr := ModbusPDUParse(readBuffer, bool(response))
+	if _pduErr != nil {
+		return nil, errors.Wrap(_pduErr, "Error parsing 'pdu' field")
+	}
+	pdu := CastModbusPDU(_pdu)
+	if closeErr := readBuffer.CloseContext("pdu"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("ModbusRtuADU"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create the instance
+	return NewModbusRtuADU(address, pdu, response), nil
+}
+
+func (m *ModbusRtuADU) Serialize(writeBuffer utils.WriteBuffer) error {
+	if pushErr := writeBuffer.PushContext("ModbusRtuADU"); pushErr != nil {
+		return pushErr
+	}
+
+	// Const Field (space1)
+	_space1Err := writeBuffer.WriteUint8("space1", 8, 0x00)
+	if _space1Err != nil {
+		return errors.Wrap(_space1Err, "Error serializing 'space1' field")
+	}
+
+	// Const Field (space2)
+	_space2Err := writeBuffer.WriteUint8("space2", 8, 0x00)
+	if _space2Err != nil {
+		return errors.Wrap(_space2Err, "Error serializing 'space2' field")
+	}
+
+	// Const Field (space3)
+	_space3Err := writeBuffer.WriteUint8("space3", 8, 0x00)
+	if _space3Err != nil {
+		return errors.Wrap(_space3Err, "Error serializing 'space3' field")
+	}
+
+	// Const Field (space4)
+	_space4Err := writeBuffer.WriteUint8("space4", 8, 0x00)
+	if _space4Err != nil {
+		return errors.Wrap(_space4Err, "Error serializing 'space4' field")
+	}
+
+	// Simple Field (address)
+	address := uint8(m.Address)
+	_addressErr := writeBuffer.WriteUint8("address", 8, (address))
+	if _addressErr != nil {
+		return errors.Wrap(_addressErr, "Error serializing 'address' field")
+	}
+
+	// Simple Field (pdu)
+	if pushErr := writeBuffer.PushContext("pdu"); pushErr != nil {
+		return pushErr
+	}
+	_pduErr := m.Pdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("pdu"); popErr != nil {
+		return popErr
+	}
+	if _pduErr != nil {
+		return errors.Wrap(_pduErr, "Error serializing 'pdu' field")
+	}
+
+	if popErr := writeBuffer.PopContext("ModbusRtuADU"); popErr != nil {
+		return popErr
+	}
+	return nil
+}
+
+func (m *ModbusRtuADU) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	m.Serialize(buffer)
+	return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
index 74105c6..5a71bc3 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
@@ -76,6 +76,18 @@ func (m *ModbusTcpADU) GetPdu() *ModbusPDU {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *ModbusTcpADU) GetProtocolIdentifier() uint16 {
+	return ModbusTcpADU_PROTOCOLIDENTIFIER
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewModbusTcpADU factory function for ModbusTcpADU
 func NewModbusTcpADU(transactionIdentifier uint16, unitIdentifier uint8, pdu *ModbusPDU, response bool) *ModbusTcpADU {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageAckObjectPushType.go b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageAckObjectPushType.go
index e7e5e6f..2d83273 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageAckObjectPushType.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageAckObjectPushType.go
@@ -94,6 +94,18 @@ func (m *AlarmMessageAckObjectPushType) GetAckStateComing() *State {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *AlarmMessageAckObjectPushType) GetVariableSpec() uint8 {
+	return AlarmMessageAckObjectPushType_VARIABLESPEC
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewAlarmMessageAckObjectPushType factory function for AlarmMessageAckObjectPushType
 func NewAlarmMessageAckObjectPushType(lengthSpec uint8, syntaxId SyntaxIdType, numberOfValues uint8, eventId uint32, ackStateGoing *State, ackStateComing *State) *AlarmMessageAckObjectPushType {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectAckType.go b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectAckType.go
index 27f346e..9cb492a 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectAckType.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectAckType.go
@@ -88,6 +88,22 @@ func (m *AlarmMessageObjectAckType) GetAckStateComing() *State {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *AlarmMessageObjectAckType) GetVariableSpec() uint8 {
+	return AlarmMessageObjectAckType_VARIABLESPEC
+}
+
+func (m *AlarmMessageObjectAckType) GetLength() uint8 {
+	return AlarmMessageObjectAckType_LENGTH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewAlarmMessageObjectAckType factory function for AlarmMessageObjectAckType
 func NewAlarmMessageObjectAckType(syntaxId SyntaxIdType, numberOfValues uint8, eventId uint32, ackStateGoing *State, ackStateComing *State) *AlarmMessageObjectAckType {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectPushType.go b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectPushType.go
index 9d8a9fd..f747f8d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectPushType.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectPushType.go
@@ -115,6 +115,18 @@ func (m *AlarmMessageObjectPushType) GetAssociatedValues() []*AssociatedValueTyp
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *AlarmMessageObjectPushType) GetVariableSpec() uint8 {
+	return AlarmMessageObjectPushType_VARIABLESPEC
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewAlarmMessageObjectPushType factory function for AlarmMessageObjectPushType
 func NewAlarmMessageObjectPushType(lengthSpec uint8, syntaxId SyntaxIdType, numberOfValues uint8, eventId uint32, eventState *State, localState *State, ackStateGoing *State, ackStateComing *State, AssociatedValues []*AssociatedValueType) *AlarmMessageObjectPushType {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectQueryType.go b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectQueryType.go
index ddb9aec..0ceea86 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectQueryType.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageObjectQueryType.go
@@ -109,6 +109,18 @@ func (m *AlarmMessageObjectQueryType) GetValueGoing() *AssociatedValueType {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *AlarmMessageObjectQueryType) GetVariableSpec() uint8 {
+	return AlarmMessageObjectQueryType_VARIABLESPEC
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewAlarmMessageObjectQueryType factory function for AlarmMessageObjectQueryType
 func NewAlarmMessageObjectQueryType(lengthDataset uint8, eventState *State, ackStateGoing *State, ackStateComing *State, timeComing *DateAndTime, valueComing *AssociatedValueType, timeGoing *DateAndTime, valueGoing *AssociatedValueType) *AlarmMessageObjectQueryType {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageQueryType.go b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageQueryType.go
index 1272e0c..97b159b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageQueryType.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/AlarmMessageQueryType.go
@@ -87,6 +87,18 @@ func (m *AlarmMessageQueryType) GetMessageObjects() []*AlarmMessageObjectQueryTy
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *AlarmMessageQueryType) GetDataLength() uint16 {
+	return AlarmMessageQueryType_DATALENGTH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewAlarmMessageQueryType factory function for AlarmMessageQueryType
 func NewAlarmMessageQueryType(functionId uint8, numberOfObjects uint8, returnCode DataTransportErrorCode, transportSize DataTransportSize, messageObjects []*AlarmMessageObjectQueryType) *AlarmMessageQueryType {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7DataAlarmMessage.go b/plc4go/internal/plc4go/s7/readwrite/model/S7DataAlarmMessage.go
index dcc057e..b933f1b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7DataAlarmMessage.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7DataAlarmMessage.go
@@ -62,6 +62,23 @@ type IS7DataAlarmMessageChild interface {
 	IS7DataAlarmMessage
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7DataAlarmMessage) GetFunctionId() uint8 {
+	return S7DataAlarmMessage_FUNCTIONID
+}
+
+func (m *S7DataAlarmMessage) GetNumberMessageObj() uint8 {
+	return S7DataAlarmMessage_NUMBERMESSAGEOBJ
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewS7DataAlarmMessage factory function for S7DataAlarmMessage
 func NewS7DataAlarmMessage() *S7DataAlarmMessage {
 	return &S7DataAlarmMessage{}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
index d80f7a3..c4c798e 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
@@ -92,6 +92,18 @@ func (m *S7Message) GetPayload() *S7Payload {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7Message) GetProtocolId() uint8 {
+	return S7Message_PROTOCOLID
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewS7Message factory function for S7Message
 func NewS7Message(tpduReference uint16, parameter *S7Parameter, payload *S7Payload) *S7Message {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageObjectRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageObjectRequest.go
index a157d31..894413b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageObjectRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageObjectRequest.go
@@ -96,6 +96,22 @@ func (m *S7MessageObjectRequest) GetAlarmType() AlarmType {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7MessageObjectRequest) GetVariableSpec() uint8 {
+	return S7MessageObjectRequest_VARIABLESPEC
+}
+
+func (m *S7MessageObjectRequest) GetLength() uint8 {
+	return S7MessageObjectRequest_LENGTH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewS7MessageObjectRequest factory function for S7MessageObjectRequest
 func NewS7MessageObjectRequest(syntaxId SyntaxIdType, queryType QueryType, alarmType AlarmType) *S7MessageObjectRequest {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQuery.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQuery.go
index df7e4a9..dde0a25 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQuery.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQuery.go
@@ -109,6 +109,30 @@ func (m *S7PayloadUserDataItemCpuFunctionAlarmQuery) GetAlarmType() AlarmType {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQuery) GetFunctionId() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQuery_FUNCTIONID
+}
+
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQuery) GetNumberMessageObj() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQuery_NUMBERMESSAGEOBJ
+}
+
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQuery) GetVariableSpec() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQuery_VARIABLESPEC
+}
+
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQuery) GetLength() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQuery_LENGTH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewS7PayloadUserDataItemCpuFunctionAlarmQuery factory function for S7PayloadUserDataItemCpuFunctionAlarmQuery
 func NewS7PayloadUserDataItemCpuFunctionAlarmQuery(syntaxId SyntaxIdType, queryType QueryType, alarmType AlarmType, returnCode DataTransportErrorCode, transportSize DataTransportSize) *S7PayloadUserDataItemCpuFunctionAlarmQuery {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.go
index 9efecee..1d7dcfa 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.go
@@ -100,6 +100,22 @@ func (m *S7PayloadUserDataItemCpuFunctionAlarmQueryResponse) GetPudicftransportS
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQueryResponse) GetFunctionId() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQueryResponse_FUNCTIONID
+}
+
+func (m *S7PayloadUserDataItemCpuFunctionAlarmQueryResponse) GetNumberMessageObj() uint8 {
+	return S7PayloadUserDataItemCpuFunctionAlarmQueryResponse_NUMBERMESSAGEOBJ
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewS7PayloadUserDataItemCpuFunctionAlarmQueryResponse factory function for S7PayloadUserDataItemCpuFunctionAlarmQueryResponse
 func NewS7PayloadUserDataItemCpuFunctionAlarmQueryResponse(pudicfReturnCode DataTransportErrorCode, pudicftransportSize DataTransportSize, returnCode DataTransportErrorCode, transportSize DataTransportSize) *S7PayloadUserDataItemCpuFunctionAlarmQueryResponse {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
index cc92bba..60c4d38 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
@@ -105,6 +105,18 @@ func (m *S7PayloadUserDataItemCpuFunctionReadSzlResponse) GetItems() []*SzlDataT
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *S7PayloadUserDataItemCpuFunctionReadSzlResponse) GetSzlItemLength() uint16 {
+	return S7PayloadUserDataItemCpuFunctionReadSzlResponse_SZLITEMLENGTH
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewS7PayloadUserDataItemCpuFunctionReadSzlResponse factory function for S7PayloadUserDataItemCpuFunctionReadSzlResponse
 func NewS7PayloadUserDataItemCpuFunctionReadSzlResponse(szlId *SzlId, szlIndex uint16, items []*SzlDataTreeItem, returnCode DataTransportErrorCode, transportSize DataTransportSize) *S7PayloadUserDataItemCpuFunctionReadSzlResponse {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
index a980642..07cb449 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
@@ -60,6 +60,18 @@ func (m *TPKTPacket) GetPayload() *COTPPacket {
 ///////////////////////
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for conts fields.
+///////////////////////
+func (m *TPKTPacket) GetProtocolId() uint8 {
+	return TPKTPacket_PROTOCOLID
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
 
 // NewTPKTPacket factory function for TPKTPacket
 func NewTPKTPacket(payload *COTPPacket) *TPKTPacket {