Re: dvb-s(2) NumProvidedSystems() vs reelchannelscan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 (device->NumProvidedSystems() == 3) {
  //                    if(TunerIsRotor(tuner))
  //                       txtstream<<  tr("DVB-S2 - Rotor")<<  " ("<<  tr("Tuner")<<  ' '<<  tuner + 1<<  ')';
  //                    else
--- 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();

_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux