]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Fix #339 - added configurable grace period per adapter.
authorAdam Sutton <dev@adamsutton.me.uk>
Fri, 18 Jan 2013 16:59:51 +0000 (16:59 +0000)
committerAdam Sutton <dev@adamsutton.me.uk>
Sun, 20 Jan 2013 12:28:22 +0000 (12:28 +0000)
src/dvb/dvb.h
src/dvb/dvb_adapter.c
src/dvb/dvb_service.c
src/webui/extjs_dvb.c
src/webui/static/app/dvb.js

index 5ff64f63329070e64dcdb63b38767c669833f18f..14e8ef6823688f953bea7622df2f36f548a8553c 100644 (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);
index 6a1b1cc5ef29bc87deac92e3d710cba636eda97d..86e42c315e0666ca0063d63e0d937427d70c61b3 100644 (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;
index 5ca5a29e6ba44de11ce457db3014854a07788076..c927ec3ea71750ce3fcbacd6a370171b1a1013fc 100644 (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;
 }
 
index 0919e5ac4fbce78999e635d629a2f82a29ff1f0e..4aefa6b721c32b5c665a0d537e0acf0452635c40 100644 (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));
 
index 5710640aea225ca39931f036d15e6df77df32d94..eeca7090f7c6dc204fb1cfb04783e3b3338388c6 100644 (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'