You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/01/14 19:14:57 UTC
[plc4x] branch develop updated (576d7ae -> b3b9ecd)
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git.
from 576d7ae feat(bacnet): added support for bacnet actions
new 9450441 feat(spi): Added highlight function to hex to highlight byte positions
new b3b9ecd test(plc4j/bacnet): workaround for failing test
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../knxnetip/readwrite/model/KnxManufacturer.go | 26 +++++++++++++++++-----
.../bacnetip/readwrite/utils/StaticHelper.java | 6 +++++
.../java/spi/generation/io/MyDefaultBitInput.java | 17 ++++++++++++--
.../org/apache/plc4x/java/spi/utils/hex/Hex.java | 11 ++++++++-
.../resources/protocols/bacnetip/bacnetip.mspec | 15 +++++++------
5 files changed, 60 insertions(+), 15 deletions(-)
[plc4x] 02/02: test(plc4j/bacnet): workaround for failing test
Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit b3b9ecdda2f6fc65e34f4d825042e27eee9127cd
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jan 14 20:14:50 2022 +0100
test(plc4j/bacnet): workaround for failing test
---
.../knxnetip/readwrite/model/KnxManufacturer.go | 26 +++++++++++++++++-----
.../bacnetip/readwrite/utils/StaticHelper.java | 6 +++++
.../resources/protocols/bacnetip/bacnetip.mspec | 15 +++++++------
3 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index 44eb02d..f15bb48 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -611,8 +611,9 @@ const (
KnxManufacturer_M_ACE_TECHNOLOGY KnxManufacturer = 573
KnxManufacturer_M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD KnxManufacturer = 574
KnxManufacturer_M_SUMAMO KnxManufacturer = 575
- KnxManufacturer_M_ABB___RESERVED KnxManufacturer = 576
- KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED KnxManufacturer = 577
+ KnxManufacturer_M_SVIT KnxManufacturer = 576
+ KnxManufacturer_M_ABB___RESERVED KnxManufacturer = 577
+ KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED KnxManufacturer = 578
)
var KnxManufacturerValues []KnxManufacturer
@@ -1196,6 +1197,7 @@ func init() {
KnxManufacturer_M_ACE_TECHNOLOGY,
KnxManufacturer_M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD,
KnxManufacturer_M_SUMAMO,
+ KnxManufacturer_M_SVIT,
KnxManufacturer_M_ABB___RESERVED,
KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
}
@@ -3325,10 +3327,14 @@ func (e KnxManufacturer) Number() uint16 {
}
case 576:
{ /* '576' */
- return 43954
+ return 634
}
case 577:
{ /* '577' */
+ return 43954
+ }
+ case 578:
+ { /* '578' */
return 43959
}
case 58:
@@ -5655,10 +5661,14 @@ func (e KnxManufacturer) Name() string {
}
case 576:
{ /* '576' */
- return "ABB - reserved"
+ return "SVIT"
}
case 577:
{ /* '577' */
+ return "ABB - reserved"
+ }
+ case 578:
+ { /* '578' */
return "Busch-Jaeger Elektro - reserved"
}
case 58:
@@ -6923,8 +6933,10 @@ func KnxManufacturerByValue(value uint16) KnxManufacturer {
case 575:
return KnxManufacturer_M_SUMAMO
case 576:
- return KnxManufacturer_M_ABB___RESERVED
+ return KnxManufacturer_M_SVIT
case 577:
+ return KnxManufacturer_M_ABB___RESERVED
+ case 578:
return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED
case 58:
return KnxManufacturer_M_DAETWYLER
@@ -8084,6 +8096,8 @@ func KnxManufacturerByName(value string) KnxManufacturer {
return KnxManufacturer_M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD
case "M_SUMAMO":
return KnxManufacturer_M_SUMAMO
+ case "M_SVIT":
+ return KnxManufacturer_M_SVIT
case "M_ABB___RESERVED":
return KnxManufacturer_M_ABB___RESERVED
case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -9276,6 +9290,8 @@ func (e KnxManufacturer) name() string {
return "M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD"
case KnxManufacturer_M_SUMAMO:
return "M_SUMAMO"
+ case KnxManufacturer_M_SVIT:
+ return "M_SVIT"
case KnxManufacturer_M_ABB___RESERVED:
return "M_ABB___RESERVED"
case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
index 14c8527..9155566 100644
--- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
@@ -215,6 +215,8 @@ public class StaticHelper {
}
// We need to reset our reader to the position we read before
// TODO: maybe we reset to much here because pos is byte based
+ // we consume the leftover bits before we reset to avoid trouble // TODO: we really need bit precision on resetting
+ readBuffer.readUnsignedInt(6);
readBuffer.reset(readBuffer.getPos() - 2);
return readBuffer.readUnsignedInt("proprietaryObjectType", 10);
}
@@ -260,6 +262,8 @@ public class StaticHelper {
case ACCESS_USER:
case ACCESS_ZONE:
case ACCUMULATOR:
+ // TODO: temporary
+ return BACnetDataType.BACNET_PROPERTY_IDENTIFIER;
case ALERT_ENROLLMENT:
// TODO: temporary
return BACnetDataType.BACNET_PROPERTY_IDENTIFIER;
@@ -306,6 +310,8 @@ public class StaticHelper {
case LIFT:
case LIGHTING_OUTPUT:
case LOAD_CONTROL:
+ // TODO: temporary // FIXME: this is just so tags get consumed
+ return BACnetDataType.ENUMERATED;
case LOOP:
case MULTI_STATE_INPUT:
case MULTI_STATE_OUTPUT:
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 2d48fe2..b97b38c 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -255,7 +255,7 @@
[simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
[simple BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmed ]
[simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
- [simple BACnetPropertyValues('4', 'monitoredObjectIdentifier.objectType') listOfValues ]
+ [simple BACnetPropertyValues('4', 'monitoredObjectIdentifier.objectType') listOfValues ]
]
['0x02' BACnetConfirmedServiceRequestConfirmedEventNotification // Spec complete
[simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') processIdentifier ]
@@ -270,7 +270,7 @@
[optional BACnetContextTagBoolean('9', 'BACnetDataType.BOOLEAN') ackRequired ]
[optional BACnetContextTagEventState('10', 'BACnetDataType.EVENT_STATE') fromState ]
[simple BACnetContextTagEventState('11', 'BACnetDataType.EVENT_STATE') toState ]
- [optional BACnetNotificationParameters('12', 'eventObjectIdentifier.objectType') eventValues ]
+ [optional BACnetNotificationParameters('12', 'eventObjectIdentifier.objectType') eventValues ]
]
['0x04' BACnetConfirmedServiceRequestGetEnrollmentSummary
@@ -381,7 +381,7 @@
[simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredDeviceIdentifier ]
[simple BACnetContextTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
[simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
- [simple BACnetPropertyValues('4', 'monitoredObjectIdentifier.objectType') listOfValues ]
+ [simple BACnetPropertyValues('4', 'monitoredObjectIdentifier.objectType') listOfValues ]
]
['0x03' BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
]
@@ -448,10 +448,10 @@
]
['0x0C' BACnetServiceAckReadProperty
- [simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') objectIdentifier ]
- [simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
- [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER') arrayIndex ]
- [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier') values ]
+ [simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') objectIdentifier ]
+ [simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
+ [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER') arrayIndex ]
+ [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier') values ]
]
['0x0E' BACnetServiceAckReadPropertyMultiple
@@ -1306,6 +1306,7 @@
contextTag 'isContextTag' ]
[optional BACnetConstructedData('peekedTagNumber', 'objectType', 'propertyIdentifier')
constructedData 'isConstructedData' ]
+ [validation 'isApplicationTag || isContextTag || isConstructedData' "BACnetConstructedDataElement could not parse anything"]
]
[enum uint 16 BVLCResultCode
[plc4x] 01/02: feat(spi): Added highlight function to hex to highlight byte positions
Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 945044127ca30db37ac6f2fdb9c8945800489063
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jan 14 19:34:05 2022 +0100
feat(spi): Added highlight function to hex to highlight byte positions
---
.../plc4x/java/spi/generation/io/MyDefaultBitInput.java | 17 +++++++++++++++--
.../java/org/apache/plc4x/java/spi/utils/hex/Hex.java | 11 ++++++++++-
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/io/MyDefaultBitInput.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/io/MyDefaultBitInput.java
index 352418c..7b0e272 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/io/MyDefaultBitInput.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/io/MyDefaultBitInput.java
@@ -20,6 +20,9 @@ package org.apache.plc4x.java.spi.generation.io;
import com.github.jinahya.bit.io.ArrayByteInput;
import com.github.jinahya.bit.io.DefaultBitInput;
+import org.apache.plc4x.java.spi.utils.hex.Hex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
@@ -28,6 +31,8 @@ import java.io.IOException;
*/
public class MyDefaultBitInput extends DefaultBitInput<ArrayByteInput> {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MyDefaultBitInput.class);
+
public MyDefaultBitInput(ArrayByteInput delegate) {
super(delegate);
}
@@ -38,11 +43,19 @@ public class MyDefaultBitInput extends DefaultBitInput<ArrayByteInput> {
}
public void reset(int pos) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("Before\n{}", Hex.dump(delegate.getSource(), Hex.DefaultWidth, delegate.getIndex()));
+ }
try {
- align(1);
+ long align = align(1);
+ LOGGER.debug("aligned {}", align);
} catch (IOException e) {
- e.printStackTrace();
+ throw new RuntimeException(e);
}
delegate.setIndex(pos);
+ LOGGER.debug("set to index {}", pos);
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("After\n{}", Hex.dump(delegate.getSource(), Hex.DefaultWidth, pos));
+ }
}
}
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/hex/Hex.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/hex/Hex.java
index 63b6394..04e14a6 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/hex/Hex.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/hex/Hex.java
@@ -29,6 +29,8 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
public class Hex {
@@ -75,10 +77,11 @@ public class Hex {
}
// DumpFixedWidth dumps hex as hex string. Min width of string returned is 18 up to supplied charWidth
- public static String dump(byte[] data, int desiredCharWidth) {
+ public static String dump(byte[] data, int desiredCharWidth, int... highlights) {
if (data == null || data.length < 1) {
return "";
}
+ Set<Integer> highlightsSet = Arrays.stream(highlights).boxed().collect(Collectors.toSet());
// We copy the array to avoid mutations
data = Arrays.copyOf(data, data.length);
StringBuilder hexString = new StringBuilder();
@@ -91,7 +94,13 @@ public class Hex {
for (int columnIndex = 0; columnIndex < maxBytesPerRow; columnIndex++) {
int absoluteIndex = byteIndex + columnIndex;
if (absoluteIndex < data.length) {
+ if(highlightsSet.contains(absoluteIndex)) {
+ hexString.append("\033[0;31m");
+ }
hexString.append(String.format("%02x ", data[absoluteIndex]));
+ if(highlightsSet.contains(absoluteIndex)) {
+ hexString.append("\033[0m");
+ }
} else {
// align with empty byte representation
hexString.append(StringUtils.repeat(" ", byteWidth));