You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2026/08/26 14:19:34 UTC
(plc4x) branch develop updated: fix(plc4j/spi): finish the XML round-trip fixes, re-enable AdsDriverIT
This is an automated email from the ASF dual-hosted git repository.
sruehl 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 575000c17f fix(plc4j/spi): finish the XML round-trip fixes, re-enable AdsDriverIT
575000c17f is described below
commit 575000c17f34489e7baf0351d0f8d697002bf392
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Aug 26 16:17:25 2026 +0200
fix(plc4j/spi): finish the XML round-trip fixes, re-enable AdsDriverIT
22ca9ed054's follow-up 2ed860e80c made the XML buffer able to read back
its own writer's output, but two asymmetries survived because no enabled
driver testsuite exercised them:
- discriminator enum fields: the serializer names the inner element
after the enum type (FieldWriterDiscriminatorEnum), but
FieldReaderDiscriminatorEnum still read with the logical field name.
Simple enum fields got the wildcard-name read in 2ed860e80c;
discriminator enums now get the same. ADS is the first testsuite whose
messages discriminate on a typed enum (CommandId), which is how this
surfaced.
- large text nodes: decode() consumes exactly one Characters event, but
without IS_COALESCING the StAX reader chunks multi-kilobyte text (the
ADS symbol/data-type table byte arrays are 70-80k hex chars), failing
with "Expected end element". The input factory now coalesces.
With the reader fixed, the ADS DriverTestsuite.xml only needed updates
to what the rewritten driver actually sends:
- the old driver issued its connect handshake from hard-coded AMS port
800; the driver now uses the configured source port throughout, so the
first three setup exchanges move from 800 to 65534
- AmsPacket.errorCode is a ReturnCode enum in the mspec; the flat
<errorCode dataType="uint"> form predates that and is now the nested
form both the Java and Go serializers emit
- the testcase invoke-ids follow the 8 setup requests, so the read
testcase moves from 1 to 9, and the write response echoes its
request's id 9 (the 10 was a latent typo from 8f28d79655 - a response
that can never correlate)
- the write testcase's PlcTIME value becomes ISO-8601 (PT1.234S), which
is what ApiRequestHandler parses; the api-response side keeps the
writer's integer-millisecond form
AdsDriverIT loses its @Disabled (both testcases pass), closing the gap
that "ADS has no driver testsuite". The four testcases that were already
commented out stay commented out. plc4go/assets is the usual synced
copy; the Go ADS testsuite remains skipped and is unaffected.
---
.../testing/protocols/ads/DriverTestsuite.xml | 148 +++++++++++++++------
.../org/apache/plc4x/java/ads/AdsDriverIT.java | 2 -
.../spi/buffers/xmlbased/ReadBufferXmlBased.java | 3 +
.../reader/FieldReaderDiscriminatorEnum.java | 5 +-
.../resources/protocols/ads/DriverTestsuite.xml | 148 +++++++++++++++------
5 files changed, 219 insertions(+), 87 deletions(-)
diff --git a/plc4go/assets/testing/protocols/ads/DriverTestsuite.xml b/plc4go/assets/testing/protocols/ads/DriverTestsuite.xml
index 71f90b1353..33d0248a5e 100644
--- a/plc4go/assets/testing/protocols/ads/DriverTestsuite.xml
+++ b/plc4go/assets/testing/protocols/ads/DriverTestsuite.xml
@@ -74,7 +74,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ_DEVICE_INFO">1</CommandId>
</commandId>
@@ -115,7 +115,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -141,7 +141,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">24</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadDeviceInfoResponse>
<result>
@@ -187,7 +189,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ_WRITE">9</CommandId>
</commandId>
@@ -202,7 +204,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">66</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<AdsReadWriteRequest>
<indexGroup dataType="uint" bitLength="32">61444</indexGroup>
@@ -233,7 +237,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -259,7 +263,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<AdsReadWriteResponse>
<result>
@@ -303,7 +309,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ">2</CommandId>
</commandId>
@@ -318,7 +324,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61448</indexGroup>
@@ -345,7 +353,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -371,7 +379,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">9</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<AdsReadResponse>
<result>
@@ -427,7 +437,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">4</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -480,7 +492,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">32</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">4</invokeId>
<AdsReadResponse>
<result>
@@ -536,7 +550,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">5</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61454</indexGroup>
@@ -589,7 +605,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">35944</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">5</invokeId>
<AdsReadResponse>
<result>
@@ -645,7 +663,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">6</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61451</indexGroup>
@@ -698,7 +718,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">42072</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">6</invokeId>
<AdsReadResponse>
<result>
@@ -757,7 +779,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">40</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">7</invokeId>
<AdsAddDeviceNotificationRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
@@ -817,7 +841,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">8</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">7</invokeId>
<AdsAddDeviceNotificationResponse>
<result>
@@ -875,7 +901,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">40</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">8</invokeId>
<AdsAddDeviceNotificationRequest>
<indexGroup dataType="uint" bitLength="32">61448</indexGroup>
@@ -935,7 +963,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">8</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">8</invokeId>
<AdsAddDeviceNotificationResponse>
<result>
@@ -994,7 +1024,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">41</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">0</invokeId>
<AdsDeviceNotificationRequest>
<length dataType="uint" bitLength="32">37</length>
@@ -1082,7 +1114,7 @@
<errorCode>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
</errorCode>
- <invokeId dataType="uint" bitLength="32">1</invokeId>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
<indexOffset dataType="uint" bitLength="32">417176</indexOffset>
@@ -1137,7 +1169,7 @@
<errorCode>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
</errorCode>
- <invokeId dataType="uint" bitLength="32">1</invokeId>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsReadResponse>
<result>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
@@ -1325,7 +1357,7 @@
<PlcBYTE dataType="int" bitLength="8">1</PlcBYTE>
</hurz_BYTE>
<hurz_TIME>
- <PlcTIME dataType="int" bitLength="32">1234</PlcTIME>
+ <PlcTIME dataType="string" bitLength="64" encoding="UTF-8">PT1.234S</PlcTIME>
</hurz_TIME>
<hurz_DWORD>
<PlcDWORD dataType="int" bitLength="32">3</PlcDWORD>
@@ -1387,7 +1419,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">348</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsWriteRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
@@ -1441,8 +1475,10 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">4</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
- <invokeId dataType="uint" bitLength="32">10</invokeId>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsWriteResponse>
<result>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
@@ -1514,7 +1550,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1567,7 +1605,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">9</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1679,7 +1719,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1733,7 +1775,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1858,7 +1902,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1911,7 +1957,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1970,7 +2018,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2027,7 +2077,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2134,7 +2186,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -2187,7 +2241,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -2246,7 +2302,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2304,7 +2362,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2402,7 +2462,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<data>
<AdsData>
@@ -2459,7 +2521,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<data>
<AdsData>
diff --git a/plc4j/drivers/ads/src/test/java/org/apache/plc4x/java/ads/AdsDriverIT.java b/plc4j/drivers/ads/src/test/java/org/apache/plc4x/java/ads/AdsDriverIT.java
index 0ce0c0bef6..f0e567d83b 100644
--- a/plc4j/drivers/ads/src/test/java/org/apache/plc4x/java/ads/AdsDriverIT.java
+++ b/plc4j/drivers/ads/src/test/java/org/apache/plc4x/java/ads/AdsDriverIT.java
@@ -19,9 +19,7 @@
package org.apache.plc4x.java.ads;
import org.apache.plc4x.java.utils.testutils.driver.DriverTestsuiteRunner;
-import org.junit.jupiter.api.Disabled;
-@Disabled
public class AdsDriverIT extends DriverTestsuiteRunner {
public AdsDriverIT() {
diff --git a/plc4j/spi/buffers/xml/src/main/java/org/apache/plc4x/java/spi/buffers/xmlbased/ReadBufferXmlBased.java b/plc4j/spi/buffers/xml/src/main/java/org/apache/plc4x/java/spi/buffers/xmlbased/ReadBufferXmlBased.java
index 0c116cd9b5..f1c27d16a2 100644
--- a/plc4j/spi/buffers/xml/src/main/java/org/apache/plc4x/java/spi/buffers/xmlbased/ReadBufferXmlBased.java
+++ b/plc4j/spi/buffers/xml/src/main/java/org/apache/plc4x/java/spi/buffers/xmlbased/ReadBufferXmlBased.java
@@ -43,6 +43,9 @@ public class ReadBufferXmlBased extends AbstractBuffer implements ReadBuffer, Xm
public ReadBufferXmlBased(InputStream is) {
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+ // decode() expects a field's text as a single Characters event; without coalescing the
+ // StAX reader splits large text nodes (e.g. multi-kilobyte hex byte arrays) into chunks.
+ xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
// TODO: Set this ....
sizeInBits = 0;
positionInBits = 0;
diff --git a/plc4j/spi/fields/src/main/java/org/apache/plc4x/java/spi/fields/fields/reader/FieldReaderDiscriminatorEnum.java b/plc4j/spi/fields/src/main/java/org/apache/plc4x/java/spi/fields/fields/reader/FieldReaderDiscriminatorEnum.java
index 921a6e0dac..05016a21ef 100644
--- a/plc4j/spi/fields/src/main/java/org/apache/plc4x/java/spi/fields/fields/reader/FieldReaderDiscriminatorEnum.java
+++ b/plc4j/spi/fields/src/main/java/org/apache/plc4x/java/spi/fields/fields/reader/FieldReaderDiscriminatorEnum.java
@@ -33,7 +33,10 @@ public class FieldReaderDiscriminatorEnum<T> implements FieldCommons {
public T readDiscriminatorEnumField(DataReader<T> dataReader, WithOption... options) throws BufferException {
LOGGER.debug("reading field {}", getName(options));
dataReader.pushContext(WithOption.AddOptions(options, WithOption.WithRenderAsList(true)));
- T result = dataReader.read(options);
+ // The serializer names the inner element after the enum type (see FieldWriterDiscriminatorEnum),
+ // which isn't statically known here - read with the wildcard name so name-validating
+ // buffers (XML) accept it.
+ T result = dataReader.read(WithOption.AddOptions(options, WithOption.WithName("*")));
dataReader.popContext(WithOption.AddOptions(options, WithOption.WithRenderAsList(true)));
return result;
}
diff --git a/protocols/ads/src/test/resources/protocols/ads/DriverTestsuite.xml b/protocols/ads/src/test/resources/protocols/ads/DriverTestsuite.xml
index 71f90b1353..33d0248a5e 100644
--- a/protocols/ads/src/test/resources/protocols/ads/DriverTestsuite.xml
+++ b/protocols/ads/src/test/resources/protocols/ads/DriverTestsuite.xml
@@ -74,7 +74,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ_DEVICE_INFO">1</CommandId>
</commandId>
@@ -115,7 +115,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -141,7 +141,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">24</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadDeviceInfoResponse>
<result>
@@ -187,7 +189,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ_WRITE">9</CommandId>
</commandId>
@@ -202,7 +204,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">66</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<AdsReadWriteRequest>
<indexGroup dataType="uint" bitLength="32">61444</indexGroup>
@@ -233,7 +237,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -259,7 +263,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<AdsReadWriteResponse>
<result>
@@ -303,7 +309,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</sourceAmsNetId>
- <sourceAmsPort dataType="uint" bitLength="16">800</sourceAmsPort>
+ <sourceAmsPort dataType="uint" bitLength="16">65534</sourceAmsPort>
<commandId>
<CommandId dataType="uint" bitLength="16" stringRepresentation="ADS_READ">2</CommandId>
</commandId>
@@ -318,7 +324,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61448</indexGroup>
@@ -345,7 +353,7 @@
<octet6 dataType="uint" bitLength="8">1</octet6>
</AmsNetId>
</targetAmsNetId>
- <targetAmsPort dataType="uint" bitLength="16">800</targetAmsPort>
+ <targetAmsPort dataType="uint" bitLength="16">65534</targetAmsPort>
<sourceAmsNetId>
<AmsNetId>
<octet1 dataType="uint" bitLength="8">192</octet1>
@@ -371,7 +379,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">9</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<AdsReadResponse>
<result>
@@ -427,7 +437,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">4</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -480,7 +492,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">32</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">4</invokeId>
<AdsReadResponse>
<result>
@@ -536,7 +550,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">5</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61454</indexGroup>
@@ -589,7 +605,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">35944</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">5</invokeId>
<AdsReadResponse>
<result>
@@ -645,7 +663,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">6</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61451</indexGroup>
@@ -698,7 +718,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">42072</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">6</invokeId>
<AdsReadResponse>
<result>
@@ -757,7 +779,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">40</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">7</invokeId>
<AdsAddDeviceNotificationRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
@@ -817,7 +841,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">8</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">7</invokeId>
<AdsAddDeviceNotificationResponse>
<result>
@@ -875,7 +901,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">40</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">8</invokeId>
<AdsAddDeviceNotificationRequest>
<indexGroup dataType="uint" bitLength="32">61448</indexGroup>
@@ -935,7 +963,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">8</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">8</invokeId>
<AdsAddDeviceNotificationResponse>
<result>
@@ -994,7 +1024,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">41</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">0</invokeId>
<AdsDeviceNotificationRequest>
<length dataType="uint" bitLength="32">37</length>
@@ -1082,7 +1114,7 @@
<errorCode>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
</errorCode>
- <invokeId dataType="uint" bitLength="32">1</invokeId>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
<indexOffset dataType="uint" bitLength="32">417176</indexOffset>
@@ -1137,7 +1169,7 @@
<errorCode>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
</errorCode>
- <invokeId dataType="uint" bitLength="32">1</invokeId>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsReadResponse>
<result>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
@@ -1325,7 +1357,7 @@
<PlcBYTE dataType="int" bitLength="8">1</PlcBYTE>
</hurz_BYTE>
<hurz_TIME>
- <PlcTIME dataType="int" bitLength="32">1234</PlcTIME>
+ <PlcTIME dataType="string" bitLength="64" encoding="UTF-8">PT1.234S</PlcTIME>
</hurz_TIME>
<hurz_DWORD>
<PlcDWORD dataType="int" bitLength="32">3</PlcDWORD>
@@ -1387,7 +1419,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">348</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsWriteRequest>
<indexGroup dataType="uint" bitLength="32">16448</indexGroup>
@@ -1441,8 +1475,10 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">4</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
- <invokeId dataType="uint" bitLength="32">10</invokeId>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
+ <invokeId dataType="uint" bitLength="32">9</invokeId>
<AdsWriteResponse>
<result>
<ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
@@ -1514,7 +1550,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1567,7 +1605,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">9</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1679,7 +1719,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1733,7 +1775,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1858,7 +1902,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -1911,7 +1957,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -1970,7 +2018,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2027,7 +2077,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2134,7 +2186,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<AdsReadRequest>
<indexGroup dataType="uint" bitLength="32">61455</indexGroup>
@@ -2187,7 +2241,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">1</invokeId>
<data>
<AdsData>
@@ -2246,7 +2302,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2304,7 +2362,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">2</invokeId>
<data>
<AdsData>
@@ -2402,7 +2462,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">12</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<data>
<AdsData>
@@ -2459,7 +2521,9 @@
<broadcast dataType="bit" bitLength="1">false</broadcast>
<reserved dataType="int" bitLength="7">0</reserved>
<length dataType="uint" bitLength="32">18</length>
- <errorCode dataType="uint" bitLength="32">0</errorCode>
+ <errorCode>
+ <ReturnCode dataType="uint" bitLength="32" stringRepresentation="OK">0</ReturnCode>
+ </errorCode>
<invokeId dataType="uint" bitLength="32">3</invokeId>
<data>
<AdsData>