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

cdutz pushed a commit to branch feature/generated-drivers
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git


The following commit(s) were added to refs/heads/feature/generated-drivers by 
this push:
     new d7c70ed  - Working on the protocol spec (Removing inner complex types)
d7c70ed is described below

commit d7c70ed511676fe4847de942ee17e2c0771f5e68
Author: Christofer Dutz <[email protected]>
AuthorDate: Thu Apr 18 15:11:59 2019 +0200

    - Working on the protocol spec (Removing inner complex types)
---
 .../src/main/resources/protocol.dfdl.xsd           | 408 ++++++++-------------
 1 file changed, 145 insertions(+), 263 deletions(-)

diff --git 
a/sandbox/plc4x-maven-plugin/src/test/projects/simple-embedded-schema/src/main/resources/protocol.dfdl.xsd
 
b/sandbox/plc4x-maven-plugin/src/test/projects/simple-embedded-schema/src/main/resources/protocol.dfdl.xsd
index c12d41e..f133036 100644
--- 
a/sandbox/plc4x-maven-plugin/src/test/projects/simple-embedded-schema/src/main/resources/protocol.dfdl.xsd
+++ 
b/sandbox/plc4x-maven-plugin/src/test/projects/simple-embedded-schema/src/main/resources/protocol.dfdl.xsd
@@ -135,265 +135,39 @@
 
     <xs:complexType name="SearchRequest">
         <xs:sequence>
-            <xs:element name="HPAIDiscoveryEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
+            <xs:element name="HPAIDiscoveryEndpoint" 
type="knx:HPAIDiscoveryEndpoint"/>
         </xs:sequence>
     </xs:complexType>
 
     <xs:complexType name="SearchResponse">
         <xs:sequence>
-            <xs:element name="HPAIControlEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="DIBDeviceInfo">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="descriptionType" type="knx:byte"/>
-                        <xs:element name="knxMedium" type="knx:byte"/>
-                        <xs:element name="deviceStatus">
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:sequence>
-                                        <xs:element name="reserved" 
type="knx:unsigned7bit"/>
-                                        <xs:element name="programMode" 
type="knx: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="knx:byte"/>
-                                    <xs:element name="installationNumber" 
type="knx:byte"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="knxNetIpDeviceSerialNumber" 
type="knx:hex6Byte"/>
-                        <xs:element name="knxNetIpDeviceMulticastAddress" 
type="knx:ipAddress"/>
-                        <xs:element name="knxNetIpDeviceMacAddress" 
type="knx:hex6Byte"/>
-                        <xs:element name="deviceFriendlyName" 
type="knx:string30Chars"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="DIBSuppSvcFamilies">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="descriptionType" type="knx:byte"/>
-                        <xs:element name="serviceIds">
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="serviceId" 
maxOccurs="unbounded">
-                                        <xs:complexType>
-                                            <xs:sequence>
-                                                <xs:element name="type" 
type="knx:byte"/>
-                                                <xs:choice 
dfdl:choiceDispatchKey="{xs:string(type)}">
-                                                    <xs:element 
dfdl:choiceBranchKey="2" name="KnxNetIpCore">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                    <xs:element 
dfdl:choiceBranchKey="3" name="KnxNetIpDeviceManagement">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                    <xs:element 
dfdl:choiceBranchKey="4" name="KnxNetIpTunneling">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </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:element name="hPAIControlEndpoint" 
type="knx:HPAIControlEndpoint"/>
+            <xs:element name="dIBDeviceInfo" type="knx:DIBDeviceInfo"/>
+            <xs:element name="DIBSuppSvcFamilies" 
type="knx:DIBSuppSvcFamilies"/>
         </xs:sequence>
     </xs:complexType>
 
     <xs:complexType name="DescriptionRequest">
         <xs:sequence>
-            <xs:element name="HPAIControlEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
+            <xs:element name="hPAIControlEndpoint" 
type="knx:HPAIControlEndpoint"/>
         </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="knx:byte"/>
