summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-16 00:27:18 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-16 00:27:18 +0100
commitc33a52dc6c0da1b3d667878254610bf73c162fe4 (patch)
tree51838cf8d34658a994cef0afa9d2ea29478e2ed7
parentf42d88e0656d7ae69f138f42ecf5018b6d0e5fd3 (diff)
downloadmmswe-c33a52dc6c0da1b3d667878254610bf73c162fe4.tar.gz
mmswe-c33a52dc6c0da1b3d667878254610bf73c162fe4.tar.bz2
mmswe-c33a52dc6c0da1b3d667878254610bf73c162fe4.zip
doc: Add new content
-rw-r--r--projekt_doku.asciidoc102
1 files 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: