Drivers

Comment créer de nouveaux drivers ?

Cet article a pour d'expliquer comment créer un nouveau driver.
En effet, le sysème modulaire d'Homidom permer de rajouter trés facilement de nouveaux drivers et ainsi à n'importe qui d'en dévellopper de nouveaux.

Un driver est simplement composé d'une DLL (et potentiellement d'autres fichiers joint à la DLL) qu'il faut copier dans le repertoire Drivers d'Homidom.

Pour développer un nouveau driver, deux solutions :

  • Télécharger le code source complet à partir de GoogleCode et ainsi charger la solution compléte Homidom incluant les drivers existants.
  • Créer une nouvelle solution/projet Visual Studio (un template sera bientôt disponible) et y inclure la DLL Homidom qui comporte toutes les classes et fonctions utiles au driver.

 

Structure d'un driver

Que ce soit dans les drivers déjà développés (prendre exemple sur le driver virtuel qui est trés simple) ou dans le template, on peut voir que le driver se décompose en plusieurs parties :

  • Les variables génériques (propriétés du driver, nom...)
  • Les variables internes : variables propres à ce driver qui sont utilisés dans le reste du code
  • les proriétés génériques : les propriétés publiques du driver permettant au serveur de modifier/connaître la configuration de ce dernier
  • Les fonctions génériques : start/stop du driver, new... permettant au serveur de lancer le driver, le configurer, intéragir avec lui (écrire une commande sur son port matériel...)
  • Les fonctions internes : fonctions propres au driver

Les variables génériques

En cours d'écriture

Les variables internes

En cours d'écriture

Les propriétés génériques

Ces propriétés ne doivent pas être modifiés. En effet, celle-ci étant publique, le serveur s'en sert pour configurer / charger un driver. Si une propriété venait à manquer, le driver pourrait tout simplement planter ou ne pas se charger.

Les fonctions génériques

Ces fonctions sont réparties en deux groupes, le premier est composé de fonctions servant en interne dans les autres fonctions (qu'il ne faut pas modifier), le deuxiemè comporte les fonctions qu'il faut personnaliser :

  • New
  • Start
  • Stop
  • Read
  • Write
  • ExecuteCommand
  • NewDevice
  • TimerTick

Les fonctions internes

Tout comme pour les variables internes, cet espace permet de rajouter toutes les fonctions necessaires au driver pour fonctionner.

 

Particularités

Les propriétés avancées

Un driver peut avoir des propriétés avancés, celle-ci sont modifiable par l'utilisateurs depuis les interfaces d'administration.
Ces propriétés, qui sont propres à chaque driver, permettent par exemple de configurer le débit du port série... bref toute autres paramétres utile au driver et non commun à tous les drivers et que l'utilisateur peut modifier.

Pour mettre une propriété avancée en place, il faut :

  • Dans les variables génériques, créer une variable avec une valeur par défaut :

    'param avancé
    Dim _DEBUG As Boolean = False
    Dim _PARAMMODE As String = "201001111011111111"

  • Dans la fonction générique START, récupérer la valeur stocké dans la configuration d'Homidom

        'récupération des paramétres avancés
        Try
            _DEBUG = _Parametres.Item(0).Valeur
            _PARAMMODE = _Parametres.Item(1).Valeur
        Catch ex As Exception
            WriteLog("ERR: Erreur dans les paramétres avancés. utilisation des valeur par défaut" & ex.Message)
        End Try

  • Dans la fonction New, ajouter le paramétre pour qu'il soit accésible depuis les interfaces :

            'add_paramavance("synchro", "Synchronisation avec le receiver (True/False)", True)
            add_paramavance("Debug", "Activer le Debug complet (True/False)", False)
            add_paramavance("ParamMode", "Paramétres (ex: 201001111011111111)", "201001111011111111")