@@ -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*.

#### 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*.

#### 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

#### Attributes
#### Sub-Components
#### Example
---
<aname="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.

#### 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