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 );
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);
#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
}
}
}
+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 */
/**