X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/44f52e5a73ba45c4a2ba31a91db4239de91ec60a..6f50f87ade33d60f05939a38de1ae0f4117b414b:/lib/dvb/db.cpp diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index e1b19175..9035b8f0 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -327,8 +327,9 @@ void eDVBDB::loadServicelist(const char *file) int frequency, symbol_rate, polarisation, fec, orbital_position, inversion, system=eDVBFrontendParametersSatellite::System::DVB_S, modulation=eDVBFrontendParametersSatellite::Modulation::QPSK, - rolloff=eDVBFrontendParametersSatellite::RollOff::alpha_auto; - sscanf(line+3, "%d:%d:%d:%d:%d:%d:%d:%d:%d", &frequency, &symbol_rate, &polarisation, &fec, &orbital_position, &inversion, &system, &modulation, &rolloff); + rolloff=eDVBFrontendParametersSatellite::RollOff::alpha_0_35, + pilot=eDVBFrontendParametersSatellite::Pilot::Unknown; + sscanf(line+3, "%d:%d:%d:%d:%d:%d:%d:%d:%d:%d", &frequency, &symbol_rate, &polarisation, &fec, &orbital_position, &inversion, &system, &modulation, &rolloff, &pilot); sat.frequency = frequency; sat.symbol_rate = symbol_rate; sat.polarisation = polarisation; @@ -338,7 +339,8 @@ void eDVBDB::loadServicelist(const char *file) sat.inversion = inversion; sat.system = system; sat.modulation = modulation; - sat.roll_off = rolloff; + sat.rolloff = rolloff; + sat.pilot = pilot; feparm->setDVBS(sat); } else if (line[1]=='t') { @@ -460,10 +462,10 @@ void eDVBDB::loadServicelist(const char *file) fclose(f); } -void eDVBDB::saveServicelist() +void eDVBDB::saveServicelist(const char *file) { eDebug("---- saving lame channel db"); - FILE *f=fopen(CONFIGDIR"/enigma2/lamedb", "w"); + FILE *f=fopen(file, "w"); int channels=0, services=0; if (!f) eFatal("couldn't save lame channel db!"); @@ -484,14 +486,18 @@ void eDVBDB::saveServicelist() { if (sat.system == eDVBFrontendParametersSatellite::System::DVB_S2) { - fprintf(f, "\ts %d:%d:%d:%d:%d:%d:%d:%d:%d\n", + fprintf(f, "\ts %d:%d:%d:%d:%d:%d:%d:%d:%d", sat.frequency, sat.symbol_rate, sat.polarisation, sat.fec, sat.orbital_position > 1800 ? sat.orbital_position - 3600 : sat.orbital_position, sat.inversion, sat.system, sat.modulation, - sat.roll_off); + sat.rolloff); + if (sat.modulation == eDVBFrontendParametersSatellite::Modulation::M8PSK) + fprintf(f, ":%d\n", sat.pilot); + else + fprintf(f, "\n"); } else { @@ -557,6 +563,11 @@ void eDVBDB::saveServicelist() fclose(f); } +void eDVBDB::saveServicelist() +{ + saveServicelist(CONFIGDIR"/enigma2/lamedb"); +} + void eDVBDB::loadBouquet(const char *path) { std::string bouquet_name = path; @@ -766,7 +777,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje return Py_False; } int tmp, *dest = NULL, - modulation, system, freq, sr, pol, fec; + modulation, system, freq, sr, pol, fec, inv, pilot, rolloff; char *end_ptr; const Attribute *at; std::string name; @@ -828,6 +839,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje sr = 0; pol = -1; fec = 0; // AUTO default + inv = 2; // AUTO default + pilot = 2; // AUTO default + rolloff = 0; // alpha 0.35 for (AttributeConstIterator it(tp_attributes.begin()); it != end; ++it) { // eDebug("\t\tattr: %s", at->name().c_str()); @@ -839,6 +853,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje else if (name == "symbol_rate") dest = &sr; else if (name == "polarization") dest = &pol; else if (name == "fec_inner") dest = &fec; + else if (name == "inversion") dest = &inv; + else if (name == "rolloff") dest = &rolloff; + else if (name == "pilot") dest = &pilot; if (dest) { tmp = strtol(at->value().c_str(), &end_ptr, 10); @@ -848,7 +865,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje } if (freq && sr && pol != -1) { - tuple = PyTuple_New(7); + tuple = PyTuple_New(10); PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(0)); PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(freq)); PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(sr)); @@ -856,6 +873,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje PyTuple_SET_ITEM(tuple, 4, PyInt_FromLong(fec)); PyTuple_SET_ITEM(tuple, 5, PyInt_FromLong(system)); PyTuple_SET_ITEM(tuple, 6, PyInt_FromLong(modulation)); + PyTuple_SET_ITEM(tuple, 7, PyInt_FromLong(inv)); + PyTuple_SET_ITEM(tuple, 8, PyInt_FromLong(rolloff)); + PyTuple_SET_ITEM(tuple, 9, PyInt_FromLong(pilot)); PyList_Append(tplist, tuple); Py_DECREF(tuple); } @@ -1167,9 +1187,9 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) } if ( remove && chid.dvbnamespace != eNs ) { - if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == 0xFFFF0000) + if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == (int)0xFFFF0000) ; - else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == 0xEEEE0000) + else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == (int)0xEEEE0000) ; else if ( chid.dvbnamespace != ch.dvbnamespace ) remove=false; @@ -1261,9 +1281,9 @@ RESULT eDVBDB::removeFlags(unsigned int flagmask, eDVBChannelID chid, unsigned i } if ( remove && chid.dvbnamespace != eNs ) { - if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == 0xFFFF0000) + if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == (int)0xFFFF0000) ; - else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == 0xEEEE0000) + else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == (int)0xEEEE0000) ; else if ( chid.dvbnamespace != ch.dvbnamespace ) remove=false;