Entwicklung - Einrichten einer Entwicklungsumgebung

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Grundfunktionen des Entwicklungsumgbung)
(Link auf Gdb)
Zeile 93: Zeile 93:
 
==Benutzen des Debuggers==
 
==Benutzen des Debuggers==
 
Hier habe ich leider noch keine Erfahrungen. Vielleicht kann das ja jemand anderes schreiben.
 
Hier habe ich leider noch keine Erfahrungen. Vielleicht kann das ja jemand anderes schreiben.
 +
Siehe [[Gdb]]
  
 
==Zu beachten==
 
==Zu beachten==

Version vom 29. Juni 2006, 11:33 Uhr

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 Tipps gezeigt werden wie man die Entwicklung bequem auf seinem Desktop PC machen kann.

Grundfunktionen der Entwicklungsumgebung

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

Alternativ kann man hier auch sehr schön den XineVDR Player verwenden.

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 Objekten 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. Im vdr haben alle C Dateien die Endung *.c. Da wir C++ Programmieren und alle von KDevelop erzeugten Dateien die Endung .cpp haben, ändern wird dieses auch in *.c

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-myplugin.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 Debuggers

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

Zu beachten

Es ist zu beachten, dass Plugins, die in der Entwicklungsumgebung entwickelt werden, nicht immer auf anhieb auf einem echten VDR laufen. Oft ist es das Problem, dass das xine-Plugin keine Begrenzung für das OSD hat. Somit kann man damit recht viel machen. Es ist auch zu beachten, dass beim Entwickeln mit dem xine Plugin die Anzahl der Devices um eins erhöht ist. Das vom Xine-Plugin zugefügte Device(PrimaryDevice) dient jedoch nur zur Ausgabe und bietet nicht die Funktion über dieses Device etwas aufzunehmen. Dieses sollte man im Hinterkopft behalten wenn man versucht einen cReceiver oder cFiler zu schreiben.

Links

  1. VDR Homepage