You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ld...@apache.org on 2020/11/30 17:36:57 UTC

[plc4x] 28/28: Update to latest develop.

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

ldywicki pushed a commit to branch feature/socketcan-0.8-preparations
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 7f63dc64140ed0f1196b1ed91219bb18a918c8c6
Author: Ɓukasz Dywicki <lu...@code-house.org>
AuthorDate: Mon Nov 30 18:35:42 2020 +0100

    Update to latest develop.
---
 .../apache/plc4x/java/can/CANOpenPlcDriver.java    |  7 +++
 .../org/apache/plc4x/java/can/CANPlcDriver.java    |  6 +++
 .../socketcan/io/CANOpenSocketCANFrameIO.java      |  2 +-
 .../plc4x/java/can/field/CANFieldHandler.java      |  3 +-
 .../plc4x/java/can/field/CANOpenFieldHandler.java  | 42 +----------------
 .../plc4x/java/can/helper/CANOpenHelper.java       |  2 +-
 .../java/can/protocol/CANOpenProtocolLogic.java    | 55 +++++++++++-----------
 7 files changed, 44 insertions(+), 73 deletions(-)

diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANOpenPlcDriver.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANOpenPlcDriver.java
index 3916a15..eb743cd 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANOpenPlcDriver.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANOpenPlcDriver.java
@@ -19,6 +19,7 @@
 package org.apache.plc4x.java.can;
 
 import io.netty.buffer.ByteBuf;
+import org.apache.plc4x.java.api.value.PlcValueHandler;
 import org.apache.plc4x.java.can.canopen.CANOpenFrame;
 import org.apache.plc4x.java.can.canopen.socketcan.io.CANOpenSocketCANFrameIO;
 import org.apache.plc4x.java.can.configuration.CANConfiguration;
@@ -31,6 +32,7 @@ import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer;
 import org.apache.plc4x.java.spi.connection.SingleProtocolStackConfigurer;
 import org.apache.plc4x.java.spi.optimizer.BaseOptimizer;
 import org.apache.plc4x.java.spi.optimizer.SingleFieldOptimizer;
+import org.apache.plc4x.java.spi.values.IEC61131ValueHandler;
 
 import java.util.function.ToIntFunction;
 
@@ -79,6 +81,11 @@ public class CANOpenPlcDriver extends GeneratedDriverBase<CANOpenFrame> {
     }
 
     @Override
+    protected PlcValueHandler getValueHandler() {
+        return new IEC61131ValueHandler();
+    }
+
+    @Override
     protected BaseOptimizer getOptimizer() {
         return new SingleFieldOptimizer();
     }
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
index c135280..bdf2858 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/CANPlcDriver.java
@@ -20,6 +20,7 @@ package org.apache.plc4x.java.can;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
+import org.apache.plc4x.java.api.value.PlcValueHandler;
 import org.apache.plc4x.java.can.configuration.CANConfiguration;
 import org.apache.plc4x.java.can.context.CANDriverContext;
 import org.apache.plc4x.java.can.field.CANFieldHandler;
@@ -65,6 +66,11 @@ public class CANPlcDriver extends GeneratedDriverBase<SocketCANFrame> {
     }
 
     @Override
