From: Adam Sutton Date: Sun, 22 Dec 2013 18:46:31 +0000 (+0000) Subject: linuxdvb: move FE status message from trace to debug on change X-Git-Tag: v4.1~2322 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd92bb0ce3ff714c30b47fd179b75b56e02dd58b;p=thirdparty%2Ftvheadend.git linuxdvb: move FE status message from trace to debug on change 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! --- diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c index 4d6d4e050..e5a5d1e49 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c @@ -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 diff --git a/src/input/mpegts/linuxdvb/linuxdvb_private.h b/src/input/mpegts/linuxdvb/linuxdvb_private.h index c43e7b566..06a44fff1 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_private.h +++ b/src/input/mpegts/linuxdvb/linuxdvb_private.h @@ -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; diff --git a/src/tvheadend.h b/src/tvheadend.h index e369df093..a2f1550ba 100644 --- a/src/tvheadend.h +++ b/src/tvheadend.h @@ -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 */