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 2018/09/17 07:08:13 UTC
[incubator-plc4x] 29/29: - Replaced the old TransportSize with the
originally named S7DataType class
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
commit 01373d962da8902b11524dc137922762ab85cc14
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Sep 14 18:49:54 2018 +0200
- Replaced the old TransportSize with the originally named S7DataType class
---
.../s7/messages/items/S7BigIntegerFieldItem.java | 6 +-
.../java/s7/messages/items/S7BooleanFieldItem.java | 6 +-
.../messages/items/S7FloatingPointFieldItem.java | 6 +-
.../java/s7/messages/items/S7IntegerFieldItem.java | 6 +-
.../java/s7/messages/items/S7StringFieldItem.java | 6 +-
.../java/s7/messages/items/S7TimeFieldItem.java | 6 +-
.../org/apache/plc4x/java/s7/model/S7Field.java | 16 +-
.../org/apache/plc4x/java/s7/netty/S7Protocol.java | 4 +-
.../model/params/items/S7AnyVarParameterItem.java | 9 +-
.../s7/netty/model/types/DataTransportSize.java | 30 ---
.../java/s7/netty/model/types/TransportSize.java | 223 ++++++++++++++++-----
.../strategies/DefaultS7MessageProcessor.java | 4 +-
.../java/s7/netty/util/S7PlcFieldHandler.java | 42 ++--
.../s7/netty/util/S7ResponseSizeEstimator.java | 4 +-
.../org/apache/plc4x/java/s7/types/S7DataType.java | 198 ------------------
.../apache/plc4x/java/s7/model/S7FieldTests.java | 13 +-
.../s7/netty/model/messages/S7MessageTests.java | 6 +-
.../s7/netty/model/params/S7ParameterTests.java | 4 +-
.../java/s7/netty/model/types/S7TypeTests.java | 2 +-
.../strategies/DefaultS7MessageProcessorTest.java | 126 ++++++------
.../java/s7/netty/util/S7PlcFieldHandlerTest.java | 10 +-
.../plc4x/java/s7/netty/util/S7SizeHelperTest.java | 18 +-
22 files changed, 319 insertions(+), 426 deletions(-)
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BigIntegerFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BigIntegerFieldItem.java
index 02cdcda..b2aa122 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BigIntegerFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BigIntegerFieldItem.java
@@ -19,15 +19,15 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultBigIntegerFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.math.BigInteger;
public class S7BigIntegerFieldItem extends DefaultBigIntegerFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7BigIntegerFieldItem(S7DataType naturalDataType, BigInteger... values) {
+ public S7BigIntegerFieldItem(TransportSize naturalDataType, BigInteger... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BooleanFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BooleanFieldItem.java
index dc887c4..feab70c 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BooleanFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7BooleanFieldItem.java
@@ -19,13 +19,13 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultBooleanFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
public class S7BooleanFieldItem extends DefaultBooleanFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7BooleanFieldItem(S7DataType naturalDataType, Boolean... values) {
+ public S7BooleanFieldItem(TransportSize naturalDataType, Boolean... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7FloatingPointFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7FloatingPointFieldItem.java
index 9a412ef..f2024d3 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7FloatingPointFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7FloatingPointFieldItem.java
@@ -19,13 +19,13 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultFloatingPointFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
public class S7FloatingPointFieldItem extends DefaultFloatingPointFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7FloatingPointFieldItem(S7DataType naturalDataType, Double... values) {
+ public S7FloatingPointFieldItem(TransportSize naturalDataType, Double... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7IntegerFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7IntegerFieldItem.java
index 35e4b56..a9c6ee6 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7IntegerFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7IntegerFieldItem.java
@@ -19,13 +19,13 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultIntegerFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
public class S7IntegerFieldItem extends DefaultIntegerFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7IntegerFieldItem(S7DataType naturalDataType, Long... values) {
+ public S7IntegerFieldItem(TransportSize naturalDataType, Long... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7StringFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7StringFieldItem.java
index 507cad1..b852016 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7StringFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7StringFieldItem.java
@@ -19,13 +19,13 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultStringFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
public class S7StringFieldItem extends DefaultStringFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7StringFieldItem(S7DataType naturalDataType, String... values) {
+ public S7StringFieldItem(TransportSize naturalDataType, String... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7TimeFieldItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7TimeFieldItem.java
index 3ab5507..6d7821e 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7TimeFieldItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/messages/items/S7TimeFieldItem.java
@@ -19,15 +19,15 @@
package org.apache.plc4x.java.s7.messages.items;
import org.apache.plc4x.java.base.messages.items.DefaultTimeFieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.time.LocalDateTime;
public class S7TimeFieldItem extends DefaultTimeFieldItem {
- private final S7DataType naturalDataType;
+ private final TransportSize naturalDataType;
- public S7TimeFieldItem(S7DataType naturalDataType, LocalDateTime... values) {
+ public S7TimeFieldItem(TransportSize naturalDataType, LocalDateTime... values) {
super(values);
this.naturalDataType = naturalDataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/model/S7Field.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/model/S7Field.java
index e428e9e..8d48c78 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/model/S7Field.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/model/S7Field.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.java.s7.model;
import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.s7.netty.model.types.MemoryArea;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -41,7 +41,7 @@ public class S7Field implements PlcField {
public static S7Field of(String fieldString) throws PlcInvalidFieldException {
Matcher matcher = DATA_BLOCK_ADDRESS_PATTERN.matcher(fieldString);
if(matcher.matches()) {
- S7DataType dataType = S7DataType.valueOf(matcher.group("dataType"));
+ TransportSize dataType = TransportSize.valueOf(matcher.group("dataType"));
MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
String transferSizeCode = matcher.group("transferSizeCode");
short blockNumber = Short.parseShort(matcher.group("blockNumber"));
@@ -49,7 +49,7 @@ public class S7Field implements PlcField {
short bitOffset = 0;
if(matcher.group("bitOffset") != null) {
bitOffset = Short.parseShort(matcher.group("bitOffset"));
- } else if(dataType == S7DataType.BOOL) {
+ } else if(dataType == TransportSize.BOOL) {
throw new PlcInvalidFieldException("Expected bit offset for BOOL parameters.");
}
int numElements = 1;
@@ -64,14 +64,14 @@ public class S7Field implements PlcField {
} else {
matcher = ADDRESS_PATTERN.matcher(fieldString);
if (matcher.matches()) {
- S7DataType dataType = S7DataType.valueOf(matcher.group("dataType"));
+ TransportSize dataType = TransportSize.valueOf(matcher.group("dataType"));
MemoryArea memoryArea = MemoryArea.valueOfShortName(matcher.group("memoryArea"));
String transferSizeCode = matcher.group("transferSizeCode");
short byteOffset = Short.parseShort(matcher.group("byteOffset"));
short bitOffset = 0;
if(matcher.group("bitOffset") != null) {
bitOffset = Short.parseShort(matcher.group("bitOffset"));
- } else if(dataType == S7DataType.BOOL) {
+ } else if(dataType == TransportSize.BOOL) {
throw new PlcInvalidFieldException("Expected bit offset for BOOL parameters.");
}
int numElements = 1;
@@ -88,14 +88,14 @@ public class S7Field implements PlcField {
throw new PlcInvalidFieldException("Unable to parse address: " + fieldString);
}
- private final S7DataType dataType;
+ private final TransportSize dataType;
private final MemoryArea memoryArea;
private final short blockNumber;
private final short byteOffset;
private final short bitOffset;
private final int numElements;
- private S7Field(S7DataType dataType, MemoryArea memoryArea, short blockNumber, short byteOffset, short bitOffset, int numElements) {
+ private S7Field(TransportSize dataType, MemoryArea memoryArea, short blockNumber, short byteOffset, short bitOffset, int numElements) {
this.dataType = dataType;
this.memoryArea = memoryArea;
this.blockNumber = blockNumber;
@@ -104,7 +104,7 @@ public class S7Field implements PlcField {
this.numElements = numElements;
}
- public S7DataType getDataType() {
+ public TransportSize getDataType() {
return dataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
index d191d03..d40f953 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
@@ -47,7 +47,7 @@ import org.apache.plc4x.java.s7.netty.strategies.DefaultS7MessageProcessor;
import org.apache.plc4x.java.s7.netty.strategies.S7MessageProcessor;
import org.apache.plc4x.java.s7.netty.util.S7SizeHelper;
import org.apache.plc4x.java.s7.types.S7ControllerType;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -713,7 +713,7 @@ public class S7Protocol extends ChannelDuplexHandler {
}
VariableAddressingMode variableAddressingMode = VariableAddressingMode.valueOf(in.readByte());
if (variableAddressingMode == VariableAddressingMode.S7ANY) {
- S7DataType dataType = S7DataType.valueOf(in.readByte());
+ TransportSize dataType = TransportSize.valueOf(in.readByte());
short length = in.readShort();
short dbNumber = in.readShort();
MemoryArea memoryArea = MemoryArea.valueOf(in.readByte());
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/items/S7AnyVarParameterItem.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/items/S7AnyVarParameterItem.java
index 5c0461a..b1849f8 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/items/S7AnyVarParameterItem.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/items/S7AnyVarParameterItem.java
@@ -20,9 +20,8 @@ package org.apache.plc4x.java.s7.netty.model.params.items;
import org.apache.plc4x.java.s7.netty.model.types.MemoryArea;
import org.apache.plc4x.java.s7.netty.model.types.SpecificationType;
-import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.apache.plc4x.java.s7.netty.model.types.VariableAddressingMode;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
/**
* "Low-level" description of S7 Address range and the necessary size for transportation of values.
@@ -43,13 +42,13 @@ public class S7AnyVarParameterItem implements VarParameterItem {
private final SpecificationType specificationType;
private final MemoryArea memoryArea;
- private final S7DataType dataType;
+ private final TransportSize dataType;
private final int numElements;
private final short dataBlockNumber;
private final short byteOffset;
private final byte bitOffset;
- public S7AnyVarParameterItem(SpecificationType specificationType, MemoryArea memoryArea, S7DataType dataType, int numElements, short dataBlockNumber, short byteOffset, byte bitOffset) {
+ public S7AnyVarParameterItem(SpecificationType specificationType, MemoryArea memoryArea, TransportSize dataType, int numElements, short dataBlockNumber, short byteOffset, byte bitOffset) {
this.specificationType = specificationType;
this.memoryArea = memoryArea;
this.dataType = dataType;
@@ -72,7 +71,7 @@ public class S7AnyVarParameterItem implements VarParameterItem {
return memoryArea;
}
- public S7DataType getDataType() {
+ public TransportSize getDataType() {
return dataType;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/DataTransportSize.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/DataTransportSize.java
index 9f29cf9..c0c35a7 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/DataTransportSize.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/DataTransportSize.java
@@ -70,34 +70,4 @@ public enum DataTransportSize {
return map.get(code);
}
- public static DataTransportSize getForTransportSize(TransportSize transportSize) {
- switch (transportSize) {
- case BIT:
- return BIT;
- case INT:
- return INTEGER;
- case DINT:
- return DINTEGER;
- case BYTE:
- case WORD:
- case DWORD:
- return BYTE_WORD_DWORD;
- case CHAR:
- return OCTET_STRING;
- case REAL:
- return REAL;
- case TIME:
- case TOD:
- case TIMER:
- case S5TIME:
- case COUNTER:
- case IEC_TIMER:
- case HS_COUNTER:
- case IEC_COUNTER:
- case DATE_AND_TIME:
- default:
- return null;
- }
- }
-
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/TransportSize.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/TransportSize.java
index d6f57e1..f203789 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/TransportSize.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/types/TransportSize.java
@@ -1,70 +1,193 @@
/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-package org.apache.plc4x.java.s7.netty.model.types;
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
-import java.util.HashMap;
-import java.util.Map;
+ http://www.apache.org/licenses/LICENSE-2.0
-/**
- * (Values determined by evaluating generated ".pcapng" files)
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
*/
+package org.apache.plc4x.java.s7.netty.model.types;
+
+import org.apache.plc4x.java.s7.types.S7ControllerType;
+
+import java.util.*;
+
public enum TransportSize {
- BIT((byte) 0x01, 1),
- BYTE((byte) 0x02, 1),
- CHAR((byte) 0x03, 1),
- WORD((byte) 0x04, 2),
- INT((byte) 0x05, 2),
- DWORD((byte) 0x06, 4),
- DINT((byte) 0x07, 4),
- REAL((byte) 0x08, 4),
- TOD((byte) 0x0A, 4),
- TIME((byte) 0x0B, 4),
- S5TIME((byte) 0x0C, 2),
- DATE_AND_TIME((byte) 0x0F, 4),
- COUNTER((byte) 0x1C, -1),
- TIMER((byte) 0x1D, -1),
- IEC_TIMER((byte) 0x1E, -1),
- IEC_COUNTER((byte) 0x1F, -1),
- HS_COUNTER((byte) 0x20, -1);
-
- private final byte code;
- private final int sizeInBytes;
-
- TransportSize(byte code, int sizeInBytes) {
- this.code = code;
+
+ /**
+ * TODO: For the types with code 0x00 we need to put some additional effort in reverse engineering the codes for these types.
+ */
+ // -----------------------------------------
+ // Single bit
+ // -----------------------------------------
+ BOOL(0x01, "X", 1, null, DataTransportSize.BIT, S7ControllerType.S7_ANY),
+
+ // -----------------------------------------
+ // Bit strings
+ // -----------------------------------------
+ BYTE(0x02, "B", 1, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ WORD(0x04, "W", 2, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ DWORD(0x06, "D", 4, WORD, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ // Only got a basic TIA license (S7-1500 needed to find this out)
+ // TODO: Find the code
+ LWORD(0x00, "X", 8, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+
+ // -----------------------------------------
+ // Integers
+ // -----------------------------------------
+ // Signed Int
+ INT(0x05, "W", 2, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ // Unsigned Int
+ UINT(0x05, "W", 2, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+ // (Signed) Small Int
+ SINT(0x02, "B", 1, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+ // Unsigned Small Int
+ USINT(0x02, "B", 1, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+ // Double Precision Int
+ DINT(0x07, "D", 4, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ // Unsigned Double Precision Int
+ UDINT(0x07, "D", 4, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+ // Only got a basic TIA license (S7-1500 needed to find this out)
+ // TODO: Find the code
+ LINT(0x00, "X", 8, INT, null, S7ControllerType.S7_1500),
+ // Only got a basic TIA license (S7-1500 needed to find this out)
+ // TODO: Find the code
+ ULINT(0x00, "X", 16, INT, null, S7ControllerType.S7_1500),
+
+ // -----------------------------------------
+ // Reals
+ // -----------------------------------------
+ REAL(0x08, "D", 4, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ // TODO: Find the code
+ LREAL(0x00, "X", 8, REAL, null, S7ControllerType.S7_1200, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+
+ // -----------------------------------------
+ // Durations
+ // -----------------------------------------
+ // IEC time
+ TIME(0x0B, "X", 4, null, null, S7ControllerType.S7_ANY),
+ // TODO: Find the code
+ LTIME(0x00, "X", 8, TIME, null, S7ControllerType.S7_1500),
+
+ // -----------------------------------------
+ // Date
+ // -----------------------------------------
+ // IEC date (yyyy-m-d)
+ // TODO: Find the code
+ DATE(0x00, "X", 2, null, null, S7ControllerType.S7_ANY),
+
+ // -----------------------------------------
+ // Time of day
+ // -----------------------------------------
+ // Time (hh:mm:ss.S)
+ TIME_OF_DAY(0x0A, "X", 4, null, null, S7ControllerType.S7_ANY),
+
+ // -----------------------------------------
+ // Date and time of day
+ // -----------------------------------------
+ DATE_AND_TIME(0x0F, "X", 8, null, null, S7ControllerType.S7_ANY),
+
+ // -----------------------------------------
+ // ASCII Strings
+ // -----------------------------------------
+ // Single-byte character
+ CHAR(0x03, "B", 1, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
+ // Double-byte character
+ WCHAR(0x13, "X", 2, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
+ // Variable-length single-byte character string
+ // TODO: Find the code (Eventually 0x03)
+ STRING(0x00, "X", -1, null, null, S7ControllerType.S7_ANY),
+ // Variable-length double-byte character string
+ // TODO: Find the code (Eventually 0x13)
+ WSTRING(0x00, "X", -1, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500);
+
+ /* TO BE CONTINUED */
+
+ // Codes and their types:
+ // 0x1C: Counter
+ // 0x1D: Timer
+ // 0x1E: IEC Timer
+ // 0x1F: IEC Counter
+ // 0x20: HS Counter
+ //
+
+ private final byte typeCode;
+ private final String sizeCode;
+ private int sizeInBytes;
+ private final Set<S7ControllerType> supportedControllerTypes;
+ private final TransportSize baseType;
+ private final DataTransportSize dataTransportSize;
+
+ TransportSize(int typeCode, String sizeCode, int sizeInBytes, TransportSize baseType, DataTransportSize dataTransportSize,
+ S7ControllerType... supportedControllerTypes) {
+ this.typeCode = (byte) typeCode;
+ this.sizeCode = sizeCode;
this.sizeInBytes = sizeInBytes;
+ this.supportedControllerTypes = new HashSet<>(Arrays.asList(supportedControllerTypes));
+ this.baseType = baseType;
+ this.dataTransportSize = dataTransportSize;
+ }
+
+ public byte getTypeCode() {
+ return typeCode;
}
- public byte getCode() {
- return code;
+ public String getSizeCode() {
+ return sizeCode;
}
public int getSizeInBytes() {
return sizeInBytes;
}
+ public boolean isBaseType() {
+ return baseType == null;
+ }
+
+ TransportSize getBaseType() {
+ // If this is a base-type itself, the baseType is null, in all
+ // other cases it is set.
+ if (baseType == null) {
+ return this;
+ } else {
+ return baseType;
+ }
+ }
+
+ TransportSize getSubType(String sizeCode) {
+ // Try to find a sub-type with this base type for which the size code matches.
+ for (TransportSize value : values()) {
+ if ((value.baseType == this) && (value.sizeCode != null) && (value.sizeCode.equals(sizeCode))) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ public DataTransportSize getDataTransportSize() {
+ return dataTransportSize;
+ }
+
+ boolean isControllerTypeSupported(S7ControllerType controllerType) {
+ return supportedControllerTypes.contains(controllerType);
+ }
+
private final static Map<Byte, TransportSize> map;
static {
map = new HashMap<>();
- for (TransportSize transportSize : TransportSize.values()) {
- map.put(transportSize.code, transportSize);
+ for (TransportSize dataType : TransportSize.values()) {
+ map.put(dataType.typeCode, dataType);
}
}
@@ -72,4 +195,4 @@ public enum TransportSize {
return map.get(code);
}
-}
+}
\ No newline at end of file
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
index d6238a6..5701953 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
@@ -35,7 +35,7 @@ import org.apache.plc4x.java.s7.netty.model.types.MessageType;
import org.apache.plc4x.java.s7.netty.model.types.ParameterType;
import org.apache.plc4x.java.s7.netty.util.S7RequestSizeCalculator;
import org.apache.plc4x.java.s7.netty.util.S7ResponseSizeEstimator;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -168,7 +168,7 @@ public class DefaultS7MessageProcessor implements S7MessageProcessor {
if (varParameterItem instanceof S7AnyVarParameterItem) {
S7AnyVarParameterItem s7AnyVarParameterItem = (S7AnyVarParameterItem) varParameterItem;
short byteOffset = s7AnyVarParameterItem.getByteOffset();
- if (s7AnyVarParameterItem.getDataType() == S7DataType.BOOL) {
+ if (s7AnyVarParameterItem.getDataType() == TransportSize.BOOL) {
byte bitOffset = 0;
for (int i = 0; i < s7AnyVarParameterItem.getNumElements(); i++) {
// Create a new message with only one single value item in the var parameter.
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
index fd8ad5d..6e9b36d 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
@@ -27,7 +27,7 @@ import org.apache.plc4x.java.base.messages.items.DefaultTimeFieldItem;
import org.apache.plc4x.java.base.messages.items.FieldItem;
import org.apache.plc4x.java.s7.messages.items.*;
import org.apache.plc4x.java.s7.model.S7Field;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.math.BigInteger;
import java.nio.charset.Charset;
@@ -49,9 +49,9 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
public FieldItem encodeBoolean(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// All of these types are declared as Bit or Bit-String types.
- if ((s7Field.getDataType() == S7DataType.BOOL) || (s7Field.getDataType() == S7DataType.BYTE) ||
- (s7Field.getDataType() == S7DataType.WORD) || (s7Field.getDataType() == S7DataType.DWORD) ||
- (s7Field.getDataType() == S7DataType.LWORD)) {
+ if ((s7Field.getDataType() == TransportSize.BOOL) || (s7Field.getDataType() == TransportSize.BYTE) ||
+ (s7Field.getDataType() == TransportSize.WORD) || (s7Field.getDataType() == TransportSize.DWORD) ||
+ (s7Field.getDataType() == TransportSize.LWORD)) {
return internalEncodeBoolean(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -60,8 +60,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeByte(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.BYTE) || (s7Field.getDataType() == S7DataType.SINT) ||
- (s7Field.getDataType() == S7DataType.USINT) || (s7Field.getDataType() == S7DataType.CHAR)) {
+ if ((s7Field.getDataType() == TransportSize.BYTE) || (s7Field.getDataType() == TransportSize.SINT) ||
+ (s7Field.getDataType() == TransportSize.USINT) || (s7Field.getDataType() == TransportSize.CHAR)) {
return internalEncodeInteger(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -70,8 +70,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeShort(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.WORD) || (s7Field.getDataType() == S7DataType.INT) ||
- (s7Field.getDataType() == S7DataType.UINT)) {
+ if ((s7Field.getDataType() == TransportSize.WORD) || (s7Field.getDataType() == TransportSize.INT) ||
+ (s7Field.getDataType() == TransportSize.UINT)) {
return internalEncodeInteger(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -80,8 +80,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.DWORD) || (s7Field.getDataType() == S7DataType.DINT) ||
- (s7Field.getDataType() == S7DataType.UDINT)) {
+ if ((s7Field.getDataType() == TransportSize.DWORD) || (s7Field.getDataType() == TransportSize.DINT) ||
+ (s7Field.getDataType() == TransportSize.UDINT)) {
return internalEncodeInteger(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -90,8 +90,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeBigInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.DWORD) || (s7Field.getDataType() == S7DataType.DINT) ||
- (s7Field.getDataType() == S7DataType.UDINT)) {
+ if ((s7Field.getDataType() == TransportSize.DWORD) || (s7Field.getDataType() == TransportSize.DINT) ||
+ (s7Field.getDataType() == TransportSize.UDINT)) {
return internalEncodeInteger(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -100,8 +100,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeLong(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.LWORD) || (s7Field.getDataType() == S7DataType.LINT) ||
- (s7Field.getDataType() == S7DataType.ULINT)) {
+ if ((s7Field.getDataType() == TransportSize.LWORD) || (s7Field.getDataType() == TransportSize.LINT) ||
+ (s7Field.getDataType() == TransportSize.ULINT)) {
return internalEncodeInteger(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -110,7 +110,7 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeFloat(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if (s7Field.getDataType() == S7DataType.REAL) {
+ if (s7Field.getDataType() == TransportSize.REAL) {
return internalEncodeFloatingPoint(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -119,7 +119,7 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeDouble(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if (s7Field.getDataType() == S7DataType.LREAL) {
+ if (s7Field.getDataType() == TransportSize.LREAL) {
return internalEncodeFloatingPoint(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -128,8 +128,8 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeString(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if ((s7Field.getDataType() == S7DataType.CHAR) || (s7Field.getDataType() == S7DataType.WCHAR) ||
- (s7Field.getDataType() == S7DataType.STRING) || (s7Field.getDataType() == S7DataType.WSTRING)) {
+ if ((s7Field.getDataType() == TransportSize.CHAR) || (s7Field.getDataType() == TransportSize.WCHAR) ||
+ (s7Field.getDataType() == TransportSize.STRING) || (s7Field.getDataType() == TransportSize.WSTRING)) {
return internalEncodeString(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -138,7 +138,7 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if (s7Field.getDataType() == S7DataType.TIME) {
+ if (s7Field.getDataType() == TransportSize.TIME) {
return internalEncodeTemporal(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -147,7 +147,7 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeDate(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if (s7Field.getDataType() == S7DataType.DATE) {
+ if (s7Field.getDataType() == TransportSize.DATE) {
return internalEncodeTemporal(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
@@ -156,7 +156,7 @@ public class S7PlcFieldHandler implements PlcFieldHandler {
@Override
public FieldItem encodeDateTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
- if (s7Field.getDataType() == S7DataType.DATE_AND_TIME) {
+ if (s7Field.getDataType() == TransportSize.DATE_AND_TIME) {
return internalEncodeTemporal(field, values);
}
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7ResponseSizeEstimator.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7ResponseSizeEstimator.java
index c030483..a0e66b8 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7ResponseSizeEstimator.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7ResponseSizeEstimator.java
@@ -25,7 +25,7 @@ import org.apache.plc4x.java.s7.netty.model.params.VarParameter;
import org.apache.plc4x.java.s7.netty.model.params.items.S7AnyVarParameterItem;
import org.apache.plc4x.java.s7.netty.model.params.items.VarParameterItem;
import org.apache.plc4x.java.s7.netty.model.payloads.items.VarPayloadItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import java.util.List;
@@ -157,7 +157,7 @@ public class S7ResponseSizeEstimator {
length +=
s7AnyVarParameterItem.getNumElements() * s7AnyVarParameterItem.getDataType().getSizeInBytes();
// It seems that bit payloads need a additional separating 0x00 byte.
- if(s7AnyVarParameterItem.getDataType() == S7DataType.BOOL) {
+ if(s7AnyVarParameterItem.getDataType() == TransportSize.BOOL) {
length += 1;
}
return length;
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/types/S7DataType.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/types/S7DataType.java
deleted file mode 100644
index e325ffa..0000000
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/types/S7DataType.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-package org.apache.plc4x.java.s7.types;
-
-import org.apache.plc4x.java.s7.netty.model.types.DataTransportSize;
-
-import java.util.*;
-
-public enum S7DataType {
-
- /**
- * TODO: For the types with code 0x00 we need to put some additional effort in reverse engineering the codes for these types.
- */
- // -----------------------------------------
- // Single bit
- // -----------------------------------------
- BOOL(0x01, "X", 1, null, DataTransportSize.BIT, S7ControllerType.S7_ANY),
-
- // -----------------------------------------
- // Bit strings
- // -----------------------------------------
- BYTE(0x02, "B", 1, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- WORD(0x04, "W", 2, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- DWORD(0x06, "D", 4, WORD, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- // Only got a basic TIA license (S7-1500 needed to find this out)
- // TODO: Find the code
- LWORD(0x00, "X", 8, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
-
- // -----------------------------------------
- // Integers
- // -----------------------------------------
- // Signed Int
- INT(0x05, "W", 2, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- // Unsigned Int
- UINT(0x05, "W", 2, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
- // (Signed) Small Int
- SINT(0x02, "B", 1, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
- // Unsigned Small Int
- USINT(0x02, "B", 1, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
- // Double Precision Int
- DINT(0x07, "D", 4, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- // Unsigned Double Precision Int
- UDINT(0x07, "D", 4, INT, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
- // Only got a basic TIA license (S7-1500 needed to find this out)
- // TODO: Find the code
- LINT(0x00, "X", 8, INT, null, S7ControllerType.S7_1500),
- // Only got a basic TIA license (S7-1500 needed to find this out)
- // TODO: Find the code
- ULINT(0x00, "X", 16, INT, null, S7ControllerType.S7_1500),
-
- // -----------------------------------------
- // Reals
- // -----------------------------------------
- REAL(0x08, "D", 4, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- // TODO: Find the code
- LREAL(0x00, "X", 8, REAL, null, S7ControllerType.S7_1200, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
-
- // -----------------------------------------
- // Durations
- // -----------------------------------------
- // IEC time
- TIME(0x0B, "X", 4, null, null, S7ControllerType.S7_ANY),
- // TODO: Find the code
- LTIME(0x00, "X", 8, TIME, null, S7ControllerType.S7_1500),
-
- // -----------------------------------------
- // Date
- // -----------------------------------------
- // IEC date (yyyy-m-d)
- // TODO: Find the code
- DATE(0x00, "X", 2, null, null, S7ControllerType.S7_ANY),
-
- // -----------------------------------------
- // Time of day
- // -----------------------------------------
- // Time (hh:mm:ss.S)
- TIME_OF_DAY(0x0A, "X", 4, null, null, S7ControllerType.S7_ANY),
-
- // -----------------------------------------
- // Date and time of day
- // -----------------------------------------
- DATE_AND_TIME(0x0F, "X", 8, null, null, S7ControllerType.S7_ANY),
-
- // -----------------------------------------
- // ASCII Strings
- // -----------------------------------------
- // Single-byte character
- CHAR(0x03, "B", 1, null, DataTransportSize.BYTE_WORD_DWORD, S7ControllerType.S7_ANY),
- // Double-byte character
- WCHAR(0x13, "X", 2, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500),
- // Variable-length single-byte character string
- // TODO: Find the code (Eventually 0x03)
- STRING(0x00, "X", -1, null, null, S7ControllerType.S7_ANY),
- // Variable-length double-byte character string
- // TODO: Find the code (Eventually 0x13)
- WSTRING(0x00, "X", -1, null, null, S7ControllerType.S7_1200, S7ControllerType.S7_1500);
-
- /* TO BE CONTINUED */
-
- // Codes and their types:
- // 0x1C: Counter
- // 0x1D: Timer
- // 0x1E: IEC Timer
- // 0x1F: IEC Counter
- // 0x20: HS Counter
- //
-
- private final byte typeCode;
- private final String sizeCode;
- private int sizeInBytes;
- private final Set<S7ControllerType> supportedControllerTypes;
- private final S7DataType baseType;
- private final DataTransportSize dataTransportSize;
-
- S7DataType(int typeCode, String sizeCode, int sizeInBytes, S7DataType baseType, DataTransportSize dataTransportSize,
- S7ControllerType... supportedControllerTypes) {
- this.typeCode = (byte) typeCode;
- this.sizeCode = sizeCode;
- this.sizeInBytes = sizeInBytes;
- this.supportedControllerTypes = new HashSet<>(Arrays.asList(supportedControllerTypes));
- this.baseType = baseType;
- this.dataTransportSize = dataTransportSize;
- }
-
- public byte getTypeCode() {
- return typeCode;
- }
-
- public String getSizeCode() {
- return sizeCode;
- }
-
- public int getSizeInBytes() {
- return sizeInBytes;
- }
-
- public boolean isBaseType() {
- return baseType == null;
- }
-
- S7DataType getBaseType() {
- // If this is a base-type itself, the baseType is null, in all
- // other cases it is set.
- if (baseType == null) {
- return this;
- } else {
- return baseType;
- }
- }
-
- S7DataType getSubType(String sizeCode) {
- // Try to find a sub-type with this base type for which the size code matches.
- for (S7DataType value : values()) {
- if ((value.baseType == this) && (value.sizeCode != null) && (value.sizeCode.equals(sizeCode))) {
- return value;
- }
- }
- return null;
- }
-
- public DataTransportSize getDataTransportSize() {
- return dataTransportSize;
- }
-
- boolean isControllerTypeSupported(S7ControllerType controllerType) {
- return supportedControllerTypes.contains(controllerType);
- }
-
- private final static Map<Byte, S7DataType> map;
-
- static {
- map = new HashMap<>();
- for (S7DataType dataType : S7DataType.values()) {
- map.put(dataType.typeCode, dataType);
- }
- }
-
- public static S7DataType valueOf(byte code) {
- return map.get(code);
- }
-
-}
\ No newline at end of file
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/model/S7FieldTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/model/S7FieldTests.java
index abab817..d6c11d9 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/model/S7FieldTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/model/S7FieldTests.java
@@ -19,10 +19,9 @@ under the License.
package org.apache.plc4x.java.s7.model;
-import org.apache.plc4x.java.api.exceptions.PlcException;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.s7.netty.model.types.MemoryArea;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.apache.plc4x.test.FastTests;
import org.junit.experimental.categories.Category;
import org.junit.jupiter.params.ParameterizedTest;
@@ -40,10 +39,10 @@ class S7FieldTests {
private static Stream<Arguments> validFieldQueries() {
return Stream.of(
- Arguments.of("%I0.1:BOOL", S7DataType.BOOL, MemoryArea.INPUTS, 0, 0, 1),
- Arguments.of("%ID64:REAL", S7DataType.REAL, MemoryArea.INPUTS, 0, 64, 0),
- Arguments.of("%Q0.4:BOOL", S7DataType.BOOL, MemoryArea.OUTPUTS, 0, 0, 4),
- Arguments.of("%DB1.DBX38.1:BOOL", S7DataType.BOOL, MemoryArea.DATA_BLOCKS, 1, 38, 1)/*,
+ Arguments.of("%I0.1:BOOL", TransportSize.BOOL, MemoryArea.INPUTS, 0, 0, 1),
+ Arguments.of("%ID64:REAL", TransportSize.REAL, MemoryArea.INPUTS, 0, 64, 0),
+ Arguments.of("%Q0.4:BOOL", TransportSize.BOOL, MemoryArea.OUTPUTS, 0, 0, 4),
+ Arguments.of("%DB1.DBX38.1:BOOL", TransportSize.BOOL, MemoryArea.DATA_BLOCKS, 1, 38, 1)/*,
// Not quite sure about how Data Block addresses look like, in my TIA portal they all have the prefix "DB".
Arguments.of("%DB3.DX4.1:BOOL", S7DataType.BOOL, MemoryArea.DATA_BLOCKS, 3, 4, 1),
Arguments.of("%DB3.DB4:INT", S7DataType.INT, MemoryArea.DATA_BLOCKS, 3, 4, 0),
@@ -63,7 +62,7 @@ class S7FieldTests {
@ParameterizedTest
@Category(FastTests.class)
@MethodSource("validFieldQueries")
- void testValidFieldQueryParsing(String fieldQuery, S7DataType expectedClientType, MemoryArea expectedMemoryArea,
+ void testValidFieldQueryParsing(String fieldQuery, TransportSize expectedClientType, MemoryArea expectedMemoryArea,
int expectedMemoryBlockNumber, int expectedByteOffset, int expectedBitOffset) {
S7Field field = S7Field.of(fieldQuery);
assertThat(field, notNullValue());
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
index a5afb8e..0d5ba10 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
@@ -28,7 +28,7 @@ import org.apache.plc4x.java.s7.netty.model.payloads.S7Payload;
import org.apache.plc4x.java.s7.netty.model.payloads.VarPayload;
import org.apache.plc4x.java.s7.netty.model.payloads.items.VarPayloadItem;
import org.apache.plc4x.java.s7.netty.model.types.*;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.apache.plc4x.test.FastTests;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -106,7 +106,7 @@ public class S7MessageTests {
List<VarParameterItem> parameterItems = new ArrayList<>();
SpecificationType specificationType = SpecificationType.VARIABLE_SPECIFICATION;
MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
- S7DataType dataType = S7DataType.INT;
+ TransportSize dataType = TransportSize.INT;
short numElements = 1;
byte dataBlock = (byte) 0x1;
byte byteOffset = (byte) 0x10;
@@ -170,7 +170,7 @@ public class S7MessageTests {
List<VarParameterItem> parameterItems = new ArrayList<>();
SpecificationType specificationType = SpecificationType.VARIABLE_SPECIFICATION;
MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
- S7DataType dataType = S7DataType.INT;
+ TransportSize dataType = TransportSize.INT;
int numElements = 1;
byte dataBlock = (byte) 0x1;
byte byteOffset = (byte) 0x10;
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/params/S7ParameterTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/params/S7ParameterTests.java
index 413185e..43d9c85 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/params/S7ParameterTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/params/S7ParameterTests.java
@@ -22,7 +22,7 @@ package org.apache.plc4x.java.s7.netty.model.params;
import org.apache.plc4x.java.s7.netty.model.params.items.S7AnyVarParameterItem;
import org.apache.plc4x.java.s7.netty.model.params.items.VarParameterItem;
import org.apache.plc4x.java.s7.netty.model.types.*;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.apache.plc4x.test.FastTests;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -42,7 +42,7 @@ public class S7ParameterTests {
ArrayList<VarParameterItem> parameterItems = new ArrayList<>();
SpecificationType specificationType = SpecificationType.VARIABLE_SPECIFICATION;
MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
- S7DataType dataType = S7DataType.INT;
+ TransportSize dataType = TransportSize.INT;
short numElements = 1;
byte dataBlock = (byte) 0x1;
byte byteOffset = (byte) 0x10;
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/types/S7TypeTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/types/S7TypeTests.java
index 21b5357..bf0c7c0 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/types/S7TypeTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/types/S7TypeTests.java
@@ -120,7 +120,7 @@ public class S7TypeTests {
TransportSize transportSize = TransportSize.TIME;
assertThat("0x0B incorrectly mapped", TransportSize.valueOf((byte) 0x0B), equalTo(TransportSize.TIME));
- assertThat("code is not 0x0B", transportSize.getCode(), equalTo((byte) 0x0B));
+ assertThat("code is not 0x0B", transportSize.getTypeCode(), equalTo((byte) 0x0B));
}
@Test
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
index 296732c..c5d5233 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
@@ -27,7 +27,7 @@ import org.apache.plc4x.java.s7.netty.model.params.items.VarParameterItem;
import org.apache.plc4x.java.s7.netty.model.payloads.VarPayload;
import org.apache.plc4x.java.s7.netty.model.payloads.items.VarPayloadItem;
import org.apache.plc4x.java.s7.netty.model.types.*;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.hamcrest.core.IsCollectionContaining;
import org.junit.Before;
import org.junit.Test;
@@ -61,7 +61,7 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createReadMessage(
Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0)));
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0)));
Collection<? extends S7RequestMessage> processedRequests = SUT.processRequest(request, 250);
assertThat(processedRequests, notNullValue());
@@ -84,9 +84,9 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createReadMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0)));
+ TransportSize.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0)));
Collection<? extends S7RequestMessage> processedRequests = SUT.processRequest(request, 250);
assertThat(processedRequests, notNullValue());
@@ -109,43 +109,43 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createReadMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 3, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 3, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 4, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 4, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 5, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 5, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 6, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 6, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 7, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 7, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 8, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 8, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 9, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 9, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 10, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 10, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 11, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 11, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 12, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 12, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 13, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 13, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 14, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 14, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 15, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 15, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 16, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 16, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 17, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 17, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 18, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 18, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 19, (short) 0, (byte) 0)));
+ TransportSize.BYTE, (short) 1, (short) 19, (short) 0, (byte) 0)));
Collection<? extends S7RequestMessage> processedRequests = SUT.processRequest(request, 250);
assertThat(processedRequests, notNullValue());
@@ -169,45 +169,45 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createReadMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 2, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 3, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 3, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 4, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 4, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 5, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 5, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 6, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 6, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 7, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 7, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 8, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 8, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 9, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 9, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 10, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 10, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 11, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 11, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 12, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 12, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 13, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 13, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 14, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 14, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 15, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 15, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 16, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 16, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 17, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 17, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 18, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 18, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 19, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 19, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 20, (short) 0, (byte) 0)));
+ TransportSize.BYTE, (short) 1, (short) 20, (short) 0, (byte) 0)));
Collection<? extends S7RequestMessage> processedRequests = SUT.processRequest(request, 250);
assertThat(processedRequests, notNullValue());
@@ -240,9 +240,9 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createReadMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 200, (short) 1, (short) 0, (byte) 0),
+ TransportSize.BYTE, (short) 200, (short) 1, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 200, (short) 2, (short) 0, (byte) 0)));
+ TransportSize.BYTE, (short) 200, (short) 2, (short) 0, (byte) 0)));
Collection<? extends S7RequestMessage> processedRequests = SUT.processRequest(request, 256);
assertThat(processedRequests, notNullValue());
@@ -266,7 +266,7 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0)),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 0, (byte) 0)),
Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[] {0x00}))
);
@@ -301,7 +301,7 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BOOL, (short) 10, (short) 1, (short) 0, (byte) 0)),
+ TransportSize.BOOL, (short) 10, (short) 1, (short) 0, (byte) 0)),
Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BIT, new byte[] {
(byte) 0xAA, (byte) 0x02}))
@@ -333,7 +333,7 @@ public class DefaultS7MessageProcessorTest {
assertThat(parameterItem.getAddressingMode(), is(VariableAddressingMode.S7ANY));
S7AnyVarParameterItem s7AnyParameterItem = (S7AnyVarParameterItem) parameterItem;
assertThat(s7AnyParameterItem.getMemoryArea(), is(MemoryArea.DATA_BLOCKS));
- assertThat(s7AnyParameterItem.getDataType(), is(S7DataType.BOOL));
+ assertThat(s7AnyParameterItem.getDataType(), is(TransportSize.BOOL));
assertThat(s7AnyParameterItem.getNumElements(), is(1));
String fieldString = Short.toString(
s7AnyParameterItem.getByteOffset()) + "/" + Byte.toString(s7AnyParameterItem.getBitOffset());
@@ -365,7 +365,7 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 10, (short) 1, (short) 0, (byte) 0)),
+ TransportSize.BYTE, (short) 10, (short) 1, (short) 0, (byte) 0)),
Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[] {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A}))
@@ -397,7 +397,7 @@ public class DefaultS7MessageProcessorTest {
assertThat(parameterItem.getAddressingMode(), is(VariableAddressingMode.S7ANY));
S7AnyVarParameterItem s7AnyParameterItem = (S7AnyVarParameterItem) parameterItem;
assertThat(s7AnyParameterItem.getMemoryArea(), is(MemoryArea.DATA_BLOCKS));
- assertThat(s7AnyParameterItem.getDataType(), is(S7DataType.BYTE));
+ assertThat(s7AnyParameterItem.getDataType(), is(TransportSize.BYTE));
assertThat(s7AnyParameterItem.getNumElements(), is(1));
// Check the field is in the expected range and hasn't been used yet.
assertThat(expectedFields.contains(s7AnyParameterItem.getByteOffset()), is(true));
@@ -428,7 +428,7 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.DWORD, (short) 10, (short) 1, (short) 0, (byte) 0)),
+ TransportSize.DWORD, (short) 10, (short) 1, (short) 0, (byte) 0)),
Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[] {
0x00, 0x00, 0x00, 0x01,
@@ -468,7 +468,7 @@ public class DefaultS7MessageProcessorTest {
assertThat(parameterItem.getAddressingMode(), is(VariableAddressingMode.S7ANY));
S7AnyVarParameterItem s7AnyParameterItem = (S7AnyVarParameterItem) parameterItem;
assertThat(s7AnyParameterItem.getMemoryArea(), is(MemoryArea.DATA_BLOCKS));
- assertThat(s7AnyParameterItem.getDataType(), is(S7DataType.DWORD));
+ assertThat(s7AnyParameterItem.getDataType(), is(TransportSize.DWORD));
assertThat(s7AnyParameterItem.getNumElements(), is(1));
// Check the field is in the expected range and hasn't been used yet.
assertThat(expectedFields.contains(s7AnyParameterItem.getByteOffset()), is(true));
@@ -499,15 +499,15 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BOOL, (short) 1, (short) 1, (short) 0, (byte) 0),
+ TransportSize.BOOL, (short) 1, (short) 1, (short) 0, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 1, (byte) 0),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 1, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.DWORD, (short) 1, (short) 1, (short) 2, (byte) 0),
+ TransportSize.DWORD, (short) 1, (short) 1, (short) 2, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.REAL, (short) 1, (short) 1, (short) 5, (byte) 0),
+ TransportSize.REAL, (short) 1, (short) 1, (short) 5, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.INT, (short) 1, (short) 1, (short) 9, (byte) 0)),
+ TransportSize.INT, (short) 1, (short) 1, (short) 9, (byte) 0)),
Arrays.asList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BIT, new byte[] {0x01}),
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[] {0x02}),
@@ -547,9 +547,9 @@ public class DefaultS7MessageProcessorTest {
S7RequestMessage request = createWriteMessage(
Arrays.asList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 2, (short) 1, (short) 1, (byte) 0),
+ TransportSize.BYTE, (short) 2, (short) 1, (short) 1, (byte) 0),
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.DWORD, (short) 2, (short) 1, (short) 2, (byte) 0)),
+ TransportSize.DWORD, (short) 2, (short) 1, (short) 2, (byte) 0)),
Arrays.asList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[] {
0x01, 0x02}),
@@ -618,7 +618,7 @@ public class DefaultS7MessageProcessorTest {
Collections.singletonList(
new VarParameter(ParameterType.READ_VAR, new LinkedList<>(Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 2, (byte) 0))))),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 2, (byte) 0))))),
Collections.singletonList(
new VarPayload(ParameterType.READ_VAR, new LinkedList<>(Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[]{0x42}))))),
@@ -633,7 +633,7 @@ public class DefaultS7MessageProcessorTest {
Collections.singletonList(
new VarParameter(ParameterType.READ_VAR, new LinkedList<>(Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 3, (short) 4, (byte) 0))))),
+ TransportSize.BYTE, (short) 1, (short) 3, (short) 4, (byte) 0))))),
Collections.singletonList(
new VarPayload(ParameterType.READ_VAR, new LinkedList<>(Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[]{0x23}))))),
@@ -682,7 +682,7 @@ public class DefaultS7MessageProcessorTest {
Collections.singletonList(
new VarParameter(ParameterType.WRITE_VAR, new LinkedList<>(Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 1, (short) 2, (byte) 0))))),
+ TransportSize.BYTE, (short) 1, (short) 1, (short) 2, (byte) 0))))),
Collections.singletonList(
new VarPayload(ParameterType.WRITE_VAR, new LinkedList<>(Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[]{0x42}))))),
@@ -697,7 +697,7 @@ public class DefaultS7MessageProcessorTest {
Collections.singletonList(
new VarParameter(ParameterType.WRITE_VAR, new LinkedList<>(Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 3, (short) 4, (byte) 0))))),
+ TransportSize.BYTE, (short) 1, (short) 3, (short) 4, (byte) 0))))),
Collections.singletonList(
new VarPayload(ParameterType.WRITE_VAR, new LinkedList<>(Collections.singletonList(
new VarPayloadItem(DataTransportErrorCode.OK, DataTransportSize.BYTE_WORD_DWORD, new byte[]{0x23}))))),
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
index e273c4a..d938fc0 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.messages.items.FieldItem;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -257,11 +257,11 @@ class S7PlcFieldHandlerTest {
private static Stream<Arguments> createInputArrays() {
// Generate valid fields for each s7 type.
- Map<S7DataType, PlcField> fields = new HashMap<>();
- for (S7DataType s7Type : S7DataType.values()) {
+ Map<TransportSize, PlcField> fields = new HashMap<>();
+ for (TransportSize s7Type : TransportSize.values()) {
String sizeCode = (s7Type.getSizeCode() != null) ? s7Type.getSizeCode() : "X";
String fieldQuery = "%DB1.DB" + sizeCode + "1";
- if(s7Type == S7DataType.BOOL) {
+ if(s7Type == TransportSize.BOOL) {
fieldQuery += ".0";
}
fieldQuery += ":" + s7Type.name();
@@ -269,7 +269,7 @@ class S7PlcFieldHandlerTest {
}
// Generate output for each combination of S7 and Java type.
Stream<Arguments> values = null;
- for (S7DataType s7Type : S7DataType.values()) {
+ for (TransportSize s7Type : TransportSize.values()) {
PlcField field = fields.get(s7Type);
for (JavaTypes javaType : JavaTypes.values()) {
Object[] testValues = javaType.values;
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7SizeHelperTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7SizeHelperTest.java
index b48c99f..b52f393 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7SizeHelperTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7SizeHelperTest.java
@@ -29,7 +29,7 @@ import org.apache.plc4x.java.s7.netty.model.params.items.S7AnyVarParameterItem;
import org.apache.plc4x.java.s7.netty.model.payloads.VarPayload;
import org.apache.plc4x.java.s7.netty.model.payloads.items.VarPayloadItem;
import org.apache.plc4x.java.s7.netty.model.types.*;
-import org.apache.plc4x.java.s7.types.S7DataType;
+import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.junit.Test;
import java.util.Arrays;
@@ -45,7 +45,7 @@ public class S7SizeHelperTest {
new SetupCommunicationParameter((short) 8, (short)8, (short)250),
new VarParameter(ParameterType.READ_VAR, Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0))))), is((short) 22));
+ TransportSize.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0))))), is((short) 22));
}
@Test
@@ -70,28 +70,28 @@ public class S7SizeHelperTest {
assertThat(S7SizeHelper.getParameterLength(
new VarParameter(ParameterType.READ_VAR, Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)))), is((short) 14));
+ TransportSize.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)))), is((short) 14));
assertThat(S7SizeHelper.getParameterLength(
new VarParameter(ParameterType.WRITE_VAR, Collections.emptyList())), is((short) 2));
assertThat(S7SizeHelper.getParameterLength(
new VarParameter(ParameterType.WRITE_VAR, Collections.singletonList(
new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)))), is((short) 14));
+ TransportSize.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)))), is((short) 14));
}
@Test
public void getPayloadLengthFromParameterTest() {
// One bit is transferred inside one byte (4 byte header and one payload)
assertThat(S7SizeHelper.getPayloadLength(new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BOOL, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 5));
+ TransportSize.BOOL, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 5));
assertThat(S7SizeHelper.getPayloadLength(new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 5));
+ TransportSize.BYTE, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 5));
assertThat(S7SizeHelper.getPayloadLength(new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.BYTE, (short) 42, (short) 0, (short) 0, (byte) 0)), is((short) 46));
+ TransportSize.BYTE, (short) 42, (short) 0, (short) 0, (byte) 0)), is((short) 46));
assertThat(S7SizeHelper.getPayloadLength(new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.DWORD, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 8));
+ TransportSize.DWORD, (short) 1, (short) 0, (short) 0, (byte) 0)), is((short) 8));
assertThat(S7SizeHelper.getPayloadLength(new S7AnyVarParameterItem(SpecificationType.VARIABLE_SPECIFICATION, MemoryArea.DATA_BLOCKS,
- S7DataType.DWORD, (short) 42, (short) 0, (short) 0, (byte) 0)), is((short) 172));
+ TransportSize.DWORD, (short) 42, (short) 0, (short) 0, (byte) 0)), is((short) 172));
}
@Test