Main Page Class Hierarchy Alphabetical List Data Structures File List Data Fields Globals
VDR Documentation
Systemfamilien
"Ein aufkommender
Ansatz zur schnelleren und kostengünstigeren Softwareentwicklung sind Systemfamilien.
Eine Systemfamilie beschreibt
eine Gruppe ähnlicher Software-Systeme, denen eine gemeinsame Architektur
sowie gemeinsam genutzte Komponenten zugrundeliegen.
Darüber hinaus implementiert jedes Mitglied der Systemfamilie nur noch
seine spezifischen Besonderheiten. Durch den hohen Grad an Wiederverwendung
sowohl auf Modell- als auch auf Implementierungsebene können neue Familienmitglieder
in kurzer Zeit mit hoher Qualität von kleinen Teams entwickelt werden."
(Matthias
Riebisch, Detlef Streitferdt, Kai Böllert, Methoden und Werkzeuge zur Entwicklung
von Systemfamilien, Technische Universität Ilmenau)
Entsprechend dem Pluginkonzept
ist das VDR-Modul modularisierbar. Ausgehend von einem grundlegenden Software-Modul,
kann das Paket in seiner Funktionalität durch verschiedene Tools und Plugins
ergänzt werden. Diese Aufteilung in verschiedene Systemkomponenten soll
die grundlegenden Funktionen und Variationsmöglichkeiten in der Gestaltung
des digitalen Videorekoders aufzeigen.
Es sollen also gemeinsame
und variable Merkmale des Systems, deren Wechselwirkungen, sowie Bereiche mit
hoher Variabilität identifiziert werden.
Aufspaltung in Bereiche
Im Zuge einer Dokumentation
habe ich zunächst begonnen die vorhandene Software in folgende funktionale
"Module" aufzuspalten.
Der Softwarekern
enthält grundlegende, für alle Komponenten benötigte Dateien.
Er setzt in seiner Funktionalität auf die DVB-Karte auf, und ermöglicht
des Betreiben des digitalen Fernsehers.
Enthaltene
Dateien:
- vdr.c - Das "Video
Disc Recorder Main Program" startet die Anwendung, initialisiert zu Beginn
alle Einstellungen und enthält die "main program loop".
- config.c - Übernimmt
das Handling der Konfigurationsdateien. Dabei wird der VDR an den entsprechenden
Stellen mit Informationen versorgt.
- diseqc.c - Übernimmt
das Diseqc-Handling
- sources.c
- Übernimmt das Handling mehrerer DVB-Karten, von denen Kanäle entsprechend
ihrer Herkunft empfangen werden (Aufteilung terrestrischer Empfang, Satellitenempfang
etc).
- channels.c - Übernimmt
das Handling der Kanäle. Das umfasst auch die Konfiguration des Kanalmenüs
mit entsprechender Anzeige der Kanaldaten.
- status.c - Die
hier enthalten Funktionen können von Plugins zur Anzeige von Statusdaten
eingebunden werden.
- thread.c - Eine
einfache Thread-basierte Klasse.
- tools.c - Verschiedene
Tools.
- transfer.c - Transfer
Modus
- plugin.c - Plugin-Schnittstelle
- dvbdevice.c -
DVB-Device-Schnittstelle
- device.c - Basis-Device-Schnittstelle
(setzt auf dvbdevice.c auf)
- dvbplayer.c -
DVB-Player
- player.c - Player-Schnittstelle
- dvbspu.c - SPU-Decoder-Prototyp
- spu.c
- SPU-Decoder für DVB-Devices
- eit.c - EPG-Daten-Handling
- eitscan.c - EPG-Daten-Scanner
- audio.c - Basis-Audio-Schnittstelle
- receiver.c - Die
Basis-Receiver-Schnittstelle. Hier wird eine Verbindung zum DVB-Device hergestellt.
- remux.c
- Ein Streaming-Mpeg-2-Multiplexer

