Ansteuerung des LCD-Displays über das Web-Interface

Wünsche, Anträge, Fehlermeldungen
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Ansteuerung des LCD-Displays über das Web-Interface

Beitrag von SnowHead »

Es gab häufig Anfragen, ob man das LCD-Display der Box nicht auch über
das Web-Interface zugänglich machen könnte. Viele wollten auf diese Art
beim Abspielen von Filmen mit der XBOX das Display der DBox für die
Anzeige verwenden, andere das Display aus eigenen Scripten heraus
ansprechen. Ich habe dazu mal den nhttpd aufgebohrt und die ersten
Tests verliefen ermutigend. Wenn einer der Devs Interesse hat, würde ich
ihm die modifizierten Sourcen gern zukommen lassen, vielleicht finden sie
ja einen Weg in's CVS. Zur Info schon mal ein Auszug aus der geänderten
api_doku.txt:

Code: Alles auswählen

**********************************************************************************************
19. LCD Interface
**********************************************************************************************
Handler: http://dbox/control/lcd

Parameter: lock, clear, png, raw, line, rect, xpos, ypos, size, font, color, text, update
Rückgabe: ok /error

Ansteuerung des LCD-Interfaces über das Web-Interface

Folgende Parameter werden dabei unterstützt:

  lock=n    : n=1 -> das Display wird bis auf Widerruf für Neutrino gesperrt
              n=0 -> das Display wird wieder für Neutrino freigegeben
           
  clear=n   : n=1 -> das Display wird gelöscht (sollte ganz vorn stehen)
              n=0 -> das Display wird vor der neuen Ausgabe nicht gelöscht (kann entfallen)
              
  png=Dateiname	: eine lokal auf der Box liegende PNG-Datei wird in's Display geladen
                  (z.B. /share/tuxbox/lcdd/icons/setup.png als Hintergrund)
                              
  raw=x,y,xs,ys,d1,..,dn : überträgt die Daten d1 bis dn an die Position (x,y) im Display mit
  						   xs Spalten und ys Zeilen. Die Daten werden dezimal übertragen. Je-
  						   der Wert repräsentiert dabei 8 Punkte innerhalb einer Zeile. Das
  						   höchstwertige Bit entspricht dem Pixel ganz links. Sollen in einer 
  						   Zeile 9 Pixel geschrieben werden, sind dafür zwei Datenwerte nötig, 
  						   auch wenn die restlichen 7 Bit des zweiten Wertes nicht verwendet 
  						   werden. Die Werte werden zeilenweise hintereinandergeschrieben.
  						   Für ein Rechteck von 8 Zeilen zu 9 Pixeln sind also 16 Werte erfor-
  						   derlich, beginnend mit dem Wert für die 8 Pixel ganz links oben, ge-
  						   folgt von dem Wert für das letzte Pixel der obersten Zeile (mit einem
  						   Wert von 128 wenn es gesetzt werden soll), dann der Wert für die ers-
  						   ten 8 Pixel der zweiten Zeile usw.
                              
  line=x1,y1,x2,y2,col : zeichnet eine Linie von (x1,y1) nach (x2,y2) mit der Farbe col
                         col=0 -> aus, col=1 -> leuchtend, col=2 -> invertierend
                         
  rect=x1,y1,x2,y2,col1,col2: zeichnet ein Rechteck mit der linken oberen Ecke (x1,y1) und der
                              rechten unteren Ecke (x2,y2), der Rahmenfarbe col1 welches mit
                              der Farbe col2 ausgefüllt wird (Farben siehe "line")
                              
  update=1	: an dieser Stelle wird das Display upgedatet. Somit kann man zunächst einige Aus-
              gaben machen und dann erst alles zusammen updaten. Somit wird ein Flackern des
              Displays verhindert. Sequenzen ohne diesen Parameter haben auf die Anzeige also
              zunächst erst mal keine Auswirkung.

