Hi,
also ich hab mal eine Frage. Kann ich den VDR irgendwie dazu überreden die komplette setup.conf bei LAUFENDEM VDR neu zu schreiben und auch wieder einzulesen?
Hi,
also ich hab mal eine Frage. Kann ich den VDR irgendwie dazu überreden die komplette setup.conf bei LAUFENDEM VDR neu zu schreiben und auch wieder einzulesen?
Hallo Scorp,
ZitatOriginal von Scorp
also ich hab mal eine Frage. Kann ich den VDR irgendwie dazu überreden die komplette setup.conf bei LAUFENDEM VDR neu zu schreiben und auch wieder einzulesen?
Das läst sich eventl. per Plugin machen.
Siehe als Demo dieses Plugin
Hardy
Hi,
das wäre schon nicht schlecht. Ich bräuchte den Zugriff aber am besten von außen als Skript.
Hallo Scorp,
ZitatOriginal von Scorp
das wäre schon nicht schlecht. Ich bräuchte den Zugriff aber am besten von außen als Skript.
Dieses Plugin läst sich nur per Script steuern!
SVDRP kennst Du?
wenn nein --> www.vdr-wiki.de
wenn ja --> bitte README lesen
Hardy
Sorry, ich bin bei dem Begriff Plugin einfach davon ausgegangen das es per OSD zu steuern ist. Ich werd mich erst mal schlau machen.
DANKE
EDIT: OK, das sieht genau nach dem aus was ich brauche. Nur bin ich mir nicht sicher ob die komplette setup.conf neu eingelesen wird, aber das werde ich ja dann sehen.
Hallo Scorp,
ZitatOriginal von Scorp
EDIT: OK, das sieht genau nach dem aus was ich brauche. Nur bin ich mir nicht sicher ob die komplette setup.conf neu eingelesen wird, aber das werde ich ja dann sehen.
Bei einer Änderung im OSD wird die setup.conf auch geschrieben, so das Änderungen wirklich in der Datei gemacht werden müssen zum Testen.
Falls das Einlesen einen falschen Dateinamen liefert, so ist hier eine geteste Variante. Diese ist auch ab dem VDR 1.2.6 mit SVDRP-Patch lauffähig.
Hardy
PS: Was willst Du eigentlich machen?
ZitatOriginally posted by HFlor
PS: Was willst Du eigentlich machen?
Gute Frage.
Eigentlich will ich nur abhängig von der Uhrzeit unterschiedliche "MinUserInactivity" Einstellungen realisieren. Und das möglichst ohne den VDR zu patchen.
Vielleicht kann ich diese Variable auch direkt per SVDRP ansprechen, das wäre dann natürlich noch einfacher.
Hallo Scorp,
ZitatOriginal von Scorp
Vielleicht kann ich diese Variable auch direkt per SVDRP ansprechen, das wäre dann natürlich noch einfacher.
Wie weit kennst Du Dich in C aus?
Du kannst ohne Probleme vom Plugin aus eine Setup-Variable setzen. Das ist dem fall sogar zu vorzuziehen.
so frei nach:
if (..cmd.. = "USERACT") Setup.MinUserInactivity = atoi(Option);
natürlich noch mit ein paar Fehlerkontrollen ...
Wenn Du nicht Programmieren kannst, so könnte ich das auch machen ...
Hardy
In C kenne ich mich schon aus. Nur bei der Klassenhierarchie von VDR blicke ich nicht so richtig durch. Wenn Du für die angesprochene Variable ein paar Zeilen schreiben könntest wäre das nicht schlecht.
EDIT:
Das Plugin will anscheinend entweder nicht mit der aktuellen VDR Version oder nicht mit dem Bigpatch...
make[1]: Entering directory `/usr/src/VDR/vdr-1.3.34/PLUGINS/src/setuploadandsave-0.0.2'
g++ -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"setuploadandsave"' -I../../../include -I../../../../DVB/include setuploadandsave.c
setuploadandsave.c: In method `class cString cPluginSetuploadandsave::SVDRPCommand(const char *, const char *, int &)':
setuploadandsave.c:139: passing `const char *' as argument 1 of `strcpy(char *, const char *)' discards qualifiers
/usr/include/string.h:83: too few arguments to function `char * strcpy(char *, const char *)'
setuploadandsave.c:139: at this point in file
make[1]: *** [setuploadandsave.o] Error 1
Muß ich mir noch mal in Ruhe ansehen, aber nicht mehr heute.
Ich werde mich am Freitag mal daran versuchen.
Hallo Scorp,
ZitatOriginal von Scorp
Das Plugin will anscheinend entweder nicht mit der aktuellen VDR Version oder nicht mit dem Bigpatch...
Man soll eben erst alles selbst Testen ...
Der Fehlerteufel hat sich in der Zeile mit dem 'strcpy' breit gemacht, dort soll ein 'strdup' stehen.
Ich hatte es nur für den 1.2.6 übersetzt.
Doch nun zum neusten Plugin für Deine Wünsche:
Es läst sich wieder nur über SVDRP steuern und gestattet den Zugriff auf einige Setup-Variablen.
PLUG svdrppara DLIFETI <days> --> read/set DefaultLifetime
PLUG svdrppara DPRIORY <priority> --> read/set DefaultPriority
PLUG svdrppara MARGSTP <minutes> --> read/set MarginStop
PLUG svdrppara MARGSTR <minutes> --> read/set MarginStart
PLUG svdrppara OSDLANG <lang-id> --> read/set OSDLanguage
PLUG svdrppara OSDMSGT <seconds> --> read/set OSDMessageTime
PLUG svdrppara PLIFETI <days> --> read/set PauseLifetime
PLUG svdrppara PPRIORY <priority> --> read/set PausePriority
PLUG svdrppara PRILIMI <primarylimit> --> read/set PrimaryLimit
PLUG svdrppara RESUMID <res-id> --> read/set ResumeID
PLUG svdrppara SPLITEF <0|1> --> read/set SplitEditedFiles
PLUG svdrppara SVDRPTI <seconds> --> read/set SVDRPTimeout
PLUG svdrppara USERACT <minutes> --> read/set MinUserInactivity
PLUG svdrppara VIDEOSI <size> --> read/set MaxVideoFileSize
PLUG svdrppara RECTIME <minutes> --> read/set InstantRecordTime
Alles anzeigen
Hardy
PS: für die C++ Experten: wie kann ich die folgenden Zeilen besser machen? Ich habe es nicht geschafft zwei cString's zu verketten?!?! Es kamm immer die Fehlermedung operator += (oder auch +) nicht definiert.
cString ret = "";
cString newline = "";
for (int iloop = 0; iloop < I18nNumLanguages; iloop++)
{
newline.sprintf("OSDLANG %02d --> %s\n", iloop+1, I18nLanguages()[iloop]);
ret = cString::sprintf("%s%s", (const char*) ret, (const char*) newline);
}
return cString::sprintf("%send of languagelist", (const char*) ret);
ZitatOriginally posted by HFlor
PS: für die C++ Experten: wie kann ich die folgenden Zeilen besser machen? Ich habe es nicht geschafft zwei cString's zu verketten?!?! Es kamm immer die Fehlermedung operator += (oder auch +) nicht definiert.
char *strcat(char *s1, const char *s2);
???
Du hast jetzt aber nicht extra deshalb ein komplett neues Plugin geschrieben, oder?
Auf jeden Fall mal vielen Dank dafür, ich werde es morgen testen.
Hallo Scorp,
ZitatOriginal von Scorp
...char *strcat(char *s1, const char *s2);
Nein, so einfach ist es leider nicht, es geht um cString-Objekte.
ZitatDu hast jetzt aber nicht extra deshalb ein komplett neues Plugin geschrieben, oder?
Doch, für diese Funktion ist doch nicht viel zu machen. In der Hauptsache war es etwas Schreibarbeit.
Hardy
ZitatOriginal von HFlor
PS: für die C++ Experten: wie kann ich die folgenden Zeilen besser machen? Ich habe es nicht geschafft zwei cString's zu verketten?!?! Es kamm immer die Fehlermedung operator += (oder auch +) nicht definiert.
Garnicht, da die Klasse cString keinen + oder += Operator definiert. Damit ist es Sache des Programmierers, sich um den Speicher zu kümmern.
char *list = NULL;
for (int iloop = 0; iloop < I18nNumLanguages; iloop++)
{
char *newline;
asprintf(&newline, "%sOSDLANG %02d --> %s\n", list ? list : "", iloop + 1, I18nLanguages()[iloop]);
if (list) free(list);
list = newline;
}
char *ret;
asprintf(&ret, "%send of languagelist", list);
free(list);
return cString(ret, true);
Alles anzeigen
So hätte ich es wohl gemacht.
ZitatOriginally posted by HFlor
Nein, so einfach ist es leider nicht, es geht um cString-Objekte.
Hab ich mir fast schon gedacht das das zu einfach wäre...
ZitatDoch, für diese Funktion ist doch nicht viel zu machen. In der Hauptsache war es etwas Schreibarbeit.
Wie gesagt ich werd es morgen mal ausprobieren und versuchen nochzuvollziehen was Du gemach hast.
Hallo LordJaxom,
ZitatOriginal von LordJaxom
Garnicht, da die Klasse cString keinen + oder += Operator definiert. Damit ist es Sache des Programmierers, sich um den Speicher zu kümmern
Als ich etwas zu der cString-Klasse suchte hatte ich diesen Beitrag gefunden.
Ist das dann eine eigene Klasse cString? Dort werden die Operator + und += erwähnt.
ZitatSo hätte ich es wohl gemacht.
Danke für den Hinweis, ich dachte mit den cStrings wird vieles besser. Bei Deiner Lösung sehe ich das es doch nichts besser ist
Hardy
Ähm, die von Dir gefundene Doku bezieht sich auf eine völlig unabhängige Klassenbibliothek. Natürlich hat VDR's cString-Klasse damit recht wenig am Hut
cString hat Klaus eigentlich nur entwickelt um String-Pointer Thread-Safe und Leak-Safe aus Funktionen zurückzugeben.
Hi,
also das Plugin läuft und der Wert wird auch geschrieben, bei einem ersten Test brachte er dann erwartungsgemäß die Meldung vor dem runterfahren. Dann hat er allerdings nicht weiter gemacht.
Ich werde es mal mit etwas größeren Zeiten probieren...
Hallo Scorp,
ZitatOriginal von Scorp
also das Plugin läuft und der Wert wird auch geschrieben, bei einem ersten Test brachte er dann erwartungsgemäß die Meldung vor dem runterfahren. Dann hat er allerdings nicht weiter gemacht.
Du hast aber auch 5 Minuten gewartet? Das ist Anzeigezeit für die Ausschaltmeldung. Diese Zeit ist nicht ohne Patch zu ändern.
Hardy
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!