cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the device (as far as the driver allows this)

This commit is contained in:
Klaus Schmidinger 2010-04-04 11:37:10 +02:00
parent d23f609dd8
commit 1bf0c3d23a
2 changed files with 14 additions and 3 deletions

View File

@ -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).

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