Fix #339 - added configurable grace period per adapter.

This commit is contained in:
Adam Sutton 2013-01-18 16:59:51 +00:00
parent 39a2272b56
commit 762b153bc1
5 changed files with 33 additions and 1 deletions

View file

@ -217,6 +217,7 @@ typedef struct th_dvb_adapter {
uint32_t tda_diseqc_repeats;
uint32_t tda_disable_pmt_monitor;
int32_t tda_full_mux_rx;
uint32_t tda_grace_period;
char *tda_displayname;
char *tda_fe_path;
@ -374,6 +375,8 @@ void dvb_adapter_set_disable_pmt_monitor(th_dvb_adapter_t *tda, int on);
void dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int r);
void dvb_adapter_set_grace_period(th_dvb_adapter_t *tda, uint32_t p);
void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
void dvb_adapter_clean(th_dvb_adapter_t *tda);

View file

@ -106,6 +106,7 @@ tda_save(th_dvb_adapter_t *tda)
htsmsg_add_u32(m, "skip_initialscan", tda->tda_skip_initialscan);
htsmsg_add_u32(m, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
htsmsg_add_s32(m, "full_mux_rx", tda->tda_full_mux_rx);
htsmsg_add_u32(m, "grace_period", tda->tda_grace_period);
hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
htsmsg_destroy(m);
}
@ -424,6 +425,22 @@ dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int on)
tda_save(tda);
}
/**
*
*/
void
dvb_adapter_set_grace_period(th_dvb_adapter_t *tda, uint32_t p)
{
if (tda->tda_grace_period == p)
return;
tvhlog(LOG_NOTICE, "dvb",
"Adapter \"%s\" set grace period to %d", tda->tda_displayname, p);
tda->tda_grace_period = p;
tda_save(tda);
}
/**
*
@ -776,6 +793,8 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
htsmsg_get_u32(c, "extrapriority", &tda->tda_extrapriority);
htsmsg_get_u32(c, "skip_initialscan", &tda->tda_skip_initialscan);
htsmsg_get_u32(c, "disable_pmt_monitor", &tda->tda_disable_pmt_monitor);
if (htsmsg_get_u32(c, "grace_period", &tda->tda_grace_period))
tda->tda_grace_period = 10;
if (htsmsg_get_s32(c, "full_mux_rx", &tda->tda_full_mux_rx))
if (!htsmsg_get_u32(c, "disable_full_mux_rx", &u32) && u32)
tda->tda_full_mux_rx = 0;

View file

@ -339,6 +339,8 @@ dvb_service_setsourceinfo(service_t *t, struct source_info *si)
static int
dvb_grace_period(service_t *t)
{
if (t->s_dvb_mux_instance && t->s_dvb_mux_instance->tdmi_adapter)
return t->s_dvb_mux_instance->tdmi_adapter->tda_grace_period ?: 10;
return 10;
}

View file

@ -159,6 +159,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
htsmsg_add_u32(r, "nitoid", tda->tda_nitoid);
htsmsg_add_u32(r, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
htsmsg_add_u32(r, "full_mux_rx", tda->tda_full_mux_rx+1);
htsmsg_add_u32(r, "grace_period", tda->tda_grace_period);
htsmsg_add_str(r, "diseqcversion",
((const char *[]){"DiSEqC 1.0 / 2.0",
"DiSEqC 1.1 / 2.1"})
@ -207,6 +208,9 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
s = http_arg_get(&hc->hc_req_args, "full_mux_rx");
dvb_adapter_set_full_mux_rx(tda, atoi(s)-1);
s = http_arg_get(&hc->hc_req_args, "grace_period");
dvb_adapter_set_grace_period(tda, atoi(s));
if((s = http_arg_get(&hc->hc_req_args, "nitoid")) != NULL)
dvb_adapter_set_nitoid(tda, atoi(s));

View file

@ -1165,7 +1165,7 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
}, [ 'name', 'enabled', 'automux', 'skip_initialscan', 'idlescan', 'diseqcversion',
'diseqcrepeats', 'qmon', 'skip_checksubscr',
'poweroff', 'sidtochan', 'nitoid', 'extrapriority',
,'disable_pmt_monitor', 'full_mux_rx', 'idleclose' ]);
,'disable_pmt_monitor', 'full_mux_rx', 'idleclose', 'grace_period' ]);
function saveConfForm() {
confform.getForm().submit({
@ -1228,6 +1228,10 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
fields: [ 'num', 'str' ],
store : [ [0, 'Auto'], [1, 'Off'], [2, 'On'] ]
}),
new Ext.form.NumberField({
fieldLabel: 'Grace Period',
name: 'grace_period'
}),
new Ext.form.Checkbox({
fieldLabel : 'Disable PMT monitoring',
name : 'disable_pmt_monitor'