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