mpegts network: discovery - always save the orbital position

This commit is contained in:
Jaroslav Kysela 2014-08-22 17:35:27 +02:00
parent e5b83a6a7c
commit 99ed831f37

View file

@ -392,7 +392,7 @@ dvb_network_create_mux
mm, buf, onid, tsid, mm->mm_network->mn_network_name);
#endif
}
} else if (mm && ln->mn_autodiscovery) {
} else if (mm) {
dvb_mux_t *lm = (dvb_mux_t*)mm;
/* the nit tables may be inconsistent (like rolloff ping-pong) */
/* accept information only from one origin mux */
@ -429,6 +429,16 @@ dvb_network_create_mux
char buf[128];
tuning_old = lm->lm_tuning;
#endif
/* Always save the orbital position */
if (dmc->dmc_fe_type == DVB_TYPE_S) {
if (lm->lm_tuning.u.dmc_fe_qpsk.orbital_dir == 0 ||
dvb_network_check_orbital_pos(lm, dmc))
save |= COMPARE(u.dmc_fe_qpsk.orbital_pos);
save |= COMPARE(u.dmc_fe_qpsk.orbital_dir);
}
/* Do not change anything else without autodiscovery flag */
if (!ln->mn_autodiscovery)
goto save;
/* Handle big diffs that have been allowed through for DVB-S */
if (deltaU32(dmc->dmc_fe_freq, lm->lm_tuning.dmc_fe_freq) > 4000) {
lm->lm_tuning.dmc_fe_freq = dmc->dmc_fe_freq;
@ -450,10 +460,6 @@ dvb_network_create_mux
break;
case DVB_TYPE_S:
save |= COMPARE(u.dmc_fe_qpsk.polarisation);
if (lm->lm_tuning.u.dmc_fe_qpsk.orbital_dir == 0 ||
dvb_network_check_orbital_pos(lm, dmc))
save |= COMPARE(u.dmc_fe_qpsk.orbital_pos);
save |= COMPARE(u.dmc_fe_qpsk.orbital_dir);
save |= COMPARE(u.dmc_fe_qpsk.symbol_rate);
save |= COMPAREN(u.dmc_fe_qpsk.fec_inner);
break;
@ -477,6 +483,7 @@ dvb_network_create_mux
}
#endif
}
save:
if (mm && save) {
mm->mm_dmc_origin = mmo;
mm->mm_dmc_origin_expire = dispatch_clock + 3600 * 24; /* one day */