You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/02/03 18:48:02 UTC

[plc4x] 01/02: Merge remote-tracking branch 'origin/develop' into featrue/cdutz/arrays-with-special-variables

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

cdutz pushed a commit to branch featrue/cdutz/arrays-with-special-variables
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit d7d5f5d60dbf02d4624b8d38fcbb5eaefe4c0d38
Merge: 795fc77c93 63b77e10e0
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Feb 3 18:00:50 2023 +0100

    Merge remote-tracking branch 'origin/develop' into featrue/cdutz/arrays-with-special-variables

 .gitignore                                         |   6 +-
 .idea/.gitignore                                   |  13 +
 .idea/fileTemplates/includes/File Header Yml.yml   |  18 -
 plc4j/drivers/profinet/pom.xml                     |  17 +-
 .../{PnIoCm_Block.java => CheckPeers.java}         | 199 +++--
 .../plc4x/java/profinet/readwrite/DataItem.java    | 849 ++++++++++++++++++
 .../java/profinet/readwrite/DceRpc_Packet.java     |  22 +-
 .../{PnIoCm_Block_ArServer.java => EndOfLldp.java} |  44 +-
 .../profinet/readwrite/Ethernet_FramePayload.java  |   2 +
 .../readwrite/Ethernet_FramePayload_IPv4.java      |  96 ++-
 ...Server.java => Ethernet_FramePayload_LLDP.java} |  74 +-
 .../profinet/readwrite/IODWriteRequestHeader.java  | 506 +++++++++++
 .../profinet/readwrite/IODWriteResponseHeader.java | 459 ++++++++++
 .../readwrite/{PnDcp_Pdu.java => LldpUnit.java}    | 112 +--
 .../{PnIoCm_Block_ArServer.java => Lldp_Pdu.java}  |  94 +-
 ...duleType.java => ManagementAddressSubType.java} |  22 +-
 ...java => MultipleInterfaceModeNameOfDevice.java} |  22 +-
 .../java/profinet/readwrite/PDInterfaceAdjust.java | 304 +++++++
 .../{PnIoCm_Block.java => PDPortDataCheck.java}    | 229 +++--
 .../{PnDcp_ServiceType.java => PascalString.java}  | 107 ++-
 .../profinet/readwrite/PcDcp_Pdu_DelayReq.java     |  55 +-
 .../PnDcp_Block_DevicePropertiesAliasName.java     |  26 +-
 .../PnDcp_Block_DevicePropertiesDeviceId.java      |  16 +-
 ...PnDcp_Block_DevicePropertiesDeviceInstance.java |  15 +-
 .../PnDcp_Block_DevicePropertiesDeviceOptions.java |  27 +-
 .../PnDcp_Block_DevicePropertiesDeviceRole.java    |  31 +-
 .../PnDcp_Block_DevicePropertiesDeviceVendor.java  |  26 +-
 .../PnDcp_Block_DevicePropertiesNameOfStation.java |  24 +-
 .../readwrite/PnDcp_Block_IpMacAddress.java        |  15 +-
 .../readwrite/PnDcp_Block_IpParameter.java         |  33 +-
 .../plc4x/java/profinet/readwrite/PnDcp_Pdu.java   |   2 +
 .../profinet/readwrite/PnDcp_Pdu_AlarmLow.java     | 335 ++++++++
 .../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java  |  32 +-
 .../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java  |  39 +-
 .../readwrite/PnDcp_Pdu_RealTimeCyclic.java        |  75 +-
 .../java/profinet/readwrite/PnDcp_ServiceType.java |  16 +-
 .../profinet/readwrite/PnIoCM_Block_Request.java   | 372 ++++++++
 .../profinet/readwrite/PnIoCM_Block_Response.java  | 372 ++++++++
 .../java/profinet/readwrite/PnIoCm_Block.java      |  96 +--
 .../java/profinet/readwrite/PnIoCm_BlockType.java  |  17 +-
 .../readwrite/PnIoCm_Block_AlarmCrReq.java         |  94 +-
 .../readwrite/PnIoCm_Block_AlarmCrRes.java         |  89 +-
 .../profinet/readwrite/PnIoCm_Block_ArReq.java     | 117 ++-
 .../profinet/readwrite/PnIoCm_Block_ArRes.java     |  86 +-
 .../profinet/readwrite/PnIoCm_Block_ArServer.java  | 137 ++-
 .../PnIoCm_Block_ExpectedSubmoduleReq.java         |  83 +-
 .../profinet/readwrite/PnIoCm_Block_IoCrReq.java   | 102 ++-
 .../profinet/readwrite/PnIoCm_Block_IoCrRes.java   |  91 +-
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  83 +-
 .../profinet/readwrite/PnIoCm_Control_Request.java | 362 ++++++++
 .../readwrite/PnIoCm_Control_Response.java         | 362 ++++++++
 .../readwrite/PnIoCm_DataUnitDataObject.java       | 167 ++++
 ...p_ServiceType.java => PnIoCm_DataUnitIoCs.java} | 104 ++-
 .../java/profinet/readwrite/PnIoCm_Packet_Req.java |  66 +-
 .../java/profinet/readwrite/PnIoCm_Packet_Res.java |  62 +-
 .../java/profinet/readwrite/PnIoCm_Submodule.java  |  13 +-
 .../profinet/readwrite/PnIoCm_SubmoduleType.java   |   2 +
 .../readwrite/PnIoCm_Submodule_InputData.java      | 236 +++++
 .../readwrite/PnIoCm_Submodule_OutputData.java     | 236 +++++
 ...Server.java => PnIo_CyclicServiceDataUnit.java} |  92 +-
 .../java/profinet/readwrite/ProfinetDataType.java  | 132 +++
 ...SubmoduleType.java => ProfinetDeviceState.java} |  27 +-
 ...nIoCm_Block_ArServer.java => TlvChassisId.java} |  90 +-
 .../profinet/readwrite/TlvManagementAddress.java   | 261 ++++++
 .../profinet/readwrite/TlvOrgSpecificIeee8023.java | 210 +++++
 ...k_ArServer.java => TlvOrgSpecificProfibus.java} |  75 +-
 ...ayload.java => TlvOrgSpecificProfibusUnit.java} |  82 +-
 ...acAddress.java => TlvOrganizationSpecific.java} |  96 +--
 ...yload.java => TlvOrganizationSpecificUnit.java} |  67 +-
 .../{PnIoCm_Block_ArServer.java => TlvPortId.java} |  89 +-
 ..._SubmoduleType.java => TlvProfibusSubType.java} |  22 +-
 ...ress.java => TlvProfibusSubTypeChassisMac.java} |  60 +-
 .../readwrite/TlvProfibusSubTypePortStatus.java    | 249 ++++++
 ...IoCm_Block_ArServer.java => TlvTimeToLive.java} |  67 +-
 .../{PnIoCm_SubmoduleType.java => TlvType.java}    |  30 +-
 .../{PnIoCm_Block_ArServer.java => UserData.java}  |  91 +-
 .../apache/plc4x/java/profinet/ProfinetDriver.java |  56 +-
 .../ProfinetPlcQuery.java}                         |  17 +-
 .../profinet/config/ProfinetConfiguration.java     | 146 ++++
 .../profinet/context/ProfinetDeviceContext.java    | 529 ++++++++++++
 .../profinet/context/ProfinetDriverContext.java    | 100 +--
 .../GsdFileMap.java}                               |  20 +-
 .../ProfinetCallable.java}                         |  13 +-
 .../java/profinet/device/ProfinetChannel.java      | 224 +++++
 .../plc4x/java/profinet/device/ProfinetDevice.java | 957 +++++++++++++++++++++
 .../device/ProfinetDeviceMessageHandler.java       |  46 +
 .../ProfinetDevices.java}                          |  18 +-
 .../java/profinet/device/ProfinetEmptyModule.java  | 103 +++
 .../profinet/device/ProfinetMessageWrapper.java    |  70 ++
 .../plc4x/java/profinet/device/ProfinetModule.java |  57 ++
 .../java/profinet/device/ProfinetModuleImpl.java   | 353 ++++++++
 .../ProfinetRunnable.java}                         |  27 +-
 .../device/ProfinetSubscriptionHandle.java         |  71 ++
 .../profinet/discovery/ProfinetPlcDiscoverer.java  | 587 ++++++++-----
 .../profinet/gsdml/ProfinetApplicationProcess.java |  66 ++
 .../ProfinetApplicationRelations.java}             |  30 +-
 .../ProfinetBitDataItem.java}                      |  31 +-
 .../profinet/gsdml/ProfinetCertificationInfo.java  |  50 ++
 .../java/profinet/gsdml/ProfinetDataItem.java      |  63 ++
 .../gsdml/ProfinetDeviceAccessPointItem.java       | 188 ++++
 .../ProfinetDeviceFunction.java}                   |  20 +-
 .../profinet/gsdml/ProfinetDeviceIdentity.java     |  58 ++
 .../ProfinetDeviceItem.java}                       |  17 +-
 .../ProfinetErrorCode2Value.java}                  |  24 +-
 .../ProfinetExternalTextList.java}                 |  21 +-
 .../ProfinetFamily.java}                           |  30 +-
 .../ProfinetGraphicItem.java}                      |  30 +-
 .../ProfinetGraphics.java}                         |  20 +-
 .../ProfinetGraphicsItemRef.java}                  |  30 +-
 .../ProfinetIOConfigData.java}                     |  30 +-
 .../ProfinetISO15745Profile.java}                  |  30 +-
 .../ProfinetISO15745Reference.java}                |  40 +-
 .../gsdml/ProfinetInterfaceSubmoduleItem.java      | 100 +++
 .../plc4x/java/profinet/gsdml/ProfinetIoData.java  |  62 ++
 .../ProfinetIoDataInput.java}                      |  36 +-
 .../ProfinetIoDataOutput.java}                     |  36 +-
 .../ProfinetLogBookEntryItem.java}                 |  37 +-
 .../java/profinet/gsdml/ProfinetModuleInfo.java    |  71 ++
 .../java/profinet/gsdml/ProfinetModuleItem.java    | 102 +++
 .../ProfinetModuleItemRef.java}                    |  30 +-
 .../gsdml/ProfinetParameterRecordDataItem.java     |  59 ++
 .../profinet/gsdml/ProfinetPortSubmoduleItem.java  |  81 ++
 .../ProfinetPrimaryLanguage.java}                  |  24 +-
 .../ProfinetProfileBody.java}                      |  38 +-
 .../java/profinet/gsdml/ProfinetProfileHeader.java |  71 ++
 .../plc4x/java/profinet/gsdml/ProfinetRef.java     |  78 ++
 .../ProfinetSystemDefinedSubmoduleList.java}       |  35 +-
 .../ProfinetTextId.java}                           |  20 +-
 .../ProfinetTextIdValue.java}                      |  30 +-
 .../ProfinetTimingProperties.java}                 |  30 +-
 .../ProfinetValue.java}                            |  20 +-
 .../gsdml/ProfinetVirtualSubmoduleItem.java        |  89 ++
 .../profinet/protocol/ProfinetProtocolLogic.java   | 395 +++------
 .../profinet/readwrite/utils/StaticHelper.java     | 124 ++-
 .../plc4x/java/profinet/tag/ProfinetTag.java       |  30 +-
 .../java/profinet/tag/ProfinetTagHandler.java      |   3 +-
 .../plc4x/java/profinet/ManualProfinetIoTest.java  |  34 +-
 .../plc4x/java/profinet/ProfinetBrowseTests.java   |  82 ++
 .../plc4x/java/profinet/ProfinetCheckSumTests.java | 107 +++
 .../java/profinet/ProfinetDeviceContextTests.java  | 106 +++
 .../apache/plc4x/java/profinet/ProfinetPoc.java    | 166 ----
 .../java/profinet/ProfinetSubscriptionTests.java}  |   9 +-
 .../profinet/gsdml/ProfinetConfigurationTests.java | 147 ++++
 .../profinet/gsdml/ProfinetGSDMLParseTest.java     |  58 ++
 .../drivers/profinet/src/test/resources/gsdml.xml  | 148 ++++
 .../profinet/src/test/resources/logback-test.xml   |   2 +-
 .../examples/helloplc4x/read/HelloPlc4xRead.java   |  30 +-
 pom.xml                                            |   6 +-
 .../resources/protocols/profinet/profinet.mspec    | 476 +++++++++-
 src/site/asciidoc/users/protocols/profinet.adoc    | 164 ++++
 src/site/site.xml                                  |   1 +
 151 files changed, 14079 insertions(+), 2281 deletions(-)

diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
index 856759e83f,7a3226e372..91f9c99e38
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
@@@ -93,11 -93,7 +94,8 @@@ public class PnDcp_Block_DeviceProperti
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnDcp_Block_DevicePropertiesNameOfStation _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
-     // Reserved Field (reserved)
-     lengthInBits += 16;
- 
      // Array field
      if (nameOfStation != null) {
        lengthInBits += 8 * nameOfStation.length;
@@@ -122,11 -118,7 +120,8 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
-     Integer reservedField0 =
-         readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
- 
      byte[] nameOfStation =
          readBuffer.readByteArray("nameOfStation", Math.toIntExact((blockLength) - (2)));
  
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
index fb797b25d7,1acea8a638..9ed532a12d
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
@@@ -145,8 -173,10 +174,11 @@@ public class PnDcp_Pdu_RealTimeCyclic e
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnDcp_Pdu_RealTimeCyclic _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Manual Field (dataUnit)
+     lengthInBits += ((dataUnit.getLengthInBytes())) * (8);
+ 
      // Simple field (cycleCounter)
      lengthInBits += 16;
  
@@@ -186,8 -216,16 +218,17 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     PnIo_CyclicServiceDataUnit dataUnit =
+         readManualField(
+             "dataUnit",
+             readBuffer,
+             () ->
+                 (PnIo_CyclicServiceDataUnit)
+                     (org.apache.plc4x.java.profinet.readwrite.utils.StaticHelper.readDataUnit(
+                         readBuffer)));
+ 
      int cycleCounter = readSimpleField("cycleCounter", readUnsignedInt(readBuffer, 16));
  
      boolean ignore = readSimpleField("ignore", readBoolean(readBuffer));
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
index 4061ad87ca,410da9f80a..ea08b3e6cc
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
@@@ -220,8 -257,16 +258,17 @@@ public class PnIoCm_Block_AlarmCrReq ex
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_AlarmCrReq _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (alarmType)
      lengthInBits += 16;
  
@@@ -264,8 -309,25 +311,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_AlarmCrType alarmType =
          readEnumField(
              "alarmType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
index 901d4d31b1,9cdf91aaeb..b20e3da94f
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
@@@ -115,8 -149,16 +150,17 @@@ public class PnIoCm_Block_AlarmCrRes ex
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_AlarmCrRes _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (alarmType)
      lengthInBits += 16;
  
@@@ -135,8 -177,25 +179,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_AlarmCrType alarmType =
          readEnumField(
              "alarmType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
index d949811850,c23cc115ba..6c88f4746f
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
@@@ -338,8 -376,16 +377,17 @@@ public class PnIoCm_Block_ArReq extend
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_ArReq _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (arType)
      lengthInBits += 16;
  
@@@ -409,8 -455,25 +457,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_ArType arType =
          readEnumField(
              "arType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
index 7b553463a3,a2dd45cf1b..8c14bfcd4e
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
@@@ -141,8 -175,16 +176,17 @@@ public class PnIoCm_Block_ArRes extend
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_ArRes _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (arType)
      lengthInBits += 16;
  
@@@ -167,8 -209,25 +211,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_ArType arType =
          readEnumField(
              "arType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
index 261e724080,060a4aa889..d6c6943859
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
@@@ -65,8 -123,25 +124,26 @@@ public class PnIoCm_Block_ArServer exte
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_ArServer _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
+     // Simple field (stationName)
+     lengthInBits += stationName.getLengthInBits();
+ 
+     // Padding Field (padding)
+     int _timesPadding = (int) (((20) - (6)) - ((stationName.getStringLength())));
+     while (_timesPadding-- > 0) {
+       lengthInBits += 8;
+     }
+ 
      return lengthInBits;
    }
  
@@@ -76,11 -151,39 +153,40 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     PascalString stationName =
+         readSimpleField(
+             "stationName",
+             new DataReaderComplexDefault<>(() -> PascalString.staticParse(readBuffer), readBuffer),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     readPaddingField(
+         readUnsignedShort(readBuffer, 8),
+         (int) (((20) - (6)) - ((stationName.getStringLength()))),
+         WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      readBuffer.closeContext("PnIoCm_Block_ArServer");
      // Create the instance
-     return new PnIoCm_Block_ArServerBuilderImpl();
+     return new PnIoCm_Block_ArServerBuilderImpl(blockVersionHigh, blockVersionLow, stationName);
    }
  
    public static class PnIoCm_Block_ArServerBuilderImpl implements PnIoCm_Block.PnIoCm_BlockBuilder {
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
index d626e3ff8a,f60a061b8b..6259486614
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
@@@ -89,8 -123,16 +124,17 @@@ public class PnIoCm_Block_ExpectedSubmo
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_ExpectedSubmoduleReq _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Implicit Field (numberOfApis)
      lengthInBits += 16;
  
@@@ -112,8 -154,25 +156,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      int numberOfApis =
          readImplicitField(
              "numberOfApis",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
index 5870048cdf,64a9209658..47e22bf4bd
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
@@@ -373,8 -411,16 +412,17 @@@ public class PnIoCm_Block_IoCrReq exten
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_IoCrReq _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (ioCrType)
      lengthInBits += 16;
  
@@@ -459,8 -505,25 +507,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_IoCrType ioCrType =
          readEnumField(
              "ioCrType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
index 38a2ed0fea,4916352768..44492f5c1c
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
@@@ -113,8 -147,16 +148,17 @@@ public class PnIoCm_Block_IoCrRes exten
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_IoCrRes _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Simple field (ioCrType)
      lengthInBits += 16;
  
@@@ -133,8 -175,25 +177,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      PnIoCm_IoCrType ioCrType =
          readEnumField(
              "ioCrType",
diff --cc plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
index 4c884d240b,ab6f2fcc81..533dabe367
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
@@@ -87,8 -121,16 +122,17 @@@ public class PnIoCm_Block_ModuleDiff ex
    public int getLengthInBits() {
      int lengthInBits = super.getLengthInBits();
      PnIoCm_Block_ModuleDiff _value = this;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     // Implicit Field (blockLength)
+     lengthInBits += 16;
+ 
+     // Simple field (blockVersionHigh)
+     lengthInBits += 8;
+ 
+     // Simple field (blockVersionLow)
+     lengthInBits += 8;
+ 
      // Implicit Field (numberOfApis)
      lengthInBits += 16;
  
@@@ -110,8 -152,25 +154,26 @@@
      PositionAware positionAware = readBuffer;
      int startPos = positionAware.getPos();
      int curPos;
 +    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
  
+     int blockLength =
+         readImplicitField(
+             "blockLength",
+             readUnsignedInt(readBuffer, 16),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionHigh =
+         readSimpleField(
+             "blockVersionHigh",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
+     short blockVersionLow =
+         readSimpleField(
+             "blockVersionLow",
+             readUnsignedShort(readBuffer, 8),
+             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+ 
      int numberOfApis =
          readImplicitField(
              "numberOfApis",