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 <[email protected]> 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; }
