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));