Daraus ausgegliedert
sind die Konfigurationsdateien, die von diversen
Klassen zur Realisierung verschiedenster Funktionen verwendet werden.
Enthaltene
Dateien:
- Setup.conf - Setupeinstellungen
- Channels.conf
- Kanalinformationen
- Ca.conf - Informationen
zu Empfang verschlüsselter Kanäle
- Commands.conf - Ausführen
benutzerdefinierter Befehle und beliebiger Skripte
- Keymacros.conf - Definition
von Kurzbefehlen für Bedienungsmacros
- Remote.conf - Tastenbelegung
von Tastatur bzw. Fernbedienung
- LIRC.conf - Tastenbelegung
einer mir LIRC betriebenen Fernbedienung
- Svdrphosts.conf - SVDRP
Host-Konfiguration (Zugriff von Hosts oder Netzwerken auf den SVDRP-Port)
- DiSEqC.conf - DiSEqC-Konfiguration
- Sources.conf - Konfiguration
der Signalquellen
- Timers.conf - Daten programmierter
Timer

Weiterhin ausgegliedert
wurde das On Screen Display, zur Darstellung eines
Menüs über das Display der DVB-Karte.
Enthaltene
Dateien:
- Menu.c - Enthält
aktuelle Menü-Implementationen, beispielsweise das Hauptmenü, die
Anzeige von Kanal und Lautstärke, sowie die Kontrolle von Aufnahmen und
Wiedergabe.
- MenuItems.c
- Universelle Menü-Elemente. Möglichkeit zur Bearbeitung von Text
und weiteren Menüelementen.
- Osd.c
- Allgemeine OSD-Schicht
- OsdBase.c - Basis-Schnittstelle
zum OSD. Hier wird die Definition und das Setzen möglicher DVB-Farben
übernommen, sowie das Festlegen von Fenster-Attributen und das Setzen
von Bildern.
- DvbOsd.c
- Implementation des DVB Onscreen Displays
- Font.c
- Schriften-Handling für das Onscreen Display
- Interface.c
- Schnittstellen zwischen OSD und Fernbedienung

Für die
Fernbedienung des VDR existieren 3 verschiedene
Realisierungen, die unter diesem Punkt zusammengefasst wurden.
Enthaltene
Dateien:
- Remote.c - Generelles
Handling der Fernbedienungen
- Lirc.c - Für
die Ansteuerung einer mit LIRC betriebenen Fernbedienung.
- Rcu.c - Für
die Ansteuerung einer Remote Control Unit, einer selbstgebastelten
Fernbedienung.
- Svdrp.c - Für
die Ansteuerung des VDR über des Netz.

Unter Aufnahme
sind alle für die Realisierung der Video-Rekorder-Funktion notwendigen
Dateien zusammen gefasst.
Enthaltene
Dateien:
- Recorder.c - Der
aktuelle DVB-Rekorder
- Recording.c -
Handling aufgenommener Daten: Namensgebung, Setzen von Markierungen und Einordnung
in das Videoverzeichnis
- Timers.c - Timer
Handling
- Videodir.c - Funktionen
für ein verteiltes Videoverzeichnis
- Cutter.c - Videoschnitt-Funktionen
Plugins
stellen die eigentlich loslösbare Komponente des VDRs dar. Daher wird dieser
Punkt in der Studienarbeit hinsichtlich der Einbindungsmöglichkeiten näher
betrachtet.
In der Version
1.1.20 bereits enthaltene Dateien:
- I18.c
- Internationalisierungs-Plugin, daß die Darstellung des Menüs
in zahlreichen Sprachen ermöglicht.
- Sky.c - Zur Integration
einer Sky-DigiBox
Weitere denkbare Plugins:
- Mp3-Player
- DVD-Player
- Tic-Tac-Toe-Player
- Tetris-Player
- Teletext
- E-Mail-Reader
- TvTv-Schnittstelle
- usw.
Diese Dokumentation entstand
im Rahmen einer Studienarbeit an der TU-Ilmenau. Ziel war dabei zunächst
die Aufteilung des Softwaremoduls VDR in funktionale Komponenten zu gestalten.
Dabei konnte der Quelltext
nur teilweise dokumentiert werden. So dient, diese mit dem Generationstool Doxygen
erzeugte Quelltext-Dokumentation lediglich der Schaffung eines Überblicks
und erhebt keinen Anspruch auf Vollständigkeit.
Generated on Wed Feb 5 14:52:13 2003 for VDR by
1.3-rc2