Re: [vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-22 Thread Rolf Ahrenberg

On Sat, 21 May 2011, Klaus Schmidinger wrote:


I'm thinking about giving cDevice a function that returns
a bit masked value, identifying the delivery systems it
provides. Probably using the fe_delivery_system_t constants
from the LinuxDVB API.


Could you take again a look at my frontend facilities patch and modify 
the current cDevice API a bit further at the same time?


BR,
--
rofa

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


Re: [vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-21 Thread Klaus Schmidinger

On 05/21/11 16:55, Juergen Lock wrote:

In article<4dd7c61e.8060...@tvdr.de>  you write:

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.


Ah I see.  Curious, what is the third modulation used on dvb-s(2) in
addition to qpsk and 8psk?


Originally it was just 2 for DVB-S and DVB-S2.
Then somebody came up with the request that the various
FE_CAN_... flags should also be taken into account
when trying to spare devices with more capabilities
than others.

The whole idea behind NumProvidedSystems() is just to
have a way of deciding which device to use for recording
if they are otherwise equivalent. One with more capabilities
should be preserved in case an other channel requires those.
The actual value of NumProvidedSystems() has no real meaning.
It's just "more" or "less".


I'm afraid the result from NumProvidedSystems() is in no way suitable
for determining whether the device is DVB-S or DVB-S2.


  Ok so what would then be the recommended way?


I'm afraid there is none - at least at the moment.

I'm thinking about giving cDevice a function that returns
a bit masked value, identifying the delivery systems it
provides. Probably using the fe_delivery_system_t constants
from the LinuxDVB API.

Klaus

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


Re: [vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-21 Thread Juergen Lock
In article <4dd7c61e.8060...@tvdr.de> you write:
>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.
>
Ah I see.  Curious, what is the third modulation used on dvb-s(2) in
addition to qpsk and 8psk?

>I'm afraid the result from NumProvidedSystems() is in no way suitable
>for determining whether the device is DVB-S or DVB-S2.

 Ok so what would then be the recommended way?

 Wondering... :)
Juergen

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


Re: [vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-21 Thread Klaus Schmidinger

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@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-08 Thread Juergen Lock
On Sat, May 07, 2011 at 08:11:20PM +0200, 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?
> 
>  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();

Sorry for following up to myself, but I forgot to say this is the
0.6.1+beta1.7.15 reelchannelscan snapshot that yavdr uses, ported
to FreeBSD:

http://www.freshports.org/multimedia/vdr-plugin-reelchannelscan/


http://ppa.launchpad.net/yavdr/stable-vdr/ubuntu/pool/main/v/vdr-plugin-reelchannelscan/vdr-plugin-reelchannelscan_0.6.1+beta1.7.15.orig.tar.gz

 ..and you can see all the FreeBSD patches I applied here:


http://www.freebsd.org/cgi/cvsweb.cgi/ports/multimedia/vdr-plugin-reelchannelscan/files/

files/patch-scan.c also should be relevant on non-FreeBSD too:

--- a/scan.c
+++ b/scan.c
@@ -197,7 +197,7 @@ bool cScan::StartScanning(cScanParameter
 
 #ifndef DEVICE_ATTRIBUTES
 char buffer[265];
-snprintf(buffer, sizeof(buffer), "/dev/dvb/adapter%d/frontend0", cardnr);
+snprintf(buffer, sizeof(buffer), "/dev/dvb/adapter%d/frontend0", 
cDevice::GetDevice(cardnr)->CardIndex());
 
 fd_frontend = open(buffer, O_RDONLY | O_NONBLOCK);
 if (fd_frontend <= 0) {
@@ -932,12 +932,12 @@ void cScan::Action()
   char *strDate;
   asprintf(&strDate,"%s", asctime(localtime(&tt)));
   strDate[strlen(strDate)-1] = 0;
-  fprintf(fp,"\n\n%s tp=%4d, %6d(%d) TV:%4d Radio:%4d in %3d 
sec",strDate,i , frequency, !alreadyScanned, tvChannelNames.size()-ntv, 
radioChannelNames.size()-nradio, (int)difftime(t_out,t_in) );
+  fprintf(fp,"\n\n%s tp=%4d, %6d(%d) TV:%4ld Radio:%4ld in %3d 
sec",strDate,i , frequency, !alreadyScanned, tvChannelNames.size()-ntv, 
radioChannelNames.size()-nradio, (int)difftime(t_out,t_in) );
   fclose(fp);
 
   fp = fopen("/tmp/tScan.log","a");
   //fprintf(fp,"\n\n%s tp=%4d, %6d/%2d/%5d TV:%4d Radio:%4d in 
%3dsec",strDate,i , frequency,(*tp)->Modulation(), (*tp)->Symbolrate(), 
tvChannelNames.size()-ntv, radioChannelNames.size()-nradio, 
(int)difftime(t_out,t_in) );
-  fprintf(fp,"\n\ntp=%4d, %6d/%2d/%5d TV:%4d Radio:%4d in %3dsec 
new:%3d",i , frequency,(*tp)->Modulation(), (*tp)->Symbolrate(), 
tvChannelNames.size()-ntv, radioChannelNames.size()-nradio, 
(int)difftime(t_out,t_in),tvChannelNames.size()-ntv+ 
radioChannelNames.size()-nradio );
+  fprintf(fp,"\n\ntp=%4d, %6d/%2d/%5d TV:%4ld Radio:%4ld in %3dsec 
new:%3ld",i , frequency,(*tp)->Modulation(), (*tp)->Symbolrate(), 
tvChannelNames.size()-ntv, radioChannelNames.size()-nradio, 
(int)difftime(t_out,t_in),tvChannelNames.size()-ntv+ 
radioChannelNames.size()-nradio );
   fclose(fp);
 
   free(strDate);

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


[vdr] dvb-s(2) NumProvidedSystems() vs reelchannelscan

2011-05-07 Thread Juergen Lock
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?

 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@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr