From c33a52dc6c0da1b3d667878254610bf73c162fe4 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Wed, 16 Jan 2013 00:27:18 +0100 Subject: doc: Add new content --- projekt_doku.asciidoc | 102 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 18 deletions(-) diff --git a/projekt_doku.asciidoc b/projekt_doku.asciidoc index 034a0b0..2ecafa7 100644 --- a/projekt_doku.asciidoc +++ b/projekt_doku.asciidoc @@ -18,7 +18,7 @@ werden. *DirectFB Voodoo* -'DirectFB Voodoo' ist ein Aufsatz bzw Proxy-Kanel für DirectFB. +'DirectFB Voodoo' ist ein Aufsatz bzw Proxy-Kanal für DirectFB. Es besteht aus einer Client-Server Architektur. Der Server ist dabei das Anzeige Gerät und bietet über den Voodoo Kanal zugriff auf den eigenen Framebuffer. @@ -50,19 +50,16 @@ gesandt werden. In diesem Fall 3 Clients. image::directfb-voodoo-js.eps[] -== Linux Betriebssystem -Arch Linux - -== Verbindungsaufbau +=== Verbindungsaufbau Die DirectFB-Voodoo Platform nutzt als Standardmethode zum Verbindungsaufbau einen Broadcast Request, um verfügbare Anzeigegeräte zu finden. Dies ist für den Einsatz im Heimnetzwerk gedacht, bei dem der -Verbindungsaufwand möglich gering gehalten werden soll. +Verbindungsaufwand möglichst gering gehalten werden soll. Sind meherere der Fernseher in einem Netzwerk, so ist nicht eindeutig -definiert, welcher zuerst auf den Broadcast antworten, und dadurch für die +definiert, welcher zuerst auf den Broadcast antwortet, und dadurch für die Verbindung ausgewählt werden wird. -Deshalb ist direkter Unicast nötig. +Aus diesem Grund ist eine sofortige Unicast-Verbindung nötig. Die Bibliothek bietet kein direktes API, um die Ziel-Addresse zu verabeiten. Die Initialisierungsmethode +DirectFB::Init()+ erwartet einen Argumentzähler @@ -80,7 +77,7 @@ main(int argc, char *argv[]) } ---- -== Verbindungsabbruch +=== Verbindungsabbruch Bricht die Verbindung ab -- z.B. durch Ausschalten des Fernsehers oder durch Auswählen einer anderen Quelle -- wird dies durch die DirectFB Bibliothek nicht an die Anwendung signalisiert. @@ -102,10 +99,19 @@ Pluggit-Prozesses und startet diesen neu. //== Webbrowser-Rendering -== Framebuffer Auslesen +=== Framebuffer Auslesen Das X11-Protokoll bietet die Möglichkeit den angezeigten Framebuffer über die Funtkion +X_GetImage+ auszulesen. +==== Mehrere Clients --> Fenster +Um mehrere Fenster darzustellen, wird ein großer Anzeigebreich benötigt. +Mit 'XRandR' wird dies durch folgenden Aufruf erreicht: + +[source,sh] +---- +xrandr --fb $((1280*3)x720 +---- + .X11-Fenster Konfiguration image::framebuffer.svg[] @@ -116,13 +122,23 @@ footnote:[http://et.hs-wismar.de/~infosc/index.php?file=config16n] des Fachbereichs EuI: Da während der Entwicklung nicht dauerhaft Philips-Fernseher zur Verfügung -standen, +standen, wurde der durch das 'JointSpace'-Projekt als Virtuelle Maschine +bereitgestellte Simulator mit QEMU verwendet. == HowTo -=== Linux-Installation +//=== Linux-Installation -Arch installieren? +//Arch installieren? + +=== System Vorraussetzungen + +Beispielhaft für Gentoo: + +[source,sh] +---- +emerge -va wmctrl surf +---- === DirectFB @@ -130,7 +146,7 @@ Für diese Arbeit wurde die zum Zeitpunkt der Bearbeitung neuste verwendet: DirectFB141_source_1.3.1beta5.7z footnote:[http://sourceforge.net/projects/jointspace/files/remote_applications_SDK/] -[source,c] +[source,sh] ---- 7z x DirectFB141_source_1.3.1beta5.7z ---- @@ -143,14 +159,64 @@ make === Pluggit +[source,make] +------------------------------------------------------------------------- +.PHONY: pluggit +pluggit: + rm -f pluggit/pluggit # <1> + $(MAKE) -C directfb-voodoo/ -f makefile.voodoo DEBUG=$(DEBUG) package # <2> + $(MAKE) -C pluggit/ -f makefile.voodoo DIRECTFB_VOODOO=../directfb-voodoo/DirectFB_Voodoo all +------------------------------------------------------------------------- + +<1> In der Entwicklungsphase ist es notwendig, dass pluggit neu gelinkt wird, +wenn directfb verändert wird. +<2> Der DirectFB package baut die Bibliothek und kopiert Header an die +benötigten Stellen. + + +Für die Übersetzung von DirectFB und Pluggit muss also nur folgender Befehl im +Quellverzeichnis des Projekts ausgeführt werden: + [source,sh] ----- -DIRECTFB_VOODOO= make ----- +------------ +make pluggit +------------ === Browser -Webkit/Firefox? +Die Anzeige des Infoscreens erfolgt über eine HTML-Website, die auch +Multimediainhalte enthält. +Aus diesem Grund ist es nötig, dass das HTML von einem Web-Browser gerendert +wird. + +In Betracht kommt auf Grund der Bekanntheit und Stabilität der +Firefox-Browser. +Dieser kann nur im Vollbild-Modus so konfiguriert werden, dass nur der Inhalt +im X11-Fenster -- welches ausgelesen werden soll -- angezeigt wird, Menus und +Scrollbars. + +Deshalb wird ein Web-Browser benötigt, der es ermöglicht nur den Inhalt der +Website im X11-Fenster darzustellen. +Der Browser 'Surf' footnote:[http://surf.suckless.org] von 'suckless.org' ist +mit dem Prinzip erstellt worden, in andere Programme über das X11-XEmbed +Protokoll eingebettet zu werden, z.b. um mehrere Instanzen in einem +Tab-Manager zu embedden. + +Dies ermöglicht per Design zwei Punkte: + - Die Window-ID wird auf stdout ausgegeben (wird als Parameter an Pluggit + übergeben) + - Keine Bedienelemente vorhanden, denn der Browser wird über X11-Properties + gesteuert -- das macht ihn scriptable. + +== Bewertung & Ausblick + +Die Performanz ist durch das ständige Übertragen komplette Bilder durch die +Übertragungsbandbreite eingeschränkt. +Ein weiterführender Ansatz wäre es, das sich in Entwicklung befindene -- und +deshalb zum Zeitpunkt dieser Arbeit noch nicht verwendbare -- WebKit-DirectFB +footnote:[http://git.directfb.org/?p=libs/WebKitDFB.git;a=summary] +backend zu nutzen. + // vim: set syntax=asciidoc tw=78 filetype=asciidoc: // spell spelllang=de,en: -- cgit