sectionsd aktualisiert Kanalliste
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
http://s11.yousendit.com/d.aspx?id=16NR ... BRYHQM3ZK4
Tja, dann muss ich eben auf dieses Feature verzichten. Also ist das Reload auskommentiert. Bitte testen: im /tmp wird currentservices.xml erstellt und beim Shutdown mit services.xml gemerged. Diesmal sind mehr debug-Ausgaben drin.
Würde mich freuen, wenn diese Version es schon ins CVS schaffen könnte.
Tja, dann muss ich eben auf dieses Feature verzichten. Also ist das Reload auskommentiert. Bitte testen: im /tmp wird currentservices.xml erstellt und beim Shutdown mit services.xml gemerged. Diesmal sind mehr debug-Ausgaben drin.
Würde mich freuen, wenn diese Version es schon ins CVS schaffen könnte.
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Ich bin geduldig.
Ist mehr eine Maßnahme der distributiven Datensicherung.
Noch vergessen:
Ist mehr eine Maßnahme der distributiven Datensicherung.
Noch vergessen:
Code: Alles auswählen
--- /usr/local/src/tuxbox-cvs/apps/tuxbox/neutrino/configure.ac 2005-08-31 22:27:49.000000000 +0200
+++ /home/sebastian/tuxbox-cvs/apps/tuxbox/neutrino/configure.ac 2005-11-10 23:04:56.000000000 +0100
@@ -44,6 +44,12 @@
[ --enable-restore-prev-mode enable return from graphics mode],
[AC_DEFINE(RETURN_FROM_GRAPHICS_MODE,1,[enable return from graphics mode])])
+AC_ARG_ENABLE(use-libxml2,
+ [ --enable-use-libxml2 use libxml2 instead of libxmltree],
+ [AC_DEFINE(USE_LIBXML,1,[use libxml2 instead of libxmltree])
+ TUXBOX_APPS_LIB_PKGCONFIG(XML,libxml-2.0)],
+ [TUXBOX_APPS_LIB_PKGCONFIG(XML,tuxbox-xmltree)])
+
AC_OUTPUT([
Makefile
lib/Makefile
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
Code: Alles auswählen
RCS file: /cvs/tuxbox/apps/dvb/zapit/include/zapit/settings.h,v
retrieving revision 1.14
diff -u -r1.14 settings.h
--- settings.h 19 Jun 2005 14:28:22 -0000 1.14
+++ settings.h 14 Nov 2005 20:29:15 -0000
@@ -38,6 +38,8 @@
#define SERVICES_XML ZAPITCONFIGDIR "/services.xml"
#define MYSERVICES_XML ZAPITCONFIGDIR "/myservices.xml"
#define ANTISERVICES_XML ZAPITCONFIGDIR "/antiservices.xml"
+#define CURRENTSERVICES_XML "/tmp/currentservices.xml"
+#define CURRENTSERVICES_TMP "/tmp/currentservices.tmp"
#define SERVICES_TMP "/tmp/services.tmp"
#define BOUQUETS_XML ZAPITCONFIGDIR "/bouquets.xml"
#define BOUQUETS_TMP "/tmp/bouquets.tmp"
Edit:
Code: Alles auswählen
rcinput.cpp:868: error: `EVT_SERVICES_UPD' is not a member of `NeutrinoMessages'
Gruß
mogway
Zuletzt geändert von mogway am Montag 14. November 2005, 21:54, insgesamt 3-mal geändert.
-
- Einsteiger
- Beiträge: 191
- Registriert: Dienstag 30. Dezember 2003, 01:49
Ein Workaround für Channel-Reload.
in zapit.cpp
in zapit.cpp
case CZapitMessages::CMD_REINIT_CHANNELS:
{
int c = ((currentMode & RADIO_MODE) ? bouquetManager->radioChannelsBegin() : bouquetManager->tvChannelsBegin()).getLowestChannelNumberWithChannelID(channel->getChannelID());
CZapitMessages::responseCmd response;
prepare_channels(frontend->getInfo()->type, diseqcType);
response.cmd = CZapitMessages::CMD_READY;
CBasicServer::send_data(connfd, &response, sizeof(response));
eventServer->sendEvent(CZapitClient::EVT_BOUQUETS_CHANGED, CEventServer::INITID_ZAPIT);
if (c >= 0)
zapTo(c);
break;
}
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
@mogway
Wo habe ich bloß meinen Kopf? Ich habe echt schon eine Liste gemacht, mit den gepatchten Dateien. Neutrinomessages steht nicht drauf...
@Metallica
Prima, gleich mal testen ob es auch für mein Reload läuft.
Wo habe ich bloß meinen Kopf? Ich habe echt schon eine Liste gemacht, mit den gepatchten Dateien. Neutrinomessages steht nicht drauf...
Code: Alles auswählen
--- /usr/local/src/tuxbox-cvs/apps/tuxbox/neutrino/src/neutrinoMessages.h 2005-03-28 16:14:21.000000000 +0200
+++ /home/sebastian/tuxbox-cvs/apps/tuxbox/neutrino/src/neutrinoMessages.h 2005-11-12 14:40:07.000000000 +0100
@@ -133,7 +133,10 @@
EVT_ZAP_GOTPIDS = CRCInput::RC_WithData + 21, /* data: (t_channel_id *) */
/* neutrino */
- EVT_RECORDING_ENDED = CRCInput::RC_WithData + 22
+ EVT_RECORDING_ENDED = CRCInput::RC_WithData + 22,
+
+ /* sectionsd */
+ EVT_SERVICES_UPD = CRCInput::RC_WithData + 23 /* data: (t_tranponder_id *) */
};
enum
{
Prima, gleich mal testen ob es auch für mein Reload läuft.
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Ach und die currentservices.xml liegen besser im /tmp
Code: Alles auswählen
--- /usr/local/src/tuxbox-cvs/apps/dvb/zapit/include/zapit/settings.h 2005-06-19 16:28:22.000000000 +0200
+++ /home/sebastian/tuxbox-cvs/apps/dvb/zapit/include/zapit/settings.h 2005-11-09 14:07:53.000000000 +0100
@@ -26,32 +26,34 @@
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include "config.h"
#else
-#define CONFIGDIR "/var/tuxbox/config"
+#define CONFIGDIR "/var/tuxbox/config"
#endif
-#define ZAPITCONFIGDIR CONFIGDIR "/zapit"
+#define ZAPITCONFIGDIR CONFIGDIR "/zapit"
-#define CONFIGFILE ZAPITCONFIGDIR "/zapit.conf"
-#define MOTORCONFIGFILE ZAPITCONFIGDIR "/motor.conf"
-#define SERVICES_XML ZAPITCONFIGDIR "/services.xml"
-#define MYSERVICES_XML ZAPITCONFIGDIR "/myservices.xml"
-#define ANTISERVICES_XML ZAPITCONFIGDIR "/antiservices.xml"
-#define SERVICES_TMP "/tmp/services.tmp"
-#define BOUQUETS_XML ZAPITCONFIGDIR "/bouquets.xml"
-#define BOUQUETS_TMP "/tmp/bouquets.tmp"
-
-#define CABLES_XML DATADIR "/cables.xml"
-#define SATELLITES_XML DATADIR "/satellites.xml"
-#define TERRESTRIAL_XML DATADIR "/terrestrial.xml"
-
-#define AUDIO_DEVICE "/dev/dvb/adapter0/audio0"
-#define DEMUX_DEVICE "/dev/dvb/adapter0/demux0"
-#define FRONTEND_DEVICE "/dev/dvb/adapter0/frontend0"
-#define VIDEO_DEVICE "/dev/dvb/adapter0/video0"
+#define CONFIGFILE ZAPITCONFIGDIR "/zapit.conf"
+#define MOTORCONFIGFILE ZAPITCONFIGDIR "/motor.conf"
+#define SERVICES_XML ZAPITCONFIGDIR "/services.xml"
+#define MYSERVICES_XML ZAPITCONFIGDIR "/myservices.xml"
+#define ANTISERVICES_XML ZAPITCONFIGDIR "/antiservices.xml"
+#define SERVICES_TMP "/tmp/services.tmp"
+#define BOUQUETS_XML ZAPITCONFIGDIR "/bouquets.xml"
+#define BOUQUETS_TMP "/tmp/bouquets.tmp"
+#define CURRENTSERVICES_XML "/tmp/currentservices.xml"
+#define CURRENTSERVICES_TMP "/tmp/currentservices.tmp"
+
+#define CABLES_XML DATADIR "/cables.xml"
+#define SATELLITES_XML DATADIR "/satellites.xml"
+#define TERRESTRIAL_XML DATADIR "/terrestrial.xml"
+
+#define AUDIO_DEVICE "/dev/dvb/adapter0/audio0"
+#define DEMUX_DEVICE "/dev/dvb/adapter0/demux0"
+#define FRONTEND_DEVICE "/dev/dvb/adapter0/frontend0"
+#define VIDEO_DEVICE "/dev/dvb/adapter0/video0"
-#define CAMD_UDS_NAME "/tmp/camd.socket"
+#define CAMD_UDS_NAME "/tmp/camd.socket"
#endif /* __zapit__settings_h__ */
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Mist zu langsam...Ein Workaround für Channel-Reload.
hier ist mein Fix.
Code: Alles auswählen
--- apps/tuxbox/neutrino-051109/src/neutrino.cpp 2005-10-09 21:02:10.000000000 +0200
+++ apps/tuxbox/neutrino/src/neutrino.cpp 2005-11-14 23:12:41.000000000 +0100
@@ -3736,6 +3736,9 @@
if((old_id == 0) || (!(channelList->adjustToChannelID(old_id))))
channelList->zapTo(0);
+ // Houdini: after channels have been reloaded, g_Zapit's actual channel is the initial channel from zapit.conf
+ // so zap to old channel (what is when in record mode?)
+ g_Zapit->zapTo_serviceID_NOWAIT(old_id);
return messages_return::handled;
}
else if (msg == NeutrinoMessages::RECORD_START)
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
Irgendwie scheinen sich bei der Aktion remove die Einträge in der servicex.xml zu vermehren.
Beim neu laden der Kanalliste scheint zapit die doppelten service_id's nicht zu mögen und schmiert ab. Log hab ich grad nicht, sorry
Das Phänomen habe ich bei folgenden Astra Sendern beobachten können:
Gruß
mogway
Code: Alles auswählen
<channel action="remove" service_id="314e" name="T-Systems Kanal 2" service_type="01"/>
Code: Alles auswählen
<channel service_id="314e" name="T-Systems Kanal 2" service_type="01"/>
<channel service_id="3143" name="Wartezimmer TV" service_type="0c"/>
<channel service_id="314e" name="T-Systems Kanal 2" service_type="01"/>
Das Phänomen habe ich bei folgenden Astra Sendern beobachten können:
Code: Alles auswählen
<transponder id="0459" onid="0001" frequency="12633250" inversion="2" symbol_rate="22000000" fec_inner="5" polarization="0">
<channel service_id="3143" name="Wartezimmer TV" service_type="0c"/>
<channel service_id="314e" name="T-Systems Kanal 2" service_type="01"/>
</transponder>
mogway
Zuletzt geändert von mogway am Dienstag 15. November 2005, 12:18, insgesamt 1-mal geändert.
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
kann es sein, das die bouquets.cpp auch was verändern muss ?
(cd .libs && rm -f libzapsi.la && ln -s ../libzapsi.la libzapsi.la)
make[4]: Leaving directory `/home/image/tuxbox-cvs/apps/dvb/zapit/src/zapsi'
make[4]: Entering directory `/home/image/tuxbox-cvs/apps/dvb/zapit/src'
if powerpc-tuxbox-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I/home/image/dbox2/cdkroot/include/tuxbox -I/home/image/dbox2/cdkroot/include/tuxbox/connection -I/home/image/dbox2/cdkroot/include/tuxbox/xmltree -DSKIP_CA_STATUS -I/home/image/tuxbox-cvs/driver/include -I/home/image/tuxbox-cvs/driver/dvb/include -I/home/image/dbox2/cdkroot/include/tuxbox -Werror -Wall -mcpu=823 -mmultiple -mstring -meabi -pipe -Os -fno-rtti -fno-exceptions -MT bouquets.o -MD -MP -MF ".deps/bouquets.Tpo" -c -o bouquets.o bouquets.cpp; \
then mv -f ".deps/bouquets.Tpo" ".deps/bouquets.Po"; else rm -f ".deps/bouquets.Tpo"; exit 1; fi
../include/zapit/getservices.h: In member function `void
CBouquetManager::saveBouquets(CZapitClient::bouquetMode, const char*)':
../include/zapit/getservices.h:46: error: too few arguments to function `int
LoadServices(fe_type, diseqc_t, bool)'
bouquets.cpp:288: error: at this point in file
make[4]: *** [bouquets.o] Fehler 1
-
- Einsteiger
- Beiträge: 191
- Registriert: Dienstag 30. Dezember 2003, 01:49
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
also Metallica. wenn dus es nicht weißt.
damit hat er die zapit weitergebaut.
neutrino werd ich gleich bauen. wenn ihr nix schlechtes lest, hats gefunzt
Code: Alles auswählen
LoadServices(frontend->getInfo()->type, frontend->getDiseqcType(),false);
neutrino werd ich gleich bauen. wenn ihr nix schlechtes lest, hats gefunzt
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
http://s62.yousendit.com/d.aspx?id=07FG ... CBONXQLBUP
Aber ich bin ungeduldig, ja?
- alle(?) patches
- mogway's bug gefixed
- Houdini's fix integriert (Ich habe keinen Plan, welcher Fix da besser ist...)
- in zapit den Aufruf des automatischen Kanallisten Reload wieder einkommentiert
Mit der letzten Sache bin ich noch nicht ganz glücklich. Da sollten auch nur die Unterschiede behandelt werden, statt eines kompletten Reloads. Aber über die Bouquets rede ich wie gesagt später.
Aber ich bin ungeduldig, ja?
- alle(?) patches
- mogway's bug gefixed
- Houdini's fix integriert (Ich habe keinen Plan, welcher Fix da besser ist...)
- in zapit den Aufruf des automatischen Kanallisten Reload wieder einkommentiert
Mit der letzten Sache bin ich noch nicht ganz glücklich. Da sollten auch nur die Unterschiede behandelt werden, statt eines kompletten Reloads. Aber über die Bouquets rede ich wie gesagt später.
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Ja,
Aber da ist noch was. Ich hatte das Reload nach jedem kompletten SDT mit Änderungen veranlasst. Das geht auch, aber ist ineffizient (zu viele Meldungen). Deshalb wartet der sectionsd nun bis der sdt-thread wieder schlafen geht und sagt erst dann, dass neue Services da sind.
Und weil ich schon mit NIT angefangen habe musst du für diese Änderung auch wieder das komplette sectionsd-Verzeichnis machen. Dazu neutrinomessges.h und rcinput.cpp.
Mit anderen Worten. Alles neu. Sorry.
Wartet mal, ich mach mal vom sectionsd Verzeichnis ein diff. Vielleicht nützt das was.
Code: Alles auswählen
--- /LaufwerkS/Sourcen/C/backup3/tuxbox-cvs/apps/dvb/zapit/src/zapit.cpp 2005-11-14 16:52:52.000000000 +0100
+++ /home/sebastian/tuxbox-cvs/apps/dvb/zapit/src/zapit.cpp 2005-11-15 14:25:20.000000000 +0100
@@ -299,6 +299,23 @@
}
}
+xmlNodePtr getNextNode(xmlNodePtr node, t_service_id sid)
+{
+ xmlNodePtr NextNode = NULL;
+ while (xmlGetNextOccurence(node, "channel") != NULL) {
+ if (xmlGetNumericAttribute(node, "service_id", 16) > sid) {
+ if (NextNode == NULL)
+ NextNode = node;
+ else {
+ if (xmlGetNumericAttribute(node, "service_id", 16) < xmlGetNumericAttribute(NextNode, "service_id", 16))
+ NextNode = node;
+ }
+ }
+ node = node->xmlNextNode;
+ }
+ return NextNode;
+}
+
void merge_transponder(FILE * tmp, xmlNodePtr transponder, xmlNodePtr current_transponder, const bool is_sat)
{
std::string name;
@@ -309,8 +326,8 @@
write_transponder_node(tmp, transponder, is_sat);
- xmlNodePtr node = transponder->xmlChildrenNode;
- xmlNodePtr current_node = current_transponder->xmlChildrenNode;
+ xmlNodePtr node = getNextNode(transponder->xmlChildrenNode, 0);
+ xmlNodePtr current_node = getNextNode(current_transponder->xmlChildrenNode, 0);
//as long one of the pointers has got services
while ( (xmlGetNextOccurence(node, "channel") != NULL) || (xmlGetNextOccurence(current_node, "channel") != NULL) ) {
@@ -327,7 +344,7 @@
remove = true;
else {
take_from_current = true;
- node = node->xmlNextNode;
+ node = getNextNode(transponder->xmlChildrenNode, xmlGetNumericAttribute(node, "service_id", 16));
}
}
//Add service
@@ -351,7 +368,7 @@
xmlGetNumericAttribute(current_node, "service_id", 16),
UTF8_to_UTF8XML(name.c_str()).c_str(),
xmlGetNumericAttribute(current_node, "service_type", 16));
- current_node = current_node->xmlNextNode;
+ current_node = getNextNode(current_transponder->xmlChildrenNode, xmlGetNumericAttribute(current_node, "service_id", 16));
} else {
name = xmlGetAttribute(node, "name");
fprintf(tmp,
@@ -359,12 +376,12 @@
xmlGetNumericAttribute(node, "service_id", 16),
UTF8_to_UTF8XML(name.c_str()).c_str(),
xmlGetNumericAttribute(node, "service_type", 16));
- node = node->xmlNextNode;
+ node = getNextNode(transponder->xmlChildrenNode, xmlGetNumericAttribute(node, "service_id", 16));
}
}
else {
- current_node = current_node->xmlNextNode;
- node = node->xmlNextNode;
+ current_node = getNextNode(current_transponder->xmlChildrenNode, xmlGetNumericAttribute(current_node, "service_id", 16));
+ node = getNextNode(transponder->xmlChildrenNode, xmlGetNumericAttribute(node, "service_id", 16));
}
}
}
@@ -1078,13 +1095,11 @@
case CZapitMessages::CMD_RELOAD_CURRENTSERVICES:
{
CZapitMessages::responseCmd response;
- /*
transponders.clear();
bouquetManager->clearAll();
allchans.clear(); // <- this invalidates all bouquets, too!
LoadServices(frontend->getInfo()->type, diseqcType, false); //true for only loading currentservices...
bouquetManager->loadBouquets();
- */
response.cmd = CZapitMessages::CMD_READY;
CBasicServer::send_data(connfd, &response, sizeof(response));
eventServer->sendEvent(CZapitClient::EVT_BOUQUETS_CHANGED, CEventServer::INITID_ZAPIT);
Und weil ich schon mit NIT angefangen habe musst du für diese Änderung auch wieder das komplette sectionsd-Verzeichnis machen. Dazu neutrinomessges.h und rcinput.cpp.
Mit anderen Worten. Alles neu. Sorry.
Wartet mal, ich mach mal vom sectionsd Verzeichnis ein diff. Vielleicht nützt das was.
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Ich hoffe mal, das sind jetzt alle Änderungen gegenüber der letzten Version.
http://s26.yousendit.com/d.aspx?id=2HH1 ... HDR9V7OI7V
http://s26.yousendit.com/d.aspx?id=2HH1 ... HDR9V7OI7V
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
Code: Alles auswählen
sectionsd.cpp: In function `void* nitThread(void*)':
sectionsd.cpp:3515: error: `nit' undeclared (first use this function)
sectionsd.cpp:3515: error: (Each undeclared identifier is reported only once for each function it appears in.)
Habs erst einmal auskommentiert.
Gruß
mogway
Gruss
mogway
mogway
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
-
- Wissender
- Beiträge: 1839
- Registriert: Sonntag 17. August 2003, 01:39
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12