X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/865b494130c35c6bda653b196fdbc61890ea76b5..0feaed7d905b121804110148aa33e1ff479088e3:/lib/dvb/scan.cpp diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp index 7e603314..2be8a66d 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -1,16 +1,17 @@ #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include #include #define SCAN_eDebug(x...) eDebug(x) @@ -68,11 +69,12 @@ void eDVBScan::stateChange(iDVBChannel *ch) { startFilter(); m_channel_state = state; - } else if (state == iDVBChannel::state_unavailable) + } else if (state == iDVBChannel::state_failed) { m_ch_unavailable.push_back(m_ch_current); nextChannel(); } + /* unavailable will timeout, anyway. */ } RESULT eDVBScan::nextChannel() @@ -119,18 +121,18 @@ RESULT eDVBScan::startFilter() { assert(m_demux); - m_SDT = new eTable(); + m_SDT = new eTable(); if (m_SDT->start(m_demux, eDVBSDTSpec())) return -1; CONNECT(m_SDT->tableReady, eDVBScan::SDTready); m_NIT = 0; - m_NIT = new eTable(); + m_NIT = new eTable(); if (m_NIT->start(m_demux, eDVBNITSpec())) return -1; CONNECT(m_NIT->tableReady, eDVBScan::NITready); - m_BAT = new eTable(); + m_BAT = new eTable(); if (m_BAT->start(m_demux, eDVBBATSpec())) return -1; CONNECT(m_BAT->tableReady, eDVBScan::BATready); @@ -222,7 +224,7 @@ void eDVBScan::channelDone() hash); SCAN_eDebug("SDT: "); - ServiceDescriptionTableConstIterator i; + std::vector::const_iterator i; for (i = m_SDT->getSections().begin(); i != m_SDT->getSections().end(); ++i) processSDT(dvbnamespace, **i); m_ready &= ~validSDT; @@ -231,10 +233,10 @@ void eDVBScan::channelDone() if (m_ready & validNIT) { SCAN_eDebug("dumping NIT"); - NetworkInformationTableConstIterator i; + std::vector::const_iterator i; for (i = m_NIT->getSections().begin(); i != m_NIT->getSections().end(); ++i) { - const TransportStreamInfoVector &tsinfovec = *(*i)->getTsInfo(); + const TransportStreamInfoList &tsinfovec = *(*i)->getTsInfo(); for (TransportStreamInfoConstIterator tsinfo(tsinfovec.begin()); tsinfo != tsinfovec.end(); ++tsinfo) @@ -353,9 +355,9 @@ void eDVBScan::insertInto(iDVBChannelList *db) } } -RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescriptionTable &sdt) +RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescriptionSection &sdt) { - const ServiceDescriptionVector &services = *sdt.getDescriptions(); + const ServiceDescriptionList &services = *sdt.getDescriptions(); SCAN_eDebug("ONID: %04x", sdt.getOriginalNetworkId()); eDVBChannelID chid(dvbnamespace, sdt.getTransportStreamId(), sdt.getOriginalNetworkId()); @@ -386,17 +388,17 @@ RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescription case SERVICE_DESCRIPTOR: { ServiceDescriptor &d = (ServiceDescriptor&)**desc; - SCAN_eDebug("name '%s', provider_name '%s'", d.getServiceName().c_str(), d.getServiceProviderName().c_str()); - service->m_service_name = d.getServiceName(); - service->m_provider_name = d.getServiceProviderName(); + service->m_service_name = convertDVBUTF8(d.getServiceName()); + service->m_provider_name = convertDVBUTF8(d.getServiceProviderName()); + SCAN_eDebug("name '%s', provider_name '%s'", service->m_service_name.c_str(), service->m_provider_name.c_str()); break; } case CA_IDENTIFIER_DESCRIPTOR: { CaIdentifierDescriptor &d = (CaIdentifierDescriptor&)**desc; - const CaSystemIdVector &caids = *d.getCaSystemIds(); + const CaSystemIdList &caids = *d.getCaSystemIds(); SCAN_eDebugNoNewLine("CA "); - for (CaSystemIdVector::const_iterator i(caids.begin()); i != caids.end(); ++i) + for (CaSystemIdList::const_iterator i(caids.begin()); i != caids.end(); ++i) { SCAN_eDebugNoNewLine("%04x ", *i); service->m_ca.insert(*i);