remove no more needed function
[enigma2.git] / lib / dvb / sec.cpp
index 1e75d113419a2347a777fd221adfc55db2e6a0b2..0f43d77ffe81c89aa040ba0b14eddde0b0cac89a 100644 (file)
@@ -262,7 +262,7 @@ bool need_turn_fast(int turn_speed)
        {
                int begin = turn_speed >> 16; // high word is start time
                int end = turn_speed&0xFFFF; // low word is end time
-               time_t now_time = eDVBLocalTimeHandler::getInstance()->nowTime();
+               time_t now_time = ::time(0);
                tm nowTime;
                localtime_r(&now_time, &nowTime);
                int now = (nowTime.tm_hour + 1) * 60 + nowTime.tm_min + 1;
@@ -280,7 +280,7 @@ bool need_turn_fast(int turn_speed)
 
 #define VOLTAGE(x) (lnb_param.m_increased_voltage ? iDVBFrontend::voltage##x##_5 : iDVBFrontend::voltage##x)
 
-RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int slot_id)
+RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int slot_id, unsigned int tunetimeout)
 {
        for (int idx=0; idx <= m_lnbidx; ++idx )
        {
@@ -669,6 +669,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
 
                                                if ( rotor_param.m_inputpower_parameters.m_use )
                                                { // use measure rotor input power to detect rotor state
+                                                       bool turn_fast = need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed);
                                                        eSecCommand::rotor cmd;
                                                        eSecCommand::pair compare;
                                                        compare.voltage = VOLTAGE(18);
@@ -702,19 +703,19 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::IF_INPUTPOWER_DELTA_GOTO, cmd ) );  // check if rotor has started
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::IF_TIMEOUT_GOTO, +2 ) );  // timeout .. we assume now the rotor is already at the correct position
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, -4) );  // goto loop start
-                                                       sec_sequence.push_back( eSecCommand(eSecCommand::IF_NO_MORE_ROTOR_DISEQC_RETRYS_GOTO, +9 ) );  // timeout .. we assume now the rotor is already at the correct position
+                                                       sec_sequence.push_back( eSecCommand(eSecCommand::IF_NO_MORE_ROTOR_DISEQC_RETRYS_GOTO, turn_fast ? 9 : 8 ) );  // timeout .. we assume now the rotor is already at the correct position  
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, -8) );  // goto loop start
 ////////////////////
-                                                       if (need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed))
+                                                       if (turn_fast)
                                                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) );
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::SET_TIMEOUT, m_params[MOTOR_RUNNING_TIMEOUT]*20) );  // 2 minutes running timeout
 // rotor running loop
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );  // wait 50msec
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_RUNNING_INPUTPOWER) );
                                                        cmd.direction=0;  // check for stopped rotor
-                                                       cmd.steps=+4;
+                                                       cmd.steps=+3;
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::IF_INPUTPOWER_DELTA_GOTO, cmd ) );
-                                                       sec_sequence.push_back( eSecCommand(eSecCommand::IF_TIMEOUT_GOTO, +3 ) );  // timeout ? this should never happen
+                                                       sec_sequence.push_back( eSecCommand(eSecCommand::IF_TIMEOUT_GOTO, +2 ) );  // timeout ? this should never happen
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, -4) );  // running loop start
 /////////////////////
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::UPDATE_CURRENT_ROTORPARAMS) );
@@ -788,7 +789,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
 
                        if (doSetFrontend)
                        {
-                               sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT) );
+                               sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT, tunetimeout) );
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) );
                        }
                        frontend.setSecSequence(sec_sequence);
@@ -848,7 +849,7 @@ RESULT eDVBSatelliteEquipmentControl::addLNB()
                eDebug("no more LNB free... cnt is %d", m_lnbidx);
                return -ENOSPC;
        }
-       eSecDebug("eDVBSatelliteEquipmentControl::addLNB(%d)", m_lnbidx-1);
+       eSecDebug("eDVBSatelliteEquipmentControl::addLNB(%d)", m_lnbidx);
        return 0;
 }
 
@@ -1147,111 +1148,6 @@ struct sat_compare
        }
 };
 
