Commit f61b218f authored by Andreas Kraft's avatar Andreas Kraft
Browse files

Fixed ModuleClass hierarchy. Much simpler know.

parent 9cf47b09
......@@ -2,6 +2,11 @@
In this document an overview about the SDT 2.0 ødefinitions and component hierarchy is given.
[Domain](#Domain)
[RootDevice](#RootDevice)
[Device](#Device)
[DeviceInfo](#DeviceInfo)
## SDT Overview
The followng UML diagram presents an overview about the SDT components.
......@@ -14,15 +19,23 @@ The syntax used in the diagram to model an XML Schema Definition (XSD) as an UML
## Components
-TBD
---
<a name="Domain"></a>
### Domain
The *Domain* is the top-level component that defines all modules and devices of a domain. A *Domain* can import definitions of other domains.
A *Domain* can define *ModuleClasses* or *RootDevices* only, or may choose to provide both.
![](images/Domain.png)
#### Attributes
- **id** : The identifier for that *Domain*. Required.
#### Elements
- **Imports** : XML import/include of other XML files. Optional.
- **Modules** : A list of *Module* components that are global to the whole domain. Optional.
- **RootDevices** : a List *RootDevice* components. Optional.
#### Example
<Domain xmlns:xi="http://www.w3.org/2001/XInclude"
......@@ -32,23 +45,127 @@ The *Domain* is the top-level component that defines all modules and devices of
<xi:include href="./dal-core.xml" parse="xml" />
</Imports>
<Modules>
<!-- Modules go here -->
<!-- List of Domain global Modules go here -->
</Modules>
<RootDevices>
<!-- RootDevices go here -->
<!-- List of RootDevices go here -->
</RootDevices>
</Domain>
---
<a name="RootDevice"/></a>
### RootDevice
#### DeviceInfo
A *RootDevice* is the description of a (physical) device that may contain optional sub-devices. It represents the idea an appliance that is addressable on a Home Area Network where one or more sub-*Devices* provide certain functionalities.
An example is a connected power-strip where each of the sockets can be switched on and off individually. The power-strip itself can provide functions such as "all sockets off" and "overall power consumption".
If the *RootDevice* includes sub-*Devices* then each sub-device may be of the same type or of different types. The functionality (*Actions*) of the *RootDevice* may be different from the functionality of its sub-*Devices*.
If the *RootDevice* does not include sub-devices then the *RootDevice* is the actual adressable device that provides all the functionality of the connected appliance.
*RootDevices* may define their own *ModuleClasses* or refer to predefined ModulesClasses of its or another *Domain*.
![](images/RootDevice.png)
#### Attributes
- **id** : The identifier for that *RootDevice*. Required.
#### Elements
- **Doc** : Documentation for the *RootDevice*. Optional.
- **Modules** : A list of *Module* components that are local to the *RootDevice*. Optional.
- **DeviceInfo** : Further meta-data about the *RootDevice*. Optional.
- **Devices** : A list *Device* components. Optional.
#### Example
<RootDevice id="aRootDevice">
<Doc>Some documentation</Doc>
<Modules>
<!-- List of Modules local to the RootDevice go here-->
</Modules>
<DeviceInfo>
<!-- The DeviceInfos for the RootDevice goes here-->
</DeviceInfo>
<Devices>
<!-- List of Sub-Devices of the RootDevice go here-->
</Devices>
</RootDevice>
---
### Device
*Devices* are optional components of a *RootDevice*. They represent physical sub-devices inside another device (the *RootDevice*).
*Devices* may define their own *ModuleClasses* or refer to predefined ModulesClasses of its or another *Domain*.
![](images/Device.png)
#### Attributes
- **id** : The identifier for that *Device*. Required.
#### Elements
- **Doc** : Documentation for the *Device*. Optional.
- **Modules** : A list of *Module* components that are local to the *RootDevice*. Optional.
- **DeviceInfo** : A list *Device* components. Optional.
#### Example
<Device id="aDevice">
<Doc>Some documentation</Doc>
<Modules>
<!-- Modules local to the Device go here-->
</Modules>
<DeviceInfo>
<!-- The DeviceInfo for the Device goes here-->
</DeviceInfo>
</RootDevice>
---
### Module, ModuleClass, ModuleDef
![](images/Domain.png)
#### Attributes
#### Sub-Components
#### Example
---
<a name="DeviceInfo"/></a>
### DeviceInfo
The *DeviceInfo* is an element of *RootDevice* or *Device* where a device vendor can provide metadata for a device that may be presented to an end-user.
![](images/DeviceInfo.png)
#### Attributes
None.
#### Elements
- **Name** : Vendor-specific name of a device. Required.
- **Vendor** : Name of the vendor for the device. Required.
- **FirmwareVersion** : Current version number of the firmware or other version information. Optional.
- **VendorURL** : A URL that points to further information for that device. This might be the product page on the web or an URL to the device manual. Optional.
- **SerialNumber** : The serial number or serial string. Optional.
#### Example
<DeviceInfo>
<Name>SomeDeviceName</Name>
<Vendor>ACME</Vendor>
<FirmwareVersion>1.0</FirmwareVersion>
<VendorURL>http://www.example.com/</VendorURL>
<SerialNumber>1234.5</SerialNumber>
</DeviceInfo>
---
---
### Action
### Data
......@@ -59,3 +176,14 @@ The *Domain* is the top-level component that defines all modules and devices of
# DOC TBD
Explain. Describe content elements
......@@ -4,12 +4,12 @@
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>70</y>
<x>330</x>
<y>120</y>
<w>150</w>
<h>130</h>
</coordinates>
<panel_attributes>ModuleDef
<panel_attributes>ModuleClass
--
*@ name : text*
/- extends: Extends/
......@@ -17,14 +17,15 @@
/- Actions : Actions/
/- Data : Data/
/- Events : Events/
fg=blue
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>520</x>
<y>160</y>
<x>580</x>
<y>190</y>
<w>140</w>
<h>100</h>
</coordinates>
......@@ -40,21 +41,21 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>410</x>
<y>70</y>
<x>470</x>
<y>100</y>
<w>130</w>
<h>70</h>
<h>90</h>
</coordinates>
<panel_attributes>lt=&lt;-
m1=0,1
</panel_attributes>
<additional_attributes>110.0;10.0;40.0;10.0;40.0;50.0;10.0;50.0</additional_attributes>
<additional_attributes>110.0;10.0;40.0;10.0;40.0;70.0;10.0;70.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>740</x>
<y>230</y>
<x>800</x>
<y>260</y>
<w>160</w>
<h>80</h>
</coordinates>
......@@ -63,14 +64,14 @@ m1=0,1
*@ name ; text*
*@ type : DataType*
/- Doc : Doc/
</panel_attributes>
fg=blue</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>650</x>
<y>230</y>
<x>710</x>
<y>260</y>
<w>110</w>
<h>40</h>
</coordinates>
......@@ -81,8 +82,8 @@ m1=0..*</panel_attributes>
<element>
<id>UMLClass</id>
<coordinates>
<x>0</x>
<y>200</y>
<x>60</x>
<y>230</y>
<w>200</w>
<h>100</h>
</coordinates>
......@@ -98,21 +99,20 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>190</x>
<y>250</y>
<x>250</x>
<y>120</y>
<w>100</w>
<h>50</h>
<h>200</h>
</coordinates>
<panel_attributes>lt=&lt;-
m1=0..*
</panel_attributes>
<additional_attributes>80.0;20.0;10.0;20.0</additional_attributes>
m1= 0..*</panel_attributes>
<additional_attributes>80.0;10.0;30.0;10.0;30.0;180.0;10.0;180.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>570</y>
<x>330</x>
<y>600</y>
<w>190</w>
<h>100</h>
</coordinates>
......@@ -128,8 +128,8 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>180</x>
<y>270</y>
<x>240</x>
<y>300</y>
<w>50</w>
<h>250</h>
</coordinates>
......@@ -141,8 +141,8 @@ m1=0..*
<element>
<id>UMLClass</id>
<coordinates>
<x>530</x>
<y>580</y>
<x>590</x>
<y>610</y>
<w>180</w>
<h>130</h>
</coordinates>
......@@ -160,8 +160,8 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>450</x>
<y>580</y>
<x>510</x>
<y>610</y>
<w>100</w>
<h>90</h>
</coordinates>
......@@ -172,8 +172,8 @@ m1= 0,1</panel_attributes>
<element>
<id>UMLClass</id>
<coordinates>
<x>740</x>
<y>0</y>
<x>800</x>
<y>30</y>
<w>160</w>
<h>210</h>
</coordinates>
......@@ -195,21 +195,22 @@ blob</panel_attributes>
<element>
<id>UMLClass</id>
<coordinates>
<x>790</x>
<y>620</y>
<x>850</x>
<y>650</y>
<w>110</w>
<h>50</h>
</coordinates>
<panel_attributes>Doc
--
- ...</panel_attributes>
- ...
fg=blue</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>520</x>
<y>60</y>
<x>580</x>
<y>90</y>
<w>130</w>
<h>80</h>
</coordinates>
......@@ -224,21 +225,21 @@ Extends
<element>
<id>Relation</id>
<coordinates>
<x>410</x>
<y>140</y>
<x>470</x>
<y>180</y>
<w>130</w>
<h>60</h>
<h>50</h>
</coordinates>
<panel_attributes>lt=&lt;-
m1=0..*
</panel_attributes>
<additional_attributes>110.0;30.0;80.0;30.0;80.0;10.0;10.0;10.0</additional_attributes>
<additional_attributes>110.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>650</x>
<y>10</y>
<x>710</x>
<y>40</y>
<w>110</w>
<h>220</h>
</coordinates>
......@@ -250,8 +251,8 @@ m1=0,1
<element>
<id>Relation</id>
<coordinates>
<x>720</x>
<y>610</y>
<x>780</x>
<y>640</y>
<w>90</w>
<h>50</h>
</coordinates>
......@@ -263,8 +264,8 @@ m1=0..*
<element>
<id>Relation</id>
<coordinates>
<x>890</x>
<y>80</y>
<x>950</x>
<y>110</y>
<w>50</w>
<h>220</h>
</coordinates>
......@@ -276,8 +277,8 @@ m1= 1
<element>
<id>UMLClass</id>
<coordinates>
<x>520</x>
<y>310</y>
<x>580</x>
<y>340</y>
<w>170</w>
<h>50</h>
</coordinates>
......@@ -290,21 +291,21 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>410</x>
<y>160</y>
<x>470</x>
<y>210</y>
<w>130</w>
<h>190</h>
<h>170</h>
</coordinates>
<panel_attributes>lt=&lt;-
m1=0..*
</panel_attributes>
<additional_attributes>110.0;160.0;50.0;160.0;50.0;10.0;10.0;10.0</additional_attributes>
<additional_attributes>110.0;140.0;50.0;140.0;50.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>680</x>
<y>320</y>
<x>740</x>
<y>350</y>
<w>80</w>
<h>50</h>
</coordinates>
......@@ -316,8 +317,8 @@ m1=0..*
<element>
<id>UMLClass</id>
<coordinates>
<x>740</x>
<y>330</y>
<x>800</x>
<y>360</y>
<w>160</w>
<h>130</h>
</coordinates>
......@@ -329,14 +330,15 @@ m1=0..*
/@ readable : boolean/
/@ eventable : boolean/
/- Doc : Doc/
fg=blue
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>530</x>
<y>490</y>
<x>590</x>
<y>520</y>
<w>160</w>
<h>80</h>
</coordinates>
......@@ -351,21 +353,21 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>410</x>
<y>170</y>
<x>470</x>
<y>220</y>
<w>140</w>
<h>360</h>
<h>340</h>
</coordinates>
<panel_attributes>lt=&lt;-
m1=0..*
</panel_attributes>
<additional_attributes>120.0;330.0;30.0;330.0;30.0;10.0;10.0;10.0</additional_attributes>
<additional_attributes>120.0;310.0;30.0;310.0;30.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>520</y>
<x>330</x>
<y>550</y>
<w>120</w>
<h>30</h>
</coordinates>
......@@ -373,36 +375,11 @@ m1=0..*
fg=blue</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>260</y>
<w>120</w>
<h>30</h>
</coordinates>
<panel_attributes>ModuleClass
fg=blue</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>320</x>
<y>190</y>
<w>100</w>
<h>90</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;&lt;.
&lt;&lt;extends&gt;&gt;
</panel_attributes>
<additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>380</x>
<y>520</y>
<x>440</x>
<y>550</y>
<w>110</w>
<h>130</h>
</coordinates>
......@@ -414,20 +391,20 @@ m1=0..*
<element>
<id>Relation</id>
<coordinates>
<x>320</x>
<y>280</y>
<x>380</x>
<y>240</y>
<w>100</w>
<h>260</h>
<h>330</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;&lt;.
&lt;&lt;extends&gt;&gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;240.0</additional_attributes>
<additional_attributes>10.0;10.0;10.0;310.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>590</x>
<y>350</y>
<x>650</x>
<y>380</y>
<w>130</w>
<h>210</h>
</coordinates>
......@@ -439,8 +416,8 @@ m1=0..*
<element>
<id>Relation</id>
<coordinates>
<x>890</x>
<y>10</y>
<x>950</x>
<y>40</y>
<w>70</w>
<h>390</h>
</coordinates>
......@@ -452,8 +429,8 @@ m1=1
<element>
<id>UMLClass</id>
<coordinates>
<x>10</x>
<y>500</y>
<x>70</x>
<y>530</y>
<w>190</w>
<h>110</h>
</coordinates>
......@@ -470,8 +447,8 @@ fg=blue</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>190</x>
<y>560</y>
<x>250</x>
<y>590</y>
<w>100</w>
<h>50</h>
</coordinates>
......@@ -483,8 +460,8 @@ m1=0..*
<element>
<id>UMLNote</id>
<coordinates>
<x>0</x>
<y>0</y>
<x>60</x>
<y>30</y>
<w>200</w>
<h>130</h>
</coordinates>
......@@ -504,8 +481,8 @@ Subclassing</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>100</x>
<y>60</y>
<x>160</x>
<y>90</y>
<w>100</w>
<h>40</h>
</coordinates>
......@@ -518,8 +495,8 @@ m1=0..*
<element>
<id>Relation</id>
<coordinates>
<x>100</x>
<y>90</y>
<x>160</x>
<y>120</y>
<w>110</w>
<h>40</h>
</coordinates>
......@@ -531,8 +508,8 @@ fontsize=10</panel_attributes>
<element>
<id>Relation</id>
<coordinates>
<x>190</x>
<y>520</y>
<x>250</x>
<y>550</y>
<w>100</w>
<h>60</h>