-                        <xs:element name="descriptionType" type="knx:byte"/>
-                        <xs:element name="knxMedium" type="knx:byte"/>
-                        <xs:element name="deviceStatus">
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:sequence>
-                                        <xs:element name="reserved" 
type="knx:unsigned7bit"/>
-                                        <xs:element name="programMode" 
type="knx: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="knx:byte"/>
-                                    <xs:element name="installationNumber" 
type="knx:byte"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="knxNetIpDeviceSerialNumber" 
type="knx:hex6Byte"/>
-                        <xs:element name="knxNetIpDeviceMulticastAddress" 
type="knx:ipAddress"/>
-                        <xs:element name="knxNetIpDeviceMacAddress" 
type="knx:hex6Byte"/>
-                        <xs:element name="deviceFriendlyName" 
type="knx:string30Chars"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="DIBSuppSvcFamilies">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="descriptionType" type="knx:byte"/>
-                        <xs:element name="serviceIds">
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="serviceId" 
maxOccurs="unbounded">
-                                        <xs:complexType>
-                                            <xs:sequence>
-                                                <xs:element name="type" 
type="knx:byte"/>
-                                                <xs:choice 
dfdl:choiceDispatchKey="{xs:string(type)}">
-                                                    <xs:element 
dfdl:choiceBranchKey="2" name="KnxNetIpCore">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                    <xs:element 
dfdl:choiceBranchKey="3" name="KnxNetIpDeviceManagement">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                    <xs:element 
dfdl:choiceBranchKey="4" name="KnxNetIpTunneling">
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                                <xs:element 
name="version" type="knx:byte"/>
-                                                            </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:element name="dIBDeviceInfo" type="knx:DIBDeviceInfo"/>
+            <xs:element name="DIBSuppSvcFamilies" 
type="knx:DIBSuppSvcFamilies"/>
         </xs:sequence>
     </xs:complexType>
 
-    <xs:complexType name="ConnectionRequest">
-        <xs:sequence>
-            <xs:element name="HPAIDiscoveryEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="HPAIDataEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="ConnectionRequestInformation">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="connectionType" type="knx:byte"/>
-                        <xs:element name="knxLayer" type="knx:byte" />
-                        <xs:element name="reserved" type="knx:byte"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
 
     <xs:complexType name="ConnectionResponse">
         <xs:sequence>
             <xs:element name="communicationChannelId" type="knx:byte"/>
             <xs:element name="status" type="knx:byte"/>
-            <xs:element name="HPAIDataEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-            <xs:element name="ConnectionResponseDataBlock">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="connectionType" type="knx:byte"/>
-                        <xs:element name="knxAddress" type="knx:KnxAddress"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
+            <xs:element name="HPAIDataEndpoint" type="knx:HPAIDataEndpoint"/>
+            <xs:element name="connectionResponseDataBlock" 
type="knx:ConnectionResponseDataBlock"/>
         </xs:sequence>
     </xs:complexType>
 
@@ -401,16 +175,7 @@
         <xs:sequence>
             <xs:element name="communicationChannelId" type="knx:byte"/>
             <xs:element name="reserved" type="knx:byte"/>
-            <xs:element name="HPAIControlEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
+            <xs:element name="hPAIControlEndpoint" 
type="knx:HPAIControlEndpoint"/>
         </xs:sequence>
     </xs:complexType>
 
@@ -425,16 +190,7 @@
         <xs:sequence>
             <xs:element name="communicationChannelId" type="knx:byte"/>
             <xs:element name="reserved" type="knx:byte"/>
-            <xs:element name="HPAIControlEndpoint">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="structureLength" type="knx:byte"/>
-                        <xs:element name="hostProtocolCode" type="knx:byte"/>
-                        <xs:element name="ipAddress" type="knx:ipAddress" />
-                        <xs:element name="ipPort" type="knx:short"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
+            <xs:element name="hPAIControlEndpoint" 
type="knx:HPAIControlEndpoint"/>
         </xs:sequence>
     </xs:complexType>
 
@@ -484,14 +240,6 @@
         </xs:sequence>
     </xs:complexType>
 
-    <xs:complexType name="KnxAddress">
-        <xs:sequence>
-            <xs:element name="mainGroup" type="knx:unsigned4bit"/>
-            <xs:element name="middleGroup" type="knx:unsigned4bit"/>
-            <xs:element name="subGroup" type="knx:byte"/>
-        </xs:sequence>
-    </xs:complexType>
-
     <xs:complexType name="CEMI">
         <xs:sequence>
             <xs:element name="type" type="knx:byte"/>