-PyObject *eDVBSatelliteEquipmentControl::get_exclusive_satellites(int tu1, int tu2)
-{
-       ePyObject ret;
-
-       if (tu1 != tu2)
-       {
-               eDVBRegisteredFrontend *p1=NULL, *p2=NULL;
-               int cnt=0;
-               for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it, ++cnt)
-               {
-                       if (cnt == tu1)
-                               p1 = *it;
-                       else if (cnt == tu2)
-                               p2 = *it;
-               }
-
-               if (p1 && p2)
-               {
-                       // check for linked tuners
-
-                       do 
-                       {
-                               long tmp;
-                               p1->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp);
-                               if (tmp != -1)
-                                       p1 = (eDVBRegisteredFrontend*)tmp;
-                               else
-                                       break;
-                       }
-                       while (true);
-
-                       do 
-                       {
-                               long tmp;
-                               p2->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp);
-                               if (tmp != -1)
-                                       p2 = (eDVBRegisteredFrontend*)tmp;
-                               else
-                                       break;
-                       }
-                       while (true);
-
-                       if (p1 != p2)
-                       {
-                               long tmp1=-1;
-                               long tmp2=-1;
-                               // check for rotor dependency
-                               p1->m_frontend->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, tmp1);
-                               if (tmp1 != -1)
-                                       p1 = (eDVBRegisteredFrontend*)tmp1;
-                               p2->m_frontend->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, tmp2);
-                               if (tmp2 != -1)
-                                       p2 = (eDVBRegisteredFrontend*)tmp2;
-                               if (p1 != p2)
-                               {
-                                       int tu1_mask = 1 << p1->m_frontend->getSlotID(),
-                                               tu2_mask = 1 << p2->m_frontend->getSlotID();
-                                       std::set<sat_compare> tu1sats, tu2sats;
-                                       std::list<sat_compare> tu1difference, tu2difference;
-                                       std::insert_iterator<std::list<sat_compare> > insert1(tu1difference, tu1difference.begin()),
-                                               insert2(tu2difference, tu2difference.begin());
-                                       for (int idx=0; idx <= m_lnbidx; ++idx )
-                                       {
-                                               eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx];
-                                               for (std::map<int, eDVBSatelliteSwitchParameters>::iterator sit(lnb_param.m_satellites.begin());
-                                                       sit != lnb_param.m_satellites.end(); ++sit)
-                                               {
-                                                       if ( lnb_param.slot_mask & tu1_mask )
-                                                               tu1sats.insert(sat_compare(sit->first, lnb_param.m_lof_lo, lnb_param.m_lof_hi));
-                                                       if ( lnb_param.slot_mask & tu2_mask )
-                                                               tu2sats.insert(sat_compare(sit->first, lnb_param.m_lof_lo, lnb_param.m_lof_hi));
-                                               }
-                                       }
-                                       std::set_difference(tu1sats.begin(), tu1sats.end(),
-                                               tu2sats.begin(), tu2sats.end(),
-                                               insert1);
-                                       std::set_difference(tu2sats.begin(), tu2sats.end(),
-                                               tu1sats.begin(), tu1sats.end(),
-                                               insert2);
-                                       if (!tu1sats.empty() || !tu2sats.empty())
-                                       {
-                                               int idx=0;
-                                               ret = PyList_New(2+tu1difference.size()+tu2difference.size());
-
-                                               PyList_SET_ITEM(ret, idx++, PyInt_FromLong(tu1difference.size()));
-                                               for(std::list<sat_compare>::iterator it(tu1difference.begin()); it != tu1difference.end(); ++it)
-                                                       PyList_SET_ITEM(ret, idx++, PyInt_FromLong(it->orb_pos));
-
-                                               PyList_SET_ITEM(ret, idx++, PyInt_FromLong(tu2difference.size()));
-                                               for(std::list<sat_compare>::iterator it(tu2difference.begin()); it != tu2difference.end(); ++it)
-                                                       PyList_SET_ITEM(ret, idx++, PyInt_FromLong(it->orb_pos));
-                                       }
-                               }
-                       }
-               }
-       }
-       if (!ret)
-       {
-               ret = PyList_New(2);
-               PyList_SET_ITEM(ret, 0, PyInt_FromLong(0));
-               PyList_SET_ITEM(ret, 1, PyInt_FromLong(0));
-       }
-       return ret;
-}
-
 RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
 {
        eSecDebug("eDVBSatelliteEquipmentControl::setTunerLinked(%d, %d)", tu1, tu2);
@@ -1259,12 +1155,11 @@ RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
        {
                eDVBRegisteredFrontend *p1=NULL, *p2=NULL;
 
-               int cnt=0;
-               for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it, ++cnt)
+               for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it)
                {
-                       if (cnt == tu1)
+                       if (it->m_frontend->getSlotID() == tu1)
                                p1 = *it;
-                       else if (cnt == tu2)
+                       else if (it->m_frontend->getSlotID() == tu2)
                                p2 = *it;
                }
                if (p1 && p2)
@@ -1296,12 +1191,11 @@ RESULT eDVBSatelliteEquipmentControl::setTunerDepends(int tu1, int tu2)
 
        eDVBRegisteredFrontend *p1=NULL, *p2=NULL;
 
-       int cnt=0;
-       for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it, ++cnt)
+       for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it)
        {
-               if (cnt == tu1)
+               if (it->m_frontend->getSlotID() == tu1)
                        p1 = *it;
-               else if (cnt == tu2)
+               else if (it->m_frontend->getSlotID() == tu2)
                        p2 = *it;
        }
        if (p1 && p2)