summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY4
-rw-r--r--ci.c5
-rw-r--r--ci.h4
-rw-r--r--dvbdevice.c12
4 files changed, 7 insertions, 18 deletions
diff --git a/HISTORY b/HISTORY
index 497732a1..adc8c45f 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2034,10 +2034,12 @@ Video Disk Recorder Revision History
- Fixed handling of Ca parameters with values <= MAXDEVICES, which don't indicate
an actual encrypted channel (thanks to Stefan Huelswitt for reporting this one).
-2003-04-18: Version 1.1.28
+2003-04-19: Version 1.1.28
- Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
Schultz).
- Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
- Now only those Ca descriptors are sent to a CAM that are actually understood
by that CAM.
+- Re-enabled CAM communication during replay and on non-Ca channels. This requires
+ a DVB driver with firmware version 2613 or later.
diff --git a/ci.c b/ci.c
index 6cbb0756..31461ea2 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 1.12 2003/04/18 14:16:32 kls Exp $
+ * $Id: ci.c 1.13 2003/04/19 10:59:53 kls Exp $
*/
/* XXX TODO
@@ -1286,7 +1286,6 @@ void cCiCaPmt::AddCaDescriptor(int Length, uint8_t *Data)
cCiHandler::cCiHandler(int Fd, int NumSlots)
{
numSlots = NumSlots;
- enabled = true;
newCaSupport = false;
for (int i = 0; i < MAX_CI_SESSION; i++)
sessions[i] = NULL;
@@ -1443,8 +1442,6 @@ int cCiHandler::CloseAllSessions(int Slot)
bool cCiHandler::Process(void)
{
- if (!enabled)
- return false;
bool result = true;
cMutexLock MutexLock(&mutex);
for (int Slot = 0; Slot < numSlots; Slot++) {
diff --git a/ci.h b/ci.h
index 0c247f82..07ca411b 100644
--- a/ci.h
+++ b/ci.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: ci.h 1.5 2003/04/18 12:41:48 kls Exp $
+ * $Id: ci.h 1.6 2003/04/19 10:25:24 kls Exp $
*/
#ifndef __CI_H
@@ -80,7 +80,6 @@ class cCiHandler {
private:
cMutex mutex;
int numSlots;
- bool enabled;
bool newCaSupport;
cCiSession *sessions[MAX_CI_SESSION];
cCiTransportLayer *tpl;
@@ -98,7 +97,6 @@ public:
~cCiHandler();
static cCiHandler *CreateCiHandler(const char *FileName);
int NumSlots(void) { return numSlots; }
- void SetEnabled(bool Enabled) { enabled = Enabled; }
bool Process(void);
bool EnterMenu(int Slot);
cCiMenu *GetMenu(void);
diff --git a/dvbdevice.c b/dvbdevice.c
index 19a7c431..b1c50624 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.c 1.52 2003/04/18 11:35:08 kls Exp $
+ * $Id: dvbdevice.c 1.53 2003/04/19 10:29:09 kls Exp $
*/
#include "dvbdevice.h"
@@ -264,7 +264,7 @@ void cDvbTuner::Action(void)
}
}
if (tunerStatus >= tsLocked) {
- if (ciHandler && channel.Ca() > CACONFBASE) {
+ if (ciHandler) {
if (ciHandler->Process()) {
if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed
for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) {
@@ -777,15 +777,11 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, false));
if (siProcessor)
siProcessor->SetStatus(true);
- if (ciHandler)
- ciHandler->SetEnabled(true);
break;
case pmAudioVideo:
case pmAudioOnlyBlack:
if (siProcessor)
siProcessor->SetStatus(false);
- if (ciHandler)
- ciHandler->SetEnabled(false);
CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true));
CHECK(ioctl(fd_audio, AUDIO_SELECT_SOURCE, AUDIO_SOURCE_MEMORY));
CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, PlayMode == pmAudioVideo));
@@ -796,8 +792,6 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
case pmAudioOnly:
if (siProcessor)
siProcessor->SetStatus(false);
- if (ciHandler)
- ciHandler->SetEnabled(false);
CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true));
CHECK(ioctl(fd_audio, AUDIO_STOP, true));
CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER));
@@ -809,8 +803,6 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
case pmExtern_THIS_SHOULD_BE_AVOIDED:
if (siProcessor)
siProcessor->SetStatus(false);
- if (ciHandler)
- ciHandler->SetEnabled(false);
close(fd_video);
close(fd_audio);
fd_video = fd_audio = -1;