Merge branch 'master' of /home/tmbinc/enigma2-git
[vuplus_dvbapp] / lib / dvb / sec.cpp
index eed9d35..a9426ff 100644 (file)
@@ -176,7 +176,7 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                                        eDVBRegisteredFrontend *satpos_depends_to_fe = (eDVBRegisteredFrontend*) satpos_depends_ptr;
                                                        long satpos_depends_rotor_pos;
                                                        satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, satpos_depends_rotor_pos);
-                                                       if (satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
+                                                       if (!rotor || satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
                                                                || satpos_depends_rotor_pos != sat.orbital_position ) // not the same orbital position?
                                                        {
                                                                ret = 0;
@@ -193,7 +193,7 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                        {
                                                if (satpos_depends_to_fe->m_inuse) // if the dependent frontend is in use?
                                                {
-                                                       if (rotor_pos != sat.orbital_position) // new orbital position not equal to current orbital pos?
+                                                       if (!rotor || rotor_pos != sat.orbital_position) // new orbital position not equal to current orbital pos?
                                                                ret=0;
                                                }
                                        }
@@ -202,7 +202,7 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                                // get current orb pos of the tuner with rotor connection
                                                long satpos_depends_rotor_pos;
                                                satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, satpos_depends_rotor_pos);
-                                               if (satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
+                                               if (!rotor || satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
                                                        || satpos_depends_rotor_pos != sat.orbital_position ) // not the same orbital position?
                                                {
                                                        ret = 0;
@@ -312,7 +312,6 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                        eDVBSatelliteSwitchParameters &sw_param = sit->second;
                        bool doSetFrontend = true;
                        bool doSetVoltageToneFrontend = true;
-                       bool forceStaticMode = true;
                        bool forceChanged = false;
                        bool needDiSEqCReset = false;
                        long band=0,
@@ -920,12 +919,11 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT, tunetimeout) );
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) );
                        }
-                               
-                       if (forceStaticMode)
-                       {
-                               sec_sequence.push_front( eSecCommand(eSecCommand::SET_POWER_LIMITING_MODE, eSecCommand::modeStatic) );
-                               sec_sequence.push_back( eSecCommand(eSecCommand::SET_POWER_LIMITING_MODE, eSecCommand::modeDynamic) );
-                       }
+
+                       sec_sequence.push_front( eSecCommand(eSecCommand::SET_POWER_LIMITING_MODE, eSecCommand::modeStatic) );
+                       sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 500) );
+                       sec_sequence.push_back( eSecCommand(eSecCommand::SET_POWER_LIMITING_MODE, eSecCommand::modeDynamic) );
+
                        frontend.setSecSequence(sec_sequence);
 
                        return 0;