Next: Die Errorklasse Up: Die Gerätetreiber-Klassenbibliothek Previous: Die Aktionsklasse

Die Datenbankklasse

Die Klasse DevDB wurde entwickelt, um einen einheitlichen Zugriff auf die gemeinsame Steuerungs-Datenbank zu ermöglichen. Für die Zukunft ist geplant, die gesamte Datenbank auf eine andere Basis zu stellen. Mit dieser Klassenbibliothek ist es jedoch möglich, die Datenbankanbindung zu ändern, ohne daß sich die Programm-Schnittstelle ändert.

Die Funktionen greifen zur Zeit auf Routinen zurück, die in [Kun92] beschrieben sind. Dabei handelt es sich grundsätzlich um zwei verschiedene Arten von Funktionen:

Die Datenbank ist im gegenwärtigen Zustand, wie in Abschnitt beschrieben, in einem hierarchischen Dateisystem aufgebaut. Dazu werden beim Benutzer dbman entsprechende Verzeichnisbäume verwandt. Informationen z.B. zum Service target/height sind im Ordner ~dbman/target/height zu finden. In diesen Ordnern können sich jeweils zwei Dateien befinden. In der Datei init stehen Informationen, die jeder Service benötigt. Als Beispiel ist in Abb. die Datei init von target/height dargestellt.

Für jede Aktion des Services kann ein Block BEGINREC ENDREC vorhanden sein. ACTION und FIELD spezifizieren die Aktion, dann folgen zusätzliche Parameter. MIN und MAX bestimmen einen minimalen bzw. maximalen Wert. Mit SECLVL wird die Sicherheitsstufe für diese Aktion eingestellt, und DIM gibt die Einheit des Wertes an. Mit dem Feld POLL kann man in Einheiten von Sekunden steuern, in welchem zeitlichen Abstand die Aktion automatisch ausgeführt wird.

Diese Informationen werden für alle Services eines Gerätetreibers am Anfang des Programms beim Erzeugen des Datenbankobjektes eingelesen, so daß sie von diesem Zeitpunkt an im Programm zur Verfügung stehen. Jeder Service und jede Aktion erhält einen eindeutigen Schlüssel, über den mit Hilfe von Funktionen des Datenbankobjektes auf die Informationen zugegriffen werden kann. Für den Benutzer ist die Funktion getrange am wichtigsten, mit der er den Minimal- und den Maximalwert erfragen kann.

Die zweite Art von Funktionen greift bei jedem Aufruf auf die hw_conf-Datei des Services zu (siehe Abb. ). Zusäztlich gibt es eine solche Datei auch für jeden Gerätetyp, so daß man gleiche Parameter für alle Geräte desselben Typs nur einmal definieren muß. Die erste Spalte gibt den Parameternamen an, die zweite seinen Datentyp und die dritte den Wert.

Am Anfang des Programmes erzeugt man eine Instanz der Datenbankklasse. Dieser wird die Domäne und der Gerätename übergeben. Dann werden mit Hilfe des Gerätenamens die Servicenamen aus der Datenbank ermittelt, die dann mit der Funktion get_alias_names abgefragt werden können. Gleichzeitig werden die oben beschriebenen Informationen aus den init-Dateien geladen. Auf jeden einzelnen Eintrag dieser Informationen kann wiederum mit einer eigenen Funktion zugegriffen werden. Danach kann man mit Hilfe des Servicenamens und der Funktion get_device_type den Servicetyp aus der Datenbank erhalten. Auch die Parameter aus den hw_conf-Dateien sind über Datentyp-spezifische Funktionen erreichbar. Damit die Datenbank auch von den einzelnen Service-Funktionen aus erreichbar ist, wird den Konstruktoren der Services ein Verweis auf die Datenbank mitgegeben.

Durch diesen Aufbau ist es möglich, daß der Programmierer die Datenbank von seinem Programm aus benutzen kann, ohne wissen zu müssen, wie sie intern organisiert ist oder wie auf sie zugegriffen wird.



Next: Die Errorklasse Up: Die Gerätetreiber-Klassenbibliothek Previous: Die Aktionsklasse


martin@daisy.zdv.Uni-Mainz.DE
Fri Apr 21 10:02:42 MESZ 1995