} layers[3];
} dvb_isdbt_config_t;
-typedef struct dvb_fe_vchan {
+typedef struct dvb_cablecard_config {
uint32_t num;
uint16_t minor;
char *name;
-} dvb_fe_vchan_t;
+} dvb_cablecard_config_t;
typedef struct dvb_mux_conf
{
dvb_qam_config_t dmc_fe_qam;
dvb_ofdm_config_t dmc_fe_ofdm;
dvb_isdbt_config_t dmc_fe_isdbt;
+ dvb_cablecard_config_t dmc_fe_cablecard;
} u;
- dvb_fe_vchan_t dmc_fe_vchan;
// For scan file configurations
LIST_ENTRY(dvb_mux_conf) dmc_link;
static int
dvb_mux_conf_str_cablecard(dvb_mux_conf_t *dmc, char *buf, size_t bufsize)
{
- if (!dmc->dmc_fe_vchan.minor)
+ if (!dmc->u.dmc_fe_cablecard.minor)
return snprintf(buf, bufsize, "%s channel %u",
dvb_type2str(dmc->dmc_fe_type),
- dmc->dmc_fe_vchan.num);
+ dmc->u.dmc_fe_cablecard.num);
else
return snprintf(buf, bufsize, "%s channel %u.%u",
dvb_type2str(dmc->dmc_fe_type),
- dmc->dmc_fe_vchan.num,
- dmc->dmc_fe_vchan.minor);
+ dmc->u.dmc_fe_cablecard.num,
+ dmc->u.dmc_fe_cablecard.minor);
}
static int
{
dvb_mux_t *lm = (dvb_mux_t *)o;
- if (!lm->lm_tuning.dmc_fe_vchan.minor)
+ if (!lm->lm_tuning.u.dmc_fe_cablecard.minor)
snprintf(prop_sbuf, PROP_SBUF_LEN, "%u",
- lm->lm_tuning.dmc_fe_vchan.num);
+ lm->lm_tuning.u.dmc_fe_cablecard.num);
else
snprintf(prop_sbuf, PROP_SBUF_LEN, "%u.%u",
- lm->lm_tuning.dmc_fe_vchan.num,
- lm->lm_tuning.dmc_fe_vchan.minor);
+ lm->lm_tuning.u.dmc_fe_cablecard.num,
+ lm->lm_tuning.u.dmc_fe_cablecard.minor);
return &prop_sbuf_ptr;
}
int r;
r = sscanf(v, "%u%*[.-]%hu",
- &lm->lm_tuning.dmc_fe_vchan.num,
- &lm->lm_tuning.dmc_fe_vchan.minor);
+ &lm->lm_tuning.u.dmc_fe_cablecard.num,
+ &lm->lm_tuning.u.dmc_fe_cablecard.minor);
switch (r) {
case 0:
return 1;
case 1:
- lm->lm_tuning.dmc_fe_vchan.minor = 0;
+ lm->lm_tuning.u.dmc_fe_cablecard.minor = 0;
}
return 0;
}
.id = "vchan_name",
.name = N_("Callsign"),
.desc = N_("The channel's name or callsign as set by the cable provider."),
- .off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_vchan.name),
+ .off = offsetof(dvb_mux_t, lm_tuning.u.dmc_fe_cablecard.name),
.opts = PO_RDONLY,
},
{}
char extra[8], buf2[5], *p;
if (lm->lm_tuning.dmc_fe_type == DVB_TYPE_CABLECARD) {
- if (!lm->lm_tuning.dmc_fe_vchan.minor)
- snprintf(buf, len, "%u", lm->lm_tuning.dmc_fe_vchan.num);
+ if (!lm->lm_tuning.u.dmc_fe_cablecard.minor)
+ snprintf(buf, len, "%u", lm->lm_tuning.u.dmc_fe_cablecard.num);
else
snprintf(buf, len, "%u.%u",
- lm->lm_tuning.dmc_fe_vchan.num,
- lm->lm_tuning.dmc_fe_vchan.minor);
+ lm->lm_tuning.u.dmc_fe_cablecard.num,
+ lm->lm_tuning.u.dmc_fe_cablecard.minor);
} else {
if (ln->ln_type == DVB_TYPE_S) {
const char *s = dvb_pol2str(lm->lm_tuning.u.dmc_fe_qpsk.polarisation);
if (!s->s_dvb_provider && ln->mn_provider_network_name)
s->s_dvb_provider = strdup(ln->mn_provider_network_name);
if (!s->s_dvb_channel_num)
- s->s_dvb_channel_num = lm->lm_tuning.dmc_fe_vchan.num;
- if (!s->s_dvb_channel_minor && lm->lm_tuning.dmc_fe_vchan.minor)
- s->s_dvb_channel_minor = lm->lm_tuning.dmc_fe_vchan.minor;
- if (!s->s_dvb_svcname && lm->lm_tuning.dmc_fe_vchan.name)
- s->s_dvb_svcname = strdup(lm->lm_tuning.dmc_fe_vchan.name);
+ s->s_dvb_channel_num = lm->lm_tuning.u.dmc_fe_cablecard.num;
+ if (!s->s_dvb_channel_minor && lm->lm_tuning.u.dmc_fe_cablecard.minor)
+ s->s_dvb_channel_minor = lm->lm_tuning.u.dmc_fe_cablecard.minor;
+ if (!s->s_dvb_svcname && lm->lm_tuning.u.dmc_fe_cablecard.name)
+ s->s_dvb_svcname = strdup(lm->lm_tuning.u.dmc_fe_cablecard.name);
}
return s;
pthread_mutex_unlock(&hfe->hf_hdhomerun_device_mutex);
if (res < 1)
tvhwarn(LS_TVHDHOMERUN, "tuner_vstatus (%d)", res);
- lm->lm_tuning.dmc_fe_vchan.name = strdup(tuner_vstatus.name);
+ lm->lm_tuning.u.dmc_fe_cablecard.name = strdup(tuner_vstatus.name);
sscanf(strstr(tuner_status.channel, ":"), ":%u", &lm->lm_tuning.dmc_fe_freq);
/* start input thread */
}
break;
case DVB_TYPE_CABLECARD:
- if (!dmc->dmc_fe_vchan.minor)
- snprintf(channel_buf, sizeof(channel_buf), "%u", dmc->dmc_fe_vchan.num);
+ if (!dmc->u.dmc_fe_cablecard.minor)
+ snprintf(channel_buf, sizeof(channel_buf), "%u", dmc->u.dmc_fe_cablecard.num);
else
snprintf(channel_buf, sizeof(channel_buf), "%u.%u",
- dmc->dmc_fe_vchan.num,
- dmc->dmc_fe_vchan.minor);
+ dmc->u.dmc_fe_cablecard.num,
+ dmc->u.dmc_fe_cablecard.minor);
break;
default:
snprintf(channel_buf, sizeof(channel_buf), "auto:%u", dmc->dmc_fe_freq);