Aktueller sectionsd und weitere Ambitionen?

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

hier das log beim runterfahren der box mit vorhandener currentservices.xml

Code: Alles auswählen

nfs: server 192.168.1.2 not responding, timed out
EIT Update Filter: Activate EitThread
commandWriteSI2XML
[basicsocket] receive timed out.
[CBasicClient] receive failed: /tmp/sectionsd.sock
error while loading icon: mute.raw
EIT Update Filter: Activate EitThread
commandCurrentNextInfoChannelID
[basicsocket] send_data: Broken pipe
EIT Update Filter: Activate EitThread
EIT Update Filter: Activate EitThread
Sende TERM-Signal an camd2
EIT Update Filter: Activate EitThread
zapit shot down :)
EIT Update Filter: Activate EitThread
Waiting for zapit (max. 50 seconds)
Waiting for zapit (max. 49 seconds)
Waiting for zapit (max. 48 seconds)
Waiting for zapit (max. 47 seconds)
Waiting for zapit (max. 46 seconds)
Waiting for zapit (max. 45 seconds)
Waiting for zapit (max. 44 seconds)
EIT Update Filter: Activate EitThread
Waiting for zapit (max. 43 seconds)
Waiting for zapit (max. 42 seconds)
EIT Update Filter: Activate EitThread
Waiting for zapit (max. 41 seconds)
EIT Update Filter: Activate EitThread
EIT Update Filter: Activate EitThread
CXA2092 found
The system is going down NOW !!
[nhttpd] stop requested......
Sending SIGKILL to all processes.
The system is halted. Press Reset or turn off power
die fehlermeldung, die ich meinte ist zwar noch nicht dabei, aber die zeig ich dir schon noch mal.
herbyhide
Interessierter
Interessierter
Beiträge: 42
Registriert: Dienstag 31. August 2004, 11:05

Beitrag von herbyhide »

dann freu ich mich mal :D

jedoch is, glaube ich zumindest, der sache auf 28,2 best nur mit einem kompletten abschalten der currentbouquets.xml herr zu werden.
bei jedem transponder und manchmal auch bei jedem sender wechsel wird die current neu und auch anderst geschrieben.

dies hat zur folge das im bouquet BSkyB Bouquet 3 - DTH Wales über 800 sender sind wovon es ca 300 garnicht in der services.xml gibt!! dies hat im gesamten die folge das über 4000 blender in den bouquets sind und meine settings 1,5MB sind


hab zu wget leider nichts gefunden!!
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

herbyhide hat geschrieben: jedoch is, glaube ich zumindest, der sache auf 28,2 best nur mit einem kompletten abschalten der currentbouquets.xml herr zu werden.
Das glaube ich nicht! Man muss es nur so programmieren, wie es die orginal Receiver auch machen. ;)

@mb405
Danke. Das sieht vernünftig aus.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich habs doch gewusst, das der fehler wieder mal kommt beim runterfahren.
commandWriteSI2XML
terminate called after throwing an instance of 'std::length_error'
terminate called recursively
Aborted
danach fährt die box ohne ton(muted) hoch

ps das mit dem verdrehten abspeichern liegt hier begraben ?
sectionsd.cpp

Code: Alles auswählen

...
SIevent e(onid,tsid,sid,xmlGetNumericAttribute(event, "id", 16));
...
fprintf(fd,"\t<service original_network_id=\"%04x\" transport_stream_id=\"%04x\" service_id=\"%04x\">\n",onid,tsid,sid);
...
snprintf(eventname,17,"%04x%04x%04x.xml",onid,tsid,sid);
...
write_epg_xml_header(eventfile,onid,tsid,sid);
...

wenn da alle "onid,tsid,sid" einträge in "tsid,onid,sid" gedreht werden ? könnte es da funken ??
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Was meinst du mit verdreht abspeichern? Ich denke das klappt, auch wenn es verdreht ist. Was willst du dann noch ändern?
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Einmal hin, einmal her... Geht, geht nicht...

