summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-16 03:00:40 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-16 03:00:40 +0100
commitf823e11ec9822ba873143b2c2f6ece82b32d6b12 (patch)
tree0449b919141828e2945036e70647ea334296dbf6
parent6818fb7ddcef9e6d7a7771a8075ed8caf26461d0 (diff)
downloadmmswe-f823e11ec9822ba873143b2c2f6ece82b32d6b12.tar.gz
mmswe-f823e11ec9822ba873143b2c2f6ece82b32d6b12.tar.bz2
mmswe-f823e11ec9822ba873143b2c2f6ece82b32d6b12.zip
doc: Add current state and update read-framebuffer
-rw-r--r--projekt_doku.asciidoc47
1 files changed, 40 insertions, 7 deletions
diff --git a/projekt_doku.asciidoc b/projekt_doku.asciidoc
index 7106d44..63f5576 100644
--- a/projekt_doku.asciidoc
+++ b/projekt_doku.asciidoc
@@ -9,7 +9,7 @@ Philips TV-Remote unter Linux
== 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
+Als Platform ist dabei GNU/Linux zu verwenden und Lösungsmöglichkeiten für
die Probleme der aktuellen Konfiguration mit dem Windows Client Pluggit
sind zu evaluieren.
@@ -47,6 +47,28 @@ Das API zur Steuerung der Fernseher basiert auf einem REST-full
HTTP-Protokoll.
Für die Bildübertragung wird 'DirectFB Voodoo' eingesetzt.
+== Ist-Zustand
+
+Verwendet werden Fernseherer der 7000er Serie von Philips, auf die eine,
+direkt vom Hersteller erweiterte Firmware geladen wird. Diese beinhaltet die
+'JointSpace' erweiterung.
+
+Als Datenquelle dient eine Windows-Installation in einer virtuellen Maschinen,
+welche das ebenfalls vom 'JointSpace' bereitgestellte Programm 'Pluggit'
+verwendet.
+
+Die einzelnen Fernseher sind alle in eigenen Netzen, da zum Verbindungaufbau
+ein Netzwerk-Broadcast genutzt wird und sich so die Fernseher gegenseitig
+stören würden, wenn in einem Netzwerk enthalten.
+
+Der Firefox-Browser wird für die Darstellung im Vollbildmodus eingesetzt, da
+er unter Windows einer der stabilsten und ausgetestetsten, standardkonformer
+Browser ist.
+
+Die Fernseher bieten eine native Auflösung von 1920x1080 Pixeln,
+die Remote-Anzeige funktioniert aber nur bis zur Auflösung von 1280x720
+Pixeln.
+
== Problemlösung & Implementation
Im ersten Schritt ist eine eins-zu-eins Umsetzung der Anzeige einen
@@ -133,7 +155,18 @@ 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.
+über die Funtkion +XGetSubImage(3)+ auszulesen.
+
+Darüber hinaus gibt es eine Anbindung an +shmget(2)+, sodass Unix
+Shared-Memory verwendet werden kann.
+Dies bietet den Vorteil, dass die Framebuffer-Daten nicht über den
+X11-Protokoll-Socket übertragen werden müssen, sondern direkt gelesen werden
+können.
+Es wird ein X11-Pixmap erzeugt, welchem ein auf XImage auf Shared-Memory Basis zu
+grunde liegt.
+Zum Auslesen wird nun +XCopyArea(3)+ mit dem X11-Pixmap als Argument
+aufgerufen. Der X-Server schreibt in der Folge den angefragten Bildinhalt
+in den Shared-Memory,
@@ -181,12 +214,12 @@ 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.
+Dies ermöglicht per Design zwei Vorteile:
+ - Die Window-ID wird auf +stdout+ ausgegeben. +
+ (Kann demzufolge als Parameter an Pluggit übergeben werden.)
+ - Keine Bedienelemente vorhanden, denn der Browser wird über X11-Properties
+ gesteuert -- das erlaubt Scripting.
== Test