Die folgenden Parameter betreffen nur die Textausgabe

  text=     : Auszugebender Text in UTF-8 Format (Leerzeichen = %20, Zeilenumbruch = %0A usw.)
  
  xpos=nn   : Position des ersten Zeichens horizontal (default 10)
  
  ypos=nn   : Position der linken oberen Ecke des ersten Zeichens (default 10)
  
  size=nn   : Größe der Textes (default 12)
  
  color=n   : Textfarbe (default 1, siehe "line")
  
  font=n    : zu verwendender Font (default 0)
              n=0 -> micron.ttf, n=1 -> micron_bold.ttf, n=2 -> pakenham.ttf
              
Hinweise:             
----------------------------------
Innerhalb eines Aufrufes können mehrere Kommandos gleichzeitig angegeben werden. Allerdings müs-
sen sie von unterschiedlichem Typ sein. Bei z.B. zwei rect-Parametern innerhalb eines Aufrufes
wird der zweite Parameter ignoriert. Abgearbeitet werden die Kommandos in der Reihenfolge:
lock, clear, png, raw, line, rect, xpos, ypos, size, color, font, text, update.
Der Parameter lock ist erforderlich, da ohne Sperrung das Displays für Neutrino die über den 
nhttpd gemachten Ausgaben auf dem Display spätestens nach einer Sekunde durch das zyklische 
Update von Neutrino wieder überschrieben werden würden. Daher ist bei der ersten Ausgabe lock=1 
zu setzen. Wird das Display nicht mehr benötigt, muß lock=0 gesetzt werden, damit Neutrino wieder 
Zugriff auf das LCD erhält.

Beispiel:             
----------------------------------

  wget -O /tmp/nhttpd.res 'http://localhost/control/lcd?lock=1&clear=1&rect=10,10,110,50,1,0&xpos=20&ypos=27&size=22&font=2&text=%20Hallo%20Welt%0A%C3%9Cbungstext&update=1'
  wget -O /tmp/nhttpd.res 'http://localhost/control/lcd?rect=10,10,110,50,1,2&update=1'  
  
um das Display wieder freizugeben, sollte zum Schluß
  
  wget -O /tmp/nhttpd.res 'http://localhost/control/lcd?lock=0'

ausgeführt werden.
Mit diesem kleinen Script kann man momentan so etwas anzeigen:

Code: Alles auswählen

#!/bin/sh

# Das Script mit den Rechten 755 nach /tmp/ kopieren und mit "/tmp/test &" aufrufen
# Beenden über "touch /tmp/test.stop"

remotebox="localhost"

wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?lock=1&clear=1&png=/share/tuxbox/lcdd/icons/setup.png"
while [ ! -e /tmp/test.stop ]; do 
    datenow=`date +%H:%M:%S`
    secs=`date +%S`
    secs=`expr $secs \* 100`
    secs=`expr $secs \/ 60`
    pos=`expr 10 + $secs`
    wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?rect=10,18,110,58,1,0&xpos=21&ypos=47&size=34&font=2&text=$datenow"
    wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?rect=10,18,110,23,1,0"
    wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?rect=10,18,$pos,23,1,1"
    wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?rect=10,53,110,58,1,0"
    wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?rect=$pos,53,110,58,1,1&update=1"
    sleep 1
done
rm /tmp/test.stop
wget -q -Y off -O /dev/null "http://$remotebox/control/lcd?lock=0&clear=1&update=1"
Bild

Mit einer anderen Adresse als "localhost", also mit der entsprechenden
Box-IP kann dieses Script auch auf einer anderen Box oder einem Linux-
PC (oder Windows-PC mit Cygwin) laufen und das Display der eingetra-
genen Box steuern.
Zuletzt geändert von SnowHead am Dienstag 14. Juni 2005, 23:14, insgesamt 12-mal geändert.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

na das wäre doch mal ne neuerung
danke SnowHead
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Ich hoffe nur das diese Änderungen ins CVS eingecheckt werden.

Es ist nicht der richtige Weg den nhttpd in Neutrino auszutauschen,
um diese Funktionalität zu erreichen. Das beißt sich irgendwann, wenn
andere Funktionen im Daemon erweitert werden...


Ansonsten mal wieder tolle Arbeit von SnowHead.


Gruß
____Paule
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

