Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: CAM Skycrypt - connection lost after editing
- To: vdr@linuxtv.org
- Subject: [vdr] Re: CAM Skycrypt - connection lost after editing
- From: Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>
- Date: Sun, 07 Sep 2003 16:39:11 +0200
- Content-type: text/plain; charset=us-ascii
- Organization: CadSoft Computer GmbH
- References: <3F4C79FA.6030608@heraklit.ch> <3F4C9D8C.8060100@Wintermann-DatenService.de> <3F4CDA7F.4090902@heraklit.ch>
- Reply-to: vdr@linuxtv.org
- Sender: vdr-bounce@linuxtv.org
Wolfgang Goeller wrote:
>
> Hans-Peter Raschke wrote:
>
> > did you try the -ll version with my recently posted patch?
>
> Well, at first not - i tried with the -ll version but even
> cold reboot did bring no success. Then I used the icam-version
> and that was it. Seems to work reliable.
Please take VDR 1.2.5pre2, the latest CVS driver (both available
in ftp://ftp.cadsoft.de/vdr/Developer) and apply this patch
to VDR/dvbdevice.c:
--- dvbdevice.c 2003/09/06 13:19:33 1.64
+++ dvbdevice.c 2003/09/07 14:28:00
@@ -272,20 +272,29 @@
if (ciHandler) {
if (ciHandler->Process() && useCa) {
if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed
+ static bool CaMode = false;
for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) {
uchar buffer[2048];
int length = cSIProcessor::GetCaDescriptors(channel.Source(), channel.Frequency(), channel.Sid(), ciHandler->GetCaSystemIds(Slot), sizeof(buffer), buffer);
if (length > 0) {
cCiCaPmt CaPmt(channel.Sid());
- CaPmt.AddCaDescriptor(length, buffer);
- if (channel.Vpid())
+ if (!CaMode) CaPmt.AddCaDescriptor(length, buffer);
+ if (channel.Vpid()) {
CaPmt.AddPid(channel.Vpid());
- if (channel.Apid1())
+ if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+ }
+ if (channel.Apid1()) {
CaPmt.AddPid(channel.Apid1());
- if (channel.Apid2())
+ if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+ }
+ if (channel.Apid2()) {
CaPmt.AddPid(channel.Apid2());
- if (channel.Dpid1())
+ if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+ }
+ if (channel.Dpid1()) {
CaPmt.AddPid(channel.Dpid1());
+ if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+ }
if (ciHandler->SetCaPmt(CaPmt, Slot)) {
tunerStatus = tsCam;
startTime = 0;
With this version please try receiving encrypted channels, once leaving 'CaMode'
at the value 'false', then setting it to true.
Can you observe a different behaviour in the two cases?
Does it work in any of them?
NB: make sure you use the LL firmware (the logfile should list "...firmware supports
CI link layer interface").
Klaus
--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.
Home |
Main Index |
Thread Index