Ich würde sagen an ungeraden Tagen so und an geraden so... :lol:
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich meinte damit die diskrepanz von http://dboxip/control/channellist und den namen der abgespeicherten dateien. ist nur schönheitsfehler ;)
das speichern und laden geht.
nicht gleich mich erschlagen. duck und wech.
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

*g*
Man gut, dass du dich geduckt hattest. Das Format in den Dateien ist doch so unwichtig wie nur irgendwas. Da kann man wenigstens die logische Reihenfolge beibehalten.
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

@ Houdini

Wie kommst Du den mit den Erweiterungen voran?

Hast Du was zum Testen für uns?? :D


Gruß
____Paule
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Heute bei Formel1 habe ich die Funktion wunderbat testen können.

Dabei sind mir folgende Dinge aufgefallen:

- Die Bildoptionen werden nur auf dem Portal aktualisiert. Nicht auf den Subkanälen.
- Die Optionen werden sehr früh ab bzw. zugeschaltet. Das mag aber daran liegen, dass Premiere ainfach zu früg ab bzw. zuschaltet.

Ansonsten eine super Erweiterung. Hoffe das kommt bald ins CVS!

Dank an Houdini und mach weiter so.


Gruß
____Paule
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

@Paule
Hab da noch ein paar Verbesserungen gemacht, bin aber noch nicht so weit

Wenn du willst kannste mal das probieren:

Code: Alles auswählen

