fix
[enigma2.git] / lib / dvb / frontend.cpp
index d4f3d3690adf3884affcd272a287e2d3498ca182..0cb910fbde37228ad7e78ab844f1e477c7b010cd 100644 (file)
@@ -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; i<entries; ++i)
                m_data[i] = -1;
 
+       m_idleInputpower[0]=m_idleInputpower[1]=0;
+
        ok = !openFrontend();
        closeFrontend();
 }
@@ -588,12 +593,12 @@ void eDVBFrontend::tuneLoop()  // called by m_tuneTimer
                                        eDebug("[SEC] error read lnbp (%m)");
                                if ( m_sec_sequence.current()->mode == eSecCommand::modeStatic )
                                {
-                                       data[0] |= 0x90;  // enable static current limiting
+                                       data[0] |= 0x80;  // enable static current limiting
                                        eDebug("[SEC] set static current limiting");
                                }
                                else
                                {
-                                       data[0] &= ~0x90;  // enable dynamic current limiting
+                                       data[0] &= ~0x80;  // enable dynamic current limiting
                                        eDebug("[SEC] set dynamic current limiting");
                                }
                                if(::write(fd, data, 1) != 1)