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 2019/12/20 10:45:14 UTC

[plc4x] branch next-gen-core updated: - Cleaned up a bit in the new driver.

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

cdutz pushed a commit to branch next-gen-core
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/next-gen-core by this push:
     new f8ec041  - Cleaned up a bit in the new driver.
f8ec041 is described below

commit f8ec041a73fe3ed543b11d58c2713fbd1a1cc000
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Dec 20 11:45:06 2019 +0100

    - Cleaned up a bit in the new driver.
---
 .../java/s7/readwrite/connection/S7Connection.java |  8 ++---
 .../{Plc4xS7Protocol.java => S7ProtocolLogic.java} | 34 ++++++++++++----------
 .../{S7Protocol.java => S7ProtocolMessage.java}    |  6 ++--
 3 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7Connection.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7Connection.java
index 2a3abc3..a525833 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7Connection.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7Connection.java
@@ -27,8 +27,8 @@ import org.apache.plc4x.java.spi.connection.NettyPlcConnection;
 import org.apache.plc4x.java.spi.events.ConnectEvent;
 import org.apache.plc4x.java.spi.events.ConnectedEvent;
 import org.apache.plc4x.java.s7.readwrite.TPKTPacket;
-import org.apache.plc4x.java.s7.readwrite.protocol.Plc4xS7Protocol;
-import org.apache.plc4x.java.s7.readwrite.protocol.S7Protocol;
+import org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic;
+import org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolMessage;
 import org.apache.plc4x.java.s7.readwrite.utils.S7PlcFieldHandler;
 import org.apache.plc4x.java.spi.Plc4xNettyWrapper;
 import org.apache.plc4x.java.spi.Plc4xProtocolBase;
@@ -98,8 +98,8 @@ public class S7Connection extends NettyPlcConnection implements PlcReader, PlcWr
                         }
                     }
                 });
-                pipeline.addLast(new S7Protocol());
-                Plc4xProtocolBase<TPKTPacket> plc4xS7Protocol = new Plc4xS7Protocol(configuration);
+                pipeline.addLast(new S7ProtocolMessage());
+                Plc4xProtocolBase<TPKTPacket> plc4xS7Protocol = new S7ProtocolLogic(configuration);
                 setProtocol(plc4xS7Protocol);
                 Plc4xNettyWrapper<TPKTPacket> context = new Plc4xNettyWrapper<>(pipeline, plc4xS7Protocol, TPKTPacket.class);
                 pipeline.addLast(context);
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/Plc4xS7Protocol.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
similarity index 95%
rename from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/Plc4xS7Protocol.java
rename to sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
index 90dc8ff..1dda2fb 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/Plc4xS7Protocol.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
@@ -60,11 +60,11 @@ import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
+public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> {
 
-    private static final Logger logger = LoggerFactory.getLogger(Plc4xS7Protocol.class);
+    private static final Logger logger = LoggerFactory.getLogger(S7ProtocolLogic.class);
 
-    private final int callingTsapId;
+    private int callingTsapId;
     private int calledTsapId;
     private COTPTpduSize cotpTpduSize;
     private int pduSize;
@@ -74,7 +74,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
 
     private static final AtomicInteger tpduGenerator = new AtomicInteger(10);
 
-    public Plc4xS7Protocol(S7Configuration configuration) {
+    public S7ProtocolLogic(S7Configuration configuration) {
         this.callingTsapId = S7TsapIdEncoder.encodeS7TsapId(DeviceGroup.PG_OR_PC, configuration.rack, configuration.slot);
         this.calledTsapId = S7TsapIdEncoder.encodeS7TsapId(DeviceGroup.OS, 0, 0);
         this.controllerType = configuration.controllerType == null ? S7ControllerType.ANY : S7ControllerType.valueOf(configuration.controllerType);
@@ -179,7 +179,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
                 try {
                     future.complete(((PlcReadResponse) decodeReadResponse(p, ((InternalPlcReadRequest) readRequest))));
                 } catch (PlcProtocolException e) {
-                    e.printStackTrace();
+                    logger.warn(String.format("Error sending 'read' message: '%s'", e.getMessage()), e);
                 }
             });
         return future;
@@ -195,7 +195,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
             final S7Field field = (S7Field) request.getField(fieldName);
             final BaseDefaultFieldItem fieldItem = request.getFieldItem(fieldName);
             parameterItems.add(new S7VarRequestParameterItemAddress(encodeS7Address(field)));
-            payloadItems.add(encodeFieldItem(field, fieldItem));
+            payloadItems.add(serializeFieldItem(field, fieldItem));
         }
         final int tpduId = tpduGenerator.getAndIncrement();
         TPKTPacket tpktPacket = new TPKTPacket(new COTPPacketData(null,
@@ -218,7 +218,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
                 try {
                     future.complete(((PlcWriteResponse) decodeWriteResponse(p, ((InternalPlcWriteRequest) writeRequest))));
                 } catch (PlcProtocolException e) {
-                    e.printStackTrace();
+                    logger.warn(String.format("Error sending 'write' message: '%s'", e.getMessage()), e);
                 }
             });
         return future;
