eDVBFrontendParametersTerrestrial oterrestrial;
if (parm->getDVBT(oterrestrial))
return -2;
-
if (exact && oterrestrial.bandwidth != terrestrial.bandwidth &&
oterrestrial.bandwidth != eDVBFrontendParametersTerrestrial::Bandwidth_Auto &&
terrestrial.bandwidth != eDVBFrontendParametersTerrestrial::Bandwidth_Auto)
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;
}
else if (m_type == iDVBFrontend::feCable)
{
- struct dtv_property p[7];
+ struct dtv_property p[8];
struct dtv_properties cmdseq;
cmdseq.props = p;
p[0].cmd = DTV_CLEAR;
- p[1].cmd = DTV_FREQUENCY, p[1].u.data = parm_frequency;
- p[2].cmd = DTV_MODULATION, p[2].u.data = parm_u_qam_modulation;
- p[3].cmd = DTV_SYMBOL_RATE, p[3].u.data = parm_u_qam_symbol_rate;
- p[4].cmd = DTV_INNER_FEC, p[4].u.data = parm_u_qam_fec_inner;
- p[5].cmd = DTV_INVERSION, p[5].u.data = parm_inversion;
- p[6].cmd = DTV_TUNE;
- cmdseq.num = 7;
+#if DVB_API_VERSION > 5 || DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR >= 6
+ p[1].cmd = DTV_DELIVERY_SYSTEM, p[1].u.data = SYS_DVBC_ANNEX_A;
+#else
+ p[1].cmd = DTV_DELIVERY_SYSTEM, p[1].u.data = SYS_DVBC_ANNEX_AC;
+#endif
+ p[2].cmd = DTV_FREQUENCY, p[2].u.data = parm_frequency;
+ p[3].cmd = DTV_MODULATION, p[3].u.data = parm_u_qam_modulation;
+ p[4].cmd = DTV_SYMBOL_RATE, p[4].u.data = parm_u_qam_symbol_rate;
+ p[5].cmd = DTV_INNER_FEC, p[5].u.data = parm_u_qam_fec_inner;
+ p[6].cmd = DTV_INVERSION, p[6].u.data = parm_inversion;
+ p[7].cmd = DTV_TUNE;
+ cmdseq.num = 8;
if (ioctl(m_fd, FE_SET_PROPERTY, &cmdseq) == -1)
{
perror("FE_SET_PROPERTY failed");
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,
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;
}