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