Index: remotecontrol.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/daemonc/remotecontrol.cpp,v
retrieving revision 1.100
diff -u -r1.100 remotecontrol.cpp
--- remotecontrol.cpp	28 Aug 2005 21:44:22 -0000	1.100
+++ remotecontrol.cpp	21 Apr 2006 20:21:25 -0000
@@ -168,10 +168,11 @@
 	{
 		CSectionsdClient::CurrentNextInfo* info_CN = (CSectionsdClient::CurrentNextInfo*) data;
 
-		if ( ( info_CN->current_uniqueKey >> 16) == current_channel_id )
+printf("Current/Next channelID: old(%llx) -> new(%llx)\n", current_channel_id, info_CN->current_uniqueKey >> 16);
+		if ( ((info_CN->current_uniqueKey >> 16) == current_channel_id ) || ((info_CN->current_uniqueKey >> 16) == current_sub_channel_id ) )
 		{
 			//CURRENT-EPG für den aktuellen Kanal bekommen!;
-
+printf("Current/Next EPGID: old(%llx) -> new(%llx)\n", current_EPGid, info_CN->current_uniqueKey);
 			if ( info_CN->current_uniqueKey != current_EPGid )
 			{
 			    if ( current_EPGid != 0 )
@@ -190,8 +191,10 @@
 				if ( has_unresolved_ctags )
 					processAPIDnames();
 
-				if ( info_CN->flags & CSectionsdClient::epgflags::current_has_linkagedescriptors )
+				if ( info_CN->flags & CSectionsdClient::epgflags::current_has_linkagedescriptors ){
+					subChannels.clear();
 					getSubChannels();
+				}
 
 				if ( needs_nvods )
 					getNVODs();
@@ -297,14 +300,19 @@
 
 void CRemoteControl::getSubChannels()
 {
-	if ( subChannels.size() == 0 )
+//HK check for updates of the subchannels
+//	if ( subChannels.size() == 0 )
 	{
 		CSectionsdClient::LinkageDescriptorList	linkedServices;
 		if ( g_Sectionsd->getLinkageDescriptorsUniqueKey( current_EPGid, linkedServices ) )
 		{
 			if ( linkedServices.size()> 1 )
 			{
+				long long searchkey;
 				are_subchannels = true;
+				if (current_sub_channel_id>0) 	searchkey = current_sub_channel_id;
+				else				searchkey = current_channel_id;
+
 				for (unsigned int i=0; i< linkedServices.size(); i++)
 				{
 					subChannels.push_back(CSubService(
@@ -312,7 +320,7 @@
 								      linkedServices[i].serviceId,
 								      linkedServices[i].transportStreamId,
 								      linkedServices[i].name));
-					if (subChannels[i].getChannelID() == current_channel_id)
+					if (subChannels[i].getChannelID() == searchkey )
 						selected_subchannel = i;
 				}
 				copySubChannelsToZapit();
@@ -497,7 +505,7 @@
 	current_sub_channel_id = subChannels[numSub].getChannelID();
 	g_Zapit->zapTo_subServiceID_NOWAIT( current_sub_channel_id );
 	// Houdini: to restart reading the private EPG when switching to a new option
-	g_Sectionsd->setServiceChanged( current_sub_channel_id , true );
+//	g_Sectionsd->setServiceChanged( current_sub_channel_id , true );
 
 	return subChannels[numSub].subservice_name;
 }
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

@ Houdini

Mal sehen ob man daraus was basteln kann... :D

Lass Dir ruhig Zeit wird schon werden. Ist jetzt schon SPITZENMÄßIG!!

Danke.


Gruß
____Paule
Hollo
Einsteiger
Einsteiger
Beiträge: 226
Registriert: Mittwoch 22. August 2001, 00:00

Beitrag von Hollo »

doppelt :wink:
Zuletzt geändert von Hollo am Sonntag 23. April 2006, 14:10, insgesamt 1-mal geändert.
Nokia 2xA bmon 1.0 Kabel Avia 500
Sagem 1xI bmon 1.3 Kabel Avia 600L
Hollo
Einsteiger
Einsteiger
Beiträge: 226
Registriert: Mittwoch 22. August 2001, 00:00

Beitrag von Hollo »

Houdini hat geschrieben:So, ich habe mal ein neuen neutrino/sectionsd diff zum Testen gemacht.
http://home.arcor.de/houdini/dbox/secti ... 1-52.patch

Changes:
- Arzkas Multi_EPG_Language Feature #define-ierbar
- Automatischer Update der Bildoptionen / bzw. des Current/Next EPGs (noch mit einigen Debugausgaben)
Wie gehts: Wenn der sectionsd "Schlafen" geht setzt er vorher ein Updatefilter auf die Current/Next Table des EPGs des aktuellen serviceids. Ändert der sich, wird sectionsd aufgeweckt, er liest den neuen C/N EPG und informiert Neutrino welcher sich die neuen Infos holt und die Liste der subchannels aktualisiert.
Es gibt da sicher noch Optimierungsmöglichkeiten, deswegen habe ich ein paar debugprints eingeschaltet.
Bezüglich CPU-Last ist mir noch nichts Negatives aufgefallen.

Houdini
muss dich echt loben, bei mir läuft das automatischer Update der Bildoptionen echt super, endlich nicht mehr das lästige hin-und herseppen um alle Feeds zubekommen
Nokia 2xA bmon 1.0 Kabel Avia 500
Sagem 1xI bmon 1.3 Kabel Avia 600L
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

(EDIT)
Sorry,
hab einen Feature Request aus dem Posting gemacht.
Wusste nicht obs der richtige Thread dafür ist.
Bye
PetB
(/EDIT)
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Houdini hat geschrieben:
Wenn Houdini fertig ist mit seinen Erweiterungen
was, wer wartet auf mich?
Schlage vor das ganze folgendemassen abzuarbeiten.

1. Festlegen/Implementieren wie mit Arzkas MultiLanguageEPG weiterverfahren wird bzw. auf welche Weise das Problem der "Lahmenden Bouquetübersicht" gelöst wird.

2. Konfigurationspunkte für sectionsd einchecken(max channels / events are old in / get Time over DVB/rdate..) (Krokis Patch)

3. EPG von $Irgendwo speichern/laden einchecken(Nirvana)

4. Schauen, was bis dahin aus meinem "PremiereBildOptionsUpdate" geworden ist

Houdini
Sind wir schon bei 3.? Falls ja:
http://s59.yousendit.com/d.aspx?id=2M7E ... YAGOYUAZ74

Gegen CVS von heute. Nur Konflikte aufgelöst und die zapittypes auf TSID-ONID-SID gesetzt. Sollte passen, aber bitte vor dem Einchecken testen.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

danke Nirvana
wird sofort getestet
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

so habs eingebaut
terminate called after throwing an instance of 'std::bad_alloc'
terminate called recursively
Aborted
wieder mal der fehler.
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Stört der ernsthaft? Geht die Box nicht trotzdem aus?
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

box bleibt ganz selten hängen beim runterfahren. danach kommt aber beim hochfahren kein ton, was mehr stört. also bleibt der beim runterfahren vor dem zuschalten des tones hängen.

desweiteren kann man nicht das mountverzeichnis vor dem abspeichern kurz anlaufen lassen ?? ich hab ein touch auf das mountverzeichnis + einen sleep von 4sec. in den code eingebaut, damit das geweckt wird, und die platte genug zeit hat zum hochfahren.

wenn ich wüste wie man das in c macht, würde ich bisserl code basteln. so hab ich mir mit vorrübergehend system("....") geholfen.
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Ah okay, sehr selten,

könntest du dann vielleicht mal die index.xml schicken bzw. dort nachsehen in welcher Datei er hängengeblieben ist und diese kaputte Datei bitte auch schicken. Vielleicht siehst du es ja auch am Datum, welche nicht geht.
Eventuell können wir dann ein Schema erkennen, was da nicht stimmt. Die Fehlermeldung ist nämlich nicht aussagekräftig.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ok wenn es wieder mal passiert. soll ich dir die ganzen epg daten senden ?
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

Wenig dramatisch ist mir nur folgendes aufgefallen:

Habe bisher die Uhrzeit in der start_neutrino mit rdate gesetzt.
Diese wurde sofort übernommen.

Steht nun aber "Zeit über DVB", wird die vorher gesetzte Zeit ignoriert und es muss auf einen Sender geschaltet werden, der eine Uhrzeit liefert.

Umgekehrt funktioniert der Fallback, wenn NTP eingestellt, der Server aber gerade nicht erreichbar ist.
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Houdini hat geschrieben:So, ich habe mal ein neuen neutrino/sectionsd diff zum Testen gemacht.
http://home.arcor.de/houdini/dbox/secti ... 1-52.patch

Changes:
- Arzkas Multi_EPG_Language Feature #define-ierbar
- Automatischer Update der Bildoptionen / bzw. des Current/Next EPGs (noch mit einigen Debugausgaben)
Wie gehts: Wenn der sectionsd "Schlafen" geht setzt er vorher ein Updatefilter auf die Current/Next Table des EPGs des aktuellen serviceids. Ändert der sich, wird sectionsd aufgeweckt, er liest den neuen C/N EPG und informiert Neutrino welcher sich die neuen Infos holt und die Liste der subchannels aktualisiert.
Es gibt da sicher noch Optimierungsmöglichkeiten, deswegen habe ich ein paar debugprints eingeschaltet.
Bezüglich CPU-Last ist mir noch nichts Negatives aufgefallen.

Houdini
Houdini hat geschrieben:@Paule
Hab da noch ein paar Verbesserungen gemacht, bin aber noch nicht so weit

Wenn du willst kannste mal das probieren:

Code: Alles auswählen

Index: remotecontrol.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/daemonc/remotecontrol.cpp,v
retrieving revision 1.100
diff -u -r1.100 remotecontrol.cpp
--- remotecontrol.cpp	28 Aug 2005 21:44:22 -0000	1.100
+++ remotecontrol.cpp	21 Apr 2006 20:21:25 -0000
@@ -168,10 +168,11 @@
 	{
 		CSectionsdClient::CurrentNextInfo* info_CN = (CSectionsdClient::CurrentNextInfo*) data;
 
-		if ( ( info_CN->current_uniqueKey >> 16) == current_channel_id )
+printf("Current/Next channelID: old(%llx) -> new(%llx)\n", current_channel_id, info_CN->current_uniqueKey >> 16);
+		if ( ((info_CN->current_uniqueKey >> 16) == current_channel_id ) || ((info_CN->current_uniqueKey >> 16) == current_sub_channel_id ) )
 		{
 			//CURRENT-EPG für den aktuellen Kanal bekommen!;
-
+printf("Current/Next EPGID: old(%llx) -> new(%llx)\n", current_EPGid, info_CN->current_uniqueKey);
 			if ( info_CN->current_uniqueKey != current_EPGid )
 			{
 			    if ( current_EPGid != 0 )
@@ -190,8 +191,10 @@
 				if ( has_unresolved_ctags )
 					processAPIDnames();
 
-				if ( info_CN->flags & CSectionsdClient::epgflags::current_has_linkagedescriptors )
+				if ( info_CN->flags & CSectionsdClient::epgflags::current_has_linkagedescriptors ){
+					subChannels.clear();
 					getSubChannels();
+				}
 
 				if ( needs_nvods )
 					getNVODs();
@@ -297,14 +300,19 @@
 
 void CRemoteControl::getSubChannels()
 {
-	if ( subChannels.size() == 0 )
+//HK check for updates of the subchannels
+//	if ( subChannels.size() == 0 )
 	{
 		CSectionsdClient::LinkageDescriptorList	linkedServices;
 		if ( g_Sectionsd->getLinkageDescriptorsUniqueKey( current_EPGid, linkedServices ) )
 		{
 			if ( linkedServices.size()> 1 )
 			{
+				long long searchkey;
 				are_subchannels = true;
+				if (current_sub_channel_id>0) 	searchkey = current_sub_channel_id;
+				else				searchkey = current_channel_id;
+
 				for (unsigned int i=0; i< linkedServices.size(); i++)
 				{
 					subChannels.push_back(CSubService(
@@ -312,7 +320,7 @@
 								      linkedServices[i].serviceId,
 								      linkedServices[i].transportStreamId,
 								      linkedServices[i].name));
-					if (subChannels[i].getChannelID() == current_channel_id)
+					if (subChannels[i].getChannelID() == searchkey )
 						selected_subchannel = i;
 				}
 				copySubChannelsToZapit();
@@ -497,7 +505,7 @@
 	current_sub_channel_id = subChannels[numSub].getChannelID();
 	g_Zapit->zapTo_subServiceID_NOWAIT( current_sub_channel_id );
 	// Houdini: to restart reading the private EPG when switching to a new option
-	g_Sectionsd->setServiceChanged( current_sub_channel_id , true );
+//	g_Sectionsd->setServiceChanged( current_sub_channel_id , true );
 
 	return subChannels[numSub].subservice_name;
 }
@Houdini
Ich habe den Bildregie Patch mittlerweile auch ein Zeitlang integriert und muss sagen das dieser wirklich super funktioniert.
Kein lästiges hin/her Schalten mehr bei Direkt, danke!

Warum checkst du den Patch eigentlich nicht ein?

Was mir noch einfällt, hat aber nix mit dem Patch zu tun.
Bei den Direktfilme fehlt manchmal noch die Filminfo.
Da kommt ab und zu noch kein EPG gefunden.


Offtopic:
http://home.arcor.de/houdini/dbox/tpscan/

Dieses Feature wäre es doch wirklich Wert einzuchecken, zusätzlich lindert es auch noch die Kanalsuchzapitabstürze.
Was hälst du davon?
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

@Nico Bez. OFFTOPIC

Ich weiss halt nicht wie sich die Geschicht bei Kabelboxen verhält?