From 005fa59dd631ed1b0fafe389ede75b166eaeeba1 Mon Sep 17 00:00:00 2001 From: Rolf Ahrenberg Date: Sat, 22 Nov 2014 17:04:32 +0200 Subject: [PATCH] Tweaked tuning. --- server.c | 5 ++++- tuner.c | 23 +++++++++++++---------- tuner.h | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/server.c b/server.c index 9001dab..fb49a2b 100644 --- a/server.c +++ b/server.c @@ -37,7 +37,10 @@ cSatipServer::cSatipServer(const char *addressP, const char *modelP, const char quirkM |= eSatipQuirkSessionId; // These devices contain a play (add/delpids) parameter bug: if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C - quirkM |= eSatipQuirkPlayPids | eSatipQuirkForceLock; + quirkM |= eSatipQuirkPlayPids; + // These devices contain a frontend locking bug: + if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C + quirkM |= eSatipQuirkForceLock; } char *s, *p = strdup(*modelM); char *r = strtok_r(p, ",", &s); diff --git a/tuner.c b/tuner.c index 8cd8164..9ede756 100644 --- a/tuner.c +++ b/tuner.c @@ -116,17 +116,20 @@ void cSatipTuner::Action(void) case tsTuned: //debug("cSatipTuner::%s(): tsTuned [device %d]", __FUNCTION__, deviceIdM); reConnectM.Set(eConnectTimeoutMs); - // Read reception statistics via DESCRIBE and RTCP - if (hasLockM || ReadReceptionStatus()) { - // Quirk for devices without valid reception data - if (currentServerM && currentServerM->Quirk(cSatipServer::eSatipQuirkForceLock)) { - hasLockM = true; - signalStrengthM = eDefaultSignalStrength; - signalQualityM = eDefaultSignalQuality; - } - if (hasLockM) - RequestState(tsLocked); + // Quirk for devices without valid reception data + if (currentServerM && currentServerM->Quirk(cSatipServer::eSatipQuirkForceLock)) { + hasLockM = true; + signalStrengthM = eDefaultSignalStrength; + signalQualityM = eDefaultSignalQuality; } + // Read reception statistics via DESCRIBE + else if (!ReadReceptionStatus()) { + error("Reading reception status failed - re-tuning [device %d]", deviceIdM); + RequestState(tsSet); + break; + } + if (hasLockM) + RequestState(tsLocked); break; case tsLocked: //debug("cSatipTuner::%s(): tsLocked [device %d]", __FUNCTION__, deviceIdM); diff --git a/tuner.h b/tuner.h index e644842..99b331a 100644 --- a/tuner.h +++ b/tuner.h @@ -52,7 +52,7 @@ private: eDefaultSignalStrength = 15, eDefaultSignalQuality = 224, eApplicationMaxSizeB = 1500, - eSleepTimeoutMs = 500, // in milliseconds + eSleepTimeoutMs = 500, // in milliseconds eStatusUpdateTimeoutMs = 1000, // in milliseconds ePidUpdateIntervalMs = 250, // in milliseconds eConnectTimeoutMs = 5000, // in milliseconds