next up previous contents
Next: DVB Network API Up: LINUX DVB API Version Previous: DVB Audio Device   Contents


DVB CA Device

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

CA Data Types


/* slot interface types and info */

typedef struct ca_slot_info_s {
        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_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;


typedef struct ca_descr_info_s {
        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;


typedef struct ca_cap_s {
        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;


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


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

CA Function Calls



This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.

When an open() call has succeeded, the device will be ready for use. The significance of blocking or non-blocking mode is described in the documentation for functions where there is a difference. It does not affect the semantics of the open() call itself. A device opened in blocking mode can later be put into non-blocking mode (and vice versa) using the F_SETFL command of the fcntl system call. This is a standard system call, documented in the Linux manual page for fcntl. Only one user can open the CA Device in O_RDWR mode. All other attempts to open the device in this mode will fail, and an error code will be returned.


int open(const char *deviceName, int flags);


const char *deviceName Name of specific video device.
int flags A bit-wise OR of the following flags:
  O_RDONLY read-only access
  O_RDWR read/write access
  O_NONBLOCK open in non-blocking mode
  (blocking mode is the default)


ENODEV Device driver not loaded/available.
EINTERNAL Internal error.
EBUSY Device or resource busy.
EINVAL Invalid argument.



This system call closes a previously opened audio device.


int close(int fd);


int fd File descriptor returned by a previous call to open().


EBADF fd is not a valid open file descriptor.

next up previous contents
Next: DVB Network API Up: LINUX DVB API Version Previous: DVB Audio Device   Contents