fastscan/bouquet: the satpos in local urls is human readable now

This commit is contained in:
Jaroslav Kysela 2014-11-01 15:50:59 +01:00
parent 42901e6140
commit 4de6525170
3 changed files with 36 additions and 10 deletions

View file

@ -492,6 +492,10 @@ int dvb_delsys2type ( enum dvb_fe_delivery_system ds );
int dvb_mux_conf_str ( dvb_mux_conf_t *conf, char *buf, size_t bufsize );
int dvb_sat_position( const dvb_mux_conf_t *mc );
const char *dvb_sat_position_to_str( int position, char *buf, size_t buflen );
#endif /* ENABLE_MPEGTS_DVB */
void dvb_done ( void );

View file

@ -811,10 +811,9 @@ dvb_nit_callback
if (idnode_is_instance(&mm->mm_id, &dvb_mux_dvbs_class)) {
dvb_mux_conf_t *mc = &((dvb_mux_t *)mm)->lm_tuning;
if (mc->u.dmc_fe_qpsk.orbital_dir) {
int pos = mc->u.dmc_fe_qpsk.orbital_pos;
if (mc->u.dmc_fe_qpsk.orbital_dir == 'W')
pos = -pos;
snprintf(dauth, sizeof(dauth), "dvb-bouquet://dvbs,%d/%s", pos, name);
char buf[16];
dvb_sat_position_to_str(dvb_sat_position(mc), buf, sizeof(buf));
snprintf(dauth, sizeof(dauth), "dvb-bouquet://dvbs,%s/%s", buf, name);
}
} else if (idnode_is_instance(&mux->mm_id, &dvb_mux_dvbt_class)) {
snprintf(dauth, sizeof(dauth), "dvb-bouquet://dvbt/%s", name);
@ -1801,12 +1800,9 @@ psi_tables_dvb ( mpegts_mux_t *mm )
#if ENABLE_MPEGTS_DVB
if (idnode_is_instance(&mm->mm_id, &dvb_mux_dvbs_class)) {
dvb_mux_conf_t *mc = &((dvb_mux_t *)mm)->lm_tuning;
if (mc->dmc_fe_type == DVB_TYPE_S) {
int pos = mc->u.dmc_fe_qpsk.orbital_pos;
if (mc->u.dmc_fe_qpsk.orbital_dir == 'W')
pos = -pos;
dvb_fastscan_each(mm, pos, mc->dmc_fe_freq, psi_tables_dvb_fastscan);
}
if (mc->dmc_fe_type == DVB_TYPE_S)
dvb_fastscan_each(mm, dvb_sat_position(mc),
mc->dmc_fe_freq, psi_tables_dvb_fastscan);
}
#endif
}

View file

@ -842,6 +842,32 @@ dvb_mux_conf_str ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize )
}
}
int
dvb_sat_position(const dvb_mux_conf_t *mc)
{
int pos = mc->u.dmc_fe_qpsk.orbital_pos;
assert(mc->dmc_fe_type == DVB_TYPE_S);
if (!mc->u.dmc_fe_qpsk.orbital_dir)
return INT_MAX;
if (mc->u.dmc_fe_qpsk.orbital_dir == 'W')
return -pos;
return pos;
}
const char *
dvb_sat_position_to_str(int position, char *buf, size_t buflen)
{
const int dec = position % 10;
if (!buf || !buflen)
return "";
snprintf(buf, buflen, "%d", position / 10);
if (dec)
snprintf(buf + strlen(buf), buflen - strlen(buf), ".%d", dec);
snprintf(buf + strlen(buf), buflen - strlen(buf), "%c", dec < 0 ? 'W' : 'E');
return buf;
}
#endif /* ENABLE_MPEGTS_DVB */
/**