HWService

Diese Klasse beinhaltet das Interface zwischen Allgemeinem Treiber und Hardware-spezifischem Teil. Von dieser Klasse wird immer abgeleitet. Das Interface besteht aus folgenden virtuellen Funktionen:

  • PVSSboolean initialize(int argc, char *argv[]) - in dieser Funktion soll der hardwarespezifische Teil initialisiert werden. Bei erfolgreicher Initialisierung muss PVSS_TRUE zurückgeliefert werden, da bei Rückgabewert PVSS_FALSE der Allgemeine Treiber den Hochlauf abbricht.

  • PVSSboolean start() - wird nach erfolgreichem Verbindungsaufbau zu Event-Manager aufgerufen. Wird extern (z.B.: durch Drücken von Ctrl-C) abgebrochen (ist DRVMODE_EXITING gesetzt), dann wird der Hochlauf unterbrochen und das Programm beendet.

  • void stop() - wird bei Beendigung aufgerufen und sollte den definierten (startbaren) Zustand der Hardware wiederherstellen.

  • void workProc() - behandelt spontan von der Peripherie ankommende Daten (Melderichtung), wird periodisch aus DrvManager::mainLoop() aufgerufen.

  • PVSSboolean writeData(HWObject *ptr) - wird von toHW(...) aufgerufen und dient zum Schreiben der Daten aus dem Buffer des HWObject an die Peripherie (inklusive Umwandlung in das erwartete Protokollformat).

  • void generalQuery(DpIdentifier& dpId, VariablePtr varPtr) - es wurde eine spontane Benachrichtigung für den Generalabfrage-Datenpunkt empfangen - die Funktion sollte die Generalabfrage ausführen.

  • void singleQuery(HWObject *objPtr) - es wurde eine spontane Benachrichtigung für den Einzelabfrage-Datenpunkt empfangen, oder der Wert soll gepollt werden - die Funktion sollte die Abfrage durchführen.

  • void hotLink2Internal(DpIdentifier& dpId, VariablePtr varPtr) - es wurde eine spontane Benachrichtigung für einen internen Datenpunkt empfangen. In dieser Funktion kann darauf reagiert werden.