diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-18 11:21:19 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-18 11:21:19 +0000 |
| commit | da602f6b95d2205abf434f53f68e58494972aa7a (patch) | |
| tree | abd267d938916506b147ced9dcad478e2b9d01ae /lib/dvb | |
| parent | 6dbbf2167e1a8ca25dd2cd8e20bef82686b28f61 (diff) | |
| download | enigma2-da602f6b95d2205abf434f53f68e58494972aa7a.tar.gz enigma2-da602f6b95d2205abf434f53f68e58494972aa7a.zip | |
dont scan transponders from other satellites in scan (previous implementation doesn't work when no SDT was avail before the NIT was scanned)
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/scan.cpp | 17 | ||||
| -rw-r--r-- | lib/dvb/scan.h | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp index 961812f6..8865f304 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -104,7 +104,6 @@ RESULT eDVBScan::nextChannel() } m_ch_current = m_ch_toScan.front(); - m_chid_current = eDVBChannelID(); m_ch_toScan.pop_front(); @@ -113,7 +112,18 @@ RESULT eDVBScan::nextChannel() m_event(evtFail); return -ENOTSUP; } - + + int fetype; + fe->getFrontendType(fetype); + if ( fetype == iDVBFrontend::feSatellite) + { + eDVBFrontendParametersSatellite p; + m_ch_current->getDVBS(p); + m_chid_current = eDVBChannelID(p.orbital_position << 16, -1, -1); + } + else + m_chid_current = eDVBChannelID(); + m_channel_state = iDVBChannel::state_idle; if (fe->tune(*m_ch_current)) { @@ -301,7 +311,8 @@ void eDVBScan::channelDone() eDVBNamespace ns = buildNamespace(onid, tsid, hash); - if (m_chid_current && ((ns.get() ^ m_chid_current.dvbnamespace.get()) & 0xFFFF0000)) + if ( m_chid_current.dvbnamespace.get() != -1 && + ((ns.get() ^ m_chid_current.dvbnamespace.get()) & 0xFFFF0000)) eDebug("dropping this transponder, it's on another satellite."); else { diff --git a/lib/dvb/scan.h b/lib/dvb/scan.h index 4cad6a2a..11d0efdc 100644 --- a/lib/dvb/scan.h +++ b/lib/dvb/scan.h @@ -71,7 +71,7 @@ public: void start(const eSmartPtrList<iDVBFrontendParameters> &known_transponders, int flags); enum { evtUpdate, evtFinish, evtFail }; - RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &connection); + RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &connection); void insertInto(iDVBChannelList *db); void getStats(int &transponders_done, int &transponders_total, int &services); |
