support DVB-T2 auto scan
[vuplus_dvbapp] / lib / dvb / frontend.cpp
index 26b47cf..21d897e 100755 (executable)
@@ -397,7 +397,6 @@ RESULT eDVBFrontendParameters::calculateDifference(const iDVBFrontendParameters
                eDVBFrontendParametersTerrestrial oterrestrial;
                if (parm->getDVBT(oterrestrial))
                        return -2;
-
                if (exact && oterrestrial.bandwidth != terrestrial.bandwidth &&
                        oterrestrial.bandwidth != eDVBFrontendParametersTerrestrial::Bandwidth_Auto &&
                        terrestrial.bandwidth != eDVBFrontendParametersTerrestrial::Bandwidth_Auto)
@@ -426,6 +425,11 @@ RESULT eDVBFrontendParameters::calculateDifference(const iDVBFrontendParameters
                        oterrestrial.code_rate_HP != eDVBFrontendParametersTerrestrial::FEC_Auto &&
                        terrestrial.code_rate_HP != eDVBFrontendParametersTerrestrial::FEC_Auto)
                        diff = 1 << 30;
+               else if (oterrestrial.system != terrestrial.system)
+                       diff = 1 << 30;
+               else if (oterrestrial.system == terrestrial.System_DVB_T2 &&
+                       oterrestrial.plpid != terrestrial.plpid)
+                       diff = 1 << 30;
                else
                        diff = abs(terrestrial.frequency - oterrestrial.frequency) / 1000;
                return 0;
@@ -2754,7 +2758,7 @@ RESULT eDVBFrontend::prepare_terrestrial(const eDVBFrontendParametersTerrestrial
                parm_inversion = INVERSION_AUTO;
                break;
        }
-       eDebug("tuning to %d khz, bandwidth %d, crl %d, crh %d, modulation %d, tm %d, guard %d, hierarchy %d, inversion %d",
+       eDebug("tuning to %d khz, bandwidth %d, crl %d, crh %d, modulation %d, tm %d, guard %d, hierarchy %d, inversion %d, system %d, plpid %d",
                parm_frequency/1000,
                parm_u_ofdm_bandwidth,
                parm_u_ofdm_code_rate_LP,
@@ -2763,7 +2767,9 @@ RESULT eDVBFrontend::prepare_terrestrial(const eDVBFrontendParametersTerrestrial
                parm_u_ofdm_transmission_mode,
                parm_u_ofdm_guard_interval,
                parm_u_ofdm_hierarchy_information,
-               parm_inversion);
+               parm_inversion,
+               feparm.system,
+               feparm.plpid);
        oparm.ter = feparm;
        return 0;
 }