@@ -259,13 +259,17 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
             if (parameter instanceof COTPParameterCalledTsap) {
                 COTPParameterCalledTsap cotpParameterCalledTsap = (COTPParameterCalledTsap) parameter;
                 calledTsapId = cotpParameterCalledTsap.getTsapId();
+            } else if (parameter instanceof COTPParameterCallingTsap) {
+                COTPParameterCallingTsap cotpParameterCallingTsap = (COTPParameterCallingTsap) parameter;
+                if(cotpParameterCallingTsap.getTsapId() != callingTsapId) {
+                    callingTsapId = cotpParameterCallingTsap.getTsapId();
+                    logger.warn(String.format("Switching calling TSAP id to '%s'", callingTsapId));
+                }
             } else if (parameter instanceof COTPParameterTpduSize) {
                 COTPParameterTpduSize cotpParameterTpduSize = (COTPParameterTpduSize) parameter;
                 cotpTpduSize = cotpParameterTpduSize.getTpduSize();
-            } else if (parameter instanceof COTPParameterCallingTsap) {
-                // Ignore this ...
             } else {
-                logger.warn("Got unknown parameter type '" + parameter.getClass().getName() + "'");
+                logger.warn(String.format("Got unknown parameter type '%s'", parameter.getClass().getName()));
             }
         }
 
@@ -309,7 +313,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
             BaseDefaultFieldItem fieldItem = null;
             ByteBuf data = Unpooled.wrappedBuffer(payloadItem.getData());
             if (responseCode == PlcResponseCode.OK) {
-                fieldItem = decodeFieldItem(fieldName, field, data);
+                fieldItem = parseFieldItem(field, data);
             }
             Pair<PlcResponseCode, BaseDefaultFieldItem> result = new ImmutablePair<>(responseCode, fieldItem);
             values.put(fieldName, result);
@@ -344,7 +348,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
         return new DefaultPlcWriteResponse(plcWriteRequest, responses);
     }
 
-    private S7VarPayloadDataItem encodeFieldItem(S7Field field, BaseDefaultFieldItem fieldItem) {
+    private S7VarPayloadDataItem serializeFieldItem(S7Field field, BaseDefaultFieldItem fieldItem) {
         if(fieldItem.getNumberOfValues() > 0) {
             throw new NotImplementedException("Writing more than one element currently not supported");
         }
@@ -475,12 +479,12 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
             byte[] data = writeBuffer.getData();
             return new S7VarPayloadDataItem(DataTransportErrorCode.OK, transportSize, data.length, data);
         } catch (ParseException e) {
-            e.printStackTrace();
+            logger.warn(String.format("Error serializing field item of type: '%s'", field.getDataType().name()), e);
         }
         return null;
     }
 
-    private BaseDefaultFieldItem decodeFieldItem(String fieldName, S7Field field, ByteBuf data) {
+    private BaseDefaultFieldItem parseFieldItem(S7Field field, ByteBuf data) {
         ReadBuffer readBuffer = new ReadBuffer(data.array());
         try {
             DataItem item = DataItemIO.parse(readBuffer, field.getDataType().getDataProtocolId());
@@ -543,7 +547,7 @@ public class Plc4xS7Protocol extends Plc4xProtocolBase<TPKTPacket> {
                         "Processing of datatype " + field.getDataType() + " currently not supported");
             }
         } catch (ParseException e) {
-            e.printStackTrace();
+            logger.warn(String.format("Error parsing field item of type: '%s'", field.getDataType().name()), e);
         }
         return null;
     }
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7Protocol.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolMessage.java
similarity index 93%
rename from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7Protocol.java
rename to sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolMessage.java
index cdc5feb..6bf373a 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7Protocol.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolMessage.java
@@ -30,11 +30,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
-public class S7Protocol extends GeneratedDriverByteToMessageCodec<TPKTPacket> {
+public class S7ProtocolMessage extends GeneratedDriverByteToMessageCodec<TPKTPacket> {
 
-    private static final Logger logger = LoggerFactory.getLogger(S7Protocol.class);
+    private static final Logger logger = LoggerFactory.getLogger(S7ProtocolMessage.class);
 
-    public S7Protocol() {
+    public S7ProtocolMessage() {
         super(new MessageIO<TPKTPacket, TPKTPacket>() {
             @Override
             public TPKTPacket parse(ReadBuffer io) throws ParseException {