X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c61d41422afe49ea1c31bc14913452ef3b571c21..b0423085db164b3bc28291fab6bd5741182a6859:/lib/dvb/frontend.cpp diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index a1bc3d9f..1040d7cd 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -1,5 +1,6 @@ #include #include +#include // access to python config #include #include #include @@ -1002,6 +1003,7 @@ PyObject *eDVBFrontend::readTransponderData(bool original) eDebug("FE_GET_FRONTEND (%m)"); else { + const FRONTENDPARAMETERS &parm = original ? this->parm : front; tmp = "INVERSION_AUTO"; switch(parm_inversion) { @@ -1679,6 +1681,12 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where) int res=0; + if (!m_sn) + { + eDebug("no frontend device opened... do not try to tune !!!"); + return -ENODEV; + } + if (m_type == -1) return -ENODEV; @@ -1724,6 +1732,18 @@ 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) ); + else + m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, iDVBFrontend::voltageOff) ); + } + else + m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, iDVBFrontend::voltageOff) ); m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) ); } break; @@ -1754,7 +1774,7 @@ RESULT eDVBFrontend::connectStateChange(const Slot1 &stateCh RESULT eDVBFrontend::setVoltage(int voltage) { - if (m_type != feSatellite) + if (m_type == feCable) return -1; #if HAVE_DVB_API_VERSION < 3 secVoltage vlt; @@ -1796,7 +1816,7 @@ RESULT eDVBFrontend::setVoltage(int voltage) #if HAVE_DVB_API_VERSION < 3 return ::ioctl(m_secfd, SEC_SET_VOLTAGE, vlt); #else - if (::ioctl(m_fd, FE_ENABLE_HIGH_LNB_VOLTAGE, increased) < 0) + if (m_type == feSatellite && ::ioctl(m_fd, FE_ENABLE_HIGH_LNB_VOLTAGE, increased) < 0) perror("FE_ENABLE_HIGH_LNB_VOLTAGE"); return ::ioctl(m_fd, FE_SET_VOLTAGE, vlt); #endif