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 2019/06/26 16:51:40 UTC
[plc4x] branch develop updated: - Finetuned the java code
generation (Removing problems with multiple arrayFields) - Finished a first
version of the KNXNet/IP MSpec (Removed the Daffodil version) - Added a
sandbox driver for KNXNet/IP
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new d3dfe37 - Finetuned the java code generation (Removing problems with multiple arrayFields) - Finished a first version of the KNXNet/IP MSpec (Removed the Daffodil version) - Added a sandbox driver for KNXNet/IP
d3dfe37 is described below
commit d3dfe3745a9a7d12f3e9d3ce22247115f17d2936
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Jun 26 18:51:32 2019 +0200
- Finetuned the java code generation (Removing problems with multiple arrayFields)
- Finished a first version of the KNXNet/IP MSpec (Removed the Daffodil version)
- Added a sandbox driver for KNXNet/IP
---
.../main/resources/templates/java/io-template.ftlh | 10 +-
.../mspec/expression/ExpressionStringListener.java | 3 +
.../mspec/parser/MessageFormatListener.java | 4 +-
.../language/mspec/parser/MessageFormatParser.java | 2 +-
pom.xml | 26 -
.../main/resources/daffodil-built-in-catalog.xml | 23 -
.../plc4x/protocols/knxnetip/protocol.dfdl.xsd | 529 ---------------------
.../plc4x/protocols/knxnetip/protocol.scxml.xml | 253 ----------
.../plc4x/protocols/knxnetip/ProtocolTest.java | 33 --
protocols/{knxnet-ip => knxnetip}/pom.xml | 16 +-
.../plc4x/protocol/knxnetip/KnxNetIpProtocol.java} | 8 +-
...e.plc4x.plugins.codegenerator.protocol.Protocol | 19 +
.../resources/protocols/knxnetip/knxnetip.mspec | 190 ++++++++
.../src/site/asciidoc/index.adoc | 0
.../apache/plc4x/protocols/knxnetip/protocol.tdml | 0
protocols/plc4x/pom.xml | 35 --
.../main/resources/daffodil-built-in-catalog.xml | 25 -
.../org/apache/plc4x/protocols/protocol.dfdl.xsd | 129 -----
protocols/pom.xml | 9 +-
.../org/apache/plc4x/protocol/s7/S7Protocol.java | 2 +-
.../protocols/s7/{protocol.spec => protocol.mspec} | 0
protocols/test-utils/pom.xml | 76 ---
.../plc4x/protocols/AbstractProtocolTest.java | 64 ---
sandbox/code-gen/pom.xml | 6 +-
sandbox/pom.xml | 18 +-
.../pom.xml | 8 +-
sandbox/test-java-s7-driver/pom.xml | 2 +-
27 files changed, 241 insertions(+), 1249 deletions(-)
diff --git a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
index fef151d..d790f0b 100644
--- a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
@@ -66,16 +66,16 @@ public class ${typeName}IO {
<#if field.lengthExpression.contains("curPos")>
curPos = io.getPos() - startPos;
</#if>
- int size = ${helper.toDeserializationExpression(field.lengthExpression)};
+ int ${field.name}Size = ${helper.toDeserializationExpression(field.lengthExpression)};
<#if helper.isCountArray(field)>
- ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getLanguageTypeNameForField(field)}[size];
- for(int i = 0; i < size; i++) {
+ ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getLanguageTypeNameForField(field)}[${field.name}Size];
+ for(int i = 0; i < ${field.name}Size; i++) {
${field.name}[i] = <#if helper.isSimpleType(field.type)>io.${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${parserArgument}<#sep>, </#sep></#list></#if>)</#if>;
}
<#else>
List<${helper.getLanguageTypeNameForField(field)}> ${field.name}List = <#if helper.isCountArray(field)>new ArrayList<>(size)<#else>new LinkedList<>()</#if>;
- int endPos = io.getPos() + size;
- while(io.getPos() < endPos) {
+ int ${field.name}EndPos = io.getPos() + ${field.name}Size;
+ while(io.getPos() < ${field.name}EndPos) {
<#if field.lengthExpression.contains("curPos")>
curPos = io.getPos() - startPos;
</#if>
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
index fab3d61..4586e4e 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
@@ -44,6 +44,9 @@ public class ExpressionStringListener extends ExpressionBaseListener {
@Override
public void exitExpressionString(ExpressionParser.ExpressionStringContext ctx) {
List<Term> roots = parserContexts.pop();
+ if(roots.isEmpty()) {
+ throw new RuntimeException("Empty Expression not supported.");
+ }
if(roots.size() != 1) {
throw new RuntimeException("Expression can only contain one root term.");
}
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
index 71e9765..ffb82f1 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
@@ -224,7 +224,7 @@ public class MessageFormatListener extends MSpecBaseListener {
SimpleTypeReference.SimpleBaseType simpleBaseType = SimpleTypeReference.SimpleBaseType.valueOf(
ctx.simpleTypeReference.base.getText().toUpperCase());
if(ctx.simpleTypeReference.size != null) {
- int size = Integer.valueOf(ctx.simpleTypeReference.size.getText());
+ int size = Integer.parseInt(ctx.simpleTypeReference.size.getText());
return new DefaultSimpleTypeReference(simpleBaseType, size);
} else {
return new DefaultSimpleTypeReference(simpleBaseType, 1);
@@ -238,7 +238,7 @@ public class MessageFormatListener extends MSpecBaseListener {
SimpleTypeReference.SimpleBaseType simpleBaseType =
SimpleTypeReference.SimpleBaseType.valueOf(ctx.base.getText().toUpperCase());
if(ctx.size != null) {
- int size = Integer.valueOf(ctx.size.getText());
+ int size = Integer.parseInt(ctx.size.getText());
return new DefaultSimpleTypeReference(simpleBaseType, size);
} else {
return new DefaultSimpleTypeReference(simpleBaseType, 1);
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
index 2295d3a..79380ea 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
@@ -43,7 +43,7 @@ public class MessageFormatParser {
MessageFormatListener listener = new MessageFormatListener();
walker.walk(listener, tree);
return listener.getComplexTypes();
- } catch (IOException e) {
+ } catch (Exception e) {
throw new RuntimeException(e);
}
}
diff --git a/pom.xml b/pom.xml
index cc72766..4d2d70f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,7 +123,6 @@
<commons-pool2.version>2.6.0</commons-pool2.version>
<commons-text.version>1.6</commons-text.version>
<crc.version>1.0.1</crc.version>
- <daffodil.version>2.3.0</daffodil.version>
<elasticsearch.version>7.0.1</elasticsearch.version>
<equalsverifier.version>3.0.2</equalsverifier.version>
<findbugs.version>3.0.1</findbugs.version>
@@ -396,31 +395,6 @@
<version>${commons-text.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-japi_2.12</artifactId>
- <version>${daffodil.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-lib_2.12</artifactId>
- <version>${daffodil.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-runtime1_2.12</artifactId>
- <version>${daffodil.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-tdml-lib_2.12</artifactId>
- <version>${daffodil.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-tdml-processor_2.12</artifactId>
- <version>${daffodil.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
diff --git a/protocols/knxnet-ip/src/main/resources/daffodil-built-in-catalog.xml b/protocols/knxnet-ip/src/main/resources/daffodil-built-in-catalog.xml
deleted file mode 100644
index 2f61b17..0000000
--- a/protocols/knxnet-ip/src/main/resources/daffodil-built-in-catalog.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
- <uri name="http://plc4x.apache.org/knxnet-ip"
- uri="org/apache/plc4x/protocols/knxnetip/protocol.dfdl.xsd"/>
-</catalog>
\ No newline at end of file
diff --git a/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.dfdl.xsd b/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.dfdl.xsd
deleted file mode 100644
index b2fe71c..0000000
--- a/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.dfdl.xsd
+++ /dev/null
@@ -1,529 +0,0 @@
-<!--
- 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.
- -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
- xmlns:knx="http://plc4x.apache.org/knxnet-ip"
- xmlns:plc4x="http://plc4x.apache.org/plc4x"
- targetNamespace="http://plc4x.apache.org/knxnet-ip">
-
- <xs:annotation>
- <xs:appinfo source="http://www.ogf.org/dfdl/">
- <dfdl:defineVariable name="messageType" type="xs:string"/>
- <dfdl:defineFormat name="knxNetIpFullFormat">
- <dfdl:format representation="binary"
- binaryNumberRep="binary"
- byteOrder="bigEndian"
- lengthKind="implicit" lengthUnits="bytes" length="0"
- occursCountKind="implicit"
- textOutputMinLength="0"
- binaryBooleanTrueRep="1"
- binaryBooleanFalseRep="0"
- alignment="1" alignmentUnits="bits"
- leadingSkip="0" trailingSkip="0"
- textPadKind="none" ignoreCase="no"
- textBidi="no" floating="no"
- encoding="utf-8" truncateSpecifiedLengthString="no"
- initiator="" terminator=""
- sequenceKind="ordered" separator=""
- escapeSchemeRef="" initiatedContent="no"
- encodingErrorPolicy="replace"/>
- </dfdl:defineFormat>
- <dfdl:format ref="knx:knxNetIpFullFormat"/>
- </xs:appinfo>
- </xs:annotation>
-
- <!--
-
- TPKT - Iso-On-TCP
-
- -->
-
- <xs:element name="KNXNetIPMessage" type="knx:KNXNetIPMessageType"/>
-
- <xs:complexType name="KNXNetIPMessageType">
- <xs:sequence>
- <xs:element name="headerLength" type="plc4x:uint8" fixed="06"/>
- <xs:element name="protocolVersion" type="plc4x:uint8" fixed="10"/>
- <xs:element name="type" type="plc4x:uint16"/>
- <!-- length of the entire message (including header) -->
- <xs:element name="totalLength" type="plc4x:uint16"/>
- <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
- <xs:element dfdl:choiceBranchKey="513" name="SearchRequest" type="knx:SearchRequest"/>
- <xs:element dfdl:choiceBranchKey="514" name="SearchResponse" type="knx:SearchResponse"/>
- <xs:element dfdl:choiceBranchKey="515" name="DescriptionRequest" type="knx:DescriptionRequest"/>
- <xs:element dfdl:choiceBranchKey="516" name="DescriptionResponse" type="knx:DescriptionResponse"/>
- <xs:element dfdl:choiceBranchKey="517" name="ConnectionRequest" type="knx:ConnectionRequest"/>
- <xs:element dfdl:choiceBranchKey="518" name="ConnectionResponse" type="knx:ConnectionResponse"/>
- <xs:element dfdl:choiceBranchKey="519" name="ConnectionStateRequest" type="knx:ConnectionStateRequest"/>
- <xs:element dfdl:choiceBranchKey="520" name="ConnectionStateResponse" type="knx:ConnectionStateResponse"/>
- <xs:element dfdl:choiceBranchKey="521" name="DisconnectRequest" type="knx:DisconnectRequest"/>
- <xs:element dfdl:choiceBranchKey="522" name="DisconnectResponse" type="knx:DisconnectResponse"/>
- <xs:element dfdl:choiceBranchKey="784" name="DeviceConfigurationRequest" type="knx:DeviceConfigurationRequest"/>
- <xs:element dfdl:choiceBranchKey="785" name="DeviceConfigurationResponse" type="knx:DeviceConfigurationResponse"/>
- <xs:element dfdl:choiceBranchKey="1056" name="TunnelingRequest" type="knx:TunnelingRequest"/>
- <xs:element dfdl:choiceBranchKey="1057" name="TunnelingResponse" type="knx:TunnelingResponse"/>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="SearchRequest">
- <xs:sequence>
- <xs:element name="HPAIDiscoveryEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="SearchResponse">
- <xs:sequence>
- <xs:element name="HPAIControlEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DIBDeviceInfo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="descriptionType" type="plc4x:uint8"/>
- <xs:element name="knxMedium" type="plc4x:uint8"/>
- <xs:element name="deviceStatus">
- <xs:complexType>
- <xs:sequence>
- <xs:sequence>
- <xs:element name="reserved" type="plc4x:uint7"/>
- <xs:element name="programMode" type="plc4x:bit"/>
- </xs:sequence>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="knxAddress" type="knx:KnxAddress"/>
- <xs:element name="projectInstallationIdentifier">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="projectNumber" type="plc4x:uint8"/>
- <xs:element name="installationNumber" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="knxNetIpDeviceSerialNumber" type="xs:hexBinary"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="6"/>
- <xs:element name="knxNetIpDeviceMulticastAddress" type="plc4x:byte8"/>
- <xs:element name="knxNetIpDeviceMacAddress" type="xs:hexBinary"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="6"/>
- <xs:element name="deviceFriendlyName" type="xs:string"
- dfdl:textTrimKind="none" dfdl:alignmentUnits="bytes"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="30"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DIBSuppSvcFamilies">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="descriptionType" type="plc4x:uint8"/>
- <xs:element name="serviceIds">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="serviceId" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="type" type="plc4x:uint8"/>
- <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
- <xs:element dfdl:choiceBranchKey="2" name="KnxNetIpCore">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="3" name="KnxNetIpDeviceManagement">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="4" name="KnxNetIpTunneling">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DescriptionRequest">
- <xs:sequence>
- <xs:element name="HPAIControlEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DescriptionResponse">
- <xs:sequence>
- <!-- Identical to SearchResponse -->
- <xs:element name="DIBDeviceInfo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="descriptionType" type="plc4x:uint8"/>
- <xs:element name="knxMedium" type="plc4x:uint8"/>
- <xs:element name="deviceStatus">
- <xs:complexType>
- <xs:sequence>
- <xs:sequence>
- <xs:element name="reserved" type="plc4x:uint7"/>
- <xs:element name="programMode" type="plc4x:bit"/>
- </xs:sequence>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="knxAddress" type="knx:KnxAddress"/>
- <xs:element name="projectInstallationIdentifier">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="projectNumber" type="plc4x:uint8"/>
- <xs:element name="installationNumber" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="knxNetIpDeviceSerialNumber" type="xs:hexBinary"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="6"/>
- <xs:element name="knxNetIpDeviceMulticastAddress" type="plc4x:byte8"/>
- <xs:element name="knxNetIpDeviceMacAddress" type="xs:hexBinary"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="6"/>
- <xs:element name="deviceFriendlyName" type="xs:string"
- dfdl:textTrimKind="none" dfdl:alignmentUnits="bytes"
- dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes"
- dfdl:length="30"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DIBSuppSvcFamilies">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="descriptionType" type="plc4x:uint8"/>
- <xs:element name="serviceIds">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="serviceId" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="type" type="plc4x:uint8"/>
- <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
- <xs:element dfdl:choiceBranchKey="2" name="KnxNetIpCore">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="3" name="KnxNetIpDeviceManagement">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="4" name="KnxNetIpTunneling">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="version" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ConnectionRequest">
- <xs:sequence>
- <xs:element name="HPAIDiscoveryEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="HPAIDataEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ConnectionRequestInformation">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="connectionType" type="plc4x:uint8"/>
- <xs:element name="knxLayer" type="plc4x:uint8" />
- <xs:element name="reserved" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ConnectionResponse">
- <xs:sequence>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="status" type="plc4x:uint8"/>
- <xs:element name="HPAIDataEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ConnectionResponseDataBlock">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="connectionType" type="plc4x:uint8"/>
- <xs:element name="knxAddress" type="knx:KnxAddress"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ConnectionStateRequest">
- <xs:sequence>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="reserved" type="plc4x:uint8"/>
- <xs:element name="HPAIControlEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ConnectionStateResponse">
- <xs:sequence>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="status" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DisconnectRequest">
- <xs:sequence>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="reserved" type="plc4x:uint8"/>
- <xs:element name="HPAIControlEndpoint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="hostProtocolCode" type="plc4x:uint8"/>
- <xs:element name="ipAddress" type="plc4x:byte8" />
- <xs:element name="ipPort" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DisconnectResponse">
- <xs:sequence>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="status" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DeviceConfigurationRequest">
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="sequenceCounter" type="plc4x:uint8"/>
- <xs:element name="reserved" type="plc4x:uint8"/>
- <xs:element name="cEMI" type="knx:CEMI">
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DeviceConfigurationResponse">
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="sequenceCounter" type="plc4x:uint8"/>
- <xs:element name="status" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="TunnelingRequest">
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="sequenceCounter" type="plc4x:uint8"/>
- <xs:element name="reserved" type="plc4x:uint8"/>
- <xs:element name="cEMI" type="knx:CEMI"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="TunnelingResponse">
- <xs:sequence>
- <xs:element name="structureLength" type="plc4x:uint8"/>
- <xs:element name="communicationChannelId" type="plc4x:uint8"/>
- <xs:element name="sequenceCounter" type="plc4x:uint8"/>
- <xs:element name="status" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="KnxAddress">
- <xs:sequence>
- <xs:element name="mainGroup" type="plc4x:uint4"/>
- <xs:element name="middleGroup" type="plc4x:uint4"/>
- <xs:element name="subGroup" type="plc4x:uint8"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="CEMI">
- <xs:sequence>
- <xs:element name="type" type="plc4x:uint8"/>
- <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
- <xs:element dfdl:choiceBranchKey="252" name="MPropRead">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="interfaceObjectType" type="plc4x:uint16"/>
- <xs:element name="objectInstance" type="plc4x:uint8"/>
- <xs:element name="propertyIdentifyer" type="plc4x:uint8"/>
- <xs:element name="numberOfElements" type="plc4x:uint4"/>
- <xs:element name="startIndex" type="plc4x:uint12"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="43" name="LBusmonInd">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="additionalInformationLength" type="plc4x:uint8"/>
- <xs:element name="additionalInformation">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="additionalInformation" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="type" type="plc4x:uint8"/>
- <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
- <xs:element dfdl:choiceBranchKey="3" name="BusmonitorInfo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="length" type="plc4x:uint8"/>
- <xs:element name="busmonitorErrorFlags">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="frameErrorFlag" type="plc4x:bit"/>
- <xs:element name="bitErrorFlag" type="plc4x:bit"/>
- <xs:element name="parityErrorFlag" type="plc4x:bit"/>
- <xs:element name="dontCare" type="plc4x:bit"/>
- <xs:element name="lostFlag" type="plc4x:bit"/>
- <xs:element name="sequenceNumber" type="plc4x:uint3"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element dfdl:choiceBranchKey="4" name="RelativeTimestamp">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="length" type="plc4x:uint8"/>
- <xs:element name="relativeTimestamp" type="plc4x:uint16"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="rawFrame" type="xs:hexBinary"
- dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
- dfdl:length="{../../../../header/totalLength - (12 + ../additionalInformationLength)}"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
-
-</xs:schema>
\ No newline at end of file
diff --git a/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.scxml.xml b/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.scxml.xml
deleted file mode 100644
index 2b53ae7..0000000
--- a/protocols/knxnet-ip/src/main/resources/org/apache/plc4x/protocols/knxnetip/protocol.scxml.xml
+++ /dev/null
@@ -1,253 +0,0 @@
-<!--
- 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.
- -->
-<sc:scxml version="1.0"
- xmlns:plc4x="https://plc4x.apache.org/scxml-extension"
- xmlns:sc="http://www.w3.org/2005/07/scxml"
- xmlns:knx="http://plc4x.apache.org/knxnet-ip"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- initial="init"
- datamodel="jexl"
- xsi:schemaLocation="http://www.w3.org/2005/07/scxml http://www.w3.org/2011/04/SCXML/scxml.xsd">
-
- <!-- Define all the variables we're going to use -->
- <sc:datamodel>
- <sc:data id="protocolDaffodilSchema"/>
- <sc:data id="clientIpAddress"/>
- <sc:data id="clientUdpPort"/>
- <sc:data id="clientKnxAddress"/>
- <sc:data id="serverIpAddress"/>
- <sc:data id="serverPort"/>
- <sc:data id="serverKnxAddress"/>
- <sc:data id="serverName"/>
-
- <!-- Data container for processing requests -->
- <sc:data id="container"/>
- </sc:datamodel>
-
- <!--
- Setup the initial state ... this usually just initializes the Daffodil subsystem.
- -->
- <sc:state id="init">
- <sc:onentry>
- <plc4x:initContext protocolDaffodilSchemaName="protocolDaffodilSchema"/>
- </sc:onentry>
- <sc:transition event="success" target="connect">
- <sc:assign location="args" expr="_event.data"/>
- </sc:transition>
- </sc:state>
-
- <!--
- Sub-Statemachine handling the connection establishment.
- -->
- <sc:state id="connect">
- <sc:initial>
- <sc:transition target="establishNetworkConnection"/>
- </sc:initial>
-
- <!-- This step establishes the physical connection to the remote -->
- <sc:state id="establishNetworkConnection">
- <sc:onentry>
- <!-- Initialize the network connection to the remote host using the tcp adapter with a given host and port -->
- <plc4x:connect type="udp" host="224.0.23.12" port="3671"/>
- </sc:onentry>
- <sc:transition event="success" target="sendSearchRequest"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="sendSearchRequest">
- <sc:onentry>
- <plc4x:send>
- <knx:KNXNetIPMessage>
- <header>
- <headerLength>6</headerLength>
- <protocolVersion>16</protocolVersion>
- <serviceTypeIdentifier>513</serviceTypeIdentifier>
- <totalLength>14</totalLength>
- </header>
- <SearchRequest>
- <HPAIDiscoveryEndpoint>
- <structureLength>8</structureLength>
- <hostProtocolCode>1</hostProtocolCode>
- <ipAddress>${clientIpAddress}</ipAddress>
- <ipPort>${clientUdpPort}</ipPort>
- </HPAIDiscoveryEndpoint>
- </SearchRequest>
- </knx:KNXNetIPMessage>
- </plc4x:send>
- </sc:onentry>
- <sc:transition event="success" target="receiveSearchResponse"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="receiveSearchResponse">
- <plc4x:receiveExtractVerify timeout="5000" packetLengthStartPosition="4" packetLengthSizeInBytes="2">
- <extraction name="serverIpAddress" xpath-expression=""/>
- <extraction name="serverPort" xpath-expression=""/>
- <extraction name="serverKnxAddress" xpath-expression=""/>
- <extraction name="serverName" xpath-expression=""/>
- </plc4x:receiveExtractVerify>
- <sc:transition event="success" target="sendConnectionRequest"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <!--sc:state id="sendDescriptionRequest">
- <sc:onentry>
- <plc4x:send>
- <knx:KNXNetIPMessage>
- <header>
- <headerLength>6</headerLength>
- <protocolVersion>16</protocolVersion>
- <serviceTypeIdentifier>515</serviceTypeIdentifier>
- <totalLength>14</totalLength>
- </header>
- <DescriptionRequest>
- <HPAIControlEndpoint>
- <structureLength>8</structureLength>
- <hostProtocolCode>1</hostProtocolCode>
- <ipAddress>00000000</ipAddress>
- <ipPort>0</ipPort>
- </HPAIControlEndpoint>
- </DescriptionRequest>
- </knx:KNXNetIPMessage>
- </plc4x:send>
- </sc:onentry>
- <sc:transition event="success" target="receiveDescriptionResponse"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="receiveDescriptionResponse">
- <plc4x:receiveExtractVerify timeout="5000" packetLengthStartPosition="4" packetLengthSizeInBytes="2">
- <extraction name="clientKnxAddress" xpath-expression=""/>
- </plc4x:receiveExtractVerify>
- <sc:transition event="success" target="sendConnectionRequest"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state-->
-
- <sc:state id="sendConnectionRequest">
- <sc:onentry>
- <plc4x:send>
- <knx:KNXNetIPMessage>
- <header>
- <headerLength>6</headerLength>
- <protocolVersion>16</protocolVersion>
- <serviceTypeIdentifier>517</serviceTypeIdentifier>
- <totalLength>26</totalLength>
- </header>
- <ConnectionRequest>
- <HPAIDiscoveryEndpoint>
- <structureLength>8</structureLength>
- <hostProtocolCode>1</hostProtocolCode>
- <ipAddress>${clientIpAddress}</ipAddress>
- <ipPort>${clientUdpPort}</ipPort>
- </HPAIDiscoveryEndpoint>
- <HPAIDataEndpoint>
- <structureLength>8</structureLength>
- <hostProtocolCode>1</hostProtocolCode>
- <ipAddress>${clientIpAddress}</ipAddress>
- <ipPort>${clientUdpPort}</ipPort>
- </HPAIDataEndpoint>
- <ConnectionRequestInformation>
- <structureLength>4</structureLength>
- <connectionType>4</connectionType>
- <knxLayer>2</knxLayer>
- <reserved>0</reserved>
- </ConnectionRequestInformation>
- </ConnectionRequest>
- </knx:KNXNetIPMessage>
- </plc4x:send>
- </sc:onentry>
- <sc:transition event="success" target="receiveConnectionResponse"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="receiveConnectionResponse">
- <plc4x:receiveExtractVerify timeout="5000" packetLengthStartPosition="4" packetLengthSizeInBytes="2">
- <verification value="0" xpath-expression=""/>
- <extraction name="communicationChanelId" xpath-expression=""/>
- <extraction name="clientKnxAddress" xpath-expression=""/>
- </plc4x:receiveExtractVerify>
- <sc:transition event="success" target="sendConnectionStateRequest"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="sendConnectionStateRequest">
- <sc:onentry>
- <plc4x:send>
- <knx:KNXNetIPMessage>
- </knx:KNXNetIPMessage>
- </plc4x:send>
- </sc:onentry>
- <sc:transition event="success" target="receiveConnectionStateRequest"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <sc:state id="receiveConnectionStateRequest">
- <sc:transition event="success" target="connected"/>
- <sc:transition event="failure" target="error"/>
- <sc:transition event="disconnect" target="disconnect"/>
- </sc:state>
-
- <!--
- Default state after connecting to a PLC.
- -->
- <sc:state id="connected">
- <!--sc:transition event="read" target="sendS7ReadRequest">
- <sc:assign location="container" expr="_event.data"/>
- </sc:transition>
- <sc:transition event="write" target="sendS7WriteRequest">
- <sc:assign location="container" expr="_event.data"/>
- </sc:transition>
- <sc:transition event="disconnect" target="disconnect"/-->
- </sc:state>
-
- <!--
- Initiate disconnecting.
- -->
- <sc:state id="disconnect">
- <sc:transition event="disconnect" target="disconnected"/>
- </sc:state>
-
- <!--
- Final state of this state-machine, after any of the parties disconnected.
- -->
- <sc:final id="disconnected">
- <sc:onentry>
- <sc:log expr="'Disconnected'"/>
- </sc:onentry>
- </sc:final>
-
- <!--
- Error state in case of any form of error during the processing of data.
- -->
- <sc:final id="error">
- <sc:onentry>
- <sc:log expr="'Error'"/>
- </sc:onentry>
- </sc:final>
- </sc:state>
-
-</sc:scxml>
\ No newline at end of file
diff --git a/protocols/knxnet-ip/src/test/java/org/apache/plc4x/protocols/knxnetip/ProtocolTest.java b/protocols/knxnet-ip/src/test/java/org/apache/plc4x/protocols/knxnetip/ProtocolTest.java
deleted file mode 100644
index 47f9b81..0000000
--- a/protocols/knxnet-ip/src/test/java/org/apache/plc4x/protocols/knxnetip/ProtocolTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- 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.protocols.knxnetip;
-
-import org.apache.plc4x.protocols.AbstractProtocolTest;
-
-/**
- * Executes all tests for the ISO on TCP / TPKT protocol.
- */
-public class ProtocolTest extends AbstractProtocolTest {
-
- public ProtocolTest() {
- super("org/apache/plc4x/protocols/knxnetip/protocol.tdml");
- }
-
-}
diff --git a/protocols/knxnet-ip/pom.xml b/protocols/knxnetip/pom.xml
similarity index 74%
rename from protocols/knxnet-ip/pom.xml
rename to protocols/knxnetip/pom.xml
index a02e4b9..4aab3a8 100644
--- a/protocols/knxnet-ip/pom.xml
+++ b/protocols/knxnetip/pom.xml
@@ -29,25 +29,17 @@
<version>0.5.0-SNAPSHOT</version>
</parent>
- <artifactId>plc4x-protocols-knxnet-ip</artifactId>
+ <artifactId>plc4x-protocols-knxnetip</artifactId>
- <name>Protocols: KNXNet-IP</name>
- <description>Base protocol specifications for the KNX Net-IP protocol</description>
+ <name>Protocols: KNXNet/IP</name>
+ <description>Base protocol specifications for the KNXNet/IP protocol</description>
<dependencies>
- <!-- Import the base types -->
<dependency>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4x-protocols-plc4x</artifactId>
+ <artifactId>plc4x-build-utils-protocol-base-mspec</artifactId>
<version>0.5.0-SNAPSHOT</version>
</dependency>
-
- <dependency>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4x-protocols-test-utils</artifactId>
- <version>0.5.0-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
similarity index 86%
copy from protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java
copy to protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
index 96b3a31..89249ec 100644
--- a/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java
+++ b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
@@ -17,7 +17,7 @@
under the License.
*/
-package org.apache.plc4x.protocol.s7;
+package org.apache.plc4x.protocol.knxnetip;
import org.apache.plc4x.plugins.codegenerator.language.mspec.parser.MessageFormatParser;
import org.apache.plc4x.plugins.codegenerator.protocol.Protocol;
@@ -27,16 +27,16 @@ import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationExcepti
import java.io.InputStream;
import java.util.Map;
-public class S7Protocol implements Protocol {
+public class KnxNetIpProtocol implements Protocol {
@Override
public String getName() {
- return "s7";
+ return "knxnetip";
}
@Override
public Map<String, ComplexTypeDefinition> getTypeDefinitions() throws GenerationException {
- InputStream schemaInputStream = S7Protocol.class.getResourceAsStream("/protocols/s7/protocol.spec");
+ InputStream schemaInputStream = KnxNetIpProtocol.class.getResourceAsStream("/protocols/knxnetip/knxnetip.mspec");
if(schemaInputStream == null) {
throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
}
diff --git a/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol b/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
new file mode 100644
index 0000000..86b7da4
--- /dev/null
+++ b/protocols/knxnetip/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.plc4x.protocol.knxnetip.KnxNetIpProtocol
\ No newline at end of file
diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
new file mode 100644
index 0000000..adb5a4d
--- /dev/null
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
@@ -0,0 +1,190 @@
+//
+// 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.
+//
+
+[discriminatedType 'KNXNetIPMessage'
+ [implicit uint 8 'headerLength' 'lengthInBytes']
+ [const uint 8 'protocolVersion' '0x0A']
+ [discriminator uint 16 'msgType']
+ [implicit uint 16 'totalLength' 'lengthInBytes']
+ [typeSwitch 'msgType'
+ ['0x0201' SearchRequest
+ [field HPAIDiscoveryEndpoint 'hPAIDiscoveryEndpoint']
+ ]
+ ['0x0202' SearchResponse
+ [field HPAIControlEndpoint 'hPAIControlEndpoint']
+ [field DIBDeviceInfo 'dIBDeviceInfo']
+ [field DIBSuppSvcFamilies 'dIBSuppSvcFamilies']
+ ]
+ ['0x0203' DescriptionRequest
+ [field HPAIControlEndpoint 'hPAIControlEndpoint']
+ ]
+ ['0x0204' DescriptionResponse
+ [field DIBDeviceInfo 'dIBDeviceInfo']
+ [field DIBSuppSvcFamilies 'dIBSuppSvcFamilies']
+ ]
+ ['0x0205' ConnectionRequest
+ [field HPAIDiscoveryEndpoint 'hPAIDiscoveryEndpoint']
+ [field HPAIDataEndpoint 'hPAIDataEndpoint']
+ [field ConnectionRequestInformation 'connectionRequestInformation']
+ ]
+ ['0x0206' ConnectionResponse
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'status']
+ [field HPAIDataEndpoint 'hPAIDataEndpoint']
+ [field ConnectionResponseDataBlock 'connectionResponseDataBlock']
+ ]
+ ['0x0207' ConnectionStateRequest
+ [field uint 8 'communicationChannelId']
+ [reserved uint 8 '0x00']
+ [field HPAIControlEndpoint 'hPAIControlEndpoint']
+ ]
+ ['0x0208' ConnectionStateResponse
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'status']
+ ]
+ ['0x0209' DisconnectRequest
+ [field uint 8 'communicationChannelId']
+ [reserved uint 8 '0x00']
+ [field HPAIControlEndpoint 'hPAIControlEndpoint']
+ ]
+ ['0x020A' DisconnectResponse
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'status']
+ ]
+ ['0x0310' DeviceConfigurationRequest
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'sequenceCounter']
+ [reserved uint 8 '0x00']
+ [field CEMI 'cEMI']
+ ]
+ ['0x0311' DeviceConfigurationResponse
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'sequenceCounter']
+ [field uint 8 'status']
+ ]
+ ['0x0420' TunnelingRequest
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'sequenceCounter']
+ [reserved uint 8 '0x00']
+ [field CEMI 'cEMI']
+ ]
+ ['0x0421' TunnelingResponse
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'communicationChannelId']
+ [field uint 8 'sequenceCounter']
+ [field uint 8 'status']
+ ]
+ ]
+]
+
+[type 'HPAIDiscoveryEndpoint'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'hostProtocolCode']
+ [field IPAddress 'ipAddress']
+ [field uint 16 'ipPort']
+]
+
+[type 'HPAIControlEndpoint'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'hostProtocolCode']
+ [field IPAddress 'ipAddress']
+ [field uint 16 'ipPort']
+]
+
+[type 'DIBDeviceInfo'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'descriptionType']
+ [field uint 8 'knxMedium']
+ [field DeviceStatus 'deviceStatus']
+ [field KNXAddress 'knxAddress']
+ [field ProjectInstallationIdentifier 'projectInstallationIdentifier']
+ [arrayField uint 8 'knxNetIpDeviceSerialNumber' count '6']
+ [field uint 8 'knxNetIpDeviceMulticastAddress']
+ [arrayField uint 8 'knxNetIpDeviceMacAddress' count '6']
+ [arrayField uint 8 'deviceFriendlyName' count '30']
+]
+
+[type 'DIBSuppSvcFamilies'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'descriptionType']
+ [arrayField ServiceId 'serviceIds' length '3']
+]
+
+[type 'HPAIDataEndpoint'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'hostProtocolCode']
+ [field IPAddress 'ipAddress']
+ [field uint 16 'ipPort']
+]
+
+[type 'ConnectionRequestInformation'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'connectionType']
+ [field uint 8 'knxLayer']
+ [reserved uint 8 '0x00']
+]
+
+[type 'ConnectionResponseDataBlock'
+ [implicit uint 8 'structureLength' 'lengthInBytes']
+ [field uint 8 'connectionType']
+ [field KNXAddress 'knxAddress']
+]
+
+[type 'IPAddress'
+ [arrayField uint 8 'addr' count '4']
+]
+
+[type 'KNXAddress'
+ [field uint 4 'mainGroup']
+ [field uint 4 'middleGroup']
+ [field uint 8 'subGroup']
+]
+
+[type 'DeviceStatus'
+ [reserved uint 7 '0x00']
+ [field bit 1 'programMode']
+]
+
+[type 'ProjectInstallationIdentifier'
+ [field uint 8 'projectNumber']
+ [field uint 8 'installationNumber']
+]
+
+[discriminatedType 'ServiceId'
+ [discriminator uint 8 'serviceType']
+ [typeSwitch 'serviceType'
+ ['0x02' KnxNetIpCore
+ [field uint 8 'version']
+ ]
+ ['0x03' KnxNetIpDeviceManagement
+ [field uint 8 'version']
+ ]
+ ['0x04' KnxNetIpTunneling
+ [field uint 8 'version']
+ ]
+ ]
+]
+
+[type 'CEMI'
+ [field uint 8 'test']
+]
+
diff --git a/protocols/knxnet-ip/src/site/asciidoc/index.adoc b/protocols/knxnetip/src/site/asciidoc/index.adoc
similarity index 100%
rename from protocols/knxnet-ip/src/site/asciidoc/index.adoc
rename to protocols/knxnetip/src/site/asciidoc/index.adoc
diff --git a/protocols/knxnet-ip/src/test/resources/org/apache/plc4x/protocols/knxnetip/protocol.tdml b/protocols/knxnetip/src/test/resources/org/apache/plc4x/protocols/knxnetip/protocol.tdml
similarity index 100%
rename from protocols/knxnet-ip/src/test/resources/org/apache/plc4x/protocols/knxnetip/protocol.tdml
rename to protocols/knxnetip/src/test/resources/org/apache/plc4x/protocols/knxnetip/protocol.tdml
diff --git a/protocols/plc4x/pom.xml b/protocols/plc4x/pom.xml
deleted file mode 100644
index 9e95eb2..0000000
--- a/protocols/plc4x/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4x-protocols</artifactId>
- <version>0.5.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>plc4x-protocols-plc4x</artifactId>
-
- <name>Protocols: PLC4X</name>
- <description>Base protocol specifications for any form of PLC4X driver</description>
-
-</project>
\ No newline at end of file
diff --git a/protocols/plc4x/src/main/resources/daffodil-built-in-catalog.xml b/protocols/plc4x/src/main/resources/daffodil-built-in-catalog.xml
deleted file mode 100644
index 4ac9f77..0000000
--- a/protocols/plc4x/src/main/resources/daffodil-built-in-catalog.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
-
- <uri name="http://plc4x.apache.org/plc4x"
- uri="org/apache/plc4x/protocols/protocol.dfdl.xsd"/>
-
-</catalog>
\ No newline at end of file
diff --git a/protocols/plc4x/src/main/resources/org/apache/plc4x/protocols/protocol.dfdl.xsd b/protocols/plc4x/src/main/resources/org/apache/plc4x/protocols/protocol.dfdl.xsd
deleted file mode 100644
index 7cf31f4..0000000
--- a/protocols/plc4x/src/main/resources/org/apache/plc4x/protocols/protocol.dfdl.xsd
+++ /dev/null
@@ -1,129 +0,0 @@
-<!--
- 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.
- -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
- xmlns:plc4x="http://plc4x.apache.org/plc4x"
- targetNamespace="http://plc4x.apache.org/plc4x">
-
- <!--
-
- Simple type definition.
-
- These are the types language adapters must provide mappings for.
-
- -->
-
- <xs:simpleType name="null" dfdl:lengthUnits="bytes" dfdl:length="0" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
-
-
- <xs:simpleType name="bit" dfdl:lengthUnits="bits" dfdl:length="1" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:boolean"/>
- </xs:simpleType>
-
-
-
- <!--
- UINT values are always referenced with 'bit' lengths
- -->
- <xs:simpleType name="uint8" dfdl:lengthUnits="bits" dfdl:length="8" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:unsignedByte"/>
- </xs:simpleType>
-
- <xs:simpleType name="uint16" dfdl:lengthUnits="bits" dfdl:length="16" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:unsignedShort"/>
- </xs:simpleType>
-
- <xs:simpleType name="uint32" dfdl:lengthUnits="bits" dfdl:length="32" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:unsignedInt"/>
- </xs:simpleType>
-
- <xs:simpleType name="uint64" dfdl:lengthUnits="bits" dfdl:length="64" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:unsignedLong"/>
- </xs:simpleType>
-
- <xs:simpleType name="uintN" dfdl:lengthUnits="bits" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:unsignedLong"/>
- </xs:simpleType>
-
-
-
- <!--
- INT values are always referenced with 'bit' lengths
- -->
- <xs:simpleType name="int8" dfdl:lengthUnits="bits" dfdl:length="8" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:byte"/>
- </xs:simpleType>
-
- <xs:simpleType name="int16" dfdl:lengthUnits="bits" dfdl:length="16" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:short"/>
- </xs:simpleType>
-
- <xs:simpleType name="int32" dfdl:lengthUnits="bits" dfdl:length="32" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:int"/>
- </xs:simpleType>
-
- <xs:simpleType name="int64" dfdl:lengthUnits="bits" dfdl:length="64" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:long"/>
- </xs:simpleType>
-
- <xs:simpleType name="intN" dfdl:lengthUnits="bits" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:long"/>
- </xs:simpleType>
-
-
-
- <!--
- BYTE values are always referenced with 'byte' lengths because
- it doesn't make sense to read part of a byte as hex value.
- -->
- <xs:simpleType name="byte8" dfdl:lengthUnits="bytes" dfdl:length="1" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
- <xs:simpleType name="byte16" dfdl:lengthUnits="bytes" dfdl:length="2" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
- <xs:simpleType name="byte32" dfdl:lengthUnits="bytes" dfdl:length="3" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
- <xs:simpleType name="byte64" dfdl:lengthUnits="bytes" dfdl:length="4" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
- <xs:simpleType name="byteN" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit">
- <xs:restriction base="xs:hexBinary"/>
- </xs:simpleType>
-
-
-
- <!--
- STRING values are always referenced with 'byte' lengths because
- it doesn't make sense to read part of a string character.
- -->
- <xs:simpleType name="stringN" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
- dfdl:textTrimKind="none" dfdl:alignmentUnits="bytes">
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
-
-</xs:schema>
\ No newline at end of file
diff --git a/protocols/pom.xml b/protocols/pom.xml
index 8216520..8bf4c9c 100644
--- a/protocols/pom.xml
+++ b/protocols/pom.xml
@@ -190,15 +190,8 @@
</build>
<modules>
- <!-- Base definitions of the simple types used by all drivers -->
- <module>plc4x</module>
-
- <!-- DFDL and SCXML based protocols -->
- <module>knxnet-ip</module>
+ <module>knxnetip</module>
<module>s7</module>
-
- <!-- Stuff for testing -->
- <module>test-utils</module>
</modules>
<profiles>
diff --git a/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java b/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java
index 96b3a31..c8d576c 100644
--- a/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java
+++ b/protocols/s7/src/main/java/org/apache/plc4x/protocol/s7/S7Protocol.java
@@ -36,7 +36,7 @@ public class S7Protocol implements Protocol {
@Override
public Map<String, ComplexTypeDefinition> getTypeDefinitions() throws GenerationException {
- InputStream schemaInputStream = S7Protocol.class.getResourceAsStream("/protocols/s7/protocol.spec");
+ InputStream schemaInputStream = S7Protocol.class.getResourceAsStream("/protocols/s7/protocol.mspec");
if(schemaInputStream == null) {
throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
}
diff --git a/protocols/s7/src/main/resources/protocols/s7/protocol.spec b/protocols/s7/src/main/resources/protocols/s7/protocol.mspec
similarity index 100%
rename from protocols/s7/src/main/resources/protocols/s7/protocol.spec
rename to protocols/s7/src/main/resources/protocols/s7/protocol.mspec
diff --git a/protocols/test-utils/pom.xml b/protocols/test-utils/pom.xml
deleted file mode 100644
index 9909b49..0000000
--- a/protocols/test-utils/pom.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4x-protocols</artifactId>
- <version>0.5.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>plc4x-protocols-test-utils</artifactId>
-
- <name>Protocols: Test-Utils</name>
- <description>Test utils for protocols</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-tdml-lib_2.12</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-lib_2.12</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-japi_2.12</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.daffodil</groupId>
- <artifactId>daffodil-tdml-processor_2.12</artifactId>
- </dependency>
- <dependency>
- <groupId>org.scala-lang</groupId>
- <artifactId>scala-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <configuration>
- <usedDependencies combine.children="append">
- <usedDependency>org.apache.daffodil:daffodil-tdml-processor_2.12</usedDependency>
- </usedDependencies>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
diff --git a/protocols/test-utils/src/main/java/org/apache/plc4x/protocols/AbstractProtocolTest.java b/protocols/test-utils/src/main/java/org/apache/plc4x/protocols/AbstractProtocolTest.java
deleted file mode 100644
index e7911d3..0000000
--- a/protocols/test-utils/src/main/java/org/apache/plc4x/protocols/AbstractProtocolTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- 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.protocols;
-
-import org.apache.daffodil.tdml.DFDLTestSuite;
-import org.apache.daffodil.tdml.Runner;
-import org.apache.daffodil.util.Misc;
-import org.junit.jupiter.api.DynamicTest;
-import org.junit.jupiter.api.TestFactory;
-import scala.collection.Iterator;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public abstract class AbstractProtocolTest {
-
- private final String testsuiteName;
-
- public AbstractProtocolTest(String testsuiteName) {
- System.out.println("Initializing Testsuite:");
- System.out.println(testsuiteName);
- this.testsuiteName = testsuiteName;
- }
-
- //@TestFactory
- public List<DynamicTest> getTestsuiteTests() {
- DFDLTestSuite testSuite = new DFDLTestSuite(Misc.getRequiredResource(testsuiteName), true, true, false,
- Runner.defaultRoundTripDefaultDefault(),
- Runner.defaultValidationDefaultDefault(),
- Runner.defaultImplementationsDefaultDefault(),
- Runner.defaultShouldDoErrorComparisonOnCrossTests(),
- Runner.defaultShouldDoWarningComparisonOnCrossTests());
- List<DynamicTest> dynamicTests = new LinkedList<>();
- Iterator<String> iterator = testSuite.testCaseMap().keySet().iterator();
- while (iterator.hasNext()) {
- String testcaseName = iterator.next();
- String testcaseLabel = testSuite.suiteName() + ": " + testcaseName;
- DynamicTest test = DynamicTest.dynamicTest(testcaseLabel, () ->
- testSuite.runOneTest(testcaseName, scala.Option.apply(null), false)
- );
- dynamicTests.add(test);
- }
- System.out.println("Found " + dynamicTests.size() + " tests");
- return dynamicTests;
- }
-
-}
diff --git a/sandbox/code-gen/pom.xml b/sandbox/code-gen/pom.xml
index dc3d1ae..5928747 100644
--- a/sandbox/code-gen/pom.xml
+++ b/sandbox/code-gen/pom.xml
@@ -20,14 +20,18 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
<parent>
<artifactId>plc4x-sandbox</artifactId>
<groupId>org.apache.plc4x.sandbox</groupId>
<version>0.5.0-SNAPSHOT</version>
</parent>
- <modelVersion>4.0.0</modelVersion>
<artifactId>code-gen</artifactId>
+
+ <name>Sandbox: Code-Gen</name>
+
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
diff --git a/sandbox/pom.xml b/sandbox/pom.xml
index 5ae2fdf..12df32c 100644
--- a/sandbox/pom.xml
+++ b/sandbox/pom.xml
@@ -36,24 +36,8 @@
<modules>
<module>code-gen</module>
+ <module>test-java-knxnetip-driver</module>
<module>test-java-s7-driver</module>
</modules>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-scxml2</artifactId>
- <!-- Materialized version -->
- <version>2.0-20190516.183044-86</version>
- <exclusions>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
</project>
\ No newline at end of file
diff --git a/sandbox/test-java-s7-driver/pom.xml b/sandbox/test-java-knxnetip-driver/pom.xml
similarity index 92%
copy from sandbox/test-java-s7-driver/pom.xml
copy to sandbox/test-java-knxnetip-driver/pom.xml
index 924baf1..8d9e15e 100644
--- a/sandbox/test-java-s7-driver/pom.xml
+++ b/sandbox/test-java-knxnetip-driver/pom.xml
@@ -28,9 +28,9 @@
<version>0.5.0-SNAPSHOT</version>
</parent>
- <artifactId>test-java-s7-driver</artifactId>
+ <artifactId>test-java-knxnetip-driver</artifactId>
- <name>Sandbox: Test GenerateMojo</name>
+ <name>Sandbox: Test Generated KNXNet/IP Driver</name>
<build>
<plugins>
@@ -45,7 +45,7 @@
<goal>generate-driver</goal>
</goals>
<configuration>
- <protocolName>s7</protocolName>
+ <protocolName>knxnetip</protocolName>
<languageName>java</languageName>
</configuration>
</execution>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4x-protocols-s7</artifactId>
+ <artifactId>plc4x-protocols-knxnetip</artifactId>
<version>0.5.0-SNAPSHOT</version>
<!-- Scope is 'provided' as this way it's not shipped with the driver -->
<scope>provided</scope>
diff --git a/sandbox/test-java-s7-driver/pom.xml b/sandbox/test-java-s7-driver/pom.xml
index 924baf1..66c5a71 100644
--- a/sandbox/test-java-s7-driver/pom.xml
+++ b/sandbox/test-java-s7-driver/pom.xml
@@ -30,7 +30,7 @@
<artifactId>test-java-s7-driver</artifactId>
- <name>Sandbox: Test GenerateMojo</name>
+ <name>Sandbox: Test Generated S7 Driver</name>
<build>
<plugins>