Jo, einchecken wäre gut. Würde ein schickes Spielzeug für Plugins und Streaming-Tools abgeben.
cu
jens
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

Hi,

hmm, ich sehe da jetzt zwar nicht soo den Bedarf dafür, aber es gibt ja genug kranke Leute, die die Box nicht zum Fernsehen benutzen ;)

Das einzige Problem, das ich damit habe ist, dass Neutrino die "Herrschaft" über das LCD verliert und es durch den externen Benutzer wieder freigegeben werden muss.


ciao,

ChakaZulu
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Sinn und Zweck dieses Forums ist doch hoffentlich das jeder ein paar neue Gedanken und Ideen einbringen sollte und kann.

Nicht jeder muss es ja dann auch verwenden aber um das "ueberleben" dieser Wunderbox zu sichern und auch mal die "jungen" hasen daran zu lassen ist das doch das perfekte medium.

Ich bin jedenfalls von diesen ganzen Plugins begeistert !!

PT-1
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Beitrag von SnowHead »

@ChakaZulu

Na ja, bei dem aktuellen Fernsehprogramm wäre es ein Verbrechen, die
Möglichkeiten der Box und von Neutrino nur für's Fernsehen zu missbrau-
chen.

Wegen der Herrschaft über das Display könnte man ja noch einen Timeout
einrichten, welcher das Display nach 30 Sekunden ohne Transfer wieder
für Neutrino freigibt. Das habe ich allerdings noch nicht hinbekommen.

Wenn Du Interesse hast, laß mir doch bitte mal Deine Kontaktdaten zukom-
men. Ich würde Dir die Quellen dann per Mail schicken. Es wäre schön, wenn
diese kleine Erweiterung in's CVS einfließen könnte, damit man nicht immer
erst hinterher den nhttpd austauschen muß.

@PT-1

Klar sind neue Ideen immer gut. Man muß allerdings auch berücksichtigen,
daß der nhttpd durch diese Erweiterung um 20 kBytes anwächst. Deshalb
sollte man, bedingt durch den begrenzten Platz im Flash, also schon abwä-
gen, ob diese Erweiterung auch verwendet werden kann. Wäre sonst scha-
de um den Platz.
Daher ja auch erst mal meine Anfrage, ob für sowas überhaupt Interesse
besteht (außer den Anfragen, die ich schon bekommen habe).

Übrigens, so "jung" bin ich mit 43 eigentlich nicht mehr. :wink:
Zuletzt geändert von SnowHead am Dienstag 14. Juni 2005, 14:16, insgesamt 2-mal geändert.
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

unser SnowHead
unermüdlich :)
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Nach viel Überlegung habe ich das Ding reingecheckt. Problematisch ist die unübersichtliche Funktionen von Neutrino und seine Daemonen, was mit diese Erweiterung kaum besser wird. Ich hoffe, dass keine böse Nebeneffekten gefunden wird :-?

Die "Sinn-und-Zweck"-Diskussion überlasse ich Anderen. Ich sehe es in jeden Fall als mehr nützlich und naheliegend als Mail und Wetter Plugins...

Es war notwendig, lcdd.cpp zu fixen, so dass er nicht den Display ausschaltet falls jemand den gemopst hat (/tmp/lcd.locked).

Es war auch einige Änderungen in Makefile.am notwendig, sowie entfernen von Windows-Carrage-Returns :wink:

Letzt zum Sicherheit:
Die WEB-API lässt, auch ohne dies Erweiterung, Sachen zu, die die Benutzung in einer feinliche Umgebung einfach verbietet. Dafür wird die Tuxbox kaum mehr unsicher mit dem Erweiterung. Vielleicht sollte der Benutzer explizit die WEB-API freischalten müssen? Naa -- überlassen wir dies den Tuxbox-Suse :wink:

Zum Credits: SnowHead hast nicht alles geschrieben, sondern lcdapi.[cpp|h] ist von Dirk Szymanski 'Dirch'
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Beitrag von SnowHead »

