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

cdutz pushed a commit to branch feature/ads-symbol-discovery
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 85a399075b734fea0170350176201a54657bb5d7
Author: Christofer Dutz <[email protected]>
AuthorDate: Wed Aug 24 08:54:32 2022 +0200

    chore(plc4j/api): Added new versions of PlcValueType, PlcResponseCode, 
PlcSubscriptionType. Adjusted PlcValue to return a PlcValueType.
---
 .../org/apache/plc4x/java/api/value/PlcValue.java  |   3 +
 .../apache/plc4x/java/mock/field/MockPlcValue.java |   6 +
 .../org/apache/plc4x/nifi/util/Plc4xCommon.java    |  16 +-
 .../java/spi/values/IEC61131ValueHandler.java      |   9 +-
 .../org/apache/plc4x/java/spi/values/PlcBOOL.java  |   6 +
 .../org/apache/plc4x/java/spi/values/PlcBYTE.java  |   6 +
 .../plc4x/java/spi/values/PlcBigDecimal.java       | 171 ---------------------
 .../plc4x/java/spi/values/PlcBigInteger.java       | 170 --------------------
 .../org/apache/plc4x/java/spi/values/PlcCHAR.java  |   6 +
 .../org/apache/plc4x/java/spi/values/PlcDATE.java  |   6 +
 .../plc4x/java/spi/values/PlcDATE_AND_TIME.java    |   6 +
 .../org/apache/plc4x/java/spi/values/PlcDINT.java  |   5 +
 .../org/apache/plc4x/java/spi/values/PlcDWORD.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcINT.java   |   6 +
 .../org/apache/plc4x/java/spi/values/PlcLINT.java  |   5 +
 .../org/apache/plc4x/java/spi/values/PlcLREAL.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcLTIME.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcLWORD.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcList.java  |   6 +
 .../org/apache/plc4x/java/spi/values/PlcNull.java  |   6 +
 .../org/apache/plc4x/java/spi/values/PlcREAL.java  |   6 +
 .../{PlcByteArray.java => PlcRawByteArray.java}    |  14 +-
 .../org/apache/plc4x/java/spi/values/PlcSINT.java  |   6 +
 .../apache/plc4x/java/spi/values/PlcSTRING.java    |   6 +
 .../apache/plc4x/java/spi/values/PlcStruct.java    |   6 +
 .../org/apache/plc4x/java/spi/values/PlcTIME.java  |   6 +
 .../plc4x/java/spi/values/PlcTIME_OF_DAY.java      |   6 +
 .../org/apache/plc4x/java/spi/values/PlcUDINT.java |   5 +
 .../org/apache/plc4x/java/spi/values/PlcUINT.java  |   6 +
 .../org/apache/plc4x/java/spi/values/PlcULINT.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcUSINT.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcWCHAR.java |   6 +
 .../org/apache/plc4x/java/spi/values/PlcWORD.java  |   6 +
 33 files changed, 174 insertions(+), 368 deletions(-)

