Génération automatique du code d`un device UPnP

publicité
Génération automatique du code
d'un device UPnP
Utilisation de l'utilitaire de
Didier Donsez (Felix Team)
Présentation écrite par Michel D’Hooge
Principe
Génération du code basée sur des feuilles de
style XSLT à partir des descriptions XML du
device et des services associés.
Fichiers à créer pour la génération
build.xml
project.Device.properties
Device.xml
Service.xml
build.xml
<project name="OSGi UPnP Device Driver Source
Generation" default="main" basedir=".">
Fichier Ant
Appelle build.device.xml
avec les propriétés
contenues dans le fichier
project.Device.properties
<target name="main" depends="init,
generate.class">
</target>
<target name="init">
<mkdir dir="generated"/>
</target>
<target name="generate.class">
<ant antfile="build.device.xml"
target="generate.class" inheritall="true">
<property name="properties"
value="res/project.Device.properties" />
</ant>
</target>
<target name="clean">
<delete dir="generated"/>
</target>
</project>
project.Device.properties
Fichier contenant:
Le chemin du fichier
Device.xml
Le package dans
lequel on veut mettre
le device
Nom du device
device.description.xml.file= « chemin du
Device.xml »
package= « package de destination »
device.name= « nom du Device »
Device.xml et Service.xml
Fichiers de description du device et des
services qu'il comporte.
Fichiers nécessaires à la génération
build.device.xml
device2build.xslt
device2class.xslt
ssdp2class.xslt
ssdp2itf.xslt
Fichiers à créer
Fichiers fournis
build.xml
Fichiers générés
project.Device.properties
(1)
génération
appel Ant
build.Device.xml
(2)
Device.xml
(3)
device2build.xslt
build.sources.xml
Service.xml
Service.java
Service.java
(5)
Device.xml
(4)
device2class.xslt
Device.java
ssdp2class.xslt
Service.java
Service.java
Service.java
ssdp2itf.xslt
ServiceItf.java
Service.java
Service.java
Remarques
Pour éviter des bugs il faut écrire dans les
fichiers xml le texte et les balises sur une même
ligne:
<serviceType>urn:felix-apache-org:service:command:1</serviceType>
Fichiers créés
Device
AbstractUpnpDevice
1
n
Service
Service
AbstractUpnpService
1
n
AbstractUpnpStateVar
1
n
AbstractUpnpAction
Action
Service
StateVar
Service
Pour finir
Implémenter le modèle de comportement en
passant des classes implémentant les ServiceItf
Mettre en place la gestion des évènements
Téléchargement