On 05/07/11 20:11, Juergen Lock wrote:
Hi!
There seems to be a change in recent vdr versions regarding NumProvidedSystems() which at least the reelchannelscan plugin uses to tell apart a dvb-s2 tuner from a dvb-s one in a few places, apparently it used to return 2 for a dvb-s2 tuner and now returns 3. Is this intentional?
Yes, it is.
2010-06-06: Version 1.7.15
... - The various modulation types are now taken into account when selecting a device for a recording or live viewing, so that devices that provide more capabilities are spared.
This was done by incrementing numProvidedSystems in cDvbDevice::cDvbDevice() for every additional modulation type it provides.
I'm afraid the result from NumProvidedSystems() is in no way suitable for determining whether the device is DVB-S or DVB-S2.
Klaus
I patched reelchannelscan like below: (would need to check the vdr version to be general of course, this was for 1.7.18; symptom was a manual scan wrote out qam32 modulation into the channels.conf instead of qpsk and of course vdr couldn't tune the new channel(s).)
Thanx! Juergen
--- a/csmenu.c +++ b/csmenu.c @@ -243,7 +243,7 @@ void cMenuChannelscan::TunerDetection() txtstream<< tr("DVB-C - Cable")<< " ("<< tr("Tuner")<< ' '<< tuner + 1<< ')'; stp = CABLE; } else if (device->ProvidesSource(cSource::stSat)) {
if (device->NumProvidedSystems() == 2) {
// if(TunerIsRotor(tuner)) // txtstream<< tr("DVB-S2 - Rotor")<< " ("<< tr("Tuner")<< ' '<< tuner + 1<< ')'; // elseif (device->NumProvidedSystems() == 3) {
--- a/scan.c +++ b/scan.c @@ -421,7 +421,7 @@ void cScan::ScanNitServices() void cScan::ScanDVB_S(cTransponder * tp, cChannel * c) { //const time_t tt = time(NULL);
- int maxmods = device->NumProvidedSystems() == 2? 4 : 2;
int maxmods = device->NumProvidedSystems() == 3? 4 : 2;
// esyslog("%s cTransponder* tp = %x cChannel *c = %x", __PRETTY_FUNCTION__); esyslog("maxmods = %d",maxmods);
@@ -431,7 +431,7 @@ void cScan::ScanDVB_S(cTransponder * tp, ;
// skip HD Transonders on SD Tuner
- if ( !device->NumProvidedSystems() == 2&& static_cast< cSatTransponder *>(tp)->System() == 1)
if ( !device->NumProvidedSystems() == 3&& static_cast< cSatTransponder *>(tp)->System() == 1) return;
unsigned int nRadio = radioChannelNames.size();