use boundFunction from tools
[enigma2.git] / lib / dvb / frontend.cpp
index 022b90955be5243b86d3ea4d0d6ebbec09293112..f2c3401dc15a7438c4b7607b5064e68bf04165b7 100644 (file)
@@ -131,21 +131,21 @@ RESULT eDVBFrontendParameters::getDVBT(eDVBFrontendParametersTerrestrial &p) con
        return 0;
 }
 
-RESULT eDVBFrontendParameters::setDVBS(eDVBFrontendParametersSatellite &p)
+RESULT eDVBFrontendParameters::setDVBS(const eDVBFrontendParametersSatellite &p)
 {
        sat = p;
        m_type = iDVBFrontend::feSatellite;
        return 0;
 }
 
-RESULT eDVBFrontendParameters::setDVBC(eDVBFrontendParametersCable &p)
+RESULT eDVBFrontendParameters::setDVBC(const eDVBFrontendParametersCable &p)
 {
        cable = p;
        m_type = iDVBFrontend::feCable;
        return 0;
 }
 
-RESULT eDVBFrontendParameters::setDVBT(eDVBFrontendParametersTerrestrial &p)
+RESULT eDVBFrontendParameters::setDVBT(const eDVBFrontendParametersTerrestrial &p)
 {
        terrestrial = p;
        m_type = iDVBFrontend::feTerrestrial;
@@ -208,7 +208,7 @@ RESULT eDVBFrontendParameters::getHash(unsigned long &hash) const
 
 DEFINE_REF(eDVBFrontend);
 
-eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok): m_type(-1), m_curVoltage(-1)
+eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok): m_type(-1), m_fe(fe), m_curVoltage(-1)
 {
 #if HAVE_DVB_API_VERSION < 3
        char sec_filename[128];
@@ -633,13 +633,13 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where)
                        return -ENOENT;
                }
                
-               res = m_sec->prepare(*this, parm, feparm);
+               res = m_sec->prepare(*this, parm, feparm, 1 << m_fe);
                if (res)
                        return res;
 #if HAVE_DVB_API_VERSION < 3
-               eDebug("tuning to %d mhz", parm.Frequency/100);
+               eDebug("tuning to %d mhz", parm.Frequency/1000);
 #else
-               eDebug("tuning to %d mhz", parm.frequency/100);
+               eDebug("tuning to %d mhz", parm.frequency/1000);
 #endif
                break;
        }
@@ -908,3 +908,16 @@ RESULT eDVBFrontend::setData(int num, int val)
        return -EINVAL;
 }
 
+int eDVBFrontend::isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm)
+{
+       if (m_type != eDVBFrontend::feSatellite)
+               return 1;
+
+       ASSERT(m_sec);
+
+       eDVBFrontendParametersSatellite sat_parm;
+
+       ASSERT(!feparm->getDVBS(sat_parm));
+
+       return m_sec->canTune(sat_parm, this, 1 << m_fe);
+}