From 6818fb7ddcef9e6d7a7771a8075ed8caf26461d0 Mon Sep 17 00:00:00 2001
From: Benjamin Franzke <benjaminfranzke@googlemail.com>
Date: Wed, 16 Jan 2013 01:31:10 +0100
Subject: doc: Update content

---
 projekt_doku.asciidoc | 127 ++++++++++++++++++++++++++++++++++----------------
 1 file changed, 88 insertions(+), 39 deletions(-)

(limited to 'projekt_doku.asciidoc')

diff --git a/projekt_doku.asciidoc b/projekt_doku.asciidoc
index 2ecafa7..7106d44 100644
--- a/projekt_doku.asciidoc
+++ b/projekt_doku.asciidoc
@@ -5,6 +5,14 @@ Philips TV-Remote unter Linux
 :imagesdir: image
 // a2x: --dblatex-opts="-p thesis.xsl -s thesis.sty -b xetex"
 
+[abstract]
+== Aufgabe
+Ziel dieses Forschungsprojektes ist die Programmtechnische Umsetzung
+der Nutzung der Philips TV-Firmware als Netzwerkbasierter-Infoscreen.
+Als Platform ist dabei GNU/Linux zu verwenden und Lösungsmögliuchkeiten für
+die Probleme der aktuellen Konfiguration mit dem Windows Client Pluggit
+sind zu evaluieren.
+
 == Grundlagen
 
 *DirectFB*
@@ -39,7 +47,7 @@ Das API zur Steuerung der Fernseher basiert auf einem REST-full
 HTTP-Protokoll.
 Für die Bildübertragung wird 'DirectFB Voodoo' eingesetzt.
 
-== Vorhergehensweise für die Implementation
+== Problemlösung & Implementation
 
 Im ersten Schritt ist eine eins-zu-eins Umsetzung der Anzeige einen
 Linux-Screens auf einen Fernseher zu implementieren.
@@ -49,8 +57,21 @@ gesandt werden.  In diesem Fall 3 Clients.
 .Client-Server Interaktion
 image::directfb-voodoo-js.eps[]
 
+=== Pluggit
+
+Als Basis für die Programmtechnische Umsetzung dient der Bestehende
+Windows-Client Pluggit, sodass die bereits ausgetestete Remote-Rendering
+Infrastruktur wiederverwendet werden kann.
+
+Pluggit wurde so verändert, dass es X11-Protokoll anstatt der WinAPI verwendet
+wird, um den Inhalt eines Fensters oder des ganzen Framebuffers anzuzeigen.
+
+Dazu ist eine 'SourceX11' Klasse notwendig, die das in Pluggit enthaltene
+Interface 'Source' implementiert. 
 
-=== Verbindungsaufbau
+// TODO: Graph?
+
+==== Verbindungsaufbau
 
 Die DirectFB-Voodoo Platform nutzt als Standardmethode zum Verbindungsaufbau
 einen Broadcast Request, um verfügbare Anzeigegeräte zu finden.
@@ -69,6 +90,7 @@ im folgenden beispielhaft dargestellt:
 [source,c]
 ----
 #include <directfb.h>
+
 int
 main(int argc, char *argv[])
 {
@@ -77,7 +99,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.
@@ -99,22 +121,73 @@ Pluggit-Prozesses und startet diesen neu.
 
 //== Webbrowser-Rendering
 
+=== Framebuffer Größenlimit
+Bei der Verwendung von 'Pluggit' unter Windows besteht das Problem, dass eine
+Maxmimale Auflösung von +1280x720+ Pixeln genutzt werden kann.
+Dieses Limit ist kein Fehler im Programm oder eine Einschränkung des
+Betriebsssystems, sondern das API erlaubt keine größe Auflösung.
+Bei Verwendung von z.b. einer +1920x1080+ Auflösung -- bei einem Fernseher,
+der diese Auflösung per HDMI unterstützt -- signalisiert das API
+einen Fehler, dass ein invalides Argument übergeben wurde.
+
+
 === Framebuffer Auslesen
 Das X11-Protokoll bietet die Möglichkeit den angezeigten Framebuffer
 über die Funtkion +X_GetImage+ auszulesen.
 
-==== Mehrere Clients --> Fenster
+
+
+=== Multi-Client
+
+Teil der Anforderung ist, mehrere Fernseher gleichzeitig mit unterschiedlichen
+Bildern zu beliefern.
+
 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
+xrandr --fb $((1280*3+10))x768
 ----
 
 .X11-Fenster Konfiguration
 image::framebuffer.svg[]
 
+=== Browser
+
+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 sind im normalen Floating-Modus immer vorhanden.
+Ein weiteres Problem stellt die eindeutige Addressierung der Window-ID, bei
+Verwänderung mehrerer Firefox-Fenster.
+Es gibt keine direkte Möglichkeit die Window-ID zu erhalten, nur über Matching
+des Titels des Firefox-Fensters.
+Die Verwendung für mehrere Infoscreens würde es nötig machen den Titel des
+Angezeiten Inhalts zu wissen, und in der Programmlogik zu berücksichtigen.
+Eine Veränderung des Inhalts würde damit auch eine Anpassung des Programms
+erfordern.
+
+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.
+
+
 == Test
 
 Getestet wurde jeweils mit der Infoscreen-Website
@@ -122,8 +195,12 @@ 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, wurde der durch das 'JointSpace'-Projekt als Virtuelle Maschine
-bereitgestellte Simulator mit QEMU verwendet.
+standen, wurde der durch das 'JointSpace'-Projekt als VMWare-Virtuelle
+Maschine bereitgestellte Simulator mit QEMU verwendet.
+
+
+Das Anzeigen des Browser-Inhaltes und die korrekte Wiedergabe des Videos
+entscheiden über das Bestehen des Tests.
 
 == HowTo
 
@@ -142,7 +219,8 @@ emerge -va wmctrl surf
 
 === DirectFB
 
-Für diese Arbeit wurde die zum Zeitpunkt der Bearbeitung neuste verwendet:
+Für diese Arbeit wurde die, zum Zeitpunkt der Bearbeitung, neuste Version von
+'DirectFB' verwendet:
 DirectFB141_source_1.3.1beta5.7z
 footnote:[http://sourceforge.net/projects/jointspace/files/remote_applications_SDK/]
 
@@ -151,11 +229,8 @@ footnote:[http://sourceforge.net/projects/jointspace/files/remote_applications_S
 7z x DirectFB141_source_1.3.1beta5.7z
 ----
 
-
-[source,sh]
-----
-make
-----
+Die Sourcen, inklusive benötigter Patches (mit GIT-History), sind auch im
+beiliegenden Archiv enthalten.
 
 === Pluggit
 
@@ -182,32 +257,6 @@ Quellverzeichnis des Projekts ausgeführt werden:
 make pluggit
 ------------
 
-=== Browser
-
-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
-- 
cgit 

