The file 'ca.conf' is obsolete and has been removed; revised all descriptions regarding CICAM

This commit is contained in:
Klaus Schmidinger 2006-01-07 14:10:17 +01:00
parent 2e0a3f273a
commit e0d5ebf8fd
12 changed files with 81 additions and 120 deletions

View File

@ -4124,3 +4124,5 @@ Video Disk Recorder Revision History
- Fixed the "Day" field of the "Edit timer" menu when pressing '0' to switch
from "single shot" to "weekly", followed by the "Right" key (reported by
Andreas Böttger).
- The file 'ca.conf' is obsolete and has been removed.
- Revised all descriptions regarding CICAM.

16
MANUAL
View File

@ -656,17 +656,11 @@ Version 1.2
CICAM:
CICAM DVBn m Defines the "Conditional Access" capabilities of the DVB
card 'n'. Each DVB card can provide up to two CICAM
methods ('m' = [1, 2]).
In the 'setup.conf' file the value consists of the card
number, followed by a list of decryption method values
(defined in 'ca.conf').
For instance
CaCaps = 3 101 102
would define that card number 3 is able to decrypt
"Premiere World" and the "ORF".
CICAM DVBn m Shows the CAMs that each device contains, where 'n' is
the number of the device, and 'm' is the number of the
Common Interface slot of that device. The "Red" key
can be pressed to enter the CAM menu, and the "Green" key
triggers a reset of the selected CAM.
Recording:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.h 1.36 2005/09/17 09:59:14 kls Exp $
* $Id: channels.h 1.37 2006/01/07 13:00:43 kls Exp $
*/
#ifndef __CHANNELS_H
@ -39,6 +39,14 @@
#define MAXLANGCODE1 4 // a 3 letter language code, zero terminated
#define MAXLANGCODE2 8 // up to two 3 letter language codes, separated by '+' and zero terminated
#define CA_FTA 0x0000
#define CA_DVB_MIN 0x0001
#define CA_DVB_MAX 0x000F
#define CA_USER_MIN 0x0010
#define CA_USER_MAX 0x00FF
#define CA_ENCRYPTED_MIN 0x0100
#define CA_ENCRYPTED_MAX 0xFFFF
struct tChannelParameterMap {
int userValue;
int driverValue;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.c 1.139 2006/01/04 14:37:54 kls Exp $
* $Id: config.c 1.140 2006/01/07 12:28:49 kls Exp $
*/
#include "config.h"
@ -120,24 +120,6 @@ bool cSVDRPhost::Accepts(in_addr_t Address)
return (Address & mask) == addr.s_addr;
}
// -- cCaDefinition ----------------------------------------------------------
cCaDefinition::cCaDefinition(void)
{
number = 0;
description = NULL;
}
cCaDefinition::~cCaDefinition()
{
free(description);
}
bool cCaDefinition::Parse(const char *s)
{
return 2 == sscanf(s, "%d %a[^\n]", &number, &description) && description && *description;
}
// -- cCommands --------------------------------------------------------------
cCommands Commands;
@ -158,21 +140,6 @@ bool cSVDRPhosts::Acceptable(in_addr_t Address)
return false;
}
// -- cCaDefinitions ---------------------------------------------------------
cCaDefinitions CaDefinitions;
const cCaDefinition *cCaDefinitions::Get(int Number)
{
cCaDefinition *p = First();
while (p) {
if (p->Number() == Number)
return p;
p = (cCaDefinition *)p->Next();
}
return NULL;
}
// -- cSetupLine -------------------------------------------------------------
cSetupLine::cSetupLine(void)

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.h 1.237 2006/01/04 13:41:59 kls Exp $
* $Id: config.h 1.238 2006/01/07 12:57:42 kls Exp $
*/
#ifndef __CONFIG_H
@ -61,20 +61,6 @@ public:
bool Accepts(in_addr_t Address);
};
#define CACONFBASE 100
class cCaDefinition : public cListObject {
private:
int number;
char *description;
public:
cCaDefinition(void);
~cCaDefinition();
bool Parse(const char *s);
int Number(void) const { return number; }
const char *Description(void) const { return description; }
};
template<class T> class cConfig : public cList<T> {
private:
char *fileName;
@ -166,15 +152,9 @@ public:
bool Acceptable(in_addr_t Address);
};
class cCaDefinitions : public cConfig<cCaDefinition> {
public:
const cCaDefinition *Get(int Number);
};
extern cCommands Commands;
extern cCommands RecordingCommands;
extern cSVDRPhosts SVDRPhosts;
extern cCaDefinitions CaDefinitions;
class cSetupLine : public cListObject {
private:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 1.117 2006/01/06 13:50:00 kls Exp $
* $Id: device.c 1.118 2006/01/07 14:09:17 kls Exp $
*/
#include "device.h"
@ -647,7 +647,7 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
ciHandler->SetSource(Channel->Source(), Channel->Transponder());
// Men at work - please stand clear! ;-)
#ifdef XXX_DO_MULTIPLE_CA_CHANNELS
if (Channel->Ca() > CACONFBASE) {
if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
#endif
ciHandler->AddPid(Channel->Sid(), Channel->Vpid(), 2);
for (const int *Apid = Channel->Apids(); *Apid; Apid++)

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 1.147 2006/01/05 15:30:06 kls Exp $
* $Id: dvbdevice.c 1.148 2006/01/07 14:05:59 kls Exp $
*/
#include "dvbdevice.h"
@ -503,7 +503,7 @@ bool cDvbDevice::Ready(void)
int cDvbDevice::ProvidesCa(const cChannel *Channel) const
{
if (Channel->Ca() >= 0x0100 && ciHandler) {
if (Channel->Ca() >= CA_ENCRYPTED_MIN && ciHandler) {
unsigned short ids[MAXCAIDS + 1];
for (int i = 0; i <= MAXCAIDS; i++) // '<=' copies the terminating 0!
ids[i] = Channel->Ca(i);
@ -767,7 +767,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
if (Channel->Vpid() && !HasPid(Channel->Vpid()) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) {
#ifdef DO_MULTIPLE_RECORDINGS
#ifndef DO_MULTIPLE_CA_CHANNELS
if (Ca() > CACONFBASE || Channel->Ca() > CACONFBASE)
if (Ca() >= CA_ENCRYPTED_MIN || Channel->Ca() >= CA_ENCRYPTED_MIN)
needsDetachReceivers = Ca() != Channel->Ca();
else
#endif

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: eitscan.c 1.29 2005/11/05 15:24:36 kls Exp $
* $Id: eitscan.c 1.30 2006/01/07 14:10:17 kls Exp $
*/
#include "eitscan.h"
@ -147,7 +147,7 @@ void cEITScanner::Process(void)
for (cScanData *ScanData = scanList->First(); ScanData; ScanData = scanList->Next(ScanData)) {
const cChannel *Channel = ScanData->GetChannel();
if (Channel) {
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) {
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
if (Device->ProvidesTransponder(Channel)) {
if (!Device->Receiving()) {
bool MaySwitchTransponder = Device->MaySwitchTransponder();

44
i18n.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: i18n.c 1.227 2006/01/06 16:03:41 kls Exp $
* $Id: i18n.c 1.228 2006/01/07 12:50:33 kls Exp $
*
* Translations provided by:
*
@ -1494,6 +1494,48 @@ const tI18nPhrase Phrases[] = {
"CA",
"CA",
},
{ "Free To Air",
"frei empfangbar",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
},
{ "encrypted",
"verschlüsselt",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
},
{ "Sid",
"Sid",
"Sid",

33
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 1.387 2006/01/06 11:44:25 kls Exp $
* $Id: menu.c 1.388 2006/01/07 13:51:09 kls Exp $
*/
#include "menu.h"
@ -42,28 +42,25 @@
// --- cMenuEditCaItem -------------------------------------------------------
class cMenuEditCaItem : public cMenuEditIntItem {
private:
const cCaDefinition *ca;
bool allowCardNr;
protected:
virtual void Set(void);
public:
cMenuEditCaItem(const char *Name, int *Value, bool AllowCardNr = false);
cMenuEditCaItem(const char *Name, int *Value);
eOSState ProcessKey(eKeys Key);
};
cMenuEditCaItem::cMenuEditCaItem(const char *Name, int *Value, bool AllowCardNr)
cMenuEditCaItem::cMenuEditCaItem(const char *Name, int *Value)
:cMenuEditIntItem(Name, Value, 0)
{
ca = CaDefinitions.Get(*Value);
allowCardNr = AllowCardNr;
Set();
}
void cMenuEditCaItem::Set(void)
{
if (ca)
SetValue(ca->Description());
if (*value == CA_FTA)
SetValue(tr("Free To Air"));
else if (*value >= CA_ENCRYPTED_MIN)
SetValue(tr("encrypted"));
else
cMenuEditIntItem::Set();
}
@ -73,18 +70,8 @@ eOSState cMenuEditCaItem::ProcessKey(eKeys Key)
eOSState state = cMenuEditItem::ProcessKey(Key);
if (state == osUnknown) {
if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
if (ca && ca->Prev()) {
ca = (cCaDefinition *)ca->Prev();
*value = ca->Number();
}
}
else if (NORMALKEY(Key) == kRight) {
if (ca && ca->Next() && (allowCardNr || ((cCaDefinition *)ca->Next())->Number() > MAXDEVICES)) {
ca = (cCaDefinition *)ca->Next();
*value = ca->Number();
}
}
if (NORMALKEY(Key) == kLeft && *value >= CA_ENCRYPTED_MIN)
*value = CA_FTA;
else
return cMenuEditIntItem::ProcessKey(Key);
Set();
@ -266,7 +253,7 @@ void cMenuEditChannel::Setup(void)
Add(new cMenuEditIntItem( tr("Dpid1"), &data.dpids[0], 0, 0x1FFF));
Add(new cMenuEditIntItem( tr("Dpid2"), &data.dpids[1], 0, 0x1FFF));
Add(new cMenuEditIntItem( tr("Tpid"), &data.tpid, 0, 0x1FFF));
Add(new cMenuEditCaItem( tr("CA"), &data.caids[0], true));//XXX
Add(new cMenuEditCaItem( tr("CA"), &data.caids[0]));
Add(new cMenuEditIntItem( tr("Sid"), &data.sid, 1, 0xFFFF));
/* XXX not yet used
Add(new cMenuEditIntItem( tr("Nid"), &data.nid, 0));

22
vdr.5
View File

@ -8,7 +8,7 @@
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
.\" $Id: vdr.5 1.41 2006/01/06 14:21:49 kls Exp $
.\" $Id: vdr.5 1.42 2006/01/07 12:30:49 kls Exp $
.\"
.TH vdr 5 "19 Mar 2005" "1.3.38" "Video Disk Recorder Files"
.SH NAME
@ -152,7 +152,7 @@ tab (@);
l l.
\fB0000\fR@Free To Air
\fB0001...000F\fR@explicitly requires the device with the given number
\fB0010...00FF\fR@reserved for user defined assignments defined in \fIca.conf\fR
\fB0010...00FF\fR@reserved for user defined assignments
\fB0100...FFFF\fR@specific decryption methods as broadcast in the data stream\fR
.TE
Values in the range 0001...00FF will not be overwritten, all other values
@ -389,24 +389,6 @@ l l.
There can be any number of actions in a line, including none at all - in which case
the entry would be used only to set the LOF to use for the given frequency range
and polarization.
.SS CONDITIONAL ACCESS
The file \fIca.conf\fR defines the numbers to be used in the \fBConditional access\fR
field of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
Example:
\fB101 Premiere World\fR
Anything after (and including) a '#' character is comment.
Value lines consist of an integer number, followed by a text describing
this decryption method (typically the name of the pay tv service using this
decryption method).
The special value \fB0\fR means \fBFree To Air\fR, which can be used for
channels that don't require additional decryption hardware.
The values \fB1...4\fR can be used for channels that for some reason explicitly
need a given DVB card (for backward compatibility).
.SS REMOTE CONTROL KEYS
The file \fIremote.conf\fR contains the key assignments for all remote control
units. Each line consists of one key assignment in the following format:

3
vdr.c
View File

@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
* $Id: vdr.c 1.230 2006/01/06 12:47:16 kls Exp $
* $Id: vdr.c 1.231 2006/01/07 12:27:45 kls Exp $
*/
#include <getopt.h>
@ -514,7 +514,6 @@ int main(int argc, char *argv[])
Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"), true) &&
RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
CaDefinitions.Load(AddDirectory(ConfigDirectory, "ca.conf"), true) &&
Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")) &&
KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true)
))