dont tune with -s2 frontend to -S transponders when a free -S Tuner is
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 26 Jun 2008 11:58:11 +0000 (11:58 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 26 Jun 2008 11:58:11 +0000 (11:58 +0000)
available..
dont try to tune to -S2 Transponders with -S Tuner (HACK)

lib/dvb/frontend.cpp
lib/dvb/frontend.h

index 05f354e94d453c9ae80edc19b680ef31842fdf1b..72c907d86a31e702057c2be1b5f807424ebe55d6 100644 (file)
@@ -420,7 +420,8 @@ int eDVBFrontend::PriorityOrder=0;
 
 eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok)
        :m_enabled(false), m_type(-1), m_dvbid(fe), m_slotid(fe)
-       ,m_fd(-1), m_need_rotor_workaround(false), m_sn(0), m_timeout(0), m_tuneTimer(0)
+       ,m_fd(-1), m_need_rotor_workaround(false), m_can_handle_dvbs2(false)
+       ,m_sn(0), m_timeout(0), m_tuneTimer(0)
 #if HAVE_DVB_API_VERSION < 3
        ,m_secfd(-1)
 #endif
@@ -2230,7 +2231,11 @@ int eDVBFrontend::isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm)
                eDVBFrontendParametersSatellite sat_parm;
                int ret = feparm->getDVBS(sat_parm);
                ASSERT(!ret);
-               return m_sec->canTune(sat_parm, this, 1 << m_slotid);
+               if (sat_parm.system == eDVBFrontendParametersSatellite::System::DVB_S2 && !m_can_handle_dvbs2)
+                       return 0;
+               ret = m_sec->canTune(sat_parm, this, 1 << m_slotid);
+               if (ret > 1 && sat_parm.system == eDVBFrontendParametersSatellite::System::DVB_S && m_can_handle_dvbs2)
+                       ret -= 1;
        }
        else if (m_type == eDVBFrontend::feCable)
                return 2;  // more prio for cable frontends
@@ -2254,6 +2259,7 @@ bool eDVBFrontend::setSlotInfo(ePyObject obj)
        m_need_rotor_workaround = !!strstr(m_description, "Alps BSBE1") ||
                !!strstr(m_description, "Alps BSBE2") ||
                !!strstr(m_description, "Alps -S");
+       m_can_handle_dvbs2 = !!strstr(m_description, "Alps BSBE2") || !!strstr(m_description, "bcm4501");
        eDebug("setSlotInfo for dvb frontend %d to slotid %d, descr %s, need rotorworkaround %s, enabled %s",
                m_dvbid, m_slotid, m_description, m_need_rotor_workaround ? "Yes" : "No", m_enabled ? "Yes" : "No" );
        return true;
index bbfd174d53d340f8f5289fcdb2edc3dd4fb81b49..9d9aab718a70a479971dd772d39cef333f4b5c28 100644 (file)
@@ -67,6 +67,7 @@ private:
        int m_slotid;
        int m_fd;
        bool m_need_rotor_workaround;
+       bool m_can_handle_dvbs2;
        char m_filename[128];
        char m_description[128];
 #if HAVE_DVB_API_VERSION < 3