+    protected PlcValueHandler getValueHandler() {
+        return null;
+    }
+
+    @Override
     protected ProtocolStackConfigurer<SocketCANFrame> getStackConfigurer() {
         return SingleProtocolStackConfigurer.builder(SocketCANFrame.class, SocketCANFrameIO.class)
             .withProtocol(CANProtocolLogic.class)
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/canopen/socketcan/io/CANOpenSocketCANFrameIO.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/canopen/socketcan/io/CANOpenSocketCANFrameIO.java
index 1b6dbf2..2175456 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/canopen/socketcan/io/CANOpenSocketCANFrameIO.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/canopen/socketcan/io/CANOpenSocketCANFrameIO.java
@@ -145,7 +145,7 @@ public class CANOpenSocketCANFrameIO implements MessageIO<CANOpenFrame, CANOpenF
 
     public static CANOpenService serviceId(int cobId) {
         // form 32 bit socketcan identifier
-        CANOpenService service = CANOpenService.valueOf((byte) (cobId >> 7));
+        CANOpenService service = CANOpenService.enumForValue((byte) (cobId >> 7));
         if (service == null) {
             for (CANOpenService val : CANOpenService.values()) {
                 if (val.getMin() > cobId && val.getMax() < cobId) {
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANFieldHandler.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANFieldHandler.java
index 2f2c3f8..a9abf19 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANFieldHandler.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANFieldHandler.java
@@ -20,10 +20,9 @@ package org.apache.plc4x.java.can.field;
 
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
 import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.spi.connection.DefaultPlcFieldHandler;
 import org.apache.plc4x.java.spi.connection.PlcFieldHandler;
 
-public class CANFieldHandler extends DefaultPlcFieldHandler implements PlcFieldHandler {
+public class CANFieldHandler implements PlcFieldHandler {
 
     @Override
     public PlcField createField(String fieldQuery) throws PlcInvalidFieldException {
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANOpenFieldHandler.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANOpenFieldHandler.java
index cb61195..1a6f3a0 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANOpenFieldHandler.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/field/CANOpenFieldHandler.java
@@ -19,54 +19,14 @@ under the License.
 package org.apache.plc4x.java.can.field;
 
 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.connection.PlcFieldHandler;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-public class CANOpenFieldHandler extends DefaultPlcFieldHandler implements PlcFieldHandler {
+public class CANOpenFieldHandler implements PlcFieldHandler {
 
     @Override
     public PlcField createField(String fieldQuery) throws PlcInvalidFieldException {
         return CANOpenField.of(fieldQuery);
     }
 
-    @Override
-    public PlcValue encodeString(PlcField field, Object[] values) {
-        CANOpenSDOField coField = (CANOpenSDOField) field;
-        String[] strings = (String[]) values;
-
-        switch (coField.getCanOpenDataType()) {
-            case VISIBLE_STRING:
-            case OCTET_STRING:
-            case UNICODE_STRING:
-                if (values.length == 1) {
-                    return new PlcString(strings[0]);
-                } else {
-                    return new PlcList(Arrays.stream(strings).map(PlcString::new).collect(Collectors.toList()));
-                }
-        }
-
-        throw new PlcRuntimeException("Invalid encoder for type " + coField.getCanOpenDataType().name());
-    }
-
-    @Override
-    public PlcValue encodeByte(PlcField field, Object[] values) {
-        List<PlcValue> resultSet = new ArrayList<>();
-        for (Object item : values) {
-            resultSet.add(PlcValues.of((Byte) item));
-        }
-
-        if (resultSet.size() == 1) {
-            return resultSet.get(0);
-        } else {
-            return new PlcList(resultSet);
-        }
-    }
 }
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java
index 3f1e22a..85209b6 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/helper/CANOpenHelper.java
@@ -14,7 +14,7 @@ import static org.apache.plc4x.java.spi.generation.StaticHelper.COUNT;
 public class CANOpenHelper {
 
     public static CANOpenService readFunction(short identifier) {
-        return CANOpenService.valueOf((byte) (identifier >> 7));
+        return CANOpenService.enumForValue((byte) (identifier >> 7));
     }
 
     public static int uploadPadding(SDOSegmentUploadResponse payload) {
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
index e8c9a0d..8c94e8f 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
@@ -28,14 +28,11 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 import org.apache.plc4x.java.api.model.PlcConsumerRegistration;
 import org.apache.plc4x.java.api.model.PlcField;
+import org.apache.plc4x.java.api.model.PlcSubscriptionField;
 import org.apache.plc4x.java.api.model.PlcSubscriptionHandle;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.api.types.PlcSubscriptionType;
-import org.apache.plc4x.java.api.value.PlcNull;
-import org.apache.plc4x.java.api.value.PlcStruct;
-import org.apache.plc4x.java.api.value.PlcUSINT;
 import org.apache.plc4x.java.api.value.PlcValue;
-import org.apache.plc4x.java.api.value.PlcValues;
 import org.apache.plc4x.java.can.canopen.CANOpenAbortException;
 import org.apache.plc4x.java.can.canopen.CANOpenFrame;
 import org.apache.plc4x.java.can.api.conversation.canopen.CANConversation;
@@ -71,18 +68,20 @@ import org.apache.plc4x.java.spi.generation.ReadBuffer;
 import org.apache.plc4x.java.spi.generation.WriteBuffer;
 import org.apache.plc4x.java.spi.messages.DefaultPlcReadResponse;
 import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionEvent;
+import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionRequest;
 import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionResponse;
+import org.apache.plc4x.java.spi.messages.DefaultPlcWriteRequest;
 import org.apache.plc4x.java.spi.messages.DefaultPlcWriteResponse;
-import org.apache.plc4x.java.spi.messages.InternalPlcReadRequest;
-import org.apache.plc4x.java.spi.messages.InternalPlcSubscriptionRequest;
-import org.apache.plc4x.java.spi.messages.InternalPlcWriteRequest;
 import org.apache.plc4x.java.spi.messages.PlcSubscriber;
 import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
 import org.apache.plc4x.java.spi.model.DefaultPlcConsumerRegistration;
+import org.apache.plc4x.java.spi.model.DefaultPlcSubscriptionField;
 import org.apache.plc4x.java.spi.model.DefaultPlcSubscriptionHandle;
-import org.apache.plc4x.java.spi.model.InternalPlcSubscriptionHandle;
-import org.apache.plc4x.java.spi.model.SubscriptionPlcField;
 import org.apache.plc4x.java.spi.transaction.RequestTransactionManager;
+import org.apache.plc4x.java.spi.values.PlcNull;
+import org.apache.plc4x.java.spi.values.PlcStruct;
+import org.apache.plc4x.java.spi.values.PlcUSINT;
+import org.apache.plc4x.java.spi.values.PlcValues;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -180,11 +179,11 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
         }
 
         if (field instanceof CANOpenSDOField) {
-            writeInternally((InternalPlcWriteRequest) writeRequest, (CANOpenSDOField) field, response);
+            writeInternally((DefaultPlcWriteRequest) writeRequest, (CANOpenSDOField) field, response);
             return response;
         }
         if (field instanceof CANOpenPDOField) {
-            writeInternally((InternalPlcWriteRequest) writeRequest, (CANOpenPDOField) field, response);
+            writeInternally((DefaultPlcWriteRequest) writeRequest, (CANOpenPDOField) field, response);
             return response;
         }
 
@@ -192,7 +191,7 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
         return response;
     }
 
-    private void writeInternally(InternalPlcWriteRequest writeRequest, CANOpenSDOField field, CompletableFuture<PlcWriteResponse> response) {
+    private void writeInternally(DefaultPlcWriteRequest writeRequest, CANOpenSDOField field, CompletableFuture<PlcWriteResponse> response) {
         final RequestTransactionManager.RequestTransaction transaction = tm.startRequest();
 
         String fieldName = writeRequest.getFieldNames().iterator().next();
@@ -218,7 +217,7 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
         transaction.submit(() -> download.execute(callback));
     }
 
-    private void writeInternally(InternalPlcWriteRequest writeRequest, CANOpenPDOField field, CompletableFuture<PlcWriteResponse> response) {
+    private void writeInternally(DefaultPlcWriteRequest writeRequest, CANOpenPDOField field, CompletableFuture<PlcWriteResponse> response) {
         PlcValue writeValue = writeRequest.getPlcValues().get(0);
 
         try {
@@ -259,42 +258,42 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
             return response;
         };
 
-        readInternally((InternalPlcReadRequest) readRequest, (CANOpenSDOField) field, response);
+        readInternally(readRequest, (CANOpenSDOField) field, response);
         return response;
     }
 
     @Override
     public CompletableFuture<PlcSubscriptionResponse> subscribe(PlcSubscriptionRequest request) {
-        InternalPlcSubscriptionRequest rq = (InternalPlcSubscriptionRequest) request;
+        DefaultPlcSubscriptionRequest rq = (DefaultPlcSubscriptionRequest) request;
 
         Map<String, ResponseItem<PlcSubscriptionHandle>> answers = new LinkedHashMap<>();
         DefaultPlcSubscriptionResponse response = new DefaultPlcSubscriptionResponse(rq, answers);
 
-        for (Map.Entry<String, SubscriptionPlcField> entry : rq.getSubscriptionPlcFieldMap().entrySet()) {
-            SubscriptionPlcField subscription = entry.getValue();
+        for (String key : rq.getFieldNames()) {
+            DefaultPlcSubscriptionField subscription = (DefaultPlcSubscriptionField) rq.getField(key);
             if (subscription.getPlcSubscriptionType() != PlcSubscriptionType.EVENT) {
-                answers.put(entry.getKey(), new ResponseItem<>(PlcResponseCode.UNSUPPORTED, null));
+                answers.put(key, new ResponseItem<>(PlcResponseCode.UNSUPPORTED, null));
             } else if ((subscription.getPlcField() instanceof CANOpenPDOField)) {
-                answers.put(entry.getKey(), new ResponseItem<>(PlcResponseCode.OK,
-                    new CANOpenSubscriptionHandle(this, entry.getKey(), (CANOpenPDOField) subscription.getPlcField())
+                answers.put(key, new ResponseItem<>(PlcResponseCode.OK,
+                    new CANOpenSubscriptionHandle(this, key, (CANOpenPDOField) subscription.getPlcField())
                 ));
             } else if ((subscription.getPlcField() instanceof CANOpenNMTField)) {
-                answers.put(entry.getKey(), new ResponseItem<>(PlcResponseCode.OK,
-                    new CANOpenSubscriptionHandle(this, entry.getKey(), (CANOpenNMTField) subscription.getPlcField())
+                answers.put(key, new ResponseItem<>(PlcResponseCode.OK,
+                    new CANOpenSubscriptionHandle(this, key, (CANOpenNMTField) subscription.getPlcField())
                 ));
             } else if ((subscription.getPlcField() instanceof CANOpenHeartbeatField)) {
-                answers.put(entry.getKey(), new ResponseItem<>(PlcResponseCode.OK,
-                    new CANOpenSubscriptionHandle(this, entry.getKey(), (CANOpenHeartbeatField) subscription.getPlcField())
+                answers.put(key, new ResponseItem<>(PlcResponseCode.OK,
+                    new CANOpenSubscriptionHandle(this, key, (CANOpenHeartbeatField) subscription.getPlcField())
                 ));
             } else {
-                answers.put(entry.getKey(), new ResponseItem<>(PlcResponseCode.INVALID_ADDRESS, null));
+                answers.put(key, new ResponseItem<>(PlcResponseCode.INVALID_ADDRESS, null));
             }
         }
 
         return CompletableFuture.completedFuture(response);
     }
 
-    private void readInternally(InternalPlcReadRequest readRequest, CANOpenSDOField field, CompletableFuture<PlcReadResponse> response) {
+    private void readInternally(PlcReadRequest readRequest, CANOpenSDOField field, CompletableFuture<PlcReadResponse> response) {
         String fieldName = readRequest.getFieldNames().iterator().next();
 
         final RequestTransactionManager.RequestTransaction transaction = tm.startRequest();
@@ -365,7 +364,7 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
             DefaultPlcConsumerRegistration registration = entry.getKey();
             Consumer<PlcSubscriptionEvent> consumer = entry.getValue();
 
-            for (InternalPlcSubscriptionHandle handler : registration.getAssociatedHandles()) {
+            for (PlcSubscriptionHandle handler : registration.getSubscriptionHandles()) {
                 CANOpenSubscriptionHandle handle = (CANOpenSubscriptionHandle) handler;
                 if (payload instanceof CANOpenPDOPayload) {
 
@@ -446,7 +445,7 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<CANOpenFrame> implem
 
     @Override
     public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> handles) {
-        final DefaultPlcConsumerRegistration consumerRegistration =new DefaultPlcConsumerRegistration(this, consumer, handles.toArray(new InternalPlcSubscriptionHandle[0]));
+        final DefaultPlcConsumerRegistration consumerRegistration =new DefaultPlcConsumerRegistration(this, consumer, handles.toArray(new DefaultPlcSubscriptionHandle[0]));
         consumers.put(consumerRegistration, consumer);
         return consumerRegistration;
     }