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",