From: Flole Date: Mon, 11 Feb 2019 13:59:40 +0000 (+0100) Subject: Added compatibility mode for SAT-IP tuners that mess up tuner numbers, for example... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39db47829b65f140f337d4af3110a8906fed6ff8;p=thirdparty%2Ftvheadend.git Added compatibility mode for SAT-IP tuners that mess up tuner numbers, for example FritzBox 6490/6590 --- diff --git a/src/input/mpegts/satip/satip.c b/src/input/mpegts/satip/satip.c index 9733565c7..f4170a71a 100644 --- a/src/input/mpegts/satip/satip.c +++ b/src/input/mpegts/satip/satip.c @@ -372,6 +372,16 @@ const idclass_t satip_device_class = .opts = PO_ADVANCED, .off = offsetof(satip_device_t, sd_disable_workarounds), }, + { + .type = PT_BOOL, + .id = "sigtunerno", + .name = N_("Check tuner-number in signal-status messages"), + .desc = N_("This is a workaround for some tuners that mess up " + "the numbers of tuners. Turn this off when you are not " + "seeing signal strength on all tuners but only on some."), + .opts = PO_ADVANCED, + .off = offsetof(satip_device_t, sd_sig_tunerno), + }, { .type = PT_STR, .id = "addr", @@ -620,6 +630,7 @@ satip_device_create( satip_device_info_t *info ) sd->sd_pids_deladd = 1; sd->sd_fe = 1; sd->sd_sig_scale = 240; + sd->sd_sig_tunerno = 1; sd->sd_dbus_allow = 1; if (!tvh_hardware_create0((tvh_hardware_t*)sd, &satip_device_class, diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index 7c2aa8561..dd2ff67f9 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -962,6 +962,7 @@ satip_frontend_decode_rtcp( satip_frontend_t *lfe, const char *name, mpegts_mux_instance_t *mmi, uint8_t *rtcp, size_t len ) { + const satip_device_t *device = lfe->sf_device; signal_state_t status; uint16_t l, sl; char *s; @@ -1034,10 +1035,10 @@ satip_frontend_decode_rtcp( satip_frontend_t *lfe, const char *name, __ver12: if (n < 4) goto fail; - if (atoi(argv[0]) != lfe->sf_number) + if (atoi(argv[0]) != lfe->sf_number && device->sd_sig_tunerno) goto fail; mmi->tii_stats.signal = - atoi(argv[1]) * 0xffff / lfe->sf_device->sd_sig_scale; + atoi(argv[1]) * 0xffff / device->sd_sig_scale; mmi->tii_stats.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE; if (atoi(argv[2]) > 0) @@ -1059,10 +1060,10 @@ __ver12: n = http_tokenize(s, argv, ARRAY_SIZE(argv), ','); if (n < 4) goto fail; - if (atoi(argv[0]) != lfe->sf_number) + if (atoi(argv[0]) != lfe->sf_number && device->sd_sig_tunerno) goto fail; mmi->tii_stats.signal = - atoi(argv[1]) * 0xffff / lfe->sf_device->sd_sig_scale; + atoi(argv[1]) * 0xffff / device->sd_sig_scale; mmi->tii_stats.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE; if (atoi(argv[2]) > 0) @@ -1075,10 +1076,10 @@ __ver12: n = http_tokenize(s + 14, argv, 4, ','); if (n < 4) goto fail; - if (atoi(argv[0]) != lfe->sf_number) + if (atoi(argv[0]) != lfe->sf_number && device->sd_sig_tunerno) goto fail; mmi->tii_stats.signal = - atoi(argv[1]) * 0xffff / lfe->sf_device->sd_sig_scale; + atoi(argv[1]) * 0xffff / device->sd_sig_scale; mmi->tii_stats.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE; if (atoi(argv[2]) > 0) diff --git a/src/input/mpegts/satip/satip_private.h b/src/input/mpegts/satip/satip_private.h index 175004a07..2ab906865 100644 --- a/src/input/mpegts/satip/satip_private.h +++ b/src/input/mpegts/satip/satip_private.h @@ -88,6 +88,7 @@ struct satip_device int sd_pids_deladd; int sd_fe; int sd_sig_scale; + int sd_sig_tunerno; char *sd_tunercfg; int sd_pids21; int sd_pilot_on;