From c33a52dc6c0da1b3d667878254610bf73c162fe4 Mon Sep 17 00:00:00 2001
From: Benjamin Franzke <benjaminfranzke@googlemail.com>
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(-)

(limited to 'projekt_doku.asciidoc')

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 

