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/27 19:16:13 UTC
[plc4x] 08/09: - Continued implementing the new S7 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
commit 250e860e04d83e53237d3d0c70c713882882011b
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Dec 27 00:05:18 2019 +0100
- Continued implementing the new S7 driver
---
.../apache/plc4x/java/s7}/utils/StaticHelper.java | 15 +-
sandbox/test-java-s7-driver-passive/pom.xml | 6 +
.../apache/plc4x/java/s7}/utils/StaticHelper.java | 2 +-
sandbox/test-java-s7-driver/pom.xml | 24 +--
.../s7/readwrite/protocol/S7ProtocolLogic.java | 215 ++-------------------
.../java/s7/readwrite/utils/S7PlcFieldHandler.java | 141 +++++++-------
.../s7/{readwrite => }/utils/StaticHelper.java | 16 +-
.../enrich/knxnetip/ets5/Ets5DataEnrichment.java | 32 +--
8 files changed, 126 insertions(+), 325 deletions(-)
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java b/sandbox/plc-simulator/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
similarity index 88%
copy from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
copy to sandbox/plc-simulator/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
index 60bf88a..7c085b9 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
+++ b/sandbox/plc-simulator/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
@@ -16,9 +16,10 @@ 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.readwrite.utils;
+package org.apache.plc4x.java.s7.utils;
import org.apache.commons.lang3.NotImplementedException;
+import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.spi.generation.ParseException;
import org.apache.plc4x.java.spi.generation.ReadBuffer;
import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -40,7 +41,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaTime(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaTime(WriteBuffer io, PlcValue value) {
}
@@ -54,7 +55,7 @@ public class StaticHelper {
}
}
- public static void serializeS5Time(WriteBuffer io, LocalTime value) {
+ public static void serializeS5Time(WriteBuffer io, PlcValue value) {
}
@@ -62,7 +63,7 @@ public class StaticHelper {
throw new NotImplementedException("LTime not implemented");
}
- public static void serializeTiaLTime(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaLTime(WriteBuffer io, PlcValue value) {
}
@@ -76,7 +77,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaTimeOfDay(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaTimeOfDay(WriteBuffer io, PlcValue value) {
}
@@ -89,7 +90,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaDate(WriteBuffer io, LocalDate value) {
+ public static void serializeTiaDate(WriteBuffer io, PlcValue value) {
}
@@ -118,7 +119,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaDateTime(WriteBuffer io, LocalDateTime value) {
+ public static void serializeTiaDateTime(WriteBuffer io, PlcValue value) {
}
diff --git a/sandbox/test-java-s7-driver-passive/pom.xml b/sandbox/test-java-s7-driver-passive/pom.xml
index 259972b..5a1b5d8 100644
--- a/sandbox/test-java-s7-driver-passive/pom.xml
+++ b/sandbox/test-java-s7-driver-passive/pom.xml
@@ -61,9 +61,15 @@
</dependency>
<dependency>
<groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-spi</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
<artifactId>plc4j-transport-raw-socket</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>
+
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
similarity index 98%
copy from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
copy to sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
index 60bf88a..4c29fd8 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
+++ b/sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
@@ -16,7 +16,7 @@ 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.readwrite.utils;
+package org.apache.plc4x.java.s7.utils;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.plc4x.java.spi.generation.ParseException;
diff --git a/sandbox/test-java-s7-driver/pom.xml b/sandbox/test-java-s7-driver/pom.xml
index 222cca5..e8e1210 100644
--- a/sandbox/test-java-s7-driver/pom.xml
+++ b/sandbox/test-java-s7-driver/pom.xml
@@ -48,18 +48,6 @@
<outputFlavor>read-write</outputFlavor>
</configuration>
</execution>
- <execution>
- <id>generate-data</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>s7-data</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- </configuration>
- </execution>
</executions>
</plugin>
</plugins>
@@ -71,6 +59,11 @@
<artifactId>plc4j-api</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-spi</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -81,7 +74,6 @@
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
- <version>1.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
@@ -116,12 +108,6 @@
<!-- Scope is 'provided' as this way it's not shipped with the driver -->
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-spi</artifactId>
- <version>0.6.0-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
</dependencies>
</project>
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
index 7e7cd30..9344c61 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
@@ -20,16 +20,16 @@ package org.apache.plc4x.java.s7.readwrite.protocol;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.exceptions.PlcProtocolException;
import org.apache.plc4x.java.api.messages.*;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
+import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.s7.readwrite.*;
import org.apache.plc4x.java.s7.readwrite.connection.S7Configuration;
+import org.apache.plc4x.java.s7.readwrite.io.DataItemIO;
import org.apache.plc4x.java.s7.readwrite.types.COTPProtocolClass;
import org.apache.plc4x.java.s7.readwrite.types.COTPTpduSize;
import org.apache.plc4x.java.s7.readwrite.types.DataTransportErrorCode;
@@ -40,13 +40,10 @@ import org.apache.plc4x.java.s7.readwrite.types.SzlModuleTypeClass;
import org.apache.plc4x.java.s7.readwrite.types.SzlSublist;
import org.apache.plc4x.java.s7.readwrite.utils.S7Field;
import org.apache.plc4x.java.s7.readwrite.utils.S7TsapIdEncoder;
-import org.apache.plc4x.java.s7data.readwrite.*;
-import org.apache.plc4x.java.s7data.readwrite.io.*;
import org.apache.plc4x.java.spi.ConversationContext;
import org.apache.plc4x.java.spi.HasConfiguration;
import org.apache.plc4x.java.spi.Plc4xProtocolBase;
import org.apache.plc4x.java.spi.messages.*;
-import org.apache.plc4x.java.spi.messages.items.*;
import org.apache.plc4x.java.spi.generation.ParseException;
import org.apache.plc4x.java.spi.generation.ReadBuffer;
import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -91,7 +88,7 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
@Override
public void onConnect(ConversationContext<TPKTPacket> context) {
- logger.debug("ISO Transport Protocol Sending Connection Request");
+ logger.debug("Sending COTP Connection Request");
// Open the session on ISO Transport Protocol first.
TPKTPacket packet = new TPKTPacket(createCOTPConnectionRequest(calledTsapId, callingTsapId, cotpTpduSize));
@@ -100,6 +97,8 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
.check(p -> p.getPayload() instanceof COTPPacketConnectionResponse)
.unwrap(p -> (COTPPacketConnectionResponse) p.getPayload())
.handle(cotpPacketConnectionResponse -> {
+ logger.debug("Got COTP Connection Response");
+ logger.debug("Sending S7 Connection Request");
context.sendRequest(createS7ConnectionRequest(cotpPacketConnectionResponse))
.expectResponse(TPKTPacket.class, REQUEST_TIMEOUT)
.unwrap(TPKTPacket::getPayload)
@@ -109,6 +108,7 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
.unwrap(S7Message::getParameter)
.only(S7ParameterSetupCommunication.class)
.handle(setupCommunication -> {
+ logger.debug("Got S7 Connection Response");
// Save some data from the response.
maxAmqCaller = setupCommunication.getMaxAmqCaller();
maxAmqCallee = setupCommunication.getMaxAmqCallee();
@@ -180,9 +180,9 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
List<S7VarPayloadDataItem> payloadItems = new ArrayList<>(request.getNumberOfFields());
for (String fieldName : request.getFieldNames()) {
final S7Field field = (S7Field) request.getField(fieldName);
- final BaseDefaultFieldItem fieldItem = request.getFieldItem(fieldName);
+/* final BaseDefaultFieldItem fieldItem = request.getFieldItem(fieldName);
parameterItems.add(new S7VarRequestParameterItemAddress(encodeS7Address(field)));
- payloadItems.add(serializeFieldItem(field, fieldItem));
+ payloadItems.add(serializeFieldItem(field, fieldItem));*/
}
final int tpduId = tpduGenerator.getAndIncrement();
TPKTPacket tpktPacket = new TPKTPacket(new COTPPacketData(null,
@@ -294,7 +294,7 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
"The number of requested items doesn't match the number of returned items");
}
- Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> values = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, PlcValue>> values = new HashMap<>();
S7VarPayloadDataItem[] payloadItems = payload.getItems();
int index = 0;
for (String fieldName : plcReadRequest.getFieldNames()) {
@@ -302,12 +302,12 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
S7VarPayloadDataItem payloadItem = payloadItems[index];
PlcResponseCode responseCode = decodeResponseCode(payloadItem.getReturnCode());
- BaseDefaultFieldItem fieldItem = null;
+ PlcValue fieldItem = null;
ByteBuf data = Unpooled.wrappedBuffer(payloadItem.getData());
if (responseCode == PlcResponseCode.OK) {
fieldItem = parseFieldItem(field, data);
}
- Pair<PlcResponseCode, BaseDefaultFieldItem> result = new ImmutablePair<>(responseCode, fieldItem);
+ Pair<PlcResponseCode, PlcValue> result = new ImmutablePair(responseCode, fieldItem);
values.put(fieldName, result);
index++;
}
@@ -340,134 +340,11 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
return new DefaultPlcWriteResponse(plcWriteRequest, responses);
}
- private S7VarPayloadDataItem serializeFieldItem(S7Field field, BaseDefaultFieldItem fieldItem) {
- if(fieldItem.getNumberOfValues() > 0) {
- throw new NotImplementedException("Writing more than one element currently not supported");
- }
-
+ private S7VarPayloadDataItem serializeFieldItem(S7Field field, PlcValue plcValue) {
try {
- WriteBuffer writeBuffer;
- DataTransportSize transportSize;
- switch (field.getDataType().getDataProtocolId()) {
- case 1: // 1 Bit
- writeBuffer = new WriteBuffer(1);
- DataItemBOOLIO.serialize(writeBuffer, new DataItemBOOL(fieldItem.getBoolean(0)));
- transportSize = DataTransportSize.BIT;
- break;
-
- case 11: // BYTE
- writeBuffer = new WriteBuffer(1);
- DataItemBYTEIO.serialize(writeBuffer, new DataItemBYTE(ArrayUtils.toPrimitive((Boolean[]) fieldItem.getValues())));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 12: // WORD
- writeBuffer = new WriteBuffer(2);
- DataItemWORDIO.serialize(writeBuffer, new DataItemWORD(ArrayUtils.toPrimitive((Boolean[]) fieldItem.getValues())));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 13: // DWORD
- writeBuffer = new WriteBuffer(4);
- DataItemDWORDIO.serialize(writeBuffer, new DataItemDWORD(ArrayUtils.toPrimitive((Boolean[]) fieldItem.getValues())));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 14: // LWORD
- writeBuffer = new WriteBuffer(8);
- DataItemLWORDIO.serialize(writeBuffer, new DataItemLWORD(ArrayUtils.toPrimitive((Boolean[]) fieldItem.getValues())));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
-
- case 21: // SINT
- writeBuffer = new WriteBuffer(1);
- DataItemSINTIO.serialize(writeBuffer, new DataItemSINT(fieldItem.getByte(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 22: // USINT
- writeBuffer = new WriteBuffer(1);
- DataItemUSINTIO.serialize(writeBuffer, new DataItemUSINT(fieldItem.getShort(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 23: // INT
- writeBuffer = new WriteBuffer(2);
- DataItemINTIO.serialize(writeBuffer, new DataItemINT(fieldItem.getShort(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 24: // UINT
- writeBuffer = new WriteBuffer(2);
- DataItemUINTIO.serialize(writeBuffer, new DataItemUINT(fieldItem.getInteger(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 25: // DINT
- writeBuffer = new WriteBuffer(4);
- DataItemDINTIO.serialize(writeBuffer, new DataItemDINT(fieldItem.getInteger(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 26: // UDINT
- writeBuffer = new WriteBuffer(4);
- DataItemUDINTIO.serialize(writeBuffer, new DataItemUDINT(fieldItem.getLong(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 27: // LINT
- writeBuffer = new WriteBuffer(8);
- DataItemLINTIO.serialize(writeBuffer, new DataItemLINT(fieldItem.getLong(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 28: // ULINT
- writeBuffer = new WriteBuffer(8);
- DataItemULINTIO.serialize(writeBuffer, new DataItemULINT(fieldItem.getBigInteger(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
-
- case 31: // REAL
- writeBuffer = new WriteBuffer(2);
- DataItemREALIO.serialize(writeBuffer, new DataItemREAL(fieldItem.getFloat(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 32: // LREAL
- writeBuffer = new WriteBuffer(4);
- DataItemLREALIO.serialize(writeBuffer, new DataItemLREAL(fieldItem.getDouble(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
-
-/* case 41: // CHAR
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 42: // WCHAR
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 43: // STRING
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 44: // WSTRING
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());*/
-
- case 51: // Time
- writeBuffer = new WriteBuffer(4);
- DataItemTimeIO.serialize(writeBuffer, new DataItemTime(fieldItem.getTime(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 52: // LTime
- writeBuffer = new WriteBuffer(4);
- DataItemLTimeIO.serialize(writeBuffer, new DataItemLTime(fieldItem.getTime(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 53: // Date
- writeBuffer = new WriteBuffer(2);
- DataItemDateIO.serialize(writeBuffer, new DataItemDate(fieldItem.getDate(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 54: // TimeOfDay
- writeBuffer = new WriteBuffer(4);
- DataItemTimeOfDayIO.serialize(writeBuffer, new DataItemTimeOfDay(fieldItem.getTime(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
- case 55: // DateAndTime
- writeBuffer = new WriteBuffer(8);
- DataItemDateAndTimeIO.serialize(writeBuffer, new DataItemDateAndTime(fieldItem.getDateTime(0)));
- transportSize = DataTransportSize.BYTE_WORD_DWORD;
- break;
-
- default:
- throw new NotImplementedException(
- "Processing of datatype " + field.getDataType() + " currently not supported");
- }
-
+ DataTransportSize transportSize = (field.getDataType().getDataProtocolId() == 1) ?
+ DataTransportSize.BIT : DataTransportSize.BYTE_WORD_DWORD;
+ WriteBuffer writeBuffer = DataItemIO.serialize(plcValue, field.getDataType().getDataProtocolId());
byte[] data = writeBuffer.getData();
return new S7VarPayloadDataItem(DataTransportErrorCode.OK, transportSize, data.length, data);
} catch (ParseException e) {
@@ -476,68 +353,10 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
return null;
}
- private BaseDefaultFieldItem parseFieldItem(S7Field field, ByteBuf data) {
+ private PlcValue parseFieldItem(S7Field field, ByteBuf data) {
ReadBuffer readBuffer = new ReadBuffer(data.array());
try {
- DataItem item = DataItemIO.parse(readBuffer, field.getDataType().getDataProtocolId());
- switch (field.getDataType().getDataProtocolId()) {
- case 1: // 1 Bit
- return new DefaultBooleanFieldItem(((DataItemBOOL) item).getValue());
- case 11: // BYTE
- return new DefaultBooleanFieldItem(ArrayUtils.toObject(((DataItemBYTE) item).getValue()));
- case 12: // WORD
- return new DefaultBooleanFieldItem(ArrayUtils.toObject(((DataItemWORD) item).getValue()));
- case 13: // DWORD
- return new DefaultBooleanFieldItem(ArrayUtils.toObject(((DataItemDWORD) item).getValue()));
- case 14: // LWORD
- return new DefaultBooleanFieldItem(ArrayUtils.toObject(((DataItemLWORD) item).getValue()));
-
- case 21: // SINT
- return new DefaultByteFieldItem(((DataItemSINT) item).getValue());
- case 22: // USINT
- return new DefaultShortFieldItem(((DataItemUSINT) item).getValue());
- case 23: // INT
- return new DefaultShortFieldItem(((DataItemINT) item).getValue());
- case 24: // UINT
- return new DefaultIntegerFieldItem(((DataItemUINT) item).getValue());
- case 25: // DINT
- return new DefaultIntegerFieldItem(((DataItemDINT) item).getValue());
- case 26: // UDINT
- return new DefaultLongFieldItem(((DataItemUDINT) item).getValue());
- case 27: // LINT
- return new DefaultLongFieldItem(((DataItemLINT) item).getValue());
- case 28: // ULINT
- return new DefaultBigIntegerFieldItem(((DataItemULINT) item).getValue());
-
- case 31: // REAL
- return new DefaultFloatFieldItem(((DataItemREAL) item).getValue());
- case 32: // LREAL
- return new DefaultDoubleFieldItem(((DataItemLREAL) item).getValue());
-
-/* case 41: // CHAR
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 42: // WCHAR
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 43: // STRING
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());
- case 44: // WSTRING
- return new DefaultStringFieldItem(((DataItemCHAR) item).getValue());*/
-
- case 51: // Time
- return new DefaultLocalTimeFieldItem(((DataItemTime) item).getValue());
- case 52: // LTime
- return new DefaultLocalTimeFieldItem(((DataItemLTime) item).getValue());
- case 53: // Date
- return new DefaultLocalDateFieldItem(((DataItemDate) item).getValue());
- case 54: // TimeOfDay
- return new DefaultLocalTimeFieldItem(((DataItemTimeOfDay) item).getValue());
- case 55: // DateAndTime
- return new DefaultLocalDateTimeFieldItem(((DataItemDateAndTime) item).getValue());
-
- default:
- throw new NotImplementedException(
- "Processing of datatype " + field.getDataType() + " currently not supported");
- }
+ return DataItemIO.parse(readBuffer, field.getDataType().getDataProtocolId());
} catch (ParseException e) {
logger.warn(String.format("Error parsing field item of type: '%s'", field.getDataType().name()), e);
}
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/S7PlcFieldHandler.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/S7PlcFieldHandler.java
index a2cfd80..d781a10 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/S7PlcFieldHandler.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/S7PlcFieldHandler.java
@@ -21,22 +21,16 @@ package org.apache.plc4x.java.s7.readwrite.utils;
import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.api.model.PlcField;
+import org.apache.plc4x.java.api.value.*;
import org.apache.plc4x.java.spi.connection.DefaultPlcFieldHandler;
-import org.apache.plc4x.java.spi.messages.items.BaseDefaultFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultBigIntegerFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultBooleanFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultByteFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultDoubleFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultFloatFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultIntegerFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultLocalDateTimeFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultLongFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultShortFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultStringFieldItem;
import java.lang.reflect.InvocationTargetException;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.Arrays;
import java.util.BitSet;
import java.util.LinkedList;
import java.util.List;
@@ -52,7 +46,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
+ public PlcValue encodeBoolean(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// All of these types are declared as Bit or Bit-String types.
switch (s7Field.getDataType()) {
@@ -68,7 +62,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
+ public PlcValue encodeByte(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// All of these types are declared as Bit or Bit-String types.
switch (s7Field.getDataType()) {
@@ -83,7 +77,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
+ public PlcValue encodeShort(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case WORD:
@@ -96,7 +90,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
+ public PlcValue encodeInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case DWORD:
@@ -109,7 +103,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public PlcValue encodeBigInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case DWORD:
@@ -122,7 +116,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
+ public PlcValue encodeLong(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case LWORD:
@@ -135,7 +129,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
+ public PlcValue encodeFloat(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case REAL:
@@ -146,7 +140,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
+ public PlcValue encodeDouble(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case LREAL:
@@ -157,7 +151,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
+ public PlcValue encodeString(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case CHAR:
@@ -171,7 +165,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
+ public PlcValue encodeTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case TIME:
@@ -182,7 +176,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
+ public PlcValue encodeDate(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case DATE:
@@ -193,7 +187,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
+ public PlcValue encodeDateTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case DATE_AND_TIME:
@@ -203,7 +197,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
}
- private BaseDefaultFieldItem internalEncodeBoolean(PlcField field, Object[] values) {
+ private PlcValue internalEncodeBoolean(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case BOOL:
@@ -251,100 +245,104 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
" is not assignable to " + s7Field.getDataType().name() + " fields.");
}
}
- return new DefaultBooleanFieldItem(booleanValues.toArray(new Boolean[0]));
+ if(booleanValues.size() == 1) {
+ return new PlcBoolean(booleanValues.get(0));
+ } else {
+ return new PlcList(booleanValues);
+ }
}
- private BaseDefaultFieldItem internalEncodeInteger(PlcField field, Object[] values) {
+ private PlcValue internalEncodeInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// Initialize the constraints.
BigInteger minValue;
BigInteger maxValue;
- Class<? extends BaseDefaultFieldItem> fieldType;
+ Class<? extends PlcValue> fieldType;
Class<?> valueType;
Object[] castedValues;
switch (s7Field.getDataType()) {
case BYTE:
- minValue = BigInteger.valueOf((long) Byte.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Byte.MAX_VALUE);
- fieldType = DefaultByteFieldItem.class;
+ minValue = BigInteger.valueOf(Byte.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Byte.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Byte[].class;
castedValues = new Byte[values.length];
break;
case WORD:
- minValue = BigInteger.valueOf((long) Short.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Short.MAX_VALUE);
- fieldType = DefaultShortFieldItem.class;
+ minValue = BigInteger.valueOf(Short.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Short.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Short[].class;
castedValues = new Short[values.length];
break;
case DWORD:
- minValue = BigInteger.valueOf((long) Integer.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Integer.MAX_VALUE);
- fieldType = DefaultIntegerFieldItem.class;
+ minValue = BigInteger.valueOf(Integer.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Integer.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Integer[].class;
castedValues = new Integer[values.length];
break;
case LWORD:
minValue = BigInteger.valueOf(Long.MIN_VALUE);
maxValue = BigInteger.valueOf(Long.MAX_VALUE);
- fieldType = DefaultLongFieldItem.class;
+ fieldType = PlcLong.class;
valueType = Long[].class;
castedValues = new Long[values.length];
break;
case SINT:
- minValue = BigInteger.valueOf((long) Byte.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Byte.MAX_VALUE);
- fieldType = DefaultByteFieldItem.class;
+ minValue = BigInteger.valueOf(Byte.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Byte.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Byte[].class;
castedValues = new Byte[values.length];
break;
case USINT:
- minValue = BigInteger.valueOf((long) 0);
+ minValue = BigInteger.valueOf(0);
maxValue = BigInteger.valueOf((long) Byte.MAX_VALUE * 2);
- fieldType = DefaultShortFieldItem.class;
+ fieldType = PlcInteger.class;
valueType = Short[].class;
castedValues = new Short[values.length];
break;
case INT:
- minValue = BigInteger.valueOf((long) Short.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Short.MAX_VALUE);
- fieldType = DefaultShortFieldItem.class;
+ minValue = BigInteger.valueOf(Short.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Short.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Short[].class;
castedValues = new Short[values.length];
break;
case UINT:
- minValue = BigInteger.valueOf((long) 0);
+ minValue = BigInteger.valueOf(0);
maxValue = BigInteger.valueOf(((long) Short.MAX_VALUE) * 2);
- fieldType = DefaultIntegerFieldItem.class;
+ fieldType = PlcInteger.class;
valueType = Integer[].class;
castedValues = new Integer[values.length];
break;
case DINT:
- minValue = BigInteger.valueOf((long) Integer.MIN_VALUE);
- maxValue = BigInteger.valueOf((long) Integer.MAX_VALUE);
- fieldType = DefaultIntegerFieldItem.class;
+ minValue = BigInteger.valueOf(Integer.MIN_VALUE);
+ maxValue = BigInteger.valueOf(Integer.MAX_VALUE);
+ fieldType = PlcInteger.class;
valueType = Integer[].class;
castedValues = new Integer[values.length];
break;
case UDINT:
- minValue = BigInteger.valueOf((long) 0);
+ minValue = BigInteger.valueOf(0);
maxValue = BigInteger.valueOf(((long) Integer.MAX_VALUE) * 2);
- fieldType = DefaultLongFieldItem.class;
+ fieldType = PlcLong.class;
valueType = Long[].class;
castedValues = new Long[values.length];
break;
case LINT:
minValue = BigInteger.valueOf(Long.MIN_VALUE);
maxValue = BigInteger.valueOf(Long.MAX_VALUE);
- fieldType = DefaultLongFieldItem.class;
+ fieldType = PlcLong.class;
valueType = Long[].class;
castedValues = new Long[values.length];
break;
case ULINT:
- minValue = BigInteger.valueOf((long) 0);
- maxValue = BigInteger.valueOf(Long.MAX_VALUE).multiply(BigInteger.valueOf((long) 2));
- fieldType = DefaultBigIntegerFieldItem.class;
+ minValue = BigInteger.valueOf(0);
+ maxValue = BigInteger.valueOf(Long.MAX_VALUE).multiply(BigInteger.valueOf(2));
+ fieldType = PlcBigInteger.class;
valueType = BigInteger[].class;
castedValues = new BigInteger[values.length];
break;
@@ -391,33 +389,33 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
// Create the field item.
try {
- return fieldType.getDeclaredConstructor(valueType).newInstance(new Object[]{castedValues});
+ return fieldType.getDeclaredConstructor(valueType).newInstance(castedValues);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new PlcRuntimeException("Error initializing field class " + fieldType.getSimpleName(), e);
}
}
- private BaseDefaultFieldItem internalEncodeFloatingPoint(PlcField field, Object[] values) {
+ private PlcValue internalEncodeFloatingPoint(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// Initialize the constraints.
Double minValue;
Double maxValue;
- Class<? extends BaseDefaultFieldItem> fieldType;
+ Class<? extends PlcValue> fieldType;
Class<?> valueType;
Object[] castedValues;
switch (s7Field.getDataType()) {
case REAL:
minValue = (double) -Float.MAX_VALUE;
maxValue = (double) Float.MAX_VALUE;
- fieldType = DefaultFloatFieldItem.class;
+ fieldType = PlcFloat.class;
valueType = Float[].class;
castedValues = new Float[values.length];
break;
case LREAL:
minValue = -Double.MAX_VALUE;
maxValue = Double.MAX_VALUE;
- fieldType = DefaultDoubleFieldItem.class;
+ fieldType = PlcDouble.class;
valueType = Double[].class;
castedValues = new Double[values.length];
break;
@@ -457,13 +455,13 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
// Create the field item.
try {
- return fieldType.getDeclaredConstructor(valueType).newInstance(new Object[]{castedValues});
+ return fieldType.getDeclaredConstructor(valueType).newInstance(castedValues);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new PlcRuntimeException("Error initializing field class " + fieldType.getSimpleName(), e);
}
}
- private BaseDefaultFieldItem internalEncodeString(PlcField field, Object[] values) {
+ private PlcValue internalEncodeString(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// Initialize the constraints.
@@ -558,18 +556,25 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
// Create the field item.
- return new DefaultStringFieldItem(stringValues.toArray(new String[0]));
+ if(stringValues.size() == 1) {
+ return new PlcString(stringValues.get(0));
+ } else {
+ return new PlcList(stringValues);
+ }
}
- private BaseDefaultFieldItem internalEncodeTemporal(PlcField field, Object[] values) {
+ private PlcValue internalEncodeTemporal(PlcField field, Object[] values) {
+ if(values.length > 1) {
+ return new PlcList(Arrays.asList(values));
+ }
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case TIME:
- // TODO: I think I should implement this some time ...
+ return new PlcTime((LocalTime) values[0]);
case DATE:
- // TODO: I think I should implement this some time ...
+ return new PlcDate((LocalDate) values[0]);
case DATE_AND_TIME:
- return new DefaultLocalDateTimeFieldItem();
+ return new PlcDateTime((LocalDateTime) values[0]);
default:
throw new IllegalArgumentException(
"Cannot assign temporal values to " + s7Field.getDataType().name() + " fields.");
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
similarity index 87%
rename from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
rename to sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
index 60bf88a..8c38d0e 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/StaticHelper.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
@@ -16,9 +16,11 @@ 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.readwrite.utils;
+package org.apache.plc4x.java.s7.utils;
import org.apache.commons.lang3.NotImplementedException;
+import org.apache.plc4x.java.api.value.PlcTime;
+import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.spi.generation.ParseException;
import org.apache.plc4x.java.spi.generation.ReadBuffer;
import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -40,7 +42,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaTime(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaTime(WriteBuffer io, PlcValue value) {
}
@@ -54,7 +56,7 @@ public class StaticHelper {
}
}
- public static void serializeS5Time(WriteBuffer io, LocalTime value) {
+ public static void serializeS5Time(WriteBuffer io, PlcValue value) {
}
@@ -62,7 +64,7 @@ public class StaticHelper {
throw new NotImplementedException("LTime not implemented");
}
- public static void serializeTiaLTime(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaLTime(WriteBuffer io, PlcValue value) {
}
@@ -76,7 +78,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaTimeOfDay(WriteBuffer io, LocalTime value) {
+ public static void serializeTiaTimeOfDay(WriteBuffer io, PlcValue value) {
}
@@ -89,7 +91,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaDate(WriteBuffer io, LocalDate value) {
+ public static void serializeTiaDate(WriteBuffer io, PlcValue value) {
}
@@ -118,7 +120,7 @@ public class StaticHelper {
}
}
- public static void serializeTiaDateTime(WriteBuffer io, LocalDateTime value) {
+ public static void serializeTiaDateTime(WriteBuffer io, PlcValue value) {
}
diff --git a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/enrich/knxnetip/ets5/Ets5DataEnrichment.java b/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/enrich/knxnetip/ets5/Ets5DataEnrichment.java
index cfdc0ae..bf7714b 100644
--- a/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/enrich/knxnetip/ets5/Ets5DataEnrichment.java
+++ b/sandbox/test-streampipes-plc4x-processors/src/main/java/org/apache/plc4x/java/streampipes/processors/enrich/knxnetip/ets5/Ets5DataEnrichment.java
@@ -17,13 +17,11 @@ package org.apache.plc4x.java.streampipes.processors.enrich.knxnetip.ets5;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.plc4x.java.ets5.passive.*;
-import org.apache.plc4x.java.ets5.passive.io.KNXGroupAddressIO;
-import org.apache.plc4x.java.ets5.passive.io.KnxDatapointIO;
+import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.knxnetip.ets5.Ets5Parser;
import org.apache.plc4x.java.knxnetip.ets5.model.Ets5Model;
import org.apache.plc4x.java.knxnetip.ets5.model.GroupAddress;
+import org.apache.plc4x.java.knxnetip.readwrite.io.KnxDatapointIO;
import org.apache.plc4x.java.spi.generation.ParseException;
import org.apache.plc4x.java.spi.generation.ReadBuffer;
import org.streampipes.model.runtime.Event;
@@ -53,10 +51,8 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
// Get the raw group address data.
String destinationFieldValue = event.getFieldBySelector(this.destinationIdFieldName).getAsPrimitive().getAsString();
byte[] destinationGroupAddress = Hex.decodeHex(destinationFieldValue);
- ReadBuffer addressReadBuffer = new ReadBuffer(destinationGroupAddress);
// Decode the group address depending on the project settings.
- KNXGroupAddress destinationAddress =
- KNXGroupAddressIO.parse(addressReadBuffer, ets5Model.getGroupAddressType());
+ String destinationAddress = Ets5Model.parseGroupAddress(ets5Model.getGroupAddressType(), destinationGroupAddress);
final GroupAddress groupAddress = ets5Model.getGroupAddresses().get(destinationAddress);
// Get the raw HEX-encoded data
@@ -67,10 +63,10 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
if (groupAddress != null) {
// Decode the raw data.
- final KnxDatapoint datapoint = KnxDatapointIO.parse(rawDataReader, groupAddress.getType().getMainType(), groupAddress.getType().getSubType());
+ final PlcValue plcValue = KnxDatapointIO.parse(rawDataReader, groupAddress.getType().getMainType(), groupAddress.getType().getSubType());
// Serialize the decoded object to json
- final String jsonDatapoint = datapoint.toString(ToStringStyle.JSON_STYLE);
+ /*final String jsonDatapoint = datapoint.toString(ToStringStyle.JSON_STYLE);
// Add the additional properties.
event.addField(Ets5DataEnrichmentController.MAPPING_FIELD_DECODED_GROUP_ADDRESS,
@@ -89,9 +85,9 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
System.out.println(hexEncodedRawData + " decoded to: " + jsonDatapoint + " " + groupAddress.getType().getMainType() + " " + groupAddress.getType().getSubType());
//Event enrichedEvent = new Event()
- spOutputCollector.collect(event);
+ spOutputCollector.collect(event);*/
} else {
- System.out.println("Couldn't decode group address " + toGroupAddressString(destinationAddress));
+ System.out.println("Couldn't decode group address " + destinationAddress);
}
} catch (ParseException e) {
// Driver Decoding
@@ -107,18 +103,4 @@ public class Ets5DataEnrichment implements EventProcessor<Ets5DataEnrichmentPara
}
- private String toGroupAddressString(KNXGroupAddress groupAddress) {
- if(groupAddress instanceof KNXGroupAddress3Level) {
- KNXGroupAddress3Level castedAddress = (KNXGroupAddress3Level) groupAddress;
- return castedAddress.getMainGroup() + "/" + castedAddress.getMiddleGroup() + "/" + castedAddress.getSubGroup();
- } else if(groupAddress instanceof KNXGroupAddress2Level) {
- KNXGroupAddress2Level castedAddress = (KNXGroupAddress2Level) groupAddress;
- return castedAddress.getMainGroup() + "/" + castedAddress.getSubGroup();
- } else if(groupAddress instanceof KNXGroupAddressFreeLevel) {
- KNXGroupAddressFreeLevel castedAddress = (KNXGroupAddressFreeLevel) groupAddress;
- return castedAddress.getSubGroup() + "";
- }
- throw new RuntimeException("Unknown group address type");
- }
-
}