Now retuning if the received transponder's SDT doesn't contain the expected values for NID and TID

This commit is contained in:
Klaus Schmidinger
2020-05-04 08:50:20 +02:00
parent 6e0f5287ea
commit 5705ffbd2b
6 changed files with 65 additions and 8 deletions

View File

@@ -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;