aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-06-26 21:46:10 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-06-26 21:46:10 +0000
commit8b6a8658b1ea5aa358947a488c80eff75295d0fb (patch)
treeb90badb653ba5e53b3251ea74d2febc601395bd7 /lib/dvb
parent31ee53b29f079a6e20688e20832896b497b19478 (diff)
downloadenigma2-8b6a8658b1ea5aa358947a488c80eff75295d0fb.tar.gz
enigma2-8b6a8658b1ea5aa358947a488c80eff75295d0fb.zip
add 5V handling for active DVB-T antennas (needs new drivers)
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/dvb.cpp19
-rw-r--r--lib/dvb/frontend.cpp9
2 files changed, 25 insertions, 3 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp
index bad0ce1a..ff3e4712 100644
--- a/lib/dvb/dvb.cpp
+++ b/lib/dvb/dvb.cpp
@@ -215,15 +215,28 @@ void eDVBResourceManager::addAdapter(iDVBAdapter *adapter)
m_demux.push_back(new eDVBRegisteredDemux(demux, adapter));
}
+ ePtr<eDVBRegisteredFrontend> prev_dvbt_frontend;
for (i=0; i<num_fe; ++i)
{
ePtr<eDVBFrontend> frontend;
-
if (!adapter->getFrontend(frontend, i))
{
+ int frontendType=0;
+ frontend->getFrontendType(frontendType);
+ eDVBRegisteredFrontend *new_fe = new eDVBRegisteredFrontend(frontend, adapter);
+ CONNECT(new_fe->stateChanged, eDVBResourceManager::feStateChanged);
+ m_frontend.push_back(new_fe);
frontend->setSEC(m_sec);
- m_frontend.push_back(new eDVBRegisteredFrontend(frontend, adapter));
- CONNECT(m_frontend.back()->stateChanged, eDVBResourceManager::feStateChanged);
+ // we must link all dvb-t frontends ( for active antenna voltage )
+ if (frontendType == iDVBFrontend::feTerrestrial)
+ {
+ if (prev_dvbt_frontend)
+ {
+ prev_dvbt_frontend->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (int)new_fe);
+ frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (int)&(*prev_dvbt_frontend));
+ }
+ prev_dvbt_frontend = new_fe;
+ }
}
}
}
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index e495b1c5..8ba68a59 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -1,5 +1,6 @@
#include <lib/dvb/dvb.h>
#include <lib/base/eerror.h>
+#include <lib/base/nconfig.h> // access to python config
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
@@ -1731,6 +1732,14 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where)
if (!res)
{
m_sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT) );
+ eDVBRegisteredFrontend *linked_fe = (eDVBRegisteredFrontend*)m_data[LINKED_PREV_PTR];
+ if (linked_fe == (eDVBRegisteredFrontend*)-1)
+ {
+ std::string enable_5V;
+ ePythonConfigQuery::getConfigValue("config.terrestrial.enable_5V", enable_5V);
+ if (enable_5V == "yes")
+ m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, iDVBFrontend::voltage13) );
+ }
m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) );
}
break;