summaryrefslogtreecommitdiff
path: root/dvbdevice.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2020-05-04 08:50:20 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2020-05-04 08:50:20 +0200
commit5705ffbd2ba1cd6644e7bc7b10686963d3d8ef9f (patch)
tree0ca2f43b1c5d9e2674e364bd01ba8cdd30dbac74 /dvbdevice.c
parent6e0f5287ea4df66847f97489f00f2c8214bad605 (diff)
downloadvdr-5705ffbd2ba1cd6644e7bc7b10686963d3d8ef9f.tar.gz
vdr-5705ffbd2ba1cd6644e7bc7b10686963d3d8ef9f.tar.bz2
Now retuning if the received transponder's SDT doesn't contain the expected values for NID and TID
Diffstat (limited to 'dvbdevice.c')
-rw-r--r--dvbdevice.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/dvbdevice.c b/dvbdevice.c
index 70671b30..562d2697 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.c 4.21 2019/05/28 14:40:49 kls Exp $
+ * $Id: dvbdevice.c 4.22 2020/05/04 08:50:20 kls Exp $
*/
#include "dvbdevice.h"
@@ -1701,6 +1701,7 @@ void cDvbTuner::Action(void)
}
}
tunerStatus = tsTuned;
+ device->SectionHandler()->SetStatus(true); // may have been turned off when retuning
Timer.Set(tuneTimeout + (scr ? rand() % SCR_RANDOM_TIMEOUT : 0));
if (positioner)
continue;
@@ -1733,6 +1734,14 @@ void cDvbTuner::Action(void)
isyslog("frontend %d/%d regained lock on channel %d (%s), tp %d", adapter, frontend, channel.Number(), channel.Name(), channel.Transponder());
LostLock = false;
}
+ if (device->SdtFilter()->TransponderWrong()) {
+ isyslog("frontend %d/%d is not receiving transponder %d for channel %d (%s) - retuning", adapter, frontend, channel.Transponder(), channel.Number(), channel.Name());
+ device->SectionHandler()->SetStatus(false);
+ tunerStatus = tsSet;
+ lastDiseqc = NULL;
+ lastSource = 0;
+ continue;
+ }
tunerStatus = tsLocked;
locked.Broadcast();
lastTimeoutReport = 0;