@@ -563,4 +311,138 @@
         </xs:sequence>
     </xs:complexType>
 
+    <xs:complexType name="ConnectionRequest">
+        <xs:sequence>
+            <xs:element name="hPAIDiscoveryEndpoint" 
type="knx:HPAIDiscoveryEndpoint"/>
+            <xs:element name="hPAIDataEndpoint" type="knx:HPAIDataEndpoint"/>
+            <xs:element name="connectionRequestInformation" 
type="knx:ConnectionRequestInformation"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="HPAIControlEndpoint">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="hostProtocolCode" type="knx:byte"/>
+            <xs:element name="ipAddress" type="knx:ipAddress" />
+            <xs:element name="ipPort" type="knx:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="HPAIDiscoveryEndpoint">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="hostProtocolCode" type="knx:byte"/>
+            <xs:element name="ipAddress" type="knx:ipAddress" />
+            <xs:element name="ipPort" type="knx:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="HPAIDataEndpoint">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="hostProtocolCode" type="knx:byte"/>
+            <xs:element name="ipAddress" type="knx:ipAddress" />
+            <xs:element name="ipPort" type="knx:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="ConnectionRequestInformation">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="connectionType" type="knx:byte"/>
+            <xs:element name="knxLayer" type="knx:byte" />
+            <xs:element name="reserved" type="knx:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="ConnectionResponseDataBlock">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="connectionType" type="knx:byte"/>
+            <xs:element name="knxAddress" type="knx:KnxAddress"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="DIBDeviceInfo">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="descriptionType" type="knx:byte"/>
+            <xs:element name="knxMedium" type="knx:byte"/>
+            <xs:element name="deviceStatus" type="knx:DeviceStatus"/>
+            <xs:element name="knxAddress" type="knx:KnxAddress"/>
+            <xs:element name="projectInstallationIdentifier" 
type="knx:ProjectInstallationIdentifier"/>
+            <xs:element name="knxNetIpDeviceSerialNumber" type="knx:hex6Byte"/>
+            <xs:element name="knxNetIpDeviceMulticastAddress" 
type="knx:ipAddress"/>
+            <xs:element name="knxNetIpDeviceMacAddress" type="knx:hex6Byte"/>
+            <xs:element name="deviceFriendlyName" type="knx:string30Chars"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="ProjectInstallationIdentifier">
+        <xs:sequence>
+            <xs:element name="projectNumber" type="knx:byte"/>
+            <xs:element name="installationNumber" type="knx:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="KnxAddress">
+        <xs:sequence>
+            <xs:element name="mainGroup" type="knx:unsigned4bit"/>
+            <xs:element name="middleGroup" type="knx:unsigned4bit"/>
+            <xs:element name="subGroup" type="knx:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="DeviceStatus">
+        <xs:sequence>
+            <xs:sequence>
+                <xs:element name="reserved" type="knx:unsigned7bit"/>
+                <xs:element name="programMode" type="knx:bit"/>
+            </xs:sequence>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="DIBSuppSvcFamilies">
+        <xs:sequence>
+            <xs:element name="structureLength" type="knx:byte"/>
+            <xs:element name="descriptionType" type="knx:byte"/>
+            <xs:element name="serviceIds">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="serviceId" maxOccurs="unbounded">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="knx:byte"/>
+                                    <xs:choice 
dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="2" 
name="KnxNetIpCore">
+                                            <xs:complexType>
+                                                <xs:sequence>
+                                                    <xs:element name="version" 
type="knx:byte"/>
+                                                </xs:sequence>
+                                            </xs:complexType>
+                                        </xs:element>
+                                        <xs:element dfdl:choiceBranchKey="3" 
name="KnxNetIpDeviceManagement">
+                                            <xs:complexType>
+                                                <xs:sequence>
+                                                    <xs:element name="version" 
type="knx:byte"/>
+                                                </xs:sequence>
+                                            </xs:complexType>
+                                        </xs:element>
+                                        <xs:element dfdl:choiceBranchKey="4" 
name="KnxNetIpTunneling">
+                                            <xs:complexType>
+                                                <xs:sequence>
+                                                    <xs:element name="version" 
type="knx:byte"/>
+                                                </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:schema>
\ No newline at end of file

Reply via email to