Skip navigation.
Home

ENX : un serveur de registre modulable

ENX est un logiciel développé en ADA permettant de contrôler différents matériels électroniques et fournissant des services web aux applications voulant se connecter. Il a été pensé et développé comme un logiciel intervenant en fin de chaîne de contrôle. Pour cette raison, il a été développé autour de deux interfaces: la première permettant de définir les fonctions de base nécessaires au contrôle de matériel et la seconde permettant de faciliter son contrôle par une application tierce.
Interface matérielle
Afin de contrôler la majorité des matérielles (moteurs, cartes électroniques, sonde, ...) une réflexion a été mené sur l'ensemble de fonctions minimales nécessaires pour contrôler tous ces types d'appareils et quels fonctions il était nécessaire d'ajouter pour apporter la souplesse nécessaire à toutes les exceptions. De cette analyse est resorti un ensemble de fonctionnalités à implémenter quasi systématiquement a été identifié:

  • Ecriture et lecture de registre gérant des accès sur 8, 16 ou 32 bits
  • Chargement ou sauvegarde de zone mémoire
  • Une phase d'initialisation et de fermeture
  • Une fonctionnalité libre permettant d'implémenter des fonctionnalités spécifiques au matériel.

ENX : Schéma généralENX : Schéma généralCette liste de fonctionnalités a servi de base dans l'élaboration de la classe abstraite servant de base à définissant "driver ENX".
Enfin, afin d'accroître la modularité et la souplesse d'utilisation de ce logiciel, un système de gestion des drivers de type plugin a été mis en place, basé sur le systèmes de librairies dynamiques. Ainsi, il est possible de charger ou de décharger un driver sans arrêter ni même recompiler le cœur de l'application.
Cette possibilité est particulièrement utile dans le cadre d'application embarqué, ou lorsque l'application doit gérer différents matériels. Il est possible de modifier le driver d'un matériel tout en continuant à contrôler le fonctionnement d'un autre.
Interface logicielle
Ce logiciel ayant été conçu pour être contrôlé par une autre application (interface utilisateur, ou autre programme de type Run Control, Slow Control, ...), il a été pourvu d'un serveur web fournissant via une liste de fonctionnalités et un langage simple, la possibilité de contrôler l'ensemble du serveur de registre ENX.
Le service web fournit deux points d'entrée. Le premier permet de contrôler l'environnement du serveur de registre: cela permet de gérer la liste des drivers chargés, la configuration de ces drivers, la notion d'utilisateur... La seconde permet de faire appel aux fonctionnalités d'un driver spécifique afin de contrôler un matériel en particulier.
Ces deux fonctions acceptent en argument une chaîne XML détaillant les fonctionnalités appelés et les arguments passés. Ainsi, cela nous a permis d'obtenir une interface vers les applications extérieures stable, ce qui évite de redévelopper toute la partie communication entre ENX et une application tierce lors d'une modification dans le cœur d'ENX. La seule partie qui nécessitera un développement concernera le module ayant subi une modification.

Auteur : Eric Legay