[ANNOUNCE] vdr-osdserver 0.1.1

  • Hi,


    Version 0.1.0 des OSDServer-Plugins ist veröffentlicht.


    OSDServer ist ein Plugin, dass es externen Programmen ermöglicht, das OSD und die Menüsysteme des VDR zu benutzen. Der Zugang erfolgt über TCP/IP und eine einfache Skriptsprache, wobei die Sprache bewusst auf die Benutzung durch Perl-Programme und Shell-Skripte ausgelegt ist. Bisher waren interaktive VDR-Anwendungen weitgehend C++-Programmierern vorbehalten, mit diesem Plugin können auch reine Skriptprogrammierer das OSD nutzen.


    Version 0.1.0 sammelt hauptsächlich die Bugfixes seit Version 0.0.2, und sollte stabil genug für die Praxis sein. Neu in dieser Version sind lokale Variablenkontexte, die Pseudovariable _Focus zum Zugriff auf das aktuelle Menü, und die Unterstützung für eine osdserverhosts.conf sowie eine konfigurierbare Portnummer.


    Feedback bei Problemen und für Verbesserungsvorschläge ist willkommen.


    Download und Beispiel: http://www.udo-richter.de/vdr/osdserver.html


    <edit>


    Einen Bug hat es immer noch...
    Version 0.1.1 steht zum Download bereit.


    Gruß,


    Udo

  • Noch ein zwei Worte zu den Neuerungen EnterLocal, LeaveLocal und _Focus: Das soll das Menühandling etwas erleichtern. Man kann sie zum Beispiel so einsetzen:


    m=New Menu "Menü 1"
    m.Show
    # Zeigt ein einfaches Menü an


    # [..]


    EnterLocal
    # Legt lokalen Variablenkontext an


    m=New Menu "Menü 2"
    # Damit bezeichnet 'm' nun das neue Menü 2, nicht mehr Menü 1


    _Focus.AddSubMenu m
    # Das sichtbare Menü ist Menü 1 und ist über _Focus erreichbar


    m.Show
    # Das Untermenü Menü 2 wird sichtbar


    # [..]


    m.SendState osBack
    # Schließt das Menü 2 und zeigt wieder Menü 1 an


    # [..]


    LeaveLocal
    # Damit wird m, das auf Menü 2 verweist, gelöscht. Statt dessen ist wieder Menü 1 als m erreichbar.


    m.Show
    # Auffrischen von Menü 1



    Ein Menü muss also nichts mehr unbedingt über seinen Aufrufer wissen, und dank des leavelocal werden auch alle lokalen Variablen abgebaut, und es bleiben keine toten Objekte mehr zurück. Auch kann man so problemlos in jedem Menü die Einträge item1, item2, item3 nennen, ohne andere Menüs durch die Wiederverwendung der Namen zu stören.


    Gruß,


    Udo

  • Hallo Udo,


    ist der osdserver noch abwärtskompatibel --> Variablenkontexte ?


    Ich habe hier mit dem vdr-portal Script v.0.5 ein seltsames Verhalten ?( .



    Das kommt aus diesem Codeabschnitt:



    Gruß,
    Chuck


    [EDIT]
    Ich habe mal folgendes in dem Example helloworld.pl hinzugefügt:


    Code
    } elsif (IsEvent("opt2","keyOk")) {
                SendCmd "menu.GETCURRENT" or return $false;
                SendCmd "Message 'B-B-B-Baybee!'" or return $false;
                SendCmd "menu.SendState osEnd" or return $false;
                return $true;


    Ergebnis:


    Code
    < 200 Ready.
    > menu.SleepEvent
    < 300 opt2 keyOk
    < 200 Ready.
    > menu.GETCURRENT
    < 302 2 (@ä    <-------
    < 200 Ready.
    > Message 'B-B-B-Baybee!'
    < 300 Message keyNone

    1- yavdr 0.5 - DVB-C
    1- VDR-1.7.14 - Xine Pugin - XBMC - DVB-C
    2- Activy 300 mit Gen2VDR V2

    Edited once, last by vdrchuck ().

  • Quote

    Originally posted by vdrchuck
    ist der osdserver noch abwärtskompatibel --> Variablenkontexte ?


    Natürlich ist er. Wenn man die Variablenkontexte nicht benutzen will, bleibt alles beim alten.


    Quote

    Ich habe hier mit dem vdr-portal Script v.0.5 ein seltsames Verhalten ?( .


    > smenu.GETCURRENT
    < 302 0 hœ0 <---------
    < 200 Ready.


    *autsch*


    Das ist eine Nebenwirkung, weil ich für die Variablenkontexte einiges umbauen musste, und da hab ich wohl übersehen, an einer Stelle sauber auf cString umzubauen...


    Version 0.1.1 ist auf meiner Webseite.



    Gruß,


    Udo

  • Quote

    Original von Urig
    Das ist eine Nebenwirkung, weil ich für die Variablenkontexte einiges umbauen musste, und da hab ich wohl übersehen, an einer Stelle sauber auf cString umzubauen...


    Version 0.1.1 ist auf meiner Webseite.


    Mit der Version 0.1.1 funktioniert es wieder wie gewünscht :) .


    Quote

    Original von Urig
    >edit>


    Einen Bug hat es immer noch...


    Muss aber ein kleiner sein ;) , mir ist bis dato nichts aufgefallen (allerdings benutze ich auch nicht die Variablenkontexte).


    Ich habe die Variablenkontexte zwar mal kurz angetestet (hat auch soweit funktioniert), allerdings war es mir zu aufwendig mein Script dazu umzubauen.


    Ehrlich gesagt habe ich den Sinn (die Vereinfachung für die Menüs) noch nicht so recht erkannt ?( .


    Quote

    Ein Menü muss also nichts mehr unbedingt über seinen Aufrufer wissen, und dank des leavelocal werden auch alle lokalen Variablen abgebaut, und es bleiben keine toten Objekte mehr zurück.


    Mmm, mit dem _Focus beziehe ich mich doch auf das vorherige Menü (?), und bei einem "delete submenü" werden doch auch alle Variablen und Objekte zestört (?).


    Quote

    Auch kann man so problemlos in jedem Menü die Einträge item1, item2, item3 nennen, ohne andere Menüs durch die Wiederverwendung der Namen zu stören.


    Dies ist natürlich ein Vorteil ....


    Gruß,
    Chuck

    1- yavdr 0.5 - DVB-C
    1- VDR-1.7.14 - Xine Pugin - XBMC - DVB-C
    2- Activy 300 mit Gen2VDR V2

  • Hallo Udo!


    Der gcc 2.95.4 hat wieder zugeschlagen:


    Einfache Lösung, oder Ende der LinVDR-Kompatibilität?


    Danke und Gruß


    Toxic

    Registrierter VDR-User #1275


    VDR-Server: Proxmox 7.1 - LXC Container - Debian 11.5 - eTobi-VDR 2.6.0

    DVB-Hardware: Digital Devices - Cine S2 V5.5 und V6

    VDR-Clients: FireTV Sticks 2 bis 4K Max und Kodi 19.4

  • Hi,


    Urig
    ich habe mit Deinem plugin etwas "gespielt" und muss sagen, Hut ab! Das ist wirklich saubere Arbeit. Ich freue mich schon, die ersten Scripte damit zu "befeuern"


    Mfg
    KRis

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP

  • Quote

    Originally posted by Toxic-Tonic
    Der gcc 2.95.4 hat wieder zugeschlagen
    Einfache Lösung, oder Ende der LinVDR-Kompatibilität?


    Na, wie kann ich die armen 0.7er denn im Stich lassen? :)


    Ich vermute, dass der Compiler nicht mit den unterschiedlichen Datentypen des ? : zurecht kommt, und es wahlweise als


    cString(context ? (const char*)context->GetNameById(id) : (const char*)NULL);


    oder als


    context ? (cString)context->GetNameById(id) : (cString)NULL;


    interpretiert. Ich kann ehrlich gesagt auch nicht genau erklären, nach welchen Regeln die neueren Compiler hier Das Richtige(TM) machen.


    Versuch mal, das ": NULL" in Zeile 192 durch ": cString()" zu ersetzen, dann ist es eigentlich eindeutig.


    Gruß,


    Udo

  • Nabend


    Geht, glaube auch ohne netcat, im Beispiel-Schnippsel.


    Code
    shell> exec 5<>/dev/tcp/localhost/2010
    shell> echo "Version 0.1" >&5
    shell> cat <&5
    201 Welcome to OSDServer version 0.1.1, VDR version 1.5.5.
    200 Ready.


    LG Ronny

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!