mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-19 00:54:41 +08:00
3de530f805
Just like the V4L, MC and LIRC API's, point to the generic error chapter for ioctl's. This will allow moving generic error codes to just one place inside all media API's. A latter patch will remove the generic errors from each specific ioctl. Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
230 lines
6.2 KiB
XML
230 lines
6.2 KiB
XML
<title>DVB CA Device</title>
|
|
<para>The DVB CA device controls the conditional access hardware. It can be accessed through
|
|
<emphasis role="tt">/dev/dvb/adapter0/ca0</emphasis>. Data types and and ioctl definitions can be accessed by
|
|
including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application.
|
|
</para>
|
|
|
|
<section id="ca_data_types">
|
|
<title>CA Data Types</title>
|
|
|
|
|
|
<section id="ca-slot-info">
|
|
<title>ca_slot_info_t</title>
|
|
<programlisting>
|
|
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;
|
|
</programlisting>
|
|
|
|
</section>
|
|
<section id="ca-descr-info">
|
|
<title>ca_descr_info_t</title>
|
|
<programlisting>
|
|
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;
|
|
</programlisting>
|
|
|
|
</section>
|
|
<section id="ca-caps">
|
|
<title>ca_caps_t</title>
|
|
<programlisting>
|
|
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;
|
|
</programlisting>
|
|
|
|
</section>
|
|
<section id="ca-msg">
|
|
<title>ca_msg_t</title>
|
|
<programlisting>
|
|
/⋆ 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;
|
|
</programlisting>
|
|
|
|
</section>
|
|
<section id="ca-descr">
|
|
<title>ca_descr_t</title>
|
|
<programlisting>
|
|
typedef struct ca_descr {
|
|
unsigned int index;
|
|
unsigned int parity;
|
|
unsigned char cw[8];
|
|
} ca_descr_t;
|
|
</programlisting>
|
|
</section>
|
|
|
|
<section id="ca-pid">
|
|
<title>ca-pid</title>
|
|
<programlisting>
|
|
typedef struct ca_pid {
|
|
unsigned int pid;
|
|
int index; /⋆ -1 == disable⋆/
|
|
} ca_pid_t;
|
|
</programlisting>
|
|
</section></section>
|
|
|
|
<section id="ca_function_calls">
|
|
<title>CA Function Calls</title>
|
|
|
|
|
|
<section id="ca_fopen">
|
|
<title>open()</title>
|
|
<para>DESCRIPTION
|
|
</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.</para>
|
|
<para>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.</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>SYNOPSIS
|
|
</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>int open(const char ⋆deviceName, int flags);</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>PARAMETERS
|
|
</para>
|
|
<informaltable><tgroup cols="2"><tbody><row><entry
|
|
align="char">
|
|
<para>const char
|
|
*deviceName</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>Name of specific video device.</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
<para>int flags</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>A bit-wise OR of the following flags:</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
</entry><entry
|
|
align="char">
|
|
<para>O_RDONLY read-only access</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
</entry><entry
|
|
align="char">
|
|
<para>O_RDWR read/write access</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
</entry><entry
|
|
align="char">
|
|
<para>O_NONBLOCK open in non-blocking mode</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
</entry><entry
|
|
align="char">
|
|
<para>(blocking mode is the default)</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>RETURN VALUE</para>
|
|
<informaltable><tgroup cols="2"><tbody><row><entry
|
|
align="char">
|
|
<para>ENODEV</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>Device driver not loaded/available.</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
<para>EINTERNAL</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>Internal error.</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
<para>EBUSY</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>Device or resource busy.</para>
|
|
</entry>
|
|
</row><row><entry
|
|
align="char">
|
|
<para>EINVAL</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>Invalid argument.</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
</section>
|
|
<section id="ca_fclose">
|
|
<title>close()</title>
|
|
<para>DESCRIPTION
|
|
</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>This system call closes a previously opened audio device.</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>SYNOPSIS
|
|
</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>int close(int fd);</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>PARAMETERS
|
|
</para>
|
|
<informaltable><tgroup cols="2"><tbody><row><entry
|
|
align="char">
|
|
<para>int fd</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>File descriptor returned by a previous call to open().</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
<para>RETURN VALUE</para>
|
|
<informaltable><tgroup cols="2"><tbody><row><entry
|
|
align="char">
|
|
<para>EBADF</para>
|
|
</entry><entry
|
|
align="char">
|
|
<para>fd is not a valid open file descriptor.</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
</section>
|
|
</section>
|