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:07 UTC
[incubator-plc4x] 23/29: fixed compare to messup in
AdsPlcFieldHandler
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 4bd85c72fe1dfc4ce6fd87e50feeaa4f4dbaa648
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Sep 14 15:29:30 2018 +0200
fixed compare to messup in AdsPlcFieldHandler
---
.../apache/plc4x/java/ads/model/AdsDataType.java | 25 ++++++++++++----------
.../plc4x/java/ads/model/AdsPlcFieldHandler.java | 4 ++--
2 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsDataType.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsDataType.java
index e3bcfbf..72da37f 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsDataType.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsDataType.java
@@ -35,15 +35,17 @@ public enum AdsDataType {
BITARR16(16),
BITARR32(32),
INT8(8),
- INT16(16),
- INT32(32),
- INT64(64),
- UINT8(8),
- UINT16(16),
- UINT32(32),
- UINT64(64),
- FLOAT(32),
- DOUBLE(64),
+ INT16(Short.MIN_VALUE, Short.MAX_VALUE, 16),
+ INT32(Integer.MIN_VALUE, Integer.MAX_VALUE, 32),
+ INT64(Long.MIN_VALUE, Long.MAX_VALUE, 64),
+ UINT8(0, Short.MAX_VALUE, 8),
+ UINT16(0, Integer.MAX_VALUE, 16),
+ // TODO: max might be off here
+ UINT32(0, Double.MAX_VALUE, 32),
+ // TODO: max might be off here
+ UINT64(0, Double.MAX_VALUE, 64),
+ FLOAT(Float.MIN_VALUE, Float.MAX_VALUE, 32),
+ DOUBLE(Double.MIN_VALUE, Double.MAX_VALUE, 64),
// https://infosys.beckhoff.com/english.php?content=../content/1033/tcplccontrol/html/tcplcctrl_plc_data_types_overview.htm&id
// Standard Data Types
/**
@@ -148,7 +150,7 @@ public enum AdsDataType {
* Type Lower bound Upper bound Memory use
* REAL ~ -3.402823 x 1038 ~ 3.402823 x 1038 32 Bit
*/
- REAL(Float.MAX_VALUE, Float.MAX_VALUE, 32),
+ REAL(Float.MIN_VALUE, Float.MAX_VALUE, 32),
/**
* LREAL
* 64 Bit floating point data type. It is required to represent rational numbers.
@@ -495,8 +497,9 @@ public enum AdsDataType {
private final int targetByteSize;
+ // TODO: BYTE.MAX default might not be the best....
AdsDataType(int memoryUse) {
- this(-1, -1, memoryUse);
+ this(0, Byte.MAX_VALUE, memoryUse);
}
AdsDataType(double lowerBound, double upperBound, int memoryUse) {
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
index a7742a0..668f926 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
@@ -837,12 +837,12 @@ public class AdsPlcFieldHandler implements PlcFieldHandler {
" is not assignable to " + adsField.getAdsDataType().name() + " fields.");
}
- if (minValue.compareTo(new BigDecimal(floatingPointValues[i])) < 0) {
+ if (minValue.compareTo(new BigDecimal(floatingPointValues[i])) > 0) {
throw new IllegalArgumentException(
"Value of " + floatingPointValues[i] + " exceeds allowed minimum for type "
+ adsField.getAdsDataType().name() + " (min " + minValue.toString() + ")");
}
- if (maxValue.compareTo(new BigDecimal(floatingPointValues[i])) > 0) {
+ if (maxValue.compareTo(new BigDecimal(floatingPointValues[i])) < 0) {
throw new IllegalArgumentException(
"Value of " + floatingPointValues[i] + " exceeds allowed maximum for type "
+ adsField.getAdsDataType().name() + " (max " + maxValue.toString() + ")");