]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
* It's now possible to enable/disable the signal quality monitor per
authorAndreas Öman <andreas@lonelycoder.com>
Fri, 8 Jan 2010 09:21:37 +0000 (09:21 +0000)
committerAndreas Öman <andreas@lonelycoder.com>
Fri, 8 Jan 2010 09:21:37 +0000 (09:21 +0000)
    adapter. This is now default off as it seem to mostly cause problems
    for people and it's only useful if you have complex setups with
    multiple adapters, etc.

debian/changelog
src/dvb/dvb.h
src/dvb/dvb_adapter.c
src/dvb/dvb_fe.c
src/webui/extjs.c
src/webui/static/app/dvb.js

index 182f205e73eb3dea32d2046e8c2c315082078390..5831f7afe016ba4cd0e3d1cf741489a6b2da9152 100644 (file)
@@ -5,6 +5,11 @@ hts-tvheadend (2.8) hts; urgency=low
   * Added support for manual creation of DVR entries. Prior to this it
     was only possible to schedule a recording based on EPG entries.
 
+  * It's now possible to enable/disable the signal quality monitor per
+    adapter. This is now default off as it seem to mostly cause problems
+    for people and it's only useful if you have complex setups with
+    multiple adapters, etc.
+
 hts-tvheadend (2.7) hts; urgency=low
 
   * Added support for DVB subtitles. Currently only forwarded over HTSP
index d08fde2eb514a7cf875d2a1180ce9f3892f58f9b..b52b39eae57eaaacf1fdff4678ad8c8f661594c7 100644 (file)
@@ -163,6 +163,7 @@ typedef struct th_dvb_adapter {
   char *tda_identifier;
   uint32_t tda_autodiscovery;
   uint32_t tda_idlescan;
+  uint32_t tda_qmon;
   uint32_t tda_diseqc_version;
   char *tda_displayname;
 
@@ -213,6 +214,8 @@ void dvb_adapter_set_auto_discovery(th_dvb_adapter_t *tda, int on);
 
 void dvb_adapter_set_idlescan(th_dvb_adapter_t *tda, int on);
 
+void dvb_adapter_set_qmon(th_dvb_adapter_t *tda, int on);
+
 void dvb_adapter_set_diseqc_version(th_dvb_adapter_t *tda, unsigned int v);
 
 void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
index 7e0a684a30001a2420613adbcc7fb0b37f180116..5ad5c3ed025e7d50540cc4dd1ebbf0eb062def6f 100644 (file)
@@ -78,6 +78,7 @@ tda_save(th_dvb_adapter_t *tda)
   htsmsg_add_str(m, "displayname", tda->tda_displayname);
   htsmsg_add_u32(m, "autodiscovery", tda->tda_autodiscovery);
   htsmsg_add_u32(m, "idlescan", tda->tda_idlescan);
+  htsmsg_add_u32(m, "qmon", tda->tda_qmon);
   htsmsg_add_u32(m, "diseqc_version", tda->tda_diseqc_version);
   hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
   htsmsg_destroy(m);
@@ -145,6 +146,25 @@ dvb_adapter_set_idlescan(th_dvb_adapter_t *tda, int on)
 }
 
 
+/**
+ *
+ */
+void
+dvb_adapter_set_qmon(th_dvb_adapter_t *tda, int on)
+{
+  if(tda->tda_qmon == on)
+    return;
+
+  lock_assert(&global_lock);
+
+  tvhlog(LOG_NOTICE, "dvb", "Adapter \"%s\" quality monitoring set to: %s",
+        tda->tda_displayname, on ? "On" : "Off");
+
+  tda->tda_qmon = on;
+  tda_save(tda);
+}
+
+
 /**
  *
  */
@@ -298,6 +318,7 @@ dvb_adapter_init(uint32_t adapter_mask)
 
       htsmsg_get_u32(c, "autodiscovery", &tda->tda_autodiscovery);
       htsmsg_get_u32(c, "idlescan", &tda->tda_idlescan);
+      htsmsg_get_u32(c, "qmon", &tda->tda_qmon);
       htsmsg_get_u32(c, "diseqc_version", &tda->tda_diseqc_version);
     }
     htsmsg_destroy(l);
@@ -337,11 +358,14 @@ dvb_adapter_mux_scanner(void *aux)
   }
 
   if(!tda->tda_idlescan && TAILQ_FIRST(&tda->tda_scan_queues[0]) == NULL) {
-    /* Idlescan is disabled and no muxes are bad.
-       If the currently tuned mux is ok, we can stick to it */
+    /* Idlescan is disabled and no muxes are bad */
+
+    if(!tda->tda_qmon)
+      return; // Quality monitoring is disabled
+
+    /* If the currently tuned mux is ok, we can stick to it */
     
     tdmi = tda->tda_mux_current;
-
     if(tdmi != NULL && tdmi->tdmi_quality > 90)
       return;
   }
index b0360746309b662348e7e5b5b546ca68a6b5f7bc..d49e3bf9b77e69d2105ec14dad9cf8c333424b37 100644 (file)
@@ -123,13 +123,17 @@ dvb_fe_monitor(void *aux)
   }
 
   if(status != TDMI_FE_UNKNOWN) {
-    q = tdmi->tdmi_quality + (status - TDMI_FE_OK + 1);
-    q = MAX(MIN(q, 100), 0);
+    if(tda->tda_qmon) {
+      q = tdmi->tdmi_quality + (status - TDMI_FE_OK + 1);
+      q = MAX(MIN(q, 100), 0);
+    } else {
+      q = 100;
+    }
     if(q != tdmi->tdmi_quality) {
       tdmi->tdmi_quality = q;
       update = 1;
     }
-  }
+  } 
 
   if(update) {
     htsmsg_t *m = htsmsg_create_map();
index bc26d6caa929a94988a80bb89cdc1f5dbb484532..2920c26a8a2b1f7df44d961a6d65eda54c5f7db5 100644 (file)
@@ -1048,6 +1048,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
     htsmsg_add_str(r, "name", tda->tda_displayname);
     htsmsg_add_u32(r, "automux", tda->tda_autodiscovery);
     htsmsg_add_u32(r, "idlescan", tda->tda_idlescan);
+    htsmsg_add_u32(r, "qmon", tda->tda_qmon);
     htsmsg_add_str(r, "diseqcversion", 
                   ((const char *[]){"DiSEqC 1.0 / 2.0",
                                       "DiSEqC 1.1 / 2.1"})
@@ -1065,6 +1066,9 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
     s = http_arg_get(&hc->hc_req_args, "idlescan");
     dvb_adapter_set_idlescan(tda, !!s);
 
+    s = http_arg_get(&hc->hc_req_args, "qmon");
+    dvb_adapter_set_qmon(tda, !!s);
+
     if((s = http_arg_get(&hc->hc_req_args, "diseqcversion")) != NULL) {
       if(!strcmp(s, "DiSEqC 1.0 / 2.0"))
        dvb_adapter_set_diseqc_version(tda, 0);
index 8a5ee629ac3c95465f19a810e37b5d095326800b..9dde4a332cc2d477c6965153367b23e9c16c0527 100644 (file)
@@ -1008,7 +1008,7 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
 
     var confreader = new Ext.data.JsonReader({
        root: 'dvbadapters'
-    }, ['name', 'automux', 'idlescan', 'diseqcversion']);
+    }, ['name', 'automux', 'idlescan', 'diseqcversion', 'qmon']);
 
     
     function saveConfForm () {
@@ -1032,6 +1032,10 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
        new Ext.form.Checkbox({
            fieldLabel: 'Idle scanning',
            name: 'idlescan'
+       }),
+       new Ext.form.Checkbox({
+           fieldLabel: 'Monitor signal quality',
+           name: 'qmon'
        })
     ];
 
@@ -1057,7 +1061,7 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
        style:'margin:10px',
        bodyStyle:'padding:5px',
        labelAlign: 'right',
-       labelWidth: 110,
+       labelWidth: 130,
        waitMsgTarget: true,
        reader: confreader,
        defaultType: 'textfield',