aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/frontend.cpp
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2009-09-21 14:49:25 +0200
committerghost <andreas.monzner@multimedia-labs.de>2009-09-21 14:49:25 +0200
commit655614dbacf97de7347619a9a746daa28f9ef887 (patch)
treec4885e90a34920f0e003cca02964435d720c37d4 /lib/dvb/frontend.cpp
parent45ed0e897cfa0a45bd1e609f0b6a551350ac1c3d (diff)
downloadenigma2-655614dbacf97de7347619a9a746daa28f9ef887.tar.gz
enigma2-655614dbacf97de7347619a9a746daa28f9ef887.zip
frontend.cpp: add support for FE_TIMEDOUT frontend event flag
Diffstat (limited to 'lib/dvb/frontend.cpp')
-rw-r--r--lib/dvb/frontend.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index 15a46db8..0319c4c9 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -666,15 +666,28 @@ void eDVBFrontend::feEvent(int w)
#if HAVE_DVB_API_VERSION < 3
if (event.type == FE_COMPLETION_EV)
#else
- eDebug("(%d)fe event: status %x, inversion %s", m_dvbid, event.status, (event.parameters.inversion == INVERSION_ON) ? "on" : "off");
+ eDebug("(%d)fe event: status %x, inversion %s, m_tuning %d", m_dvbid, event.status, (event.parameters.inversion == INVERSION_ON) ? "on" : "off", m_tuning);
if (event.status & FE_HAS_LOCK)
#endif
{
state = stateLock;
} else
{
- if (m_tuning)
+ if (m_tuning) {
state = stateTuning;
+#if HAVE_DVB_API_VERSION >= 3
+ if (event.status & FE_TIMEDOUT) {
+ eDebug("FE_TIMEDOUT! ..abort");
+ m_tuneTimer->stop();
+ timeout();
+ return;
+ }
+ ++m_tuning;
+#else
+ m_tuneTimer->stop();
+ timeout();
+#endif
+ }
else
{
eDebug("stateLostLock");
@@ -2387,9 +2400,9 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where)
if (!m_simulate)
{
m_tuneTimer->start(0,true);
+ m_tuning = 1;
if (m_state != stateTuning)
{
- m_tuning = 1;
m_state = stateTuning;
m_stateChanged(this);
}