diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-06-26 21:46:10 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-06-26 21:46:10 +0000 |
| commit | 8b6a8658b1ea5aa358947a488c80eff75295d0fb (patch) | |
| tree | b90badb653ba5e53b3251ea74d2febc601395bd7 /lib/dvb | |
| parent | 31ee53b29f079a6e20688e20832896b497b19478 (diff) | |
| download | enigma2-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.cpp | 19 | ||||
| -rw-r--r-- | lib/dvb/frontend.cpp | 9 |
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; |