Hatte am Wochenende noch die Änderung eingebaut, daß das Display,
falls es von Neutrino ausgeschaltet wurde, beim lock-Befehl wieder
aktiviert wird. Die Helligkeit wird dabei allerdings auf 255 gesetzt, da
ich noch keine Möglichkeit gefunden habe, an die g_settings ranzu-
kommen beziehungsweise die Klasse CLCD zu verwenden (keinen
Plan, welche Libs da alles mit eingebunden werden müssen und wo
die zu finden sind). Da die Antworten so klangen, als ob kein Inte-
resse an dieser Funktionalität bestand, hatte ich die Änderungen aber
nicht abgeschickt. Die Funktionen der lcdapi.cpp/h sind allerdings
komplett von mir. Hatte dazu jedoch das Gerüst der request.cpp
verwendet und den Kopf aus Bequemlichkeit gleich dringelassen, da
"SnowHead" ja mit großer Wahrscheinlichkeit nicht im CVS auftauchen
soll.
Woran ich allerdings gescheitert bin, ist eine Timeout-Funktion, welche
das Display nach einer Minute Inaktivität seitens des Web-Interfaces
wieder für Neutrino freigibt, damit es im Fehlerfall nicht ständig ge-
sperrt bleibt. Habe keine Möglichkeit gefunden, von dem statisch zu
deklarierenden Timer-Thread auf Members der gerade laufenden
LCDAPI-Instanz zuzugreifen, da ein getInstance aufgrund der beim
Erzeugen dieser Klasse notwendigen Übergabe der Parent-Klasse
WebDBox nicht möglich ist. Aber vielleicht kann da ja einer von Euch
noch was zaubern.

@Barf

Danke für die Korrekturen und für's Einchecken. :wink:
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

SnowHead hat geschrieben:Die Funktionen der lcdapi.cpp/h sind allerdings
komplett von mir. Hatte dazu jedoch das Gerüst der request.cpp
verwendet und den Kopf aus Bequemlichkeit gleich dringelassen, da
"SnowHead" ja mit großer Wahrscheinlichkeit nicht im CVS auftauchen
soll.
Hat auch eine andere Seite: Jemand Andere soll nicht die Ehre ODER die Schuld (es kann ja so sein, dass es sich als Mist feststellt) für dein Code bekommen. Ich werde die Zeile Ändern, entweder zu "SnowHead" oder "Anonym"; wie hättest du es gern?
Woran ich allerdings gescheitert bin, ist eine Timeout-Funktion, welche
das Display nach einer Minute Inaktivität seitens des Web-Interfaces
wieder für Neutrino freigibt, damit es im Fehlerfall nicht ständig ge-
sperrt bleibt.
Finde ich nicht eine gute Idee. Timeouts auf Locks führt zu mehr Probleme als es löst. Warum nicht ein Plugin-chen, um den Benutzer zu ermöglichen, /tmp/lcd.locked zu entfernen?
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Beitrag von SnowHead »

@Barf

Kannst von mir aus ruhig "SnowHead" in den Header schreiben, wenn's
keinen stört.

Die Timeout-Funktion finde ich eigentlich nicht kritisch. Wollte sie so
realisieren wie Ihr den Countdown-Timer für den Dimmer in lcdd.cpp.
Bei jedem Aufruf einer LCDAPI-Funktion sollte eine Member-Variable
mit der aktuellen Zeit beschrieben werden. Die Timerfunktion kann
dann zum Beispiel zyklisch nach einem sleep(30) checken, ob die
aktuelle Zeit mehr als 60 Sekunden größer als die in der Member-
Variable ist und wenn ja, die LCD-Blockierung aufheben, wenn sie
noch von der LCDAPI gesetzt ist, was in einem Flag beim Setzen der
Blockierung festgehalten wurde. Dafür zusätzlich ein "Plugin-chen" zu
schreiben halte ich nicht für sinnvoll.
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Beitrag von SnowHead »

Hier noch ein kleines Script zum Test der raw-Funktion :wink:

Code: Alles auswählen

#!bin/sh

dboxip=localhost