diff --git 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValue.java 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValue.java
index 10a25f9ba..85c4bea57 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValue.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValue.java
@@ -19,6 +19,7 @@
 package org.apache.plc4x.java.api.value;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import org.apache.plc4x.java.api.types.PlcValueType;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -35,6 +36,8 @@ import java.util.Set;
  */
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
 public interface PlcValue {
+
+    PlcValueType getPlcValueType();
     
     Object getObject();
 
diff --git 
a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockPlcValue.java
 
b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockPlcValue.java
index 6168946cb..b3017f020 100644
--- 
a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockPlcValue.java
+++ 
b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockPlcValue.java
@@ -19,6 +19,7 @@
 package org.apache.plc4x.java.mock.field;
 
 import org.apache.plc4x.java.api.exceptions.PlcNotImplementedException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 import org.apache.plc4x.java.spi.values.PlcValueAdapter;
 
@@ -30,6 +31,11 @@ public class MockPlcValue extends PlcValueAdapter {
         this.values = values;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return null;
+    }
+
     public Object getObject(int index) {
         return values[index];
     }
diff --git 
a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
 
b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
index 88ef4ed78..bfc4cea56 100644
--- 
a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
+++ 
b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
@@ -28,8 +28,6 @@ import org.apache.avro.SchemaBuilder.FieldAssembler;
 import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.spi.values.PlcBOOL;
 import org.apache.plc4x.java.spi.values.PlcBYTE;
-import org.apache.plc4x.java.spi.values.PlcBigDecimal;
-import org.apache.plc4x.java.spi.values.PlcBigInteger;
 import org.apache.plc4x.java.spi.values.PlcBitString;
 import org.apache.plc4x.java.spi.values.PlcCHAR;
 import org.apache.plc4x.java.spi.values.PlcDATE;
@@ -78,11 +76,7 @@ public class Plc4xCommon {
                
                for (Map.Entry<String, ? extends PlcValue> entry : 
responseDataStructure.entrySet()) {
                        fieldName = entry.getKey();
-                       if (entry.getValue() instanceof PlcBigDecimal) {
-                               
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().floatType().endUnion().noDefault();
                              
-                       }else if (entry.getValue() instanceof PlcBigInteger) {
-                               
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().longType().endUnion().noDefault();
-                       }else if (entry.getValue() instanceof PlcBitString) {
+                       if (entry.getValue() instanceof PlcBitString) {
                                
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault();
                        }else if (entry.getValue() instanceof PlcBOOL) {
                                
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().booleanType().endUnion().noDefault();
@@ -164,10 +158,6 @@ public class Plc4xCommon {
                        PlcValue value = (PlcValue) valueOriginal;
                        if (value.isBoolean() && value instanceof PlcBOOL)
                                return value.getBoolean();
-                       else if (value.isBigInteger() && value instanceof 
PlcBigInteger)
-                               return value.getBigInteger();
-                       else if (value.isBigDecimal() && value instanceof 
PlcBigDecimal)
-                               return value.getBigDecimal();
                        else if (value.isByte() && value instanceof PlcBYTE)
                                return value.getByte();
                        else if (value.isDate() && value instanceof PlcDATE)
@@ -210,10 +200,6 @@ public class Plc4xCommon {
                PlcValue value = (PlcValue) valueOriginal;
                if(value.isBoolean() && value instanceof PlcBOOL)
                        return value.getBoolean();
-               else if (value.isBigInteger() && value instanceof PlcBigInteger)
-                       return value.getBigInteger();
-               else if (value.isBigDecimal() && value instanceof PlcBigDecimal)
-                       return value.getBigDecimal();
                else if (value.isByte() && value instanceof PlcBYTE)
                        return value.getByte();
                else if (value.isDate() && value instanceof PlcDATE)
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
index d9bc321da..e31a803de 100644
--- 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
+++ 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
@@ -24,7 +24,6 @@ import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.api.value.PlcValueHandler;
 
-import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.time.Duration;
 import java.time.LocalDate;
@@ -75,7 +74,7 @@ public class IEC61131ValueHandler implements PlcValueHandler {
             return PlcSINT.of(value);
         }
         if (value instanceof byte[]) {
-            return PlcByteArray.of(value);
+            return PlcRawByteArray.of(value);
         }
         if (value instanceof Short) {
             return PlcINT.of(value);
@@ -86,18 +85,12 @@ public class IEC61131ValueHandler implements 
PlcValueHandler {
         if (value instanceof Long) {
             return PlcLINT.of(value);
         }
-        if (value instanceof BigInteger) {
-            return new PlcBigInteger((BigInteger) value);
-        }
         if (value instanceof Float) {
             return PlcREAL.of(value);
         }
         if (value instanceof Double) {
             return PlcLREAL.of(value);
         }
-        if (value instanceof BigDecimal) {
-            return new PlcBigDecimal((BigDecimal) value);
-        }
         if (value instanceof Duration) {
             return new PlcTIME((Duration) value);
         }
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBOOL.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBOOL.java
index 8da778c82..6f8e4c031 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBOOL.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBOOL.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -153,6 +154,11 @@ public class PlcBOOL extends PlcIECValue<Boolean> {
         this.isNullable = true;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.BOOL;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBYTE.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBYTE.java
index 4a5be3dd2..13e9fddca 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBYTE.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBYTE.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -153,6 +154,11 @@ public class PlcBYTE extends PlcIECValue<Short> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.BYTE;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigDecimal.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigDecimal.java
deleted file mode 100644
index 7f02ea5a1..000000000
--- 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigDecimal.java
+++ /dev/null
@@ -1,171 +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
- *
- *   https://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.spi.values;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import org.apache.plc4x.java.spi.generation.SerializationException;
-import org.apache.plc4x.java.spi.generation.WriteBuffer;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class PlcBigDecimal extends PlcSimpleValue<BigDecimal> {
-
-    @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public PlcBigDecimal(@JsonProperty("value") BigDecimal value) {
-        super(value, true);
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBoolean() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean getBoolean() {
-        return (value != null) && !value.equals(BigDecimal.ZERO);
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isByte() {
-        return (value != null) && 
(value.compareTo(BigDecimal.valueOf(Byte.MAX_VALUE)) <= 0) && 
(value.compareTo(BigDecimal.valueOf(Byte.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public byte getByte() {
-        return value.byteValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isShort() {
-        return (value != null) && 
(value.compareTo(BigDecimal.valueOf(Short.MAX_VALUE)) <= 0) && 
(value.compareTo(BigDecimal.valueOf(Short.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public short getShort() {
-        return value.shortValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isInteger() {
-        return (value != null) && 
(value.compareTo(BigDecimal.valueOf(Integer.MAX_VALUE)) <= 0) && 
(value.compareTo(BigDecimal.valueOf(Integer.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public int getInteger() {
-        return value.intValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isLong() {
-        return (value != null) && 
(value.compareTo(BigDecimal.valueOf(Long.MAX_VALUE)) <= 0) && 
(value.compareTo(BigDecimal.valueOf(Long.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public long getLong() {
-        return value.longValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBigInteger() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public BigInteger getBigInteger() {
-        return value.toBigInteger();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isFloat() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public float getFloat() {
-        return value.floatValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isDouble() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public double getDouble() {
-        return value.doubleValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBigDecimal() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public BigDecimal getBigDecimal() {
-        return value;
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isString() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public String getString() {
-        return toString();
-    }
-
-    @Override
-    @JsonIgnore
-    public String toString() {
-        return value.toString();
-    }
-
-    @Override
-    public void serialize(WriteBuffer writeBuffer) throws 
SerializationException {
-        int scale = 32;
-        writeBuffer.writeBigDecimal(getClass().getSimpleName(), 
value.unscaledValue().bitLength() + scale, value);
-    }
-
-}
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigInteger.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigInteger.java
deleted file mode 100644
index 38345ebbf..000000000
--- 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBigInteger.java
+++ /dev/null
@@ -1,170 +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
- *
- *   https://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.spi.values;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import org.apache.plc4x.java.spi.generation.SerializationException;
-import org.apache.plc4x.java.spi.generation.WriteBuffer;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class PlcBigInteger extends PlcSimpleValue<BigInteger> {
-
-    @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public PlcBigInteger(@JsonProperty("value") BigInteger value) {
-        super(value, true);
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBoolean() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean getBoolean() {
-        return (value != null) && !value.equals(BigInteger.ZERO);
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isByte() {
-        return (value != null) && 
(value.compareTo(BigInteger.valueOf(Byte.MAX_VALUE)) <= 0) && 
(value.compareTo(BigInteger.valueOf(Byte.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public byte getByte() {
-        return value.byteValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isShort() {
-        return (value != null) && 
(value.compareTo(BigInteger.valueOf(Short.MAX_VALUE)) <= 0) && 
(value.compareTo(BigInteger.valueOf(Short.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public short getShort() {
-        return value.shortValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isInteger() {
-        return (value != null) && 
(value.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) <= 0) && 
(value.compareTo(BigInteger.valueOf(Integer.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public int getInteger() {
-        return value.intValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isLong() {
-        return (value != null) && 
(value.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) <= 0) && 
(value.compareTo(BigInteger.valueOf(Long.MIN_VALUE)) >= 0);
-    }
-
-    @Override
-    @JsonIgnore
-    public long getLong() {
-        return value.longValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBigInteger() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public BigInteger getBigInteger() {
-        return value;
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isFloat() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public float getFloat() {
-        return value.floatValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isDouble() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public double getDouble() {
-        return value.doubleValue();
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isBigDecimal() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public BigDecimal getBigDecimal() {
-        return new BigDecimal(value);
-    }
-
-    @Override
-    @JsonIgnore
-    public boolean isString() {
-        return true;
-    }
-
-    @Override
-    @JsonIgnore
-    public String getString() {
-        return toString();
-    }
-
-    @Override
-    @JsonIgnore
-    public String toString() {
-        return value.toString();
-    }
-
-    @Override
-    public void serialize(WriteBuffer writeBuffer) throws 
SerializationException {
-        writeBuffer.writeBigInteger(getClass().getSimpleName(), 
value.bitLength(), value);
-    }
-
-}
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcCHAR.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcCHAR.java
index 51379ab44..534a92628 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcCHAR.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcCHAR.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -189,6 +190,11 @@ public class PlcCHAR extends PlcIECValue<Short> {
         }
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.CHAR;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE.java
index c9c9ad8b5..25d2fef8a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -64,6 +65,11 @@ public class PlcDATE extends PlcSimpleValue<LocalDate> {
         super(LocalDateTime.ofInstant(Instant.ofEpochSecond(value), 
ZoneId.systemDefault()).toLocalDate(), true);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.DATE;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE_AND_TIME.java
 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE_AND_TIME.java
index 74f7646bb..0227160f4 100644
--- 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE_AND_TIME.java
+++ 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDATE_AND_TIME.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -53,6 +54,11 @@ public class PlcDATE_AND_TIME extends 
PlcSimpleValue<LocalDateTime> {
             Instant.ofEpochSecond(value), ZoneId.of("UTC")), true);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.DATE_AND_TIME;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDINT.java
index 367c20f01..60d7de564 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -135,6 +136,10 @@ public class PlcDINT extends PlcIECValue<Integer> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.DINT;
+    }
 
     @Override
     @JsonIgnore
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDWORD.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDWORD.java
index cc8a99a37..7e898b75f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDWORD.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcDWORD.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -153,6 +154,11 @@ public class PlcDWORD extends PlcIECValue<Long> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.DWORD;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcINT.java
index 8f9d1b38e..93f11acc2 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -139,6 +140,11 @@ public class PlcINT extends PlcIECValue<Short> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.INT;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLINT.java
index ce8f48074..60334edc5 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -132,6 +133,10 @@ public class PlcLINT extends PlcIECValue<Long> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.LINT;
+    }
 
     @Override
     @JsonIgnore
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLREAL.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLREAL.java
index 19d7cfa63..273e55394 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLREAL.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLREAL.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -122,6 +123,11 @@ public class PlcLREAL extends PlcIECValue<Double> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.LREAL;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLTIME.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLTIME.java
index 7e097c2e1..80645d465 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLTIME.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLTIME.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -62,6 +63,11 @@ public class PlcLTIME extends PlcSimpleValue<Duration> {
         super(Duration.of(value.longValue(), ChronoUnit.NANOS), true);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.LTIME;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLWORD.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLWORD.java
index 0f38b303d..b4e9819da 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLWORD.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcLWORD.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.spi.values;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -160,6 +161,11 @@ public class PlcLWORD extends PlcIECValue<BigInteger> {
         }
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.LWORD;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcList.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcList.java
index 0798ecd66..0d6871c78 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcList.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcList.java
@@ -20,6 +20,7 @@ package org.apache.plc4x.java.spi.values;
 
 import com.fasterxml.jackson.annotation.*;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -49,6 +50,11 @@ public class PlcList extends PlcValueAdapter {
         this.listItems = Collections.unmodifiableList(safelist);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.List;
+    }
+
     public void add(PlcValue value) {
         listItems.add(value);
     }
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcNull.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcNull.java
index 6b9bd866b..81306aa93 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcNull.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcNull.java
@@ -18,6 +18,7 @@
  */
 package org.apache.plc4x.java.spi.values;
 
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.api.value.PlcValue;
 
 import java.math.BigDecimal;
@@ -32,6 +33,11 @@ import java.util.Set;
 
 public class PlcNull implements PlcValue {
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.NULL;
+    }
+
     @Override
     public Object getObject() {
         return null;
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcREAL.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcREAL.java
index a6a78135f..31f10a857 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcREAL.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcREAL.java
@@ -20,6 +20,7 @@ package org.apache.plc4x.java.spi.values;
 
 import com.fasterxml.jackson.annotation.*;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -122,6 +123,11 @@ public class PlcREAL extends PlcIECValue<Float> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.REAL;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcByteArray.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcRawByteArray.java
similarity index 82%
rename from 
plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcByteArray.java
rename to 
plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcRawByteArray.java
index 2efd638f7..b8557ec99 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcByteArray.java
+++ 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcRawByteArray.java
@@ -23,25 +23,31 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.commons.codec.binary.Hex;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class PlcByteArray extends PlcIECValue<byte[]> {
+public class PlcRawByteArray extends PlcIECValue<byte[]> {
 
-    public static PlcByteArray of(Object value) {
+    public static PlcRawByteArray of(Object value) {
         if (value instanceof byte[]) {
-            return new PlcByteArray((byte[]) value);
+            return new PlcRawByteArray((byte[]) value);
         }
         throw new IllegalArgumentException("Only byte[] supported here");
     }
 
     @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public PlcByteArray(@JsonProperty("value")byte[] value) {
+    public PlcRawByteArray(@JsonProperty("value")byte[] value) {
         this.value = value;
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.RAW_BYTE_ARRAY;
+    }
+
     @Override
     @JsonIgnore
     public String toString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSINT.java
index 322e54106..00438b10d 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -141,6 +142,11 @@ public class PlcSINT extends PlcIECValue<Byte> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.SINT;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSTRING.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSTRING.java
index 5fd5eed35..b61f455ae 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSTRING.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcSTRING.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -50,6 +51,11 @@ public class PlcSTRING extends PlcSimpleValue<String> {
         }
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.STRING;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcStruct.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcStruct.java
index 603925e03..055ffb481 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcStruct.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcStruct.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
@@ -43,6 +44,11 @@ public class PlcStruct extends PlcValueAdapter {
         this.map = Collections.unmodifiableMap(map);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.Struct;
+    }
+
     @Override
     @JsonIgnore
     public int getLength() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME.java
index f77f7d07b..72e7bd623 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -57,6 +58,11 @@ public class PlcTIME extends PlcSimpleValue<Duration> {
         super(Duration.of(value, ChronoUnit.MILLIS), true);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.TIME;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME_OF_DAY.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME_OF_DAY.java
index 651764b39..90bc0c1a9 100644
--- 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME_OF_DAY.java
+++ 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcTIME_OF_DAY.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -51,6 +52,11 @@ public class PlcTIME_OF_DAY extends 
PlcSimpleValue<LocalTime> {
         super(LocalTime.ofNanoOfDay(value * 1000000), true);
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.TIME_OF_DAY;
+    }
+
     @Override
     @JsonIgnore
     public boolean isString() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUDINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUDINT.java
index 43a64f74e..e0056cdad 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUDINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUDINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -154,6 +155,10 @@ public class PlcUDINT extends PlcIECValue<Long> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.UDINT;
+    }
 
     @Override
     @JsonIgnore
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUINT.java
index 29cdd5e94..a3f3cb4e3 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -148,6 +149,11 @@ public class PlcUINT extends PlcIECValue<Integer> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.UINT;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcULINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcULINT.java
index 730b86a4e..a4a0e61e3 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcULINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcULINT.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.spi.values;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -159,6 +160,11 @@ public class PlcULINT extends PlcIECValue<BigInteger> {
         }
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.ULINT;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUSINT.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUSINT.java
index f32200dcd..0ed0f8d44 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUSINT.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcUSINT.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -151,6 +152,11 @@ public class PlcUSINT extends PlcIECValue<Short> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.USINT;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWCHAR.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWCHAR.java
index d853991c3..9af567db9 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWCHAR.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWCHAR.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -164,6 +165,11 @@ public class PlcWCHAR extends PlcIECValue<Integer> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.WCHAR;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {
diff --git 
a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWORD.java 
b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWORD.java
index b5ee2cab2..e868e9378 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWORD.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcWORD.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.types.PlcValueType;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 
@@ -149,6 +150,11 @@ public class PlcWORD extends PlcIECValue<Integer> {
         this.isNullable = false;
     }
 
+    @Override
+    public PlcValueType getPlcValueType() {
+        return PlcValueType.WORD;
+    }
+
     @Override
     @JsonIgnore
     public boolean isBoolean() {

Reply via email to