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 {