small fix
[enigma2.git] / lib / dvb / sec.cpp
index a56dbf0486ff1c2198e60d83af93c3eb1ab57532..da2439f990f322001d405ab33db15c82f59d3fa1 100644 (file)
@@ -37,81 +37,11 @@ void eDVBSatelliteEquipmentControl::setParam(int param, int value)
 }
 
 eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl(eSmartPtrList<eDVBRegisteredFrontend> &avail_frontends, eSmartPtrList<eDVBRegisteredFrontend> &avail_simulate_frontends)
-       :m_lnbidx(-1), m_curSat(m_lnbs[0].m_satellites.end()), m_avail_frontends(avail_frontends), m_avail_simulate_frontends(avail_simulate_frontends), m_rotorMoving(false)
+       :m_lnbidx((sizeof(m_lnbs) / sizeof(eDVBSatelliteLNBParameters))-1), m_curSat(m_lnbs[0].m_satellites.end()), m_avail_frontends(avail_frontends), m_avail_simulate_frontends(avail_simulate_frontends), m_rotorMoving(false)
 {
        if (!instance)
                instance = this;
-
        clear();
-
-// ASTRA
-       addLNB();
-       setLNBSlotMask(3);
-       setLNBLOFL(9750000);
-       setLNBThreshold(11700000);
-       setLNBLOFH(10607000);
-       setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_0);
-       setToneburst(eDVBSatelliteDiseqcParameters::NO);
-       setRepeats(0);
-       setCommittedCommand(eDVBSatelliteDiseqcParameters::BB);
-       setCommandOrder(0); // committed, toneburst
-       setFastDiSEqC(true);
-       setSeqRepeat(false);
-       addSatellite(192);
-       setVoltageMode(eDVBSatelliteSwitchParameters::HV);
-       setToneMode(eDVBSatelliteSwitchParameters::HILO);
-
-// Hotbird
-       addLNB();
-       setLNBSlotMask(3);
-       setLNBLOFL(9750000);
-       setLNBThreshold(11700000);
-       setLNBLOFH(10600000);
-       setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_0);
-       setToneburst(eDVBSatelliteDiseqcParameters::NO);
-       setRepeats(0);
-       setCommittedCommand(eDVBSatelliteDiseqcParameters::AB);
-       setCommandOrder(0); // committed, toneburst
-       setFastDiSEqC(true);
-       setSeqRepeat(false);
-       addSatellite(130);
-       setVoltageMode(eDVBSatelliteSwitchParameters::HV);
-       setToneMode(eDVBSatelliteSwitchParameters::HILO);
-
-// Rotor
-       addLNB();
-       setLNBSlotMask(3);
-       setLNBLOFL(9750000);
-       setLNBThreshold(11700000);
-       setLNBLOFH(10600000);
-       setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_2);
-       setToneburst(eDVBSatelliteDiseqcParameters::NO);
-       setRepeats(0);
-       setCommittedCommand(eDVBSatelliteDiseqcParameters::AA);
-       setCommandOrder(0); // committed, toneburst
-       setFastDiSEqC(true);
-       setSeqRepeat(false);
-       setLaDirection(eDVBSatelliteRotorParameters::NORTH);
-       setLoDirection(eDVBSatelliteRotorParameters::EAST);
-       setLatitude(51.017);
-       setLongitude(8.683);
-       setUseInputpower(true);
-       setInputpowerDelta(50);
-
-       addSatellite(235);
-       setVoltageMode(eDVBSatelliteSwitchParameters::HV);
-       setToneMode(eDVBSatelliteSwitchParameters::HILO);
-       setRotorPosNum(0);
-
-       addSatellite(284);
-       setVoltageMode(eDVBSatelliteSwitchParameters::HV);
-       setToneMode(eDVBSatelliteSwitchParameters::HILO);
-       setRotorPosNum(0);
-
-       addSatellite(420);
-       setVoltageMode(eDVBSatelliteSwitchParameters::HV);
-       setToneMode(eDVBSatelliteSwitchParameters::HILO);
-       setRotorPosNum(1); // stored pos 1
 }
 
 #define eSecDebugNoSimulate(x...) \
@@ -140,7 +70,7 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
        {
                bool rotor=false;
                eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx];
-               if ( lnb_param.slot_mask & slot_id ) // lnb for correct tuner?
+               if ( lnb_param.m_slot_mask & slot_id ) // lnb for correct tuner?
                {
                        int ret = 0;
                        eDVBSatelliteDiseqcParameters &di_param = lnb_param.m_diseqc_parameters;
@@ -283,7 +213,7 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                                eSecDebugNoSimulate("ret5 %d", ret);
                                        }
 
-                               if (ret && rotor && curRotorPos != -1 && (direct_connected || satpos_depends_ptr == -1) )  // direct conntected or loopthrough!
+                               if (ret && rotor && curRotorPos != -1)
                                        ret -= abs(curRotorPos-sat.orbital_position);
 
                                eSecDebugNoSimulate("ret6 %d", ret);
@@ -297,6 +227,9 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                                ret=0;
                                }
 
+                               if (ret && lnb_param.m_prio != -1)
+                                       ret = lnb_param.m_prio;
+
                                eSecDebugNoSimulate("ret %d, score old %d", ret, score);
                                if (ret > score)
                                {
@@ -309,7 +242,12 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                }
        }
        if (score && satcount)
-               score -= (satcount-1);
+       {
+               if (score > (satcount-1))
+                       score -= (satcount-1);
+               else
+                       score = 1; // min score
+       }
        if (score && direct_connected)
                score += 5; // increase score for tuners with direct sat connection
        eSecDebugNoSimulate("final score %d", score);
@@ -963,7 +901,8 @@ RESULT eDVBSatelliteEquipmentControl::clear()
        for (int i=0; i <= m_lnbidx; ++i)
        {
                m_lnbs[i].m_satellites.clear();
-               m_lnbs[i].slot_mask = 0;
+               m_lnbs[i].m_slot_mask = 0;
+               m_lnbs[i].m_prio = -1; // auto
        }
        m_lnbidx=-1;
 
@@ -1021,7 +960,7 @@ RESULT eDVBSatelliteEquipmentControl::setLNBSlotMask(int slotmask)
 {
        eSecDebug("eDVBSatelliteEquipmentControl::setLNBSlotMask(%d)", slotmask);
        if ( currentLNBValid() )
-               m_lnbs[m_lnbidx].slot_mask = slotmask;
+               m_lnbs[m_lnbidx].m_slot_mask = slotmask;
        else
                return -ENOENT;
        return 0;
@@ -1067,6 +1006,17 @@ RESULT eDVBSatelliteEquipmentControl::setLNBIncreasedVoltage(bool onoff)
        return 0;
 }
 
+RESULT eDVBSatelliteEquipmentControl::setLNBPrio(int prio)
+{
+       eSecDebug("eDVBSatelliteEquipmentControl::setLNBPrio(%d)", prio);
+       if ( currentLNBValid() )
+               m_lnbs[m_lnbidx].m_prio = prio;
+       else
+               return -ENOENT;
+       return 0;
+}
+
+
 /* DiSEqC Specific Parameters */
 RESULT eDVBSatelliteEquipmentControl::setDiSEqCMode(int diseqcmode)
 {