Add support for tuning ATSC adapters

This commit is contained in:
Andreas Öman 2009-08-26 20:39:44 +00:00
parent d73ff68fae
commit 08db2b91c4
5 changed files with 1075 additions and 20 deletions

2
debian/changelog vendored
View file

@ -3,6 +3,8 @@ hts-tvheadend (2.6) hts; urgency=low
* Tvheadend's DVB service probe will now let the channel join tags based
on the service type and DVB provider name.
* Add support for tuning on ATSC adapters
hts-tvheadend (2.5) hts; urgency=low
* If a previosly detected DVB adapter was not present during startup,

View file

@ -500,12 +500,6 @@ dvb_adapter_input_dvr(void *aux)
}
}
static struct strtab deliverysystemtab[] = {
{"DVB-S", FE_QPSK},
{"DVB-T", FE_OFDM},
{"DVB-C", FE_QAM},
};
/**
*
@ -548,7 +542,7 @@ dvb_adapter_build_msg(th_dvb_adapter_t *tda)
htsmsg_add_str(m, "devicename", tda->tda_fe_info->name);
htsmsg_add_str(m, "deliverySystem",
val2str(tda->tda_type, deliverysystemtab) ?: "");
dvb_adaptertype_to_str(tda->tda_type) ?: "");
htsmsg_add_u32(m, "satConf", tda->tda_sat);

View file

@ -391,6 +391,10 @@ dvb_mux_save(th_dvb_mux_instance_t *tdmi)
break;
case FE_ATSC:
htsmsg_add_u32(m, "symbol_rate", f->u.qam.symbol_rate);
htsmsg_add_str(m, "constellation",
val2str(f->u.vsb.modulation, qamtab));
break;
}
@ -494,6 +498,15 @@ tdmi_create_by_msg(th_dvb_adapter_t *tda, htsmsg_t *m, const char *identifier)
break;
case FE_ATSC:
htsmsg_get_u32(m, "symbol_rate", &f.u.qam.symbol_rate);
if(f.u.qam.symbol_rate == 0)
return "Invalid symbol rate";
s = htsmsg_get_str(m, "constellation");
if(s == NULL || (r = str2val(s, qamtab)) < 0)
return "Invalid VSB constellation";
f.u.vsb.modulation = r;
break;
}
@ -645,6 +658,10 @@ dvb_mux_modulation(char *buf, size_t size, th_dvb_mux_instance_t *tdmi)
val2str(f->u.qam.modulation, qamtab),
f->u.qpsk.symbol_rate / 1000);
break;
case FE_ATSC:
snprintf(buf, size, "%s", val2str(f->u.vsb.modulation, qamtab));
break;
default:
snprintf(buf, size, "Unknown");
break;
@ -782,6 +799,16 @@ dvb_mux_add_by_params(th_dvb_adapter_t *tda,
f.u.qpsk.symbol_rate = symrate;
f.u.qpsk.fec_inner = fec;
break;
case FE_ATSC:
f.frequency = freq;
if(!val2str(constellation, qamtab))
return "Invalid VSB constellation";
f.u.vsb.modulation = constellation;
break;
}
if(satconf != NULL) {

View file

@ -90,6 +90,10 @@ dvb_mux_preconf_add(th_dvb_adapter_t *tda, const struct mux *m, int num,
f.u.qam.modulation = m->constellation;
f.u.qam.fec_inner = m->fec;
break;
case FE_ATSC:
f.u.vsb.modulation = m->constellation;
break;
}
dvb_mux_create(tda, &f, polarisation, sc, 0xffff, NULL, source, 1, NULL);
@ -125,6 +129,10 @@ dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id,
r = regions_DVBT;
nr = sizeof(regions_DVBT) / sizeof(regions_DVBT[0]);
break;
case FE_ATSC:
r = regions_ATSC;
nr = sizeof(regions_ATSC) / sizeof(regions_ATSC[0]);
break;
default:
return -1;
}
@ -167,6 +175,10 @@ dvb_mux_preconf_get_node(int fetype, const char *node)
r = regions_DVBT;
nr = sizeof(regions_DVBT) / sizeof(regions_DVBT[0]);
break;
case FE_ATSC:
r = regions_ATSC;
nr = sizeof(regions_ATSC) / sizeof(regions_ATSC[0]);
break;
default:
return NULL;
}

File diff suppressed because it is too large Load diff