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

sruehl pushed a commit to branch feature/TopLevelItemSpliting
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git


The following commit(s) were added to refs/heads/feature/TopLevelItemSpliting 
by this push:
     new b2f0fa3  [MODBUS/ADS] Integrate SingleItemToSingleRequestProtocol for 
now
b2f0fa3 is described below

commit b2f0fa335caaaa832ed9385a4f1975857dce7e7b
Author: Sebastian Rühl <sru...@apache.org>
AuthorDate: Thu Sep 27 12:36:24 2018 +0200

    [MODBUS/ADS] Integrate SingleItemToSingleRequestProtocol for now
---
 .../ads/connection/AdsSerialPlcConnection.java     |  2 ++
 .../java/ads/connection/AdsTcpPlcConnection.java   |  2 ++
 .../modbus/connection/ModbusTcpPlcConnection.java  |  2 ++
 .../plc4x/java/modbus/ManualPlc4XModbusTest.java   | 32 ++++++++++++++++++++++
 4 files changed, 38 insertions(+)

diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsSerialPlcConnection.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsSerialPlcConnection.java
index 03a0588..203ebad 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsSerialPlcConnection.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsSerialPlcConnection.java
@@ -29,6 +29,7 @@ import 
org.apache.plc4x.java.ads.protocol.Payload2SerialProtocol;
 import org.apache.plc4x.java.ads.protocol.Plc4x2AdsProtocol;
 import org.apache.plc4x.java.ads.protocol.util.SingleMessageRateLimiter;
 import org.apache.plc4x.java.base.connection.SerialChannelFactory;
+import org.apache.plc4x.java.base.protocol.SingleItemToSingleRequestProtocol;
 
 import java.util.concurrent.CompletableFuture;
 
@@ -61,6 +62,7 @@ public class AdsSerialPlcConnection extends 
AdsAbstractPlcConnection {
                 pipeline.addLast(new SingleMessageRateLimiter());
                 pipeline.addLast(new Ads2PayloadProtocol());
                 pipeline.addLast(new Plc4x2AdsProtocol(targetAmsNetId, 
targetAmsPort, sourceAmsNetId, sourceAmsPort, fieldMapping));
+                pipeline.addLast(new SingleItemToSingleRequestProtocol());
             }
         };
     }
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
index d498694..9483d22 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
@@ -46,6 +46,7 @@ import org.apache.plc4x.java.base.messages.*;
 import org.apache.plc4x.java.base.model.DefaultPlcConsumerRegistration;
 import org.apache.plc4x.java.base.model.InternalPlcConsumerRegistration;
 import org.apache.plc4x.java.base.model.InternalPlcSubscriptionHandle;
+import org.apache.plc4x.java.base.protocol.SingleItemToSingleRequestProtocol;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -113,6 +114,7 @@ public class AdsTcpPlcConnection extends 
AdsAbstractPlcConnection implements Plc
                 pipeline.addLast(new Payload2TcpProtocol());
                 pipeline.addLast(new Ads2PayloadProtocol());
                 pipeline.addLast(new Plc4x2AdsProtocol(targetAmsNetId, 
targetAmsPort, sourceAmsNetId, sourceAmsPort, fieldMapping));
+                pipeline.addLast(new SingleItemToSingleRequestProtocol());
             }
         };
     }
diff --git 
a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/connection/ModbusTcpPlcConnection.java
 
b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/connection/ModbusTcpPlcConnection.java
index 92f5337..15fe6dc 100644
--- 
a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/connection/ModbusTcpPlcConnection.java
+++ 
b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/connection/ModbusTcpPlcConnection.java
@@ -26,6 +26,7 @@ import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelInitializer;
 import org.apache.plc4x.java.base.connection.ChannelFactory;
 import org.apache.plc4x.java.base.connection.TcpSocketChannelFactory;
+import org.apache.plc4x.java.base.protocol.SingleItemToSingleRequestProtocol;
 import org.apache.plc4x.java.modbus.netty.Plc4XModbusProtocol;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,6 +69,7 @@ public class ModbusTcpPlcConnection extends 
BaseModbusPlcConnection {
             protected void initChannel(Channel channel) {
                 channel.pipeline().addLast(new ModbusTcpCodec(new 
ModbusRequestEncoder(), new ModbusResponseDecoder()));
                 channel.pipeline().addLast(new Plc4XModbusProtocol());
+                channel.pipeline().addLast(new 
SingleItemToSingleRequestProtocol());
             }
         };
     }
diff --git 
a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualPlc4XModbusTest.java
 
b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualPlc4XModbusTest.java
index 21ef508..bfa1f2c 100644
--- 
a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualPlc4XModbusTest.java
+++ 
b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualPlc4XModbusTest.java
@@ -31,6 +31,7 @@ import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.stream.IntStream;
 
 public class ManualPlc4XModbusTest {
 
@@ -81,6 +82,37 @@ public class ManualPlc4XModbusTest {
             }
 
             {
+                // Read an int from 2 registers and multiple requests
+                PlcReader reader = plcConnection.getReader().orElseThrow(() -> 
new RuntimeException("No Reader found"));
+
+                // Just dump the actual values
+                PlcReadResponse<?> readResponse = reader.read(builder -> 
builder
+                    .addItem("randomRegister1", "register:1[2]")
+                    .addItem("randomRegister2", "register:10[3]")
+                    .addItem("randomRegister3", "register:20[4]")
+                    .addItem("randomRegister4", "register:30[5]")
+                    .addItem("randomRegister5", "register:40[6]")
+                ).get();
+                System.out.println("Response " + readResponse);
+                IntStream.range(1, 6).forEach(i -> {
+                    Collection<Byte[]> randomRegisters = 
readResponse.getAllByteArrays("randomRegister" + i);
+                    randomRegisters.stream()
+                        .map(HexUtil::toHex)
+                        .map(hex -> "Register " + i + " Value: " + hex)
+                        .forEach(System.out::println);
+
+                    // Read an actual int
+                    Byte[] registerBytes = randomRegisters.stream()
+                        .flatMap(Arrays::stream)
+                        .toArray(Byte[]::new);
+                    int readInt = 
ByteBuffer.wrap(ArrayUtils.toPrimitive(registerBytes))
+                        .order(ByteOrder.BIG_ENDIAN)
+                        .getInt();
+                    System.out.println("Read int " + i + " " + readInt + " 
from register");
+                });
+            }
+
+            {
                 PlcReader reader = plcConnection.getReader().orElseThrow(() -> 
new RuntimeException("No Reader found"));
 
                 PlcReadResponse<?> readResponse = reader.read(builder -> 
builder.addItem("randomCoil", "coil:1[9]")).get();

Reply via email to