Chapter 11. DVB CA Device

Table of Contents

CA Data Types
ca_slot_info_t
ca_descr_info_t
ca_caps_t
ca_msg_t
ca_descr_t
ca-pid
CA Function Calls
open()
close()
CA_RESET
CA_GET_CAP
CA_GET_SLOT_INFO
CA_GET_DESCR_INFO
CA_GET_MSG
CA_SEND_MSG
CA_SET_DESCR
CA_SET_PID

The DVB CA device controls the conditional access hardware. It can be accessed through /dev/dvb/adapter?/ca?. Data types and and ioctl definitions can be accessed by including linux/dvb/ca.h in your application.

CA Data Types

ca_slot_info_t

typedef struct ca_slot_info {
	int num;               /⋆ slot number ⋆/

	int type;              /⋆ CA interface this slot supports ⋆/
#define CA_CI            1     /⋆ CI high level interface ⋆/
#define CA_CI_LINK       2     /⋆ CI link layer level interface ⋆/
#define CA_CI_PHYS       4     /⋆ CI physical layer level interface ⋆/
#define CA_DESCR         8     /⋆ built-in descrambler ⋆/
#define CA_SC          128     /⋆ simple smart card interface ⋆/

	unsigned int flags;
#define CA_CI_MODULE_PRESENT 1 /⋆ module (or card) inserted ⋆/
#define CA_CI_MODULE_READY   2
} ca_slot_info_t;

ca_descr_info_t

typedef struct ca_descr_info {
	unsigned int num;  /⋆ number of available descramblers (keys) ⋆/
	unsigned int type; /⋆ type of supported scrambling system ⋆/
#define CA_ECD           1
#define CA_NDS           2
#define CA_DSS           4
} ca_descr_info_t;

ca_caps_t

typedef struct ca_caps {
	unsigned int slot_num;  /⋆ total number of CA card and module slots ⋆/
	unsigned int slot_type; /⋆ OR of all supported types ⋆/
	unsigned int descr_num; /⋆ total number of descrambler slots (keys) ⋆/
	unsigned int descr_type;/⋆ OR of all supported types ⋆/
 } ca_cap_t;

ca_msg_t

/⋆ a message to/from a CI-CAM ⋆/
typedef struct ca_msg {
	unsigned int index;
	unsigned int type;
	unsigned int length;
	unsigned char msg[256];
} ca_msg_t;

ca_descr_t

typedef struct ca_descr {
	unsigned int index;
	unsigned int parity;
	unsigned char cw[8];
} ca_descr_t;

ca-pid

typedef struct ca_pid {
	unsigned int pid;
	int index;		/⋆ -1 == disable⋆/
} ca_pid_t;