echo Nicht abbrechen! Script beendet sich nach 10 Sekunden selbst.
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?lock=1&rect=0,0,119,63,1,1&raw=7,8,120,8,231,213,85,109,255,255,255,255,255,252,182,168,165,255,255,231,234,170,183,86,173,255,255,255,253,26,164,170,255,255,231,173,85,173,253,255,111,127,255,252,173,80,21,255,255,231,242,170,183,87,171,253,237,253,250,22,42,84,255,255,231,213,86,219,189,254,191,255,198,188,149,18,10,255,255,231,213,107,110,239,111,247,253,41,86,75,24,42,255,255,231,235,91,181,181,218,223,136,0,32,43,69,5,255,255,231,217,109,111,111,127,254,2,4,84,37,136,5,255"
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?raw=7,12,120,8,231,246,171,181,219,173,208,16,59,249,8,134,130,255,255,231,213,85,111,125,119,64,0,191,255,32,10,3,255,255,231,181,91,186,215,172,0,2,255,254,136,66,130,255,255,238,84,173,87,236,232,0,10,170,183,3,0,65,255,255,230,10,165,181,87,80,0,84,170,218,145,129,32,255,255,252,2,154,170,218,160,0,128,2,36,9,161,65,255,255,236,0,82,173,109,64,0,82,16,82,138,160,160,255,255,248,0,10,165,43,32,2,0,0,2,0,192,144,255"
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?raw=7,20,120,8,248,0,4,149,85,144,8,0,0,0,68,164,88,255,255,252,0,0,82,174,160,32,128,0,0,1,104,84,255,255,254,128,1,10,82,137,2,0,0,0,0,161,20,255,255,254,0,0,81,85,64,64,0,0,0,4,208,40,255,255,255,0,0,10,86,170,10,0,66,0,0,52,20,255,255,254,0,0,1,43,81,32,3,193,0,0,168,142,255,255,255,128,0,20,170,220,132,7,192,2,2,182,6,255,255,255,0,0,1,85,101,16,15,192,6,48,24,5,255"
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?raw=7,28,120,8,255,128,0,4,171,90,64,31,192,14,17,94,6,255,255,255,192,0,1,45,234,40,63,224,24,0,44,3,255,255,255,224,0,0,215,91,64,63,248,10,1,47,1,255,255,255,224,96,2,93,234,184,127,253,192,40,29,2,255,255,255,224,224,1,110,181,88,224,164,17,80,15,129,255,255,255,193,224,0,183,218,180,0,0,10,136,133,128,255,255,255,161,176,0,174,237,186,0,0,183,100,7,193,255,255,255,252,248,1,95,181,108,128,5,45,170,6,192,255"
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?raw=7,36,120,8,255,254,252,0,187,237,181,0,36,222,212,83,224,255,255,255,252,0,16,175,182,219,212,146,182,213,3,96,255,255,255,252,0,8,191,219,118,245,42,219,108,1,240,255,255,255,252,0,0,183,109,191,93,215,126,247,1,80,255,255,255,254,0,40,223,246,213,246,189,219,173,16,240,255,255,255,252,5,84,191,85,191,239,215,247,253,128,88,255,255,255,254,32,169,111,238,247,122,253,126,174,128,120,255,255,255,252,10,172,191,91,127,255,87,223,247,64,44,255"
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?update=1&raw=7,44,120,6,255,254,138,180,253,247,221,219,254,246,187,160,20,255,255,255,253,37,89,95,218,247,255,91,223,238,128,26,255,255,255,254,85,234,255,255,191,255,254,251,91,224,10,255,255,255,253,86,170,191,109,255,253,215,175,255,208,4,255,255,255,253,90,186,255,255,255,247,253,253,85,232,3,255,255,255,254,171,107,127,183,254,255,183,91,255,224,2"
sleep 10
wget -q -Y off -O /dev/null "http://$dboxip/control/lcd?lock=0"
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Ich habe den Author geändert.
Hier noch ein kleines Script zum Test der raw-Funktion
Cute. Ich schlage vor, die Zeile

Code: Alles auswählen

trap 'wget -q -Y off -O /dev/null http://$dboxip/control/lcd?lock=0' 1 2 3 15
einzufügen: so wird z.B. ein Cntrl-C abgefangen ("getrap-ped") und der Lock sofort freigegeben.
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

