X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/7290c1872d4f6ac37c8090e1cc2e95aeddf6e814..39862e4439df37f150796d3d99352b8859de0736:/lib/dvb/frontend.cpp diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 1cafcec4..7bceaf58 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -177,8 +177,11 @@ RESULT eDVBFrontendParameters::calculateDifference(const iDVBFrontendParameters diff = 1<<29; else if (sat.polarisation != osat.polarisation) diff = 1<<28; - else + else + { diff = abs(sat.frequency - osat.frequency); + diff += abs(sat.symbol_rate - osat.symbol_rate); + } return 0; } case iDVBFrontend::feCable: @@ -209,7 +212,7 @@ RESULT eDVBFrontendParameters::getHash(unsigned long &hash) const DEFINE_REF(eDVBFrontend); eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) - :m_type(-1), m_fe(fe), m_timeout(0), m_tuneTimer(0), m_fd(-1) + :m_type(-1), m_fe(fe), m_fd(-1), m_timeout(0), m_tuneTimer(0) #if HAVE_DVB_API_VERSION < 3 ,m_secfd(-1) #endif @@ -229,6 +232,8 @@ eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) for (int i=0; im_frontend->getID()); - return; + return -1; } } eDebug("close frontend %d", m_fe); @@ -344,6 +349,7 @@ void eDVBFrontend::closeFrontend() setTone(iDVBFrontend::toneOff); setVoltage(iDVBFrontend::voltageOff); + return 0; } eDVBFrontend::~eDVBFrontend() @@ -1058,6 +1064,19 @@ RESULT eDVBFrontend::sendToneburst(int burst) cmd = SEC_MINI_B; if (::ioctl(m_secfd, SEC_DISEQC_SEND_BURST, cmd)) return -EINVAL; +#else + fe_sec_mini_cmd_t cmd = SEC_MINI_A; + if ( burst == eDVBSatelliteDiseqcParameters::A ) + cmd = SEC_MINI_A; + else if ( burst == eDVBSatelliteDiseqcParameters::B ) + cmd = SEC_MINI_B; + else + { + eDebug("unknown toneburst!"); + return -EINVAL; + } + if (::ioctl(m_fd, FE_DISEQC_SEND_BURST, cmd)) + return -EINVAL; #endif return 0; }