X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/46f910a175efeaf9558cdc4b59e826d0a5f5f34d..7cdca2a2cfb44ad34a3b36fb589f02b861c411c3:/lib/dvb/scan.cpp diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp index a57fd53b..20bb9159 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -84,7 +84,7 @@ RESULT eDVBScan::nextChannel() { ePtr fe; - m_SDT = 0; m_BAT = 0; m_NIT = 0; + m_SDT = 0; m_PAT = 0; m_BAT = 0; m_NIT = 0; m_ready = 0; @@ -123,13 +123,10 @@ RESULT eDVBScan::nextChannel() m_chid_current = eDVBChannelID(); m_channel_state = iDVBChannel::state_idle; + if (fe->tune(*m_ch_current)) - { return nextChannel(); - m_event(evtFail); - return -EINVAL; - } - + m_event(evtUpdate); return 0; } @@ -444,12 +441,22 @@ void eDVBScan::channelDone() ePtr feparm = new eDVBFrontendParameters; eDVBFrontendParametersSatellite sat; sat.set(d); - feparm->setDVBS(sat); eDVBFrontendParametersSatellite p; m_ch_current->getDVBS(p); - if ( p.orbital_position != sat.orbital_position ) + if ( abs(p.orbital_position - sat.orbital_position) < 5 ) + sat.orbital_position = p.orbital_position; + + if ( abs(abs(3600 - p.orbital_position) - sat.orbital_position) < 5 ) + { + eDebug("found transponder with incorrect west/east flag ... correct this"); + sat.orbital_position = p.orbital_position; + } + + feparm->setDVBS(sat); + + if ( p.orbital_position != sat.orbital_position) SCAN_eDebug("dropping this transponder, it's on another satellite."); else { @@ -670,7 +677,8 @@ void eDVBScan::insertInto(iDVBChannelList *db, bool dontRemoveOldFlags) else { db->addService(service->first, service->second); - service->second->m_flags |= eDVBService::dxNewFound; + if (!(m_flags & scanRemoveServices)) + service->second->m_flags |= eDVBService::dxNewFound; } } } @@ -764,3 +772,22 @@ void eDVBScan::getLastServiceName(std::string &last_service_name) else last_service_name = m_last_service->second->m_service_name; } + +RESULT eDVBScan::getFrontend(ePtr &fe) +{ + if (m_channel) + return m_channel->getFrontend(fe); + fe = 0; + return -1; +} + +RESULT eDVBScan::getCurrentTransponder(ePtr &tp) +{ + if (m_ch_current) + { + tp = m_ch_current; + return 0; + } + tp = 0; + return -1; +}