Entwicklung - Einrichten einer Entwicklungsumgebung

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Hier ist noch stark Baustelle. Wer Lust hat darf gerne was schreiben!!


Inhaltsverzeichnis

Motivation

Jeder der sich vornimmt ein paar Zeilen Code für VDR zu programmieren, sei es ein Plugin oder ein patch, kommt früher oder später nicht um eine richtige Entwicklungsumgebung rum. Es ist viel zu mühsam auf einem Wohnzimmer VDR zu entwicklen. Hier sollen ein paar Tips gezeigt werden wie man die Entwicklung bequem auf seinem Desktop PC machen kann.

Grundfunktionen des Entwicklungsumgbung

Es gibt mindestens zwei Eigenschaften die eine VDR-Entwicklungsumgebung bieten sollte.

  • Bequemes programmieren
  • Code im VDR testen

Diese Anleitung soll zeigen wie man eine Entwicklungsumgebung mit KDevelop, VDR und dem Xine-Plugin aufbauen kann.

Einrichten von VDR

Beim einrichten von VDR ist nicht viel zu beachten. Nur ist es beim Verwenden vom Xine-Plugin nicht nötig die DVB-Treiber zu installieren, da das xine-plugin als Device erkannt wird. Trotzdem müssen die Header der Treiber an der richtigen Stelle liegen.(wie in der Beschreibung zum Treiber beschrieben) Bitte folge dieser Anleitung: VDR Installation

Einrichten von Xine-Plugin

Das einrichten des Xine-Plugins wurde hier genauer beschrieben: Xine-plugin

Einrichten von Xine-Player

Neben dem Xine-Plugin muss auch noch der Xine Player richtig installiert werden:Xine-plugin

KDevelop einrichten

Fast alle Distributionen liefern KDevelop mit aus. Daher wird die Installation hier nicht weiter beschieben.

Einen wichtigen Punkt möchte ich hier jedoch kurz beschreiben. Erfahrene Programmierer kennen es natürlich. Unter Projekt->Projekt-Optionen->C++ Besonderheiten->Codekomplementierung, können wir den VDR Code zufügen. Wenn sie dann also cDevice:: + strg + Space eingeben, dann werden ihnen alle Möglichkeiten der Codekomplementierung angezeigt. Das selbe gilt für Methoden von Onjekten oder Elementen von Datenstrukturen.

Neues Plugin erstellen

Das erstellen eines neuen Plugins ist unter VDR recht einfach. In dem Verzeichniss von VDR gibt es ein Skript mit dem Namen "newplugin". Dieses läßt sich recht einfach mit

newplugin <name>

aufrufen. Das Skript erstellt im Verzeichniss VDR/PLUGINS/src/ ein neues Plugin. Dieses Plugin gilt es nun mit Leben zu füllen.

Plugin unter KDevelop programmieren

Um jedoch nun das Plugin unter KDevelop programmieren zu können, müssen wir erstmal aus dem Makefile ein KDevelop Projekt erstellen. Dieses kann man unter

Projekt->Projekt importieren...

In dem Dalog wählt man das Verzeichniss in dem das neu erstelle Plguin liegt. Der Projektname wird richtig übernommen. Wir müssen nur noch den Projekttyp wählen. Ich habe hier immer "Generic C++ Application (Automake based)" genommen. Da wir C++ Programmieren und alle von KDevelop erzeugten Dateien die Endung .cpp haben, ändern wird dieses im Makefile:(Zeile 53)

###Implicit rules:
%.o: %.cpp
        ^^

Start Skript

Da man sein zu entwicklendes Plugin auch immer testen will, bietet es sich an dieses per Tastendruck aus KDevelop zu machen. Dazu baut man sich ein Skript das ein "make clean && make all" im Pluginverzeichniss aufruft. Somit wird das Plugin übersetzt und in das lib Verzeichniss kopiert. Alternativ kann man auch "make plugins" aus dem VDR Verzeichniss aufrufen. Dauert aber unnötig länger.

Nun soll das Skript vdr mit allen Parametern starten. Ich habe die Ausgabe auf ein extra Fenster gelegt:

xterm -e "./vdr --log=3.7 -v /video/ '-Pxine -r' -w 60 -Ptest" &

Zum schluss soll noch der Xine-Player gestartet werden:

xine vdr:/tmp/vdr-xine/stream#demux:mpeg_pes 

Noch sehr hilftreich ist es wenn man ein

tail -f /var/log/syslog

mit einfügt. Dadurch kann man alle outputs des Plugins (mit dsyslog("Hallo Welt")) direkt sehen.

Das ganze zusammen sieht dann in etwas so aus.

#!/bin/bash
#Auf wunsch altest Plugin löschen um Probleme zu vermeiden
rm ../../lib/libvdr-getdsmcc.so.1.3.34 
make clean
make all
#testen ob make erfolgreich war
if test "${?}" != 0
 then
 exit;
fi 
cd /path/to/VDR
xterm -geometry 150 -e "tail -f /var/log/syslog"  &
xterm -e "./vdr --log=3.7 -v /path/to/video/ '-Pxine -r' -w 60 -Pfemon -Pgetdsmcc" &
xine vdr:/tmp/vdr-xine/stream#demux:mpeg_pes 

Dieses schreibe ich mir in eine Datei z.B. startvdr.sh und lege diese im Plugin Verzeichniss ab. In KDevelop trage ich nun dieses Skript unter Projekt->Projekt-Optionen->Laufzeit-Optionen->Hauptprogramm ein. Wenn ich nun in KDevelop auf den Startknopf drücke, wird das Plugin übersetzt und mit vdr gestartet.

Benutzen des Debugers

Hier habe ich leider noch keine Erfahrungen. Vielleicht kann das ja jemand anderes schreiben.

Zu beachten

Es ist zu beachten das Plugins die in der Entwicklungsumgebung entwickelt werden nicht immer auf anhieb auf einem echten VDR laufen. Oft ist es das Problem das das xine-Plugin keine Begrenzung für das OSD hat. Somit kann man damit recht viel machen.

Links

[1] http://www.cadsoft.de/vdr VDR Homepage