From 1bf0c3d23ad0946186af54ed4835f4db65780e77 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 4 Apr 2010 11:37:10 +0200 Subject: [PATCH] cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the device (as far as the driver allows this) --- HISTORY | 4 +++- dvbdevice.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 21af6021..9edc2311 100644 --- a/HISTORY +++ b/HISTORY @@ -6411,7 +6411,7 @@ Video Disk Recorder Revision History - The new setup option "Folders in timer menu" controls whether the file names in the timer menu are shown with their full folder path. -2010-04-02: Version 1.7.15 +2010-04-04: Version 1.7.15 - Added Macedonian language texts (thanks to Dimitar Petrovski). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). @@ -6420,3 +6420,5 @@ Video Disk Recorder Revision History - The default SVDRP port is now 6419 (registered with ICANN/IANA by Christian Tramnitz). Use '-p 2001' to switch back to the old port if necessary. - Updated the Italian OSD texts (thanks to Diego Pierotto). +- cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the + device (as far as the driver allows this). diff --git a/dvbdevice.c b/dvbdevice.c index 75e0ca84..2dd28713 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 2.32 2010/03/07 13:58:24 kls Exp $ + * $Id: dvbdevice.c 2.33 2010/04/04 11:15:25 kls Exp $ */ #include "dvbdevice.h" @@ -889,7 +889,16 @@ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const if (!cSource::IsSat(Channel->Source())) return DeviceHooksProvidesTransponder(Channel); // source is sufficient for non sat cDvbTransponderParameters dtp(Channel->Parameters()); - if (frontendType == SYS_DVBS && dtp.System() == SYS_DVBS2) + if (dtp.System() == SYS_DVBS2 && frontendType == SYS_DVBS || + dtp.Modulation() == QPSK && !(frontendInfo.caps & FE_CAN_QPSK) || + dtp.Modulation() == QAM_16 && !(frontendInfo.caps & FE_CAN_QAM_16) || + dtp.Modulation() == QAM_32 && !(frontendInfo.caps & FE_CAN_QAM_32) || + dtp.Modulation() == QAM_64 && !(frontendInfo.caps & FE_CAN_QAM_64) || + dtp.Modulation() == QAM_128 && !(frontendInfo.caps & FE_CAN_QAM_128) || + dtp.Modulation() == QAM_256 && !(frontendInfo.caps & FE_CAN_QAM_256) || + dtp.Modulation() == QAM_AUTO && !(frontendInfo.caps & FE_CAN_QAM_AUTO) || + dtp.Modulation() == VSB_8 && !(frontendInfo.caps & FE_CAN_8VSB) || + dtp.Modulation() == VSB_16 && !(frontendInfo.caps & FE_CAN_16VSB)) return false; // requires modulation system which frontend doesn't provide if (!Setup.DiSEqC || Diseqcs.Get(CardIndex() + 1, Channel->Source(), Channel->Frequency(), dtp.Polarization())) return DeviceHooksProvidesTransponder(Channel);