You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/10/29 12:14:52 UTC
(plc4x) 01/01: feat(plc4j): Rewrote the configuration for all java drivers to generally support overwriting (WIP)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/transport-configuration-rework
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit af88a3786ef6d877fd5c00c5db8e211bded7064a
Author: Christofer Dutz <cd...@apache.org>
AuthorDate: Sun Oct 29 13:14:42 2023 +0100
feat(plc4j): Rewrote the configuration for all java drivers to generally support overwriting (WIP)
---
.../abeth/configuration/AbEthConfiguration.java | 26 ++++--
.../AbEthTcpTransportConfiguration.java} | 18 ++--
.../java/ads/configuration/AdsConfiguration.java | 47 +++++++---
.../AdsTcpTransportConfiguration.java} | 18 ++--
.../configuration/BacNetIpConfiguration.java | 100 ++++++++-------------
.../BacNetPcapReplayTransportConfiguration.java | 58 ++++++++++++
.../BacNetRawSocketTransportConfiguration.java | 58 ++++++++++++
.../BacNetUdpTransportConfiguration.java} | 19 ++--
.../java/cbus/configuration/CBusConfiguration.java | 25 +++++-
.../CBusTcpTransportConfiguration.java} | 18 ++--
.../configuration/GenericCANConfiguration.java | 27 +++++-
.../configuration/CANOpenConfiguration.java | 27 +++++-
.../eip/base/configuration/EIPConfiguration.java | 26 +++++-
.../EipTcpTransportConfiguration.java} | 18 ++--
.../logix/configuration/LogixConfiguration.java | 4 -
.../configuration/FirmataConfiguration.java | 30 +++++--
.../configuration/Iec608705014Configuration.java | 30 +++++--
.../Iec608705014TcpTransportConfiguration.java} | 18 ++--
.../configuration/KnxNetIpConfiguration.java | 66 +++++++-------
.../KnxNetIpPcapReplayTransportConfiguration.java} | 27 +++---
.../KnxNetIpRawSocketTransportConfiguration.java} | 27 +++---
.../KnxNetIpUdpTransportConfiguration.java} | 18 ++--
plc4j/drivers/modbus/pom.xml | 1 -
.../ascii/config/ModbusAsciiConfiguration.java | 41 +++++++--
.../modbus/rtu/config/ModbusRtuConfiguration.java | 41 +++++++--
.../modbus/tcp/config/ModbusTcpConfiguration.java | 26 ++++--
.../config/ModbusTcpTransportConfiguration.java} | 18 ++--
.../java/opcua/config/OpcuaConfiguration.java | 26 +++++-
.../config/OpenProtocolConfiguration.java | 26 ++++--
... => OpenProtocolTcpTransportConfiguration.java} | 14 +--
.../java/plc4x/config/Plc4xConfiguration.java | 26 ++++--
.../config/Plc4xTcpTransportConfiguration.java} | 18 ++--
.../profinet/config/ProfinetConfiguration.java | 45 +++++-----
.../ProfinetRawSocketTransportConfiguration.java} | 19 ++--
.../profinet/config/ProfinetConfiguration.java | 52 +++++------
.../ProfinetRawSocketTransportConfiguration.java} | 19 ++--
.../readwrite/configuration/S7Configuration.java | 29 +++---
.../S7TcpTransportConfiguration.java} | 18 ++--
.../ComplexConfigurationParameter.java} | 21 ++---
...plexConfigurationParameterDefaultOverride.java} | 15 +---
...lexConfigurationParameterRequiredOverride.java} | 15 +---
.../transport/TransportConfigurationProvider.java} | 16 +---
.../can/DefaultCANTransportConfiguration.java} | 16 +---
...> DefaultPcapReplayTransportConfiguration.java} | 21 +++--
.../PcapReplayTransportConfiguration.java | 11 +--
.../pcap/DefaultPcapTransportConfiguration.java} | 38 ++++----
.../transport/pcap/PcapTransportConfiguration.java | 12 +--
.../DefaultRawSocketTransportConfiguration.java} | 33 +++----
.../rawsocket/RawSocketTransportConfiguration.java | 10 +--
.../DefaultSerialTransportConfiguration.java | 79 ++++++++++++++++
.../serial/SerialTransportConfiguration.java | 13 +--
.../tcp/DefaultTcpTransportConfiguration.java | 67 ++++++++++++++
.../transport/tcp/TcpTransportConfiguration.java | 12 +--
.../udp/DefaultUdpTransportConfiguration.java | 26 +++---
.../java/df1/configuration/Df1Configuration.java | 42 ++++++++-
55 files changed, 1015 insertions(+), 556 deletions(-)
diff --git a/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java
index f7ae054b5a..d929c1bfe7 100644
--- a/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java
+++ b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java
@@ -18,16 +18,20 @@
*/
package org.apache.plc4x.java.abeth.configuration;
-import org.apache.plc4x.java.abeth.AbEthDriver;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class AbEthConfiguration implements Configuration, TcpTransportConfiguration {
+public class AbEthConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter
private int station;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private AbEthTcpTransportConfiguration tcpTransportConfiguration;
+
public int getStation() {
return station;
}
@@ -36,9 +40,21 @@ public class AbEthConfiguration implements Configuration, TcpTransportConfigurat
this.station = station;
}
+ public AbEthTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(AbEthTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return AbEthDriver.AB_ETH_PORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthTcpTransportConfiguration.java
similarity index 66%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthTcpTransportConfiguration.java
index fe08010f72..39e79e7734 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.abeth.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.abeth.AbEthDriver;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class AbEthTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return AbEthDriver.AB_ETH_PORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsConfiguration.java b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsConfiguration.java
index 2d74033c81..205984ad7e 100644
--- a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsConfiguration.java
+++ b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsConfiguration.java
@@ -19,22 +19,20 @@
package org.apache.plc4x.java.ads.configuration;
import org.apache.commons.lang3.ArrayUtils;
-import org.apache.plc4x.java.ads.readwrite.AdsConstants;
import org.apache.plc4x.java.ads.readwrite.AmsNetId;
import org.apache.plc4x.java.spi.configuration.Configuration;
import org.apache.plc4x.java.spi.configuration.ConfigurationParameterConverter;
-import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.spi.configuration.annotations.ParameterConverter;
-import org.apache.plc4x.java.spi.configuration.annotations.Required;
+import org.apache.plc4x.java.spi.configuration.annotations.*;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.serial.SerialTransportConfiguration;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.serial.DefaultSerialTransportConfiguration;
import java.util.regex.Pattern;
import java.util.stream.Stream;
-public class AdsConfiguration implements Configuration, TcpTransportConfiguration, SerialTransportConfiguration {
+public class AdsConfiguration implements Configuration, TransportConfigurationProvider {
public static final Pattern AMS_NET_ID_PATTERN =
Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
@@ -69,6 +67,12 @@ public class AdsConfiguration implements Configuration, TcpTransportConfiguratio
@BooleanDefaultValue(true)
protected boolean loadSymbolAndDataTypeTables;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private AdsTcpTransportConfiguration tcpTransportConfiguration;
+
+ @ComplexConfigurationParameter(prefix = "serial", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultSerialTransportConfiguration serialTransportConfiguration;
+
public AmsNetId getTargetAmsNetId() {
return targetAmsNetId;
}
@@ -125,14 +129,20 @@ public class AdsConfiguration implements Configuration, TcpTransportConfiguratio
this.loadSymbolAndDataTypeTables = loadSymbolAndDataTypeTables;
}
- @Override
- public int getDefaultPort() {
- return AdsConstants.ADSTCPDEFAULTPORT;
+ public AdsTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
}
- @Override
- public int getBaudRate() {
- return 57600;
+ public void setTcpTransportConfiguration(AdsTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
+ public DefaultSerialTransportConfiguration getSerialTransportConfiguration() {
+ return serialTransportConfiguration;
+ }
+
+ public void setSerialTransportConfiguration(DefaultSerialTransportConfiguration serialTransportConfiguration) {
+ this.serialTransportConfiguration = serialTransportConfiguration;
}
public static class AmsNetIdConverter implements ConfigurationParameterConverter<AmsNetId> {
@@ -157,4 +167,15 @@ public class AdsConfiguration implements Configuration, TcpTransportConfiguratio
return new AmsNetId(shorts[0], shorts[1], shorts[2], shorts[3], shorts[4], shorts[5]);
}
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ case "serial":
+ return serialTransportConfiguration;
+ }
+ return null;
+ }
+
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsTcpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsTcpTransportConfiguration.java
index fe08010f72..c77c5e8b5d 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.ads.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.ads.readwrite.AdsConstants;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class AdsTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return AdsConstants.ADSTCPDEFAULTPORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetIpConfiguration.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetIpConfiguration.java
index 46cfab6793..1c46dc5446 100644
--- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetIpConfiguration.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetIpConfiguration.java
@@ -18,18 +18,14 @@
*/
package org.apache.plc4x.java.bacnetip.configuration;
-import org.apache.plc4x.java.bacnetip.readwrite.BacnetConstants;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameterDefaultOverride;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.spi.configuration.annotations.defaults.DoubleDefaultValue;
-import org.apache.plc4x.java.spi.configuration.annotations.defaults.StringDefaultValue;
-import org.apache.plc4x.java.transport.pcapreplay.PcapReplayTransportConfiguration;
-import org.apache.plc4x.java.transport.rawsocket.RawSocketTransportConfiguration;
-import org.apache.plc4x.java.transport.udp.UdpTransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
-import org.pcap4j.packet.Dot1qVlanTagPacket;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class BacNetIpConfiguration implements Configuration, UdpTransportConfiguration, RawSocketTransportConfiguration, PcapReplayTransportConfiguration {
+public class BacNetIpConfiguration implements Configuration, TransportConfigurationProvider {
// Path to a single EDE file.
@ConfigurationParameter("ede-file-path")
@@ -39,18 +35,18 @@ public class BacNetIpConfiguration implements Configuration, UdpTransportConfigu
@ConfigurationParameter("ede-directory-path")
private String edeDirectoryPath;
- // The speed in which the pcap file is replayed:
- // - 1.0 being the original speed
- // - 0 being as fast as possible (no delays between the packets)
- // - 0.5 being double speed
- // - 2.0 being half speed
- @ConfigurationParameter("pcap-replay-speed")
- @DoubleDefaultValue(1.0F)
- private double pcapReplaySpeed;
+ @ComplexConfigurationParameter(prefix = "udp", defaultOverrides = {}, requiredOverrides = {})
+ private BacNetUdpTransportConfiguration udpTransportConfiguration;
- @ConfigurationParameter("filter")
- @StringDefaultValue("")
- private String filter = "";
+ @ComplexConfigurationParameter(prefix = "pcap", defaultOverrides = {
+ @ComplexConfigurationParameterDefaultOverride(name = "support-vlans", value = "true")
+ }, requiredOverrides = {})
+ private BacNetPcapReplayTransportConfiguration pcapReplayTransportConfiguration;
+
+ @ComplexConfigurationParameter(prefix = "raw", defaultOverrides = {
+ @ComplexConfigurationParameterDefaultOverride(name = "resolve-mac-address", value = "true")
+ }, requiredOverrides = {})
+ private BacNetRawSocketTransportConfiguration rawSocketTransportConfiguration;
public String getEdeFilePath() {
return edeFilePath;
@@ -68,61 +64,41 @@ public class BacNetIpConfiguration implements Configuration, UdpTransportConfigu
this.edeDirectoryPath = edeDirectoryPath;
}
- public void setPcapReplaySpeed(double pcapReplaySpeed) {
- this.pcapReplaySpeed = pcapReplaySpeed;
+ public BacNetUdpTransportConfiguration getUdpTransportConfiguration() {
+ return udpTransportConfiguration;
}
- @Override
- public float getReplaySpeedFactor() {
- return (float) pcapReplaySpeed;
- }
-
- @Override
- public boolean getSupportVlans() {
- return true;
+ public void setUdpTransportConfiguration(BacNetUdpTransportConfiguration udpTransportConfiguration) {
+ this.udpTransportConfiguration = udpTransportConfiguration;
}
- @Override
- public int getDefaultPort() {
- return BacnetConstants.BACNETUDPDEFAULTPORT;
+ public BacNetPcapReplayTransportConfiguration getPcapReplayTransportConfiguration() {
+ return pcapReplayTransportConfiguration;
}
- @Override
- public Integer getProtocolId() {
- return null;
+ public void setPcapReplayTransportConfiguration(BacNetPcapReplayTransportConfiguration pcapReplayTransportConfiguration) {
+ this.pcapReplayTransportConfiguration = pcapReplayTransportConfiguration;
}
- @Override
- public String getFilter() {
- return filter;
+ public BacNetRawSocketTransportConfiguration getRawSocketTransportConfiguration() {
+ return rawSocketTransportConfiguration;
}
- public void setFilter(String filter) {
- this.filter = filter;
+ public void setRawSocketTransportConfiguration(BacNetRawSocketTransportConfiguration rawSocketTransportConfiguration) {
+ this.rawSocketTransportConfiguration = rawSocketTransportConfiguration;
}
- /**
- * Packet handler to use when running in PCAP mode.
- * In this case all packets are Ethernet frames and we need to first get the
- * IP packet and then the UDP packet and then the raw data from that.
- *
- * @return payload of the packet.
- */
@Override
- public PacketHandler getPcapPacketHandler() {
- return packet -> {
- // If it's a VLan packet, we need to go one level deeper.
- if (packet.getPayload() instanceof Dot1qVlanTagPacket) {
- return packet.getPayload().getPayload().getPayload().getPayload().getRawData();
- }
- // This is a normal udp packet.
- else {
- if ((packet.getPayload() != null) && (packet.getPayload().getPayload() != null) && (packet.getPayload().getPayload().getPayload() != null)) {
- return packet.getPayload().getPayload().getPayload().getRawData();
- }
- }
- return null;
- };
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "udp":
+ return udpTransportConfiguration;
+ case "raw":
+ return rawSocketTransportConfiguration;
+ case "pcap":
+ return pcapReplayTransportConfiguration;
+ }
+ return null;
}
}
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetPcapReplayTransportConfiguration.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetPcapReplayTransportConfiguration.java
new file mode 100644
index 0000000000..a2e61e8ead
--- /dev/null
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetPcapReplayTransportConfiguration.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.plc4x.java.bacnetip.configuration;
+
+import org.apache.plc4x.java.bacnetip.readwrite.BacnetConstants;
+import org.apache.plc4x.java.transport.pcapreplay.DefaultPcapReplayTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+import org.pcap4j.packet.Dot1qVlanTagPacket;
+
+public class BacNetPcapReplayTransportConfiguration extends DefaultPcapReplayTransportConfiguration {
+
+ @Override
+ public int getDefaultPort() {
+ return BacnetConstants.BACNETUDPDEFAULTPORT;
+ }
+
+ /**
+ * Packet handler to use when running in PCAP mode.
+ * In this case all packets are Ethernet frames and we need to first get the
+ * IP packet and then the UDP packet and then the raw data from that.
+ *
+ * @return payload of the packet.
+ */
+ @Override
+ public PacketHandler getPcapPacketHandler() {
+ return packet -> {
+ // If it's a VLan packet, we need to go one level deeper.
+ if (packet.getPayload() instanceof Dot1qVlanTagPacket) {
+ return packet.getPayload().getPayload().getPayload().getPayload().getRawData();
+ }
+ // This is a normal udp packet.
+ else {
+ if ((packet.getPayload() != null) && (packet.getPayload().getPayload() != null) && (packet.getPayload().getPayload().getPayload() != null)) {
+ return packet.getPayload().getPayload().getPayload().getRawData();
+ }
+ }
+ return null;
+ };
+ }
+
+}
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetRawSocketTransportConfiguration.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetRawSocketTransportConfiguration.java
new file mode 100644
index 0000000000..f93789ce9a
--- /dev/null
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetRawSocketTransportConfiguration.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.plc4x.java.bacnetip.configuration;
+
+import org.apache.plc4x.java.bacnetip.readwrite.BacnetConstants;
+import org.apache.plc4x.java.transport.rawsocket.DefaultRawSocketTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+import org.pcap4j.packet.Dot1qVlanTagPacket;
+
+public class BacNetRawSocketTransportConfiguration extends DefaultRawSocketTransportConfiguration {
+
+ @Override
+ public int getDefaultPort() {
+ return BacnetConstants.BACNETUDPDEFAULTPORT;
+ }
+
+ /**
+ * Packet handler to use when running in PCAP mode.
+ * In this case all packets are Ethernet frames and we need to first get the
+ * IP packet and then the UDP packet and then the raw data from that.
+ *
+ * @return payload of the packet.
+ */
+ @Override
+ public PacketHandler getPcapPacketHandler() {
+ return packet -> {
+ // If it's a VLan packet, we need to go one level deeper.
+ if (packet.getPayload() instanceof Dot1qVlanTagPacket) {
+ return packet.getPayload().getPayload().getPayload().getPayload().getRawData();
+ }
+ // This is a normal udp packet.
+ else {
+ if ((packet.getPayload() != null) && (packet.getPayload().getPayload() != null) && (packet.getPayload().getPayload().getPayload() != null)) {
+ return packet.getPayload().getPayload().getPayload().getRawData();
+ }
+ }
+ return null;
+ };
+ }
+
+}
diff --git a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetUdpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
copy to plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetUdpTransportConfiguration.java
index 4cc17707a5..4fb778a3ec 100644
--- a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/configuration/BacNetUdpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,20 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.rawsocket;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.bacnetip.configuration;
-public interface RawSocketTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.bacnetip.readwrite.BacnetConstants;
+import org.apache.plc4x.java.transport.udp.DefaultUdpTransportConfiguration;
- int NO_DEFAULT_PORT = -1;
+public class BacNetUdpTransportConfiguration extends DefaultUdpTransportConfiguration {
- default int getDefaultPort() {
- return NO_DEFAULT_PORT;
- }
-
- default boolean isResolveMacAccess() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return BacnetConstants.BACNETUDPDEFAULTPORT;
}
}
diff --git a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java b/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
index 53fb49e57c..ea3b4d1ef9 100644
--- a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
+++ b/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
@@ -19,16 +19,21 @@
package org.apache.plc4x.java.cbus.configuration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class CBusConfiguration implements Configuration, TcpTransportConfiguration {
+public class CBusConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("srchk")
@BooleanDefaultValue(false)
public boolean srchk = false;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private CBusTcpTransportConfiguration tcpTransportConfiguration;
+
public boolean isSrchk() {
return srchk;
}
@@ -37,9 +42,21 @@ public class CBusConfiguration implements Configuration, TcpTransportConfigurati
this.srchk = srchk;
}
+ public CBusTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(CBusTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return 123;//CBusDriver.C_BUS_TCP_PORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java b/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusTcpTransportConfiguration.java
similarity index 66%
copy from plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
copy to plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusTcpTransportConfiguration.java
index 4cc17707a5..b29407603c 100644
--- a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
+++ b/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,20 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.rawsocket;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.cbus.configuration;
-public interface RawSocketTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- int NO_DEFAULT_PORT = -1;
+public class CBusTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default int getDefaultPort() {
- return NO_DEFAULT_PORT;
- }
-
- default boolean isResolveMacAccess() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return 123;
}
}
diff --git a/plc4j/drivers/can/src/main/java/org/apache/plc4x/java/can/generic/configuration/GenericCANConfiguration.java b/plc4j/drivers/can/src/main/java/org/apache/plc4x/java/can/generic/configuration/GenericCANConfiguration.java
index 95dd52d28a..d24be4e464 100644
--- a/plc4j/drivers/can/src/main/java/org/apache/plc4x/java/can/generic/configuration/GenericCANConfiguration.java
+++ b/plc4j/drivers/can/src/main/java/org/apache/plc4x/java/can/generic/configuration/GenericCANConfiguration.java
@@ -19,11 +19,14 @@
package org.apache.plc4x.java.can.generic.configuration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.can.CANTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.can.DefaultCANTransportConfiguration;
-public class GenericCANConfiguration implements Configuration, CANTransportConfiguration {
+public class GenericCANConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter
private int nodeId;
@@ -32,6 +35,9 @@ public class GenericCANConfiguration implements Configuration, CANTransportConfi
@IntDefaultValue(1000)
private int requestTimeout;
+ @ComplexConfigurationParameter(prefix = "can", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultCANTransportConfiguration canTransportConfiguration;
+
public int getNodeId() {
return nodeId;
}
@@ -48,4 +54,21 @@ public class GenericCANConfiguration implements Configuration, CANTransportConfi
this.requestTimeout = requestTimeout;
}
+ public DefaultCANTransportConfiguration getCanTransportConfiguration() {
+ return canTransportConfiguration;
+ }
+
+ public void setCanTransportConfiguration(DefaultCANTransportConfiguration canTransportConfiguration) {
+ this.canTransportConfiguration = canTransportConfiguration;
+ }
+
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "can":
+ return canTransportConfiguration;
+ }
+ return null;
+ }
+
}
diff --git a/plc4j/drivers/canopen/src/main/java/org/apache/plc4x/java/canopen/configuration/CANOpenConfiguration.java b/plc4j/drivers/canopen/src/main/java/org/apache/plc4x/java/canopen/configuration/CANOpenConfiguration.java
index e6e61065cc..3355e26144 100644
--- a/plc4j/drivers/canopen/src/main/java/org/apache/plc4x/java/canopen/configuration/CANOpenConfiguration.java
+++ b/plc4j/drivers/canopen/src/main/java/org/apache/plc4x/java/canopen/configuration/CANOpenConfiguration.java
@@ -19,11 +19,14 @@
package org.apache.plc4x.java.canopen.configuration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.can.CANTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.can.DefaultCANTransportConfiguration;
-public class CANOpenConfiguration implements Configuration, CANTransportConfiguration {
+public class CANOpenConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter
private int nodeId;
@@ -35,6 +38,9 @@ public class CANOpenConfiguration implements Configuration, CANTransportConfigur
@IntDefaultValue(1000)
private int requestTimeout;
+ @ComplexConfigurationParameter(prefix = "can", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultCANTransportConfiguration canTransportConfiguration;
+
public int getNodeId() {
return nodeId;
}
@@ -59,4 +65,21 @@ public class CANOpenConfiguration implements Configuration, CANTransportConfigur
this.requestTimeout = requestTimeout;
}
+ public DefaultCANTransportConfiguration getCanTransportConfiguration() {
+ return canTransportConfiguration;
+ }
+
+ public void setCanTransportConfiguration(DefaultCANTransportConfiguration canTransportConfiguration) {
+ this.canTransportConfiguration = canTransportConfiguration;
+ }
+
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "can":
+ return canTransportConfiguration;
+ }
+ return null;
+ }
+
}
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EIPConfiguration.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EIPConfiguration.java
index 25e8f69e53..969bbf6006 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EIPConfiguration.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EIPConfiguration.java
@@ -18,13 +18,14 @@
*/
package org.apache.plc4x.java.eip.base.configuration;
-import org.apache.plc4x.java.eip.base.EIPDriver;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.generation.ByteOrder;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class EIPConfiguration implements Configuration, TcpTransportConfiguration {
+public class EIPConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter
private int backplane = 1;
@@ -35,6 +36,9 @@ public class EIPConfiguration implements Configuration, TcpTransportConfiguratio
@ConfigurationParameter
private boolean bigEndian = true;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private EipTcpTransportConfiguration tcpTransportConfiguration;
+
public int getBackplane() {
return backplane;
}
@@ -59,7 +63,21 @@ public class EIPConfiguration implements Configuration, TcpTransportConfiguratio
this.bigEndian = byteOrder == ByteOrder.BIG_ENDIAN;
}
+ public EipTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(EipTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort(){return EIPDriver.PORT;}
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
+ }
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EipTcpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EipTcpTransportConfiguration.java
index fe08010f72..13914e887d 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EipTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.eip.base.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.eip.base.EIPDriver;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class EipTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return EIPDriver.PORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/logix/configuration/LogixConfiguration.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/logix/configuration/LogixConfiguration.java
index 992413a265..c1f424a392 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/logix/configuration/LogixConfiguration.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/logix/configuration/LogixConfiguration.java
@@ -18,7 +18,6 @@
*/
package org.apache.plc4x.java.eip.logix.configuration;
-import org.apache.plc4x.java.eip.base.EIPDriver;
import org.apache.plc4x.java.eip.base.configuration.EIPConfiguration;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
@@ -27,9 +26,6 @@ public class LogixConfiguration extends EIPConfiguration {
@ConfigurationParameter
private String communicationPath;
- @Override
- public int getDefaultPort(){return EIPDriver.PORT;}
-
public String getCommunicationPath() { return this.communicationPath; }
public void setCommunicationPath(String routingAddress) { this.communicationPath = communicationPath; }
diff --git a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/configuration/FirmataConfiguration.java b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/configuration/FirmataConfiguration.java
index 075418f47f..9ed895ba2f 100644
--- a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/configuration/FirmataConfiguration.java
+++ b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/configuration/FirmataConfiguration.java
@@ -19,17 +19,31 @@
package org.apache.plc4x.java.firmata.readwrite.configuration;
import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.transport.serial.SerialTransportConfiguration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.serial.DefaultSerialTransportConfiguration;
-public class FirmataConfiguration implements Configuration, SerialTransportConfiguration {
+public class FirmataConfiguration implements Configuration, TransportConfigurationProvider {
+
+ @ComplexConfigurationParameter(prefix = "serial", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultSerialTransportConfiguration serialTransportConfiguration;
+
+ public DefaultSerialTransportConfiguration getSerialTransportConfiguration() {
+ return serialTransportConfiguration;
+ }
+
+ public void setSerialTransportConfiguration(DefaultSerialTransportConfiguration serialTransportConfiguration) {
+ this.serialTransportConfiguration = serialTransportConfiguration;
+ }
- /**
- * The StandardFirmata sketch uses 57600 baud per default.
- * @return 57600 as this is what the Arduino uses.
- */
@Override
- public int getBaudRate() {
- return 57600;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "serial":
+ return serialTransportConfiguration;
+ }
+ return null;
}
}
diff --git a/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014Configuration.java b/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014Configuration.java
index 44e8514ff3..4c9fea9f5b 100644
--- a/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014Configuration.java
+++ b/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014Configuration.java
@@ -19,22 +19,21 @@
package org.apache.plc4x.java.iec608705104.readwrite.configuration;
-import org.apache.plc4x.java.iec608705104.readwrite.IEC608705104Constants;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class Iec608705014Configuration implements Configuration, TcpTransportConfiguration {
+public class Iec608705014Configuration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("timeout-request")
@IntDefaultValue(4000)
protected int timeoutRequest;
- @Override
- public int getDefaultPort() {
- return IEC608705104Constants.DEFAULTPORT;
- }
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private Iec608705014TcpTransportConfiguration tcpTransportConfiguration;
public int getTimeoutRequest() {
return timeoutRequest;
@@ -44,4 +43,21 @@ public class Iec608705014Configuration implements Configuration, TcpTransportCon
this.timeoutRequest = timeoutRequest;
}
+ public Iec608705014TcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(Iec608705014TcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
+ }
+
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014TcpTransportConfiguration.java
similarity index 62%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014TcpTransportConfiguration.java
index fe08010f72..a3bee8ad9e 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/readwrite/configuration/Iec608705014TcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.iec608705104.readwrite.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.iec608705104.readwrite.IEC608705104Constants;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class Iec608705014TcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return IEC608705104Constants.DEFAULTPORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
index b203f756db..e6bc525bbc 100644
--- a/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
+++ b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
@@ -18,22 +18,17 @@
*/
package org.apache.plc4x.java.knxnetip.configuration;
-import org.apache.plc4x.java.knxnetip.KnxNetIpDriver;
import org.apache.plc4x.java.knxnetip.readwrite.KnxLayer;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
-import org.apache.plc4x.java.spi.configuration.annotations.defaults.FloatDefaultValue;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.StringDefaultValue;
import org.apache.plc4x.java.spi.configuration.exceptions.ConfigurationException;
-import org.apache.plc4x.java.transport.pcapreplay.PcapReplayTransportConfiguration;
-import org.apache.plc4x.java.transport.rawsocket.RawSocketTransportConfiguration;
-import org.apache.plc4x.java.transport.udp.UdpTransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.config.PcapChannelConfig;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class KnxNetIpConfiguration implements Configuration, UdpTransportConfiguration, PcapReplayTransportConfiguration, RawSocketTransportConfiguration {
+public class KnxNetIpConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("knxproj-file-path")
public String knxprojFilePath;
@@ -49,13 +44,14 @@ public class KnxNetIpConfiguration implements Configuration, UdpTransportConfigu
@StringDefaultValue("LINK_LAYER")
public String connectionType = "LINK_LAYER";
- @ConfigurationParameter("replay-speed-factor")
- @FloatDefaultValue(1.0f)
- public float replaySpeedFactor = 1.0f;
+ @ComplexConfigurationParameter(prefix = "udp", defaultOverrides = {}, requiredOverrides = {})
+ private KnxNetIpUdpTransportConfiguration udpTransportConfiguration;
- @ConfigurationParameter("loop")
- @BooleanDefaultValue(false)
- public boolean loop = false;
+ @ComplexConfigurationParameter(prefix = "pcap", defaultOverrides = {}, requiredOverrides = {})
+ private KnxNetIpPcapReplayTransportConfiguration pcapReplayTransportConfiguration;
+
+ @ComplexConfigurationParameter(prefix = "raw", defaultOverrides = {}, requiredOverrides = {})
+ private KnxNetIpRawSocketTransportConfiguration rawSocketTransportConfiguration;
public String getKnxprojFilePath() {
return knxprojFilePath;
@@ -96,37 +92,41 @@ public class KnxNetIpConfiguration implements Configuration, UdpTransportConfigu
this.connectionType = connectionType.toUpperCase();
}
- @Override
- public float getReplaySpeedFactor() {
- return replaySpeedFactor;
+ public KnxNetIpUdpTransportConfiguration getUdpTransportConfiguration() {
+ return udpTransportConfiguration;
}
- public void setReplaySpeedFactor(float replaySpeedFactor) {
- this.replaySpeedFactor = replaySpeedFactor;
+ public void setUdpTransportConfiguration(KnxNetIpUdpTransportConfiguration udpTransportConfiguration) {
+ this.udpTransportConfiguration = udpTransportConfiguration;
}
- @Override
- public boolean isLoop() {
- return loop;
+ public KnxNetIpPcapReplayTransportConfiguration getPcapReplayTransportConfiguration() {
+ return pcapReplayTransportConfiguration;
}
- public void setLoop(boolean loop) {
- this.loop = loop;
+ public void setPcapReplayTransportConfiguration(KnxNetIpPcapReplayTransportConfiguration pcapReplayTransportConfiguration) {
+ this.pcapReplayTransportConfiguration = pcapReplayTransportConfiguration;
}
- @Override
- public int getDefaultPort() {
- return KnxNetIpDriver.KNXNET_IP_PORT;
+ public KnxNetIpRawSocketTransportConfiguration getRawSocketTransportConfiguration() {
+ return rawSocketTransportConfiguration;
}
- @Override
- public Integer getProtocolId() {
- return PcapChannelConfig.ALL_PROTOCOLS;
+ public void setRawSocketTransportConfiguration(KnxNetIpRawSocketTransportConfiguration rawSocketTransportConfiguration) {
+ this.rawSocketTransportConfiguration = rawSocketTransportConfiguration;
}
@Override
- public PacketHandler getPcapPacketHandler() {
- return packet -> packet.getPayload().getPayload().getPayload().getRawData();
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "udp":
+ return udpTransportConfiguration;
+ case "pcap":
+ return pcapReplayTransportConfiguration;
+ case "raw":
+ return rawSocketTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpPcapReplayTransportConfiguration.java
similarity index 58%
copy from plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
copy to plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpPcapReplayTransportConfiguration.java
index 8924393e28..1b75a631b7 100644
--- a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
+++ b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpPcapReplayTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,26 +16,23 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcap;
-import org.apache.plc4x.java.spi.transport.TransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.config.PcapChannelConfig;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+package org.apache.plc4x.java.knxnetip.configuration;
-public interface PcapTransportConfiguration extends TransportConfiguration {
+import org.apache.plc4x.java.knxnetip.KnxNetIpDriver;
+import org.apache.plc4x.java.transport.pcapreplay.DefaultPcapReplayTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
- default boolean getSupportVlans() {
- return false;
- }
+public class KnxNetIpPcapReplayTransportConfiguration extends DefaultPcapReplayTransportConfiguration {
- default int getDefaultPort() {
- return PcapChannelConfig.ALL_PORTS;
+ @Override
+ public int getDefaultPort() {
+ return KnxNetIpDriver.KNXNET_IP_PORT;
}
- default Integer getProtocolId() {
- return PcapChannelConfig.ALL_PROTOCOLS;
+ @Override
+ public PacketHandler getPcapPacketHandler() {
+ return packet -> packet.getPayload().getPayload().getPayload().getRawData();
}
- PacketHandler getPcapPacketHandler();
-
}
diff --git a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpRawSocketTransportConfiguration.java
similarity index 59%
copy from plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
copy to plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpRawSocketTransportConfiguration.java
index 8924393e28..cb4454ee7a 100644
--- a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
+++ b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpRawSocketTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,26 +16,23 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcap;
-import org.apache.plc4x.java.spi.transport.TransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.config.PcapChannelConfig;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+package org.apache.plc4x.java.knxnetip.configuration;
-public interface PcapTransportConfiguration extends TransportConfiguration {
+import org.apache.plc4x.java.knxnetip.KnxNetIpDriver;
+import org.apache.plc4x.java.transport.rawsocket.DefaultRawSocketTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
- default boolean getSupportVlans() {
- return false;
- }
+public class KnxNetIpRawSocketTransportConfiguration extends DefaultRawSocketTransportConfiguration {
- default int getDefaultPort() {
- return PcapChannelConfig.ALL_PORTS;
+ @Override
+ public int getDefaultPort() {
+ return KnxNetIpDriver.KNXNET_IP_PORT;
}
- default Integer getProtocolId() {
- return PcapChannelConfig.ALL_PROTOCOLS;
+ @Override
+ public PacketHandler getPcapPacketHandler() {
+ return packet -> packet.getPayload().getPayload().getPayload().getRawData();
}
- PacketHandler getPcapPacketHandler();
-
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpUdpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpUdpTransportConfiguration.java
index fe08010f72..e630d802af 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpUdpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.knxnetip.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.knxnetip.KnxNetIpDriver;
+import org.apache.plc4x.java.transport.udp.DefaultUdpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class KnxNetIpUdpTransportConfiguration extends DefaultUdpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return KnxNetIpDriver.KNXNET_IP_PORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/modbus/pom.xml b/plc4j/drivers/modbus/pom.xml
index 216908e72b..d4ff9d7bf9 100644
--- a/plc4j/drivers/modbus/pom.xml
+++ b/plc4j/drivers/modbus/pom.xml
@@ -102,7 +102,6 @@
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<usedDependencies combine.children="append">
- <usedDependency>org.apache.plc4x:plc4j-transport-serial</usedDependency>
<usedDependency>org.apache.plc4x:plc4j-transport-raw-socket</usedDependency>
<usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
<usedDependency>org.apache.plc4x:plc4x-protocols-modbus</usedDependency>
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java
index 7f89832adc..be89759c48 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java
@@ -18,13 +18,16 @@
*/
package org.apache.plc4x.java.modbus.ascii.config;
-import org.apache.plc4x.java.modbus.readwrite.ModbusConstants;
+import org.apache.plc4x.java.modbus.tcp.config.ModbusTcpTransportConfiguration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.serial.DefaultSerialTransportConfiguration;
-public class ModbusAsciiConfiguration implements Configuration, TcpTransportConfiguration {
+public class ModbusAsciiConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("request-timeout")
@IntDefaultValue(5_000)
@@ -34,6 +37,12 @@ public class ModbusAsciiConfiguration implements Configuration, TcpTransportConf
@IntDefaultValue(1)
private int unitIdentifier;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private ModbusTcpTransportConfiguration tcpTransportConfiguration;
+
+ @ComplexConfigurationParameter(prefix = "serial", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultSerialTransportConfiguration serialTransportConfiguration;
+
public int getRequestTimeout() {
return requestTimeout;
}
@@ -50,9 +59,31 @@ public class ModbusAsciiConfiguration implements Configuration, TcpTransportConf
this.unitIdentifier = unitIdentifier;
}
+ public ModbusTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(ModbusTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
+ public DefaultSerialTransportConfiguration getSerialTransportConfiguration() {
+ return serialTransportConfiguration;
+ }
+
+ public void setSerialTransportConfiguration(DefaultSerialTransportConfiguration serialTransportConfiguration) {
+ this.serialTransportConfiguration = serialTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return ModbusConstants.MODBUSTCPDEFAULTPORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ case "serial":
+ return serialTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java
index 8fd01427d7..4af23227c6 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java
@@ -18,13 +18,16 @@
*/
package org.apache.plc4x.java.modbus.rtu.config;
-import org.apache.plc4x.java.modbus.readwrite.ModbusConstants;
+import org.apache.plc4x.java.modbus.tcp.config.ModbusTcpTransportConfiguration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.serial.DefaultSerialTransportConfiguration;
-public class ModbusRtuConfiguration implements Configuration, TcpTransportConfiguration {
+public class ModbusRtuConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("request-timeout")
@IntDefaultValue(5_000)
@@ -34,6 +37,12 @@ public class ModbusRtuConfiguration implements Configuration, TcpTransportConfig
@IntDefaultValue(1)
private int unitIdentifier;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private ModbusTcpTransportConfiguration tcpTransportConfiguration;
+
+ @ComplexConfigurationParameter(prefix = "serial", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultSerialTransportConfiguration serialTransportConfiguration;
+
public int getRequestTimeout() {
return requestTimeout;
}
@@ -50,9 +59,31 @@ public class ModbusRtuConfiguration implements Configuration, TcpTransportConfig
this.unitIdentifier = unitIdentifier;
}
+ public ModbusTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(ModbusTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
+ public DefaultSerialTransportConfiguration getSerialTransportConfiguration() {
+ return serialTransportConfiguration;
+ }
+
+ public void setSerialTransportConfiguration(DefaultSerialTransportConfiguration serialTransportConfiguration) {
+ this.serialTransportConfiguration = serialTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return ModbusConstants.MODBUSTCPDEFAULTPORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ case "serial":
+ return serialTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java
index 0a7d4a477d..da68706d20 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java
@@ -18,13 +18,14 @@
*/
package org.apache.plc4x.java.modbus.tcp.config;
-import org.apache.plc4x.java.modbus.readwrite.ModbusConstants;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class ModbusTcpConfiguration implements Configuration, TcpTransportConfiguration {
+public class ModbusTcpConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("request-timeout")
@IntDefaultValue(5_000)
@@ -34,6 +35,9 @@ public class ModbusTcpConfiguration implements Configuration, TcpTransportConfig
@IntDefaultValue(1)
private int unitIdentifier;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private ModbusTcpTransportConfiguration tcpTransportConfiguration;
+
public int getRequestTimeout() {
return requestTimeout;
}
@@ -50,9 +54,21 @@ public class ModbusTcpConfiguration implements Configuration, TcpTransportConfig
this.unitIdentifier = unitIdentifier;
}
+ public ModbusTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(ModbusTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return ModbusConstants.MODBUSTCPDEFAULTPORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpTransportConfiguration.java
index fe08010f72..a2d649ea3c 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.modbus.tcp.config;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.modbus.readwrite.ModbusConstants;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class ModbusTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return ModbusConstants.MODBUSTCPDEFAULTPORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/config/OpcuaConfiguration.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/config/OpcuaConfiguration.java
index 4905694a4e..a34784dcc8 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/config/OpcuaConfiguration.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/config/OpcuaConfiguration.java
@@ -19,12 +19,15 @@
package org.apache.plc4x.java.opcua.config;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.StringDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
-public class OpcuaConfiguration implements Configuration, TcpTransportConfiguration {
+public class OpcuaConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("protocolCode")
private String protocolCode;
@@ -58,6 +61,9 @@ public class OpcuaConfiguration implements Configuration, TcpTransportConfigurat
@ConfigurationParameter("keyStorePassword")
private String keyStorePassword;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultTcpTransportConfiguration tcpTransportConfiguration;
+
public String getProtocolCode() {
return protocolCode;
}
@@ -98,6 +104,22 @@ public class OpcuaConfiguration implements Configuration, TcpTransportConfigurat
return keyStorePassword;
}
+ public DefaultTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(DefaultTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
+ }
@Override
public String toString() {
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
index 18252b2a3a..6b00c0f66a 100644
--- a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
@@ -18,15 +18,31 @@
*/
package org.apache.plc4x.java.openprotocol.config;
-import org.apache.plc4x.java.openprotocol.readwrite.Constants;
import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class OpenProtocolConfiguration implements Configuration, TcpTransportConfiguration {
+public class OpenProtocolConfiguration implements Configuration, TransportConfigurationProvider {
+
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private OpenProtocolTcpTransportConfiguration tcpTransportConfiguration;
+
+ public OpenProtocolTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(OpenProtocolTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
@Override
- public int getDefaultPort() {
- return Constants.TCPDEFAULTPORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolTcpTransportConfiguration.java
similarity index 71%
copy from plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
copy to plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolTcpTransportConfiguration.java
index 18252b2a3a..fd1303c1d2 100644
--- a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,23 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.plc4x.java.openprotocol.config;
import org.apache.plc4x.java.openprotocol.readwrite.Constants;
-import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
-public class OpenProtocolConfiguration implements Configuration, TcpTransportConfiguration {
+public class OpenProtocolTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
@Override
public int getDefaultPort() {
return Constants.TCPDEFAULTPORT;
}
- @Override
- public String toString() {
- return "OpenProtocolConfiguration{" +
- '}';
- }
-
}
diff --git a/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xConfiguration.java b/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xConfiguration.java
index e869e046ca..9f8ffcf7a7 100644
--- a/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xConfiguration.java
+++ b/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xConfiguration.java
@@ -18,13 +18,14 @@
*/
package org.apache.plc4x.java.plc4x.config;
-import org.apache.plc4x.java.plc4x.readwrite.Plc4xConstants;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class Plc4xConfiguration implements Configuration, TcpTransportConfiguration {
+public class Plc4xConfiguration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("remote-connection-string")
private String remoteConnectionString;
@@ -33,6 +34,9 @@ public class Plc4xConfiguration implements Configuration, TcpTransportConfigurat
@IntDefaultValue(5_000)
private int requestTimeout;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private Plc4xTcpTransportConfiguration tcpTransportConfiguration;
+
public String getRemoteConnectionString() {
return remoteConnectionString;
}
@@ -49,9 +53,21 @@ public class Plc4xConfiguration implements Configuration, TcpTransportConfigurat
this.requestTimeout = requestTimeout;
}
+ public Plc4xTcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(Plc4xTcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
+
@Override
- public int getDefaultPort() {
- return Plc4xConstants.PLC4XTCPDEFAULTPORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xTcpTransportConfiguration.java
similarity index 66%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xTcpTransportConfiguration.java
index fe08010f72..5f7c4a20c6 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xTcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.plc4x.config;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.plc4x.readwrite.Plc4xConstants;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class Plc4xTcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return Plc4xConstants.PLC4XTCPDEFAULTPORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java b/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
index fbaa23a9cd..7744c3221f 100644
--- a/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
+++ b/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
@@ -22,11 +22,13 @@ package org.apache.plc4x.java.profinet.config;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.apache.plc4x.java.profinet.gsdml.ProfinetISO15745Profile;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameterDefaultOverride;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.Required;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.StringDefaultValue;
-import org.apache.plc4x.java.transport.rawsocket.RawSocketTransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
import java.io.IOException;
import java.nio.file.DirectoryStream;
@@ -34,7 +36,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-public class ProfinetConfiguration implements Configuration, RawSocketTransportConfiguration {
+public class ProfinetConfiguration implements Configuration, TransportConfigurationProvider {
@Required
@ConfigurationParameter("gsd-directory")
@@ -44,29 +46,17 @@ public class ProfinetConfiguration implements Configuration, RawSocketTransportC
@ConfigurationParameter("dap-id")
public String dapId;
- @Override
- public boolean getSupportVlans() {
- return RawSocketTransportConfiguration.super.getSupportVlans();
- }
-
- @Override
- public int getDefaultPort() {
- return 34964;
- }
-
- @Override
- public Integer getProtocolId() {
- return RawSocketTransportConfiguration.super.getProtocolId();
- }
+ @ComplexConfigurationParameter(prefix = "raw", defaultOverrides = {
+ @ComplexConfigurationParameterDefaultOverride(name = "resolve-mac-address", value = "true")
+ }, requiredOverrides = {})
+ private ProfinetRawSocketTransportConfiguration rawSocketTransportConfiguration;
- @Override
- public PacketHandler getPcapPacketHandler() {
- return null;
+ public ProfinetRawSocketTransportConfiguration getRawSocketTransportConfiguration() {
+ return rawSocketTransportConfiguration;
}
- @Override
- public boolean isResolveMacAccess() {
- return true;
+ public void setRawSocketTransportConfiguration(ProfinetRawSocketTransportConfiguration rawSocketTransportConfiguration) {
+ this.rawSocketTransportConfiguration = rawSocketTransportConfiguration;
}
public ProfinetISO15745Profile getGsdProfile(int vendorId, int deviceId) {
@@ -108,4 +98,13 @@ public class ProfinetConfiguration implements Configuration, RawSocketTransportC
return null;
}
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "raw":
+ return rawSocketTransportConfiguration;
+ }
+ return null;
+ }
+
}
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java b/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
similarity index 61%
copy from plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
copy to plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
index 18252b2a3a..b1a7deaa4f 100644
--- a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
+++ b/plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,23 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.openprotocol.config;
-import org.apache.plc4x.java.openprotocol.readwrite.Constants;
-import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+package org.apache.plc4x.java.profinet.config;
-public class OpenProtocolConfiguration implements Configuration, TcpTransportConfiguration {
+import org.apache.plc4x.java.transport.rawsocket.DefaultRawSocketTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+
+public class ProfinetRawSocketTransportConfiguration extends DefaultRawSocketTransportConfiguration {
@Override
public int getDefaultPort() {
- return Constants.TCPDEFAULTPORT;
+ return 34964;
}
@Override
- public String toString() {
- return "OpenProtocolConfiguration{" +
- '}';
+ public PacketHandler getPcapPacketHandler() {
+ return null;
}
}
diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
index 040da32943..48a7f7b3fe 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
@@ -23,12 +23,10 @@ import org.apache.plc4x.java.profinet.device.GsdFileMap;
import org.apache.plc4x.java.profinet.gsdml.ProfinetISO15745Profile;
import org.apache.plc4x.java.spi.configuration.Configuration;
import org.apache.plc4x.java.spi.configuration.ConfigurationParameterConverter;
-import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.spi.configuration.annotations.ParameterConverter;
-import org.apache.plc4x.java.spi.configuration.annotations.Required;
+import org.apache.plc4x.java.spi.configuration.annotations.*;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.rawsocket.RawSocketTransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
import java.io.IOException;
import java.nio.file.DirectoryStream;
@@ -40,27 +38,7 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class ProfinetConfiguration implements Configuration, RawSocketTransportConfiguration {
-
- @Override
- public boolean getSupportVlans() {
- return RawSocketTransportConfiguration.super.getSupportVlans();
- }
-
- @Override
- public int getDefaultPort() {
- return 34964;
- }
-
- @Override
- public Integer getProtocolId() {
- return RawSocketTransportConfiguration.super.getProtocolId();
- }
-
- @Override
- public PacketHandler getPcapPacketHandler() {
- return null;
- }
+public class ProfinetConfiguration implements Configuration, TransportConfigurationProvider {
@Required
@ConfigurationParameter
@@ -88,6 +66,19 @@ public class ProfinetConfiguration implements Configuration, RawSocketTransportC
@IntDefaultValue(50)
private int dataHoldFactor;
+ @ComplexConfigurationParameter(prefix = "raw", defaultOverrides = {
+ @ComplexConfigurationParameterDefaultOverride(name = "resolve-mac-address", value = "true")
+ }, requiredOverrides = {})
+ private ProfinetRawSocketTransportConfiguration rawSocketTransportConfiguration;
+
+ public ProfinetRawSocketTransportConfiguration getRawSocketTransportConfiguration() {
+ return rawSocketTransportConfiguration;
+ }
+
+ public void setRawSocketTransportConfiguration(ProfinetRawSocketTransportConfiguration rawSocketTransportConfiguration) {
+ this.rawSocketTransportConfiguration = rawSocketTransportConfiguration;
+ }
+
public static class ProfinetDeviceConvertor implements ConfigurationParameterConverter<ProfinetDevices> {
public static final String DEVICE_STRING = "((?<devicename>[\\w- ]+)[, ]+(?<deviceaccess>[\\w ]+)[, ]+\\((?<submodules>[\\w, ]*)\\)[, ]*(?<ipaddress>\\d+\\.\\d+\\.\\d+\\.\\d+)?)";
@@ -203,6 +194,15 @@ public class ProfinetConfiguration implements Configuration, RawSocketTransportC
return gsdFiles;
}
+ @Override
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "raw":
+ return rawSocketTransportConfiguration;
+ }
+ return null;
+ }
+
@Override
public String toString() {
return "Configuration{" +
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
similarity index 61%
copy from plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
copy to plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
index 18252b2a3a..b1a7deaa4f 100644
--- a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetRawSocketTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,23 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.openprotocol.config;
-import org.apache.plc4x.java.openprotocol.readwrite.Constants;
-import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+package org.apache.plc4x.java.profinet.config;
-public class OpenProtocolConfiguration implements Configuration, TcpTransportConfiguration {
+import org.apache.plc4x.java.transport.rawsocket.DefaultRawSocketTransportConfiguration;
+import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
+
+public class ProfinetRawSocketTransportConfiguration extends DefaultRawSocketTransportConfiguration {
@Override
public int getDefaultPort() {
- return Constants.TCPDEFAULTPORT;
+ return 34964;
}
@Override
- public String toString() {
- return "OpenProtocolConfiguration{" +
- '}';
+ public PacketHandler getPcapPacketHandler() {
+ return null;
}
}
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7Configuration.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7Configuration.java
index 4a5db34664..5d6db13e9e 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7Configuration.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7Configuration.java
@@ -18,14 +18,15 @@
*/
package org.apache.plc4x.java.s7.readwrite.configuration;
-import org.apache.plc4x.java.s7.readwrite.S7Driver;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
-public class S7Configuration implements Configuration, TcpTransportConfiguration {
+public class S7Configuration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("local-rack")
@IntDefaultValue(1)
@@ -91,6 +92,8 @@ public class S7Configuration implements Configuration, TcpTransportConfiguration
@IntDefaultValue(4)
public int retryTime = 4;
+ @ComplexConfigurationParameter(prefix = "tcp", defaultOverrides = {}, requiredOverrides = {})
+ private S7TcpTransportConfiguration tcpTransportConfiguration;
public int getLocalRack() {
return localRack;
@@ -220,15 +223,21 @@ public class S7Configuration implements Configuration, TcpTransportConfiguration
this.retryTime = retryTime;
}
+ public S7TcpTransportConfiguration getTcpTransportConfiguration() {
+ return tcpTransportConfiguration;
+ }
+
+ public void setTcpTransportConfiguration(S7TcpTransportConfiguration tcpTransportConfiguration) {
+ this.tcpTransportConfiguration = tcpTransportConfiguration;
+ }
- /**
- * Per default port for the S7 protocol is 102.
- *
- * @return 102
- */
@Override
- public int getDefaultPort() {
- return S7Driver.ISO_ON_TCP_PORT;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "tcp":
+ return tcpTransportConfiguration;
+ }
+ return null;
}
@Override
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7TcpTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7TcpTransportConfiguration.java
index fe08010f72..84aa408cdf 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7TcpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.s7.readwrite.configuration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+import org.apache.plc4x.java.s7.readwrite.S7Driver;
+import org.apache.plc4x.java.transport.tcp.DefaultTcpTransportConfiguration;
- default float getReplaySpeedFactor() {
- return 1;
- }
+public class S7TcpTransportConfiguration extends DefaultTcpTransportConfiguration {
- default boolean isLoop() {
- return false;
+ @Override
+ public int getDefaultPort() {
+ return S7Driver.ISO_ON_TCP_PORT;
}
- default String getFilter() { return "";}
}
diff --git a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameter.java
similarity index 61%
copy from plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameter.java
index 4cc17707a5..ca5b916c30 100644
--- a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameter.java
@@ -16,20 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.rawsocket;
+package org.apache.plc4x.java.spi.configuration.annotations;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
-public interface RawSocketTransportConfiguration extends PcapTransportConfiguration {
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ComplexConfigurationParameter {
- int NO_DEFAULT_PORT = -1;
+ String prefix() default "";
- default int getDefaultPort() {
- return NO_DEFAULT_PORT;
- }
+ ComplexConfigurationParameterDefaultOverride[] defaultOverrides();
- default boolean isResolveMacAccess() {
- return false;
- }
+ ComplexConfigurationParameterRequiredOverride[] requiredOverrides();
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterDefaultOverride.java
similarity index 68%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterDefaultOverride.java
index fe08010f72..0184308b81 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterDefaultOverride.java
@@ -16,19 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
+package org.apache.plc4x.java.spi.configuration.annotations;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+public @interface ComplexConfigurationParameterDefaultOverride {
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+ String name() default "";
- default float getReplaySpeedFactor() {
- return 1;
- }
+ String value() default "";
- default boolean isLoop() {
- return false;
- }
-
- default String getFilter() { return "";}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterRequiredOverride.java
similarity index 68%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterRequiredOverride.java
index fe08010f72..72559b6e3d 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ComplexConfigurationParameterRequiredOverride.java
@@ -16,19 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
+package org.apache.plc4x.java.spi.configuration.annotations;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+public @interface ComplexConfigurationParameterRequiredOverride {
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+ String name() default "";
- default float getReplaySpeedFactor() {
- return 1;
- }
+ boolean required() default false;
- default boolean isLoop() {
- return false;
- }
-
- default String getFilter() { return "";}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/transport/TransportConfigurationProvider.java
similarity index 63%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/transport/TransportConfigurationProvider.java
index fe08010f72..ab70373e2b 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/transport/TransportConfigurationProvider.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.spi.transport;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+public interface TransportConfigurationProvider {
- default float getReplaySpeedFactor() {
- return 1;
- }
+ TransportConfiguration getTransportConfiguration(String transportCode);
- default boolean isLoop() {
- return false;
- }
-
- default String getFilter() { return "";}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/transports/can/src/main/java/org/apache/plc4x/java/transport/can/DefaultCANTransportConfiguration.java
similarity index 63%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/transports/can/src/main/java/org/apache/plc4x/java/transport/can/DefaultCANTransportConfiguration.java
index fe08010f72..18fac82528 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/transports/can/src/main/java/org/apache/plc4x/java/transport/can/DefaultCANTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+package org.apache.plc4x.java.transport.can;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+public class DefaultCANTransportConfiguration implements CANTransportConfiguration {
- default float getReplaySpeedFactor() {
- return 1;
- }
-
- default boolean isLoop() {
- return false;
- }
-
- default String getFilter() { return "";}
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/DefaultPcapReplayTransportConfiguration.java
similarity index 64%
copy from plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
copy to plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/DefaultPcapReplayTransportConfiguration.java
index fe08010f72..21922fc360 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/DefaultPcapReplayTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,19 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.plc4x.java.transport.pcapreplay;
-import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
+import org.apache.plc4x.java.transport.pcap.DefaultPcapTransportConfiguration;
-public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
+public abstract class DefaultPcapReplayTransportConfiguration extends DefaultPcapTransportConfiguration implements PcapReplayTransportConfiguration {
- default float getReplaySpeedFactor() {
- return 1;
+ @Override
+ public float getReplaySpeedFactor() {
+ return 1.0f;
}
- default boolean isLoop() {
+ @Override
+ public boolean isLoop() {
return false;
}
- default String getFilter() { return "";}
+ @Override
+ public String getFilter() {
+ return "";
+ }
+
}
diff --git a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java b/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
index fe08010f72..1f9c9a1b8f 100644
--- a/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
+++ b/plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/PcapReplayTransportConfiguration.java
@@ -22,13 +22,10 @@ import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
public interface PcapReplayTransportConfiguration extends PcapTransportConfiguration {
- default float getReplaySpeedFactor() {
- return 1;
- }
+ float getReplaySpeedFactor();
- default boolean isLoop() {
- return false;
- }
+ boolean isLoop();
+
+ String getFilter();
- default String getFilter() { return "";}
}
diff --git a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java b/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/DefaultPcapTransportConfiguration.java
similarity index 57%
copy from plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
copy to plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/DefaultPcapTransportConfiguration.java
index 53fb49e57c..ce87b08f29 100644
--- a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
+++ b/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/DefaultPcapTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,37 +16,39 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.cbus.configuration;
-import org.apache.plc4x.java.spi.configuration.Configuration;
+package org.apache.plc4x.java.transport.pcap;
+
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
-public class CBusConfiguration implements Configuration, TcpTransportConfiguration {
+public abstract class DefaultPcapTransportConfiguration implements PcapTransportConfiguration {
- @ConfigurationParameter("srchk")
+ @ConfigurationParameter("support-vlans")
@BooleanDefaultValue(false)
- public boolean srchk = false;
+ private boolean supportVlans;
+
+ @ConfigurationParameter("protocol-id")
+ @IntDefaultValue(-1)
+ private int protocolId;
- public boolean isSrchk() {
- return srchk;
+ @Override
+ public boolean getSupportVlans() {
+ return supportVlans;
}
- public void setSrchk(boolean srchk) {
- this.srchk = srchk;
+ public void setSupportVlans(boolean supportVlans) {
+ this.supportVlans = supportVlans;
}
@Override
- public int getDefaultPort() {
- return 123;//CBusDriver.C_BUS_TCP_PORT;
+ public int getProtocolId() {
+ return protocolId;
}
- @Override
- public String toString() {
- return "Configuration{" +
- "srchk=" + srchk +
- '}';
+ public void setProtocolId(int protocolId) {
+ this.protocolId = protocolId;
}
}
diff --git a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java b/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
index 8924393e28..a49994bc60 100644
--- a/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
+++ b/plc4j/transports/pcap-shared/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
@@ -19,22 +19,18 @@
package org.apache.plc4x.java.transport.pcap;
import org.apache.plc4x.java.spi.transport.TransportConfiguration;
-import org.apache.plc4x.java.utils.pcap.netty.config.PcapChannelConfig;
import org.apache.plc4x.java.utils.pcap.netty.handlers.PacketHandler;
public interface PcapTransportConfiguration extends TransportConfiguration {
+ int NO_DEFAULT_PORT = -1;
- default boolean getSupportVlans() {
- return false;
- }
+ boolean getSupportVlans();
default int getDefaultPort() {
- return PcapChannelConfig.ALL_PORTS;
+ return NO_DEFAULT_PORT;
}
- default Integer getProtocolId() {
- return PcapChannelConfig.ALL_PROTOCOLS;
- }
+ int getProtocolId();
PacketHandler getPcapPacketHandler();
diff --git a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java b/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/DefaultRawSocketTransportConfiguration.java
similarity index 57%
copy from plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
copy to plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/DefaultRawSocketTransportConfiguration.java
index 53fb49e57c..424e0bea82 100644
--- a/plc4j/drivers/c-bus/src/main/java/org/apache/plc4x/java/cbus/configuration/CBusConfiguration.java
+++ b/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/DefaultRawSocketTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,37 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.cbus.configuration;
-import org.apache.plc4x.java.spi.configuration.Configuration;
+package org.apache.plc4x.java.transport.rawsocket;
+
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
-import org.apache.plc4x.java.transport.tcp.TcpTransportConfiguration;
+import org.apache.plc4x.java.transport.pcap.DefaultPcapTransportConfiguration;
-public class CBusConfiguration implements Configuration, TcpTransportConfiguration {
+public abstract class DefaultRawSocketTransportConfiguration extends DefaultPcapTransportConfiguration implements RawSocketTransportConfiguration {
- @ConfigurationParameter("srchk")
+ @ConfigurationParameter("resolve-mac-address")
@BooleanDefaultValue(false)
- public boolean srchk = false;
-
- public boolean isSrchk() {
- return srchk;
- }
-
- public void setSrchk(boolean srchk) {
- this.srchk = srchk;
- }
+ private boolean resolveMacAddress;
@Override
- public int getDefaultPort() {
- return 123;//CBusDriver.C_BUS_TCP_PORT;
+ public boolean isResolveMacAccess() {
+ return resolveMacAddress;
}
- @Override
- public String toString() {
- return "Configuration{" +
- "srchk=" + srchk +
- '}';
+ public void setResolveMacAddress(boolean resolveMacAddress) {
+ this.resolveMacAddress = resolveMacAddress;
}
}
diff --git a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java b/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
index 4cc17707a5..05cf71ff42 100644
--- a/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
+++ b/plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
@@ -22,14 +22,6 @@ import org.apache.plc4x.java.transport.pcap.PcapTransportConfiguration;
public interface RawSocketTransportConfiguration extends PcapTransportConfiguration {
- int NO_DEFAULT_PORT = -1;
-
- default int getDefaultPort() {
- return NO_DEFAULT_PORT;
- }
-
- default boolean isResolveMacAccess() {
- return false;
- }
+ boolean isResolveMacAccess();
}
diff --git a/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/DefaultSerialTransportConfiguration.java b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/DefaultSerialTransportConfiguration.java
new file mode 100644
index 0000000000..5fd46e3b5e
--- /dev/null
+++ b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/DefaultSerialTransportConfiguration.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.plc4x.java.transport.serial;
+
+import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
+
+public class DefaultSerialTransportConfiguration implements SerialTransportConfiguration {
+
+ @ConfigurationParameter("baud-rate")
+ @IntDefaultValue(57600)
+ private int baudRate;
+
+ @ConfigurationParameter("num-data-bits")
+ @IntDefaultValue(8)
+ private int numDataBits;
+
+ @ConfigurationParameter("num-stop-bits")
+ @IntDefaultValue(1)
+ private int numStopBits;
+
+ @ConfigurationParameter("parity-bits")
+ @IntDefaultValue(0)
+ private int parityBits;
+
+ @Override
+ public int getBaudRate() {
+ return baudRate;
+ }
+
+ public void setBaudRate(int baudRate) {
+ this.baudRate = baudRate;
+ }
+
+ @Override
+ public int getNumDataBits() {
+ return numDataBits;
+ }
+
+ public void setNumDataBits(int numDataBits) {
+ this.numDataBits = numDataBits;
+ }
+
+ @Override
+ public int getNumStopBits() {
+ return numStopBits;
+ }
+
+ public void setNumStopBits(int numStopBits) {
+ this.numStopBits = numStopBits;
+ }
+
+ @Override
+ public int getParityBits() {
+ return parityBits;
+ }
+
+ public void setParityBits(int parityBits) {
+ this.parityBits = parityBits;
+ }
+
+}
diff --git a/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransportConfiguration.java b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransportConfiguration.java
index 46f2506ae0..3522eaeefc 100644
--- a/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransportConfiguration.java
+++ b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransportConfiguration.java
@@ -18,23 +18,16 @@
*/
package org.apache.plc4x.java.transport.serial;
-import com.fazecast.jSerialComm.SerialPort;
import org.apache.plc4x.java.spi.transport.TransportConfiguration;
public interface SerialTransportConfiguration extends TransportConfiguration {
int getBaudRate();
- default int getNumDataBits() {
- return 8;
- }
+ int getNumDataBits();
- default int getNumStopBits() {
- return SerialPort.ONE_STOP_BIT;
- }
+ int getNumStopBits();
- default int getParityBits() {
- return SerialPort.NO_PARITY;
- }
+ int getParityBits();
}
diff --git a/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/DefaultTcpTransportConfiguration.java b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/DefaultTcpTransportConfiguration.java
new file mode 100644
index 0000000000..62040749bc
--- /dev/null
+++ b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/DefaultTcpTransportConfiguration.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.plc4x.java.transport.tcp;
+
+import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.BooleanDefaultValue;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
+
+public abstract class DefaultTcpTransportConfiguration implements TcpTransportConfiguration {
+
+ @ConfigurationParameter("keep-alive")
+ @BooleanDefaultValue(false)
+ private boolean keepAlive;
+
+ @ConfigurationParameter("no-delay")
+ @BooleanDefaultValue(true)
+ private boolean noDelay;
+
+ @ConfigurationParameter("default-timeout")
+ @IntDefaultValue(1000)
+ private int connectTimeout;
+
+ @Override
+ public boolean isKeepAlive() {
+ return keepAlive;
+ }
+
+ public void setKeepAlive(boolean keepAlive) {
+ this.keepAlive = keepAlive;
+ }
+
+ @Override
+ public boolean isNoDelay() {
+ return noDelay;
+ }
+
+ public void setNoDelay(boolean noDelay) {
+ this.noDelay = noDelay;
+ }
+
+ @Override
+ public int getConnectTimeout() {
+ return connectTimeout;
+ }
+
+ public void setConnectTimeout(int connectTimeout) {
+ this.connectTimeout = connectTimeout;
+ }
+
+}
diff --git a/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransportConfiguration.java b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransportConfiguration.java
index 81a64b073e..f101d88c7f 100644
--- a/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransportConfiguration.java
+++ b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransportConfiguration.java
@@ -33,16 +33,10 @@ public interface TcpTransportConfiguration extends TransportConfiguration {
return NO_DEFAULT_PORT;
}
- default boolean isKeepAlive() {
- return false;
- }
+ boolean isKeepAlive();
- default boolean isNoDelay() {
- return true;
- }
+ boolean isNoDelay();
- default int getConnectTimeout() {
- return 1000;
- }
+ int getConnectTimeout();
}
diff --git a/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java b/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/DefaultUdpTransportConfiguration.java
similarity index 62%
copy from sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
copy to plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/DefaultUdpTransportConfiguration.java
index 7af218c86f..60a98717a6 100644
--- a/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
+++ b/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/DefaultUdpTransportConfiguration.java
@@ -7,7 +7,7 @@
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -16,23 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.java.df1.configuration;
-import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.transport.serial.SerialTransportConfiguration;
+package org.apache.plc4x.java.transport.udp;
-public class Df1Configuration implements Configuration, SerialTransportConfiguration {
+import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
- @ConfigurationParameter("local-addr")
- private short localAddr;
+public abstract class DefaultUdpTransportConfiguration implements UdpTransportConfiguration {
- @ConfigurationParameter("remote-addr")
- private short remoteAddr;
+ @ConfigurationParameter("local-port")
+ @IntDefaultValue(-1)
+ private int localPort;
@Override
- public int getBaudRate() {
- return 57600;
+ public int getLocalPort() {
+ return localPort;
+ }
+
+ public void setLocalPort(int localPort) {
+ this.localPort = localPort;
}
}
diff --git a/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java b/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
index 7af218c86f..6516f45213 100644
--- a/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
+++ b/sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
@@ -19,10 +19,13 @@
package org.apache.plc4x.java.df1.configuration;
import org.apache.plc4x.java.spi.configuration.Configuration;
+import org.apache.plc4x.java.spi.configuration.annotations.ComplexConfigurationParameter;
import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.transport.serial.SerialTransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfiguration;
+import org.apache.plc4x.java.spi.transport.TransportConfigurationProvider;
+import org.apache.plc4x.java.transport.serial.DefaultSerialTransportConfiguration;
-public class Df1Configuration implements Configuration, SerialTransportConfiguration {
+public class Df1Configuration implements Configuration, TransportConfigurationProvider {
@ConfigurationParameter("local-addr")
private short localAddr;
@@ -30,9 +33,40 @@ public class Df1Configuration implements Configuration, SerialTransportConfigura
@ConfigurationParameter("remote-addr")
private short remoteAddr;
+ @ComplexConfigurationParameter(prefix = "serial", defaultOverrides = {}, requiredOverrides = {})
+ private DefaultSerialTransportConfiguration serialTransportConfiguration;
+
+ public short getLocalAddr() {
+ return localAddr;
+ }
+
+ public void setLocalAddr(short localAddr) {
+ this.localAddr = localAddr;
+ }
+
+ public short getRemoteAddr() {
+ return remoteAddr;
+ }
+
+ public void setRemoteAddr(short remoteAddr) {
+ this.remoteAddr = remoteAddr;
+ }
+
+ public DefaultSerialTransportConfiguration getSerialTransportConfiguration() {
+ return serialTransportConfiguration;
+ }
+
+ public void setSerialTransportConfiguration(DefaultSerialTransportConfiguration serialTransportConfiguration) {
+ this.serialTransportConfiguration = serialTransportConfiguration;
+ }
+
@Override
- public int getBaudRate() {
- return 57600;
+ public TransportConfiguration getTransportConfiguration(String transportCode) {
+ switch (transportCode) {
+ case "serial":
+ return serialTransportConfiguration;
+ }
+ return null;
}
}