From ac44e6f2ae245908800a9fefe53828ef05a023d1 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Wed, 15 Jan 2014 10:21:48 +0100 Subject: [PATCH] Added logging the supported system ids of a CAM --- HISTORY | 3 ++- ci.c | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 94825ad9..4fa87095 100644 --- a/HISTORY +++ b/HISTORY @@ -8132,7 +8132,7 @@ Video Disk Recorder Revision History and also to use the correct directory with --edit (the latter reported by Marko Mäkelä). -2014-01-14: Version 2.1.4 +2014-01-15: Version 2.1.4 - Updated 'sources.conf' (thanks to Antti Hartikainen). - cFont::CreateFont() now returns a dummy font in case there are no fonts installed. @@ -8142,3 +8142,4 @@ Video Disk Recorder Revision History that are implemented in a plugin. - Fixed sending CA descriptors to CAMs in case a cReceiver is not used for a recording or live view, like e.g. streaming clients (thanks to Mariusz Bialonczyk). +- Added logging the supported system ids of a CAM. diff --git a/ci.c b/ci.c index 0336a7bf..90903fbd 100644 --- a/ci.c +++ b/ci.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.c 3.6 2014/01/14 14:36:29 kls Exp $ + * $Id: ci.c 3.7 2014/01/15 10:20:48 kls Exp $ */ #include "ci.h" @@ -723,11 +723,13 @@ void cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data) switch (Tag) { case AOT_CA_INFO: { dbgprotocol("Slot %d: <== Ca Info (%d)", Tc()->CamSlot()->SlotNumber(), SessionId()); + cString Ids; numCaSystemIds = 0; int l = 0; const uint8_t *d = GetData(Data, l); while (l > 1) { uint16_t id = ((uint16_t)(*d) << 8) | *(d + 1); + Ids = cString::sprintf("%s %04X", *Ids ? *Ids : "", id); dbgprotocol(" %04X", id); d += 2; l -= 2; @@ -744,6 +746,7 @@ void cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data) timer.Set(QUERY_WAIT_TIME); // WORKAROUND: Alphacrypt 3.09 doesn't reply to QUERY immediately after reset state = 2; // got ca info } + dsyslog("CAM %d: system ids:%s", Tc()->CamSlot()->SlotNumber(), *Ids ? *Ids : " none"); } break; case AOT_CA_PMT_REPLY: {