X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/812d186e4b283c9653682a3d4db5234e91e4f36a..cfa2e05881f9a27dafab260af6369f9d5dff5590:/lib/dvb/sec.cpp diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp index b0d5a1e9..972728ed 100644 --- a/lib/dvb/sec.cpp +++ b/lib/dvb/sec.cpp @@ -32,11 +32,11 @@ eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl() setLNBTunerMask(1); setLNBLOFL(9750000); setLNBThreshold(11750000); - setLNBLOFH(10607000); + setLNBLOFH(10600000); setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_0); setToneburst(eDVBSatelliteDiseqcParameters::NO); setRepeats(0); - setCommittedCommand(eDVBSatelliteDiseqcParameters::BB); + setCommittedCommand(eDVBSatelliteDiseqcParameters::AA); setCommandOrder(0); // committed, toneburst setFastDiSEqC(false); setSeqRepeat(false); @@ -62,11 +62,47 @@ eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl() setToneMode(eDVBSatelliteSwitchParameters::HILO); } -RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat) +int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite &sat, iDVBFrontend *fe, int frontend_id ) +{ + int ret=0; + + for (int idx=0; idx <= m_lnbidx; ++idx ) + { + eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx]; + if ( lnb_param.tuner_mask & frontend_id ) // lnb for correct tuner? + { + eDVBSatelliteDiseqcParameters &di_param = lnb_param.m_diseqc_parameters; + eDVBSatelliteRotorParameters &rotor_param = lnb_param.m_rotor_parameters; + + std::map::iterator sit = + lnb_param.m_satellites.find(sat.orbital_position); + if ( sit != lnb_param.m_satellites.end()) + { + int curRotorPos = -1; + fe->getData(6, curRotorPos); + + if ( di_param.m_diseqc_mode == eDVBSatelliteDiseqcParameters::V1_2 ) // ROTOR + { + if ( curRotorPos == sat.orbital_position ) + ret=20; + else + ret=10; + } + else if (!ret) + ret=40; + } + } + } + return ret; +} + +RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat, int frontend_id) { for (int idx=0; idx <= m_lnbidx; ++idx ) { eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx]; + if (!(lnb_param.tuner_mask & frontend_id)) // lnb for correct tuner? + continue; eDVBSatelliteDiseqcParameters &di_param = lnb_param.m_diseqc_parameters; eDVBSatelliteRotorParameters &rotor_param = lnb_param.m_rotor_parameters; @@ -443,7 +479,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA } } - eDebug("not found satellite configuration for orbital position (%d)", sat.orbital_position ); + eDebug("found no satellite configuration for orbital position (%d)", sat.orbital_position ); return -1; }