X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/9b1c4b296ae2f83c62cb83c5babfc35cbc3d52f7..ad88a7130bd75fa1f932d4ae45a8ebee78df4fc3:/lib/dvb/db.cpp diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 2d609bdc..0b1d4b54 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -114,6 +114,7 @@ RESULT eBouquet::setListName(const std::string &name) } eDVBService::eDVBService() + :m_flags(0) { } @@ -244,8 +245,11 @@ void eDVBDB::reloadServicelist() struct stat s; if ( !stat("lamedb", &s) ) { - rename("lamedb", CONFIGDIR"/enigma2/lamedb" ); - reloadServicelist(); + if ( !stat(CONFIGDIR"/enigma2", &s) ) + { + rename("lamedb", CONFIGDIR"/enigma2/lamedb" ); + reloadServicelist(); + } } return; } @@ -314,18 +318,20 @@ void eDVBDB::reloadServicelist() ter.guard_interval = guard_interval; ter.hierarchy = hierarchy; ter.inversion = inversion; - feparm->setDVBT(ter); } else if (line[1]=='c') { eDVBFrontendParametersCable cab; - int frequency, symbol_rate, inversion=0, modulation=3; - sscanf(line+2, "%d:%d:%d:%d", &frequency, &symbol_rate, &inversion, &modulation); + int frequency, symbol_rate, + inversion=eDVBFrontendParametersCable::Inversion::Unknown, + modulation=eDVBFrontendParametersCable::Modulation::Auto, + fec_inner=eDVBFrontendParametersCable::FEC::fAuto; + sscanf(line+2, "%d:%d:%d:%d:%d", &frequency, &symbol_rate, &inversion, &modulation, &fec_inner); cab.frequency = frequency; + cab.fec_inner = fec_inner; + cab.inversion = inversion; cab.symbol_rate = symbol_rate; cab.modulation = modulation; - cab.fec_inner = 6; - cab.inversion = inversion; feparm->setDVBC(cab); } } @@ -455,8 +461,8 @@ void eDVBDB::saveServicelist() } if (!ch.m_frontendParameters->getDVBC(cab)) { - fprintf(f, "\tc %d:%d:%d:%d\n", - cab.frequency, cab.symbol_rate, cab.inversion, cab.modulation); + fprintf(f, "\tc %d:%d:%d:%d:%d\n", + cab.frequency, cab.symbol_rate, cab.inversion, cab.modulation, cab.fec_inner); } fprintf(f, "/\n"); channels++; @@ -474,6 +480,7 @@ void eDVBDB::saveServicelist() 0); fprintf(f, "%s\n", i->second->m_service_name.c_str()); + fprintf(f, "p:%s", i->second->m_provider_name.c_str()); // write cached pids @@ -486,6 +493,9 @@ void eDVBDB::saveServicelist() ca != i->second->m_ca.end(); ++ca) fprintf(f, ",C:%04x", *ca); + if (i->second->m_flags) + fprintf(f, ",f:%x", i->second->m_flags); + fprintf(f, "\n"); services++; } @@ -758,6 +768,22 @@ RESULT eDVBDB::startQuery(ePtr &query, eDVBChannelQuery *q return 0; } +eServiceReference eDVBDB::searchReference(int tsid, int onid, int sid) +{ + eServiceID Sid(sid); + eTransportStreamID Tsid(tsid); + eOriginalNetworkID Onid(onid); + for (std::map >::iterator sit(m_services.begin()); + sit != m_services.end(); ++sit) + { + if (sit->first.getTransportStreamID() == Tsid && + sit->first.getOriginalNetworkID() == Onid && + sit->first.getServiceID() == Sid) + return sit->first; + } + return eServiceReference(); +} + DEFINE_REF(eDVBDBQueryBase); eDVBDBQueryBase::eDVBDBQueryBase(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query)