Bitte keine Pseudonyme als Copyright. Wenn ihr nicht mit eurem Realnamen drin stehen wollt, schreibt halt "Code written by Snowhead" oder so.

Copyright muß immer eine natürliche oder juristische Person sein. Alles andere ergibt wenig Sinn.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Npq hat geschrieben:Bitte keine Pseudonyme als Copyright. Wenn ihr nicht mit eurem Realnamen drin stehen wollt, schreibt halt "Code written by Snowhead" oder so.
Hast natürlich recht. Ich habe faulerweise "Copyright" statt "Author" geschreiben.

Inzwischen hat mogway noch eine Version eingecheckt, und sie wird dir auch nicht gefallen :lol:
mogway in CVS hat geschrieben: barf: why did you remove the copyright by dirch?
wegen frühere Beitrag dieses Threads. Ich sehe kein Grund, die Wahrheit in frühere Aussagen in Frage zu stellen.
mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

Barf hat geschrieben:
mogway in CVS hat geschrieben: barf: why did you remove the copyright by dirch?
wegen frühere Beitrag dieses Threads. Ich sehe kein Grund, die Wahrheit in frühere Aussagen in Frage zu stellen.
Der Header bezieht sich auf das Binary nhttpd. Und da gehört Dirch imo mit rein.

Gruß
mogway
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Beitrag von SnowHead »

Oh Gott, nun brecht doch deswegen keinen Glaubenskrieg vom Zaun!
Wenn "Dirch" in den Header reinmuß, dann schreibt halt "Dirch" rein.
Mir ist das völlig Wurscht, ob da nun "Dirch" oder "SnowHead" oder
sonstwas drinsteht. Hauptsache es funktioniert. Was hätte ich von ei-
nem Copyright?

@Barf

Danke für den Tip mit dem "trap".
michaelstaehle
Einsteiger
Einsteiger
Beiträge: 143
Registriert: Dienstag 7. September 2004, 09:56

Beitrag von michaelstaehle »

Mmh, ich blicke nicht ganz durch wer für nhttpd zuständig ist, aber vielleicht meldet sich jemand der davon Ahnung hat:

Dank anti- und myservices.xml kann man recht schöne Dinge machen. Den Logikbug in den Source habe ich schon gefixed. Aber im nhttpd ist nicht der voll Bug drin, d.h. bei Abfrage des Bouquets/Service werden diese Einträge nicht berücksicht. Das hat zur Folge, dass z.B. MCE aussteigt.

Manche Sender haben gemeint einfach ein paar Zeichen vor den Sendernamen zu machen.

Kann mir da in der Hinsicht jemand helfen?

Ciao Micha
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Es ist mir nicht ganz klar was du meinst. Laut doku api_doku.[html|txt] gibt es keine nhttpd-api-funktion die z.B. die Services liefert. Es gibt aber eine Funktion, die die Datei services.xml liefert.

Genau warum MCE versagt weiss ich nicht. Aber ich kann raten: Vielleicht ruft er die API-Funtion "getservicesxml" an, macht die implizite Annahme (einmal richtig, jetzt nicht mehr) dass dies die Services liefert? Dann ist MCE buggy und sollte repariert werden. Vielleicht entsteht dann ein Bedarf für eine neue API Function, "getservices"?

Übrigens ist antiservices.xml obsolete.
michaelstaehle
Einsteiger
Einsteiger
Beiträge: 143
Registriert: Dienstag 7. September 2004, 09:56

Beitrag von michaelstaehle »

Barf hat geschrieben: Übrigens ist antiservices.xml obsolete.
War bisher zu faul :D

Doku: Es wird der Inhalt der Datei /var/tuxbox/config/zapit/services.xml zurückgegeben.

Die Funktion sollte nun die "bereinigte" zurückliefern, dann wäre es wieder konform. Oder, sehe ich das falsch? Somit hast Du recht ist kein Bug, sondern ? ja was?

Wäre also eine neu Funktion.

Ciao Micha