use AUDIO_GET_STC, VIDEO_GET_STC
[enigma2.git] / lib / dvb / sec.cpp
index d504fcb2f0d8e9e84b2d39fdfb7d8e50a0f58e26..0b40ae5096197719181766e216bc63b66c3e3cd9 100644 (file)
@@ -138,7 +138,8 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
                                        if ( di_param.m_committed_cmd < eDVBSatelliteDiseqcParameters::SENDNO )
                                                csw = 0xF0 | (csw << 2);
 
-                                       csw |= band;
+                                       if (di_param.m_committed_cmd <= eDVBSatelliteDiseqcParameters::SENDNO)
+                                               csw |= band;
 
                                        if ( di_param.m_diseqc_mode == eDVBSatelliteDiseqcParameters::V1_2 )  // ROTOR
                                        {
@@ -287,6 +288,8 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                        else
                                parm.FREQUENCY = sat.frequency - lnb_param.m_lof_lo;
 
+                       parm.FREQUENCY = abs(parm.FREQUENCY);
+
                        if (sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal)
                                band |= 2;
 
@@ -353,7 +356,8 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                if ( di_param.m_committed_cmd < eDVBSatelliteDiseqcParameters::SENDNO )
                                        csw = 0xF0 | (csw << 2);
 
-                               csw |= band;
+                               if (di_param.m_committed_cmd <= eDVBSatelliteDiseqcParameters::SENDNO)
+                                       csw |= band;
 
                                bool send_csw =
                                        (di_param.m_committed_cmd != eDVBSatelliteDiseqcParameters::SENDNO);
@@ -395,7 +399,10 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                }
                                if (changed_csw) 
                                {
-                                       if ( di_param.m_use_fast && (lastcsw & 0xF0) && ((csw / 4) == (lastcsw / 4)) )
+                                       if ( di_param.m_use_fast
+                                               && di_param.m_committed_cmd < eDVBSatelliteDiseqcParameters::SENDNO
+                                               && (lastcsw & 0xF0)
+                                               && ((csw / 4) == (lastcsw / 4)) )
                                                eDebug("dont send committed cmd (fast diseqc)");
                                        else
                                        {