Re: [vdr] vdr 1.5.4: cannot tune a transponder with actuator plugin

2007-06-23 Thread Luca Olivetti
En/na Klaus Schmidinger ha escrit:

 Putting some printf here and there, it seems that's ultimately calling 
 cDevice::SetChannelDevice instead of cDvbDevice::SetChannelDevice, and I 
 don't understand why, since DvbKarte is 0 (the first and only card, 
 which should be a cDvbDevice).
 
 Are you sure that your DVB card is device number 0?
 Maybe the device you use for replaying (a software player?)
 is device 0?

Well, it turns out you're right, the primary (dxr3) device is 0, the dvb 
card is 1 and another software player (xine-plugin) is 2.
I though that dvb devices always cought the lowest numbers, then the 
plugins would start from there.
If I use CardIndex does it always correspond to the dvb device number?
i.e. /dev/dvb/adapter0 - CardIndex =0 ?

Bye
-- 
Luca

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


[vdr] vdr 1.5.4: cannot tune a transponder with actuator plugin

2007-06-21 Thread Luca Olivetti
[sorry if this turns out to be long]

In the actuator plugin main menu, I offer the possibility to tune to a 
transponder on the fly, to either quickly see what's there or to 
trigger a transponder scan.
To do that I have this piece of code that worked find under 1.4.x but 
stopped working under 1.5.4:

void cMainMenuActuator::Tune(bool live)
{
   int Apids[MAXAPIDS + 1] = { 0 };
   int Dpids[MAXDPIDS + 1] = { 0 };
   char ALangs[MAXAPIDS+1][MAXLANGCODE2]={  };
   char DLangs[MAXDPIDS+1][MAXLANGCODE2]={  };
   Apids[0]=menuvalue[MI_APID];
   SChannel-SetPids(menuvalue[MI_VPID],0,Apids,ALangs,Dpids,DLangs,0);
 
SChannel-cChannel::SetSatTransponderData(curSource-Code(),menuvalue[MI_FREQUENCY],Pol,menuvalue[MI_SYMBOLRATE],FEC_AUTO);
   cDevice *myDevice=cDevice::GetDevice(DvbKarte);
   if (myDevice==cDevice::ActualDevice()) HasSwitched=true;
   if (HasSwitched  live) {
 if (cDevice::GetDevice(SChannel,0,true)==myDevice) {
   cDevice::PrimaryDevice()-SwitchChannel(SChannel, HasSwitched);
   return;
 }
   }
   myDevice-SwitchChannel(SChannel, HasSwitched);
}

I.e., it creates a dummy channel with the transponder data currently on 
screen and tries to tune it with the card connected to the motor, 
cDevice::GetDevice(DvbKarte).
Since I don't have a full-featured card,  it's not the primary card, so 
the line that's executed is the last one.
Putting some printf here and there, it seems that's ultimately calling 
cDevice::SetChannelDevice instead of cDvbDevice::SetChannelDevice, and I 
don't understand why, since DvbKarte is 0 (the first and only card, 
which should be a cDvbDevice).

What should I do to adapt to the new vdr?
(BTW, I noticed that also the LoadEpg plugin stopped working, for a 
similar, but not exactly the same, reason: it switches for a split 
second to the channel with the epg data, then goes back to the previous 
one, so it doesn't get any data).

I suppose that I could just use 
cDevice::PrimaryDevice()-SwitchChannel[*], but then I couldn't be sure 
that the transponder will be definitely tuned by the desired card (it 
would be in my case, but it wouldn't when there's more than a dvb-s card).

[*]actually, I tried, but then my pat and sdt filters didn't work, but 
that's a different matter ;-)

Bye
-- 
Luca



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