]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
linuxdvb: move FE status message from trace to debug on change
authorAdam Sutton <dev@adamsutton.me.uk>
Sun, 22 Dec 2013 18:46:31 +0000 (18:46 +0000)
committerAdam Sutton <dev@adamsutton.me.uk>
Sun, 22 Dec 2013 21:45:53 +0000 (21:45 +0000)
This could still be spammy if the signal isn't clean and keeps going
in and out. But that's just tough luck I guess!

src/input/mpegts/linuxdvb/linuxdvb_frontend.c
src/input/mpegts/linuxdvb/linuxdvb_private.h
src/tvheadend.h

index 4d6d4e05007df145bea35c3d3867fd3bac7e3261..e5a5d1e49604047ee4fce75bc00a8e8fa07f0281 100644 (file)
@@ -294,6 +294,7 @@ linuxdvb_frontend_stop_mux
 
   /* Not locked */
   lfe->lfe_locked = 0;
+  lfe->lfe_status = 0;
 
   /* Ensure it won't happen immediately */
   gtimer_arm(&lfe->lfe_monitor_timer, linuxdvb_frontend_monitor, lfe, 2);
@@ -474,7 +475,19 @@ linuxdvb_frontend_monitor ( void *aux )
     status = SIGNAL_NONE;
 
   /* Set default period */
-  tvhtrace("linuxdvb", "%s - status %d", buf, status);
+  if (fe_status != lfe->lfe_status) {
+    tvhdebug("linuxdvb", "%s - status %7s (%s%s%s%s%s%s)", buf,
+             signal2str(status),
+             (fe_status & FE_HAS_SIGNAL) ?  "SIGNAL"  : "",
+             (fe_status & FE_HAS_CARRIER) ? " | CARRIER" : "",
+             (fe_status & FE_HAS_VITERBI) ? " | VITERBI" : "",
+             (fe_status & FE_HAS_SYNC) ?    " | SYNC"    : "",
+             (fe_status & FE_HAS_LOCK) ?    " | SIGNAL"  : "",
+             (fe_status & FE_TIMEDOUT) ?    "TIMEOUT" : "");
+  } else {
+    tvhtrace("linuxdvb", "%s - status %d (%04X)", buf, status, fe_status);
+  }
+  lfe->lfe_status = fe_status;
 
   /* Get current mux */
   mm = mmi->mmi_mux;
@@ -718,6 +731,8 @@ linuxdvb_frontend_tune0
       return SM_CODE_TUNING_FAILED;
     }
   }
+  lfe->lfe_locked = 0;
+  lfe->lfe_status = 0;
 
   /* S2 tuning */
 #if DVB_API_VERSION >= 5
index c43e7b566f17040973a7b6054aaf951a8af3f47e..06a44fff15d1eab759fd753780e4df113d53c604 100644 (file)
@@ -134,6 +134,7 @@ struct linuxdvb_frontend
    * Tuning
    */
   int                       lfe_locked;
+  fe_status_t               lfe_status;
   time_t                    lfe_monitor;
   gtimer_t                  lfe_monitor_timer;
 
index e369df093a2c1036919bb661ba2dde3d917d10a7..a2f1550ba7d12ca4fc62e6b2b4c281254bfb97b8 100644 (file)
@@ -389,6 +389,20 @@ typedef enum
   SIGNAL_NONE
 } signal_state_t;
 
+static struct strtab signal_statetab[] = {
+  { "GOOD",       SIGNAL_GOOD    },
+  { "BAD",        SIGNAL_BAD     },
+  { "FAINT",      SIGNAL_BAD     },
+  { "NONE",       SIGNAL_BAD     },
+};
+
+static inline const char * signal2str ( signal_state_t st )
+{
+  const char *r = val2str(st, signal_statetab);
+  if (!r) r = "UNKNOWN";
+  return r;
+}
+
 /**
  * Streaming messages are sent from the pad to its receivers
  */