aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-11-18 11:21:19 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-11-18 11:21:19 +0000
commitda602f6b95d2205abf434f53f68e58494972aa7a (patch)
treeabd267d938916506b147ced9dcad478e2b9d01ae /lib/dvb
parent6dbbf2167e1a8ca25dd2cd8e20bef82686b28f61 (diff)
downloadenigma2-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.cpp17
-rw-r--r--lib/dvb/scan.h2
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);