EPG fix bei Timer-Aufnahme von Power-Off

Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 20:48

EPG fix bei Timer-Aufnahme von Power-Off

Beitrag von Günther »

Mich nervt seit geraumer Zeit, das immer der EPG fehlt, wenn aus dem Ruhezustand (Power-Off) eine Aufnahme gestartet wird. Bei meinen Tests dazu fehlt der EPG immer, wenn nach dem Hochstarten auf einem Sender in einem anderen Bouquet aufgenommen werden sollte. (hier und da hackt es auch, wenn gar nicht umgeschaltet wird - das muss ich aber noch mal genauer beobachten).

Ziemlich sicher ist die Zeit zwischen Umschalten und Aufnahmestart zu kurz, deshalb würde ich vorschlagen dazwischen eine kleine Pause einzulegen und zwar genau hier:

Code: Alles auswählen

vcrcontrol.cpp:
CVCRControl::CFileAndServerDevice::CutBackNeutrino()
{
...
		if(g_Zapit->getCurrentServiceID() != channel_id)	// und momentan noch nicht getuned ist
		{
			g_Zapit->zapTo_serviceID(channel_id);		// dann umschalten
			sleep(2); //TODO: 1 or 2 seconds?. Wait some time after zapping to give the sections time to collect the EPG, this fixes the problem, that the EPG is missing if there is a channel switch before record starts

		}
...
}
Diese Wartezeit würde auch nur bei einem Umschalten vor der Aufnahme ausgeführt, und damit keine Auswirkung bei Spontan-Aufnahmen hat.

Oder hat jemand eine bessere Idee , bzw. sieht jemand bei diesem Fix ein Problem?
Ich müßte das natürlich noch testen (mein cdk ist nach einem update gestern irgendwie mit Enigma-Build-Fehlern ruiniert...)

Eventuell werden die Probleme ja auch mit dem (hoffentlich;) bald erscheinenden EPG-fix behoben??? (was meinst Du dazu Homar?)

Günther
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 02:39

Beitrag von petb »

ACK

bin für alles was was einen EPG vor der Aufnahme besser verfügbar macht.

Aber das Problem denke ich ist doch auch das wenn z.B. auf Sender A eine Aufnahme programmiert ist und die Box in der Zapit mit Lastchannel= Sender A steht, dann eben nicht richtig umgeschaltet wird und dann auch ab und kein EPG aktualisiert wird.

Hoffe es kommt rüber was ich meine.
Also wenn Box auf Sender A startet und Sender A aufgenommen werden soll, dann passiert es oft das:
obwohl EPG da ist weil die Zeit ausgereicht hat den EPG zu holen etc., dieser aber trotzdem nicht für die Aufnahme berücksichtigt wird.
Zappt man jedoch einmal weg und wieder hin, dann ist er da.

So denke ich das Problem hat mehrere Ursachen

Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Ich habe mir mal was ausgedacht, läuft zwar noch nicht ganz rund aber es funktioniert.
Vielleicht kann man noch was draus machen.

Sourcen/Binaries liegen unter http://home.arcor.de/houdini/dbox/standby_time.tgz
Sourcen:
driver-diff-2006-02-11-22-31-52.patch - diff des driver Zweigs
tools-diff-2006-02-11-22-34-02.patch - diff des apps/tuxbox/tools Zweigs
standby_time.cpp - Mein Tool - muss nach apps/tuxbox/tools/test

Binaries:
dbox2_fp.o - modifizierte frontprozessor Treiber (1 ioctl hizugefügt)
standby_time - Tool zum save und restore der Zeit
inittab - </bin/standby_time save> hinzugefügt
rcS - </bin/standby_time restore> und Löschen des configfiles hinzugefügt

Funktionsweise:

Code: Alles auswählen

standby_time save
// we save the actual time and the countdown set into fp into a config file
// if there is no countdown set use highest possible value (0xffff => 45 days)

Code: Alles auswählen

standby_time restore
// when restarting from wakeup, add the saved countdown to saved time...
// when restarting from user, add the difference from the saved countdown to the read contdown to the saved time...
// ...and set system time

// when restarting from off, just use the shutdown time... (or do nothing??)
// when there is no config file do nothing

Comments?

Houdini
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 02:39

Beitrag von petb »

Das heist nun das eine errechnete Zeit gleich nach dem Start vorhanden ist, sonst nichts oder :gruebel:

Ist das nicht das gleiche als wenn ich die Zeit mittels rdate zu Beginn der start_neutrino hole ?

Oder kapier ich da was nicht ?
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Das heist nun das eine errechnete Zeit gleich nach dem Start vorhanden ist, sonst nichts oder
genau
Ist das nicht das gleiche als wenn ich die Zeit mittels rdate zu Beginn der start_neutrino hole ?
rdate ist natürlich genauer, aber wenn die Box nicht am Netz hängt...
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 02:39

Beitrag von petb »

OK, dann die Frage:
Wenn das in der rcS gemacht wird und ich dann in der start_neutrino die danach kommt rdate nutze, hab ich auf jeden fall die aktuelle Zeit.
Also stört sich das ganze nicht.

Fängt der sectionsd und timerd eigentlich auch wirklich an zu rennen und gescheit zu funktionieren, wenn ich die zeit mit rdate setze ?
Oder wartet der sectionsd, timerd z.B. trotzdem auf eine Transponderzeit und fängt erst dann an richtig zu rennen ?
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Oder wartet der sectionsd, timerd z.B. trotzdem auf eine Transponderzeit und fängt erst dann an richtig zu rennen ?
zumindet sectionsd wartet nicht auf die TP Zeit sondern legt gleich los
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 18:50

Beitrag von Zwen »

der timerd legt los, wenns der sectionsd sag (isTimeSet()) :-)

Ich habe jetzt mal, wie in einem anderen Thread beschlossen, einen Zap zur Announce-Time eingebaut (muss in Settings aktiviert werden). Dann wird schon beim Announce umgeschaltet, das sollte reichen um den EPG zu lesen.

Die Geschichte mit dem sleep in vcrcontrol.cpp gefälltz mich ehrlich gesagt nicht so, zumal man auch nicht weiss, ob die 2 sec dann reichen...

Zwen
Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 20:48

Beitrag von Günther »

Zwen hat geschrieben:
Die Geschichte mit dem sleep in vcrcontrol.cpp gefälltz mich ehrlich gesagt nicht so, zumal man auch nicht weiss, ob die 2 sec dann reichen...

Zwen
Mir gefiehl es auch nicht so gut ;), das wäre halt nur ein workaround gewesen (der irgendwie auch nicht funktioniert hat :(. Deshalb vielen Dank für Deine Lösung, ich denke das wird einige freuen.

Allerdings fehlt immer noch manchmal der EPG, wenn nach power-off hochgestartet wird und für die Aufnahme nicht umgeschaltet werden muss. Nirvana meinte, daß das u.a. an der fehlenden Zeit-Info liegt. Ich denke da gibt es aber auch noch andere Probleme.

Ich hoffe das damit gelöst zu haben. daß ich beim Hochstart einfach auf einen Kanal zappe (in neutrino_start), auf dem ich nie aufnehme, so daß mindestens einmal gezappt wird (das ist wirklich ein würgaround :roll: , aber vielleicht findet ja jemand irgendwann noch die Wurzel des Übels ;)

Günther