123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582 |
- <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 id="CA_RESET"
- role="subsection"><title>CA_RESET</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_RESET);
- </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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_RESET for this command.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_GET_CAP"
- role="subsection"><title>CA_GET_CAP</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_GET_CAP,
- ca_caps_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_GET_CAP for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_caps_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_GET_SLOT_INFO"
- role="subsection"><title>CA_GET_SLOT_INFO</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_GET_SLOT_INFO,
- ca_slot_info_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_GET_SLOT_INFO for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_slot_info_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_GET_DESCR_INFO"
- role="subsection"><title>CA_GET_DESCR_INFO</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_GET_DESCR_INFO,
- ca_descr_info_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_GET_DESCR_INFO for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_descr_info_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_GET_MSG"
- role="subsection"><title>CA_GET_MSG</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_GET_MSG,
- ca_msg_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_GET_MSG for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_msg_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_SEND_MSG"
- role="subsection"><title>CA_SEND_MSG</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_SEND_MSG,
- ca_msg_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_SEND_MSG for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_msg_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_SET_DESCR"
- role="subsection"><title>CA_SET_DESCR</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_SET_DESCR,
- ca_descr_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_SET_DESCR for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_descr_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- <section id="CA_SET_PID"
- role="subsection"><title>CA_SET_PID</title>
- <para>DESCRIPTION
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>This ioctl is undocumented. Documentation is welcome.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- <para>SYNOPSIS
- </para>
- <informaltable><tgroup cols="1"><tbody><row><entry
- align="char">
- <para>int ioctl(fd, int request = CA_SET_PID,
- ca_pid_t *);</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><row><entry
- align="char">
- <para>int request</para>
- </entry><entry
- align="char">
- <para>Equals CA_SET_PID for this command.</para>
- </entry>
- </row><row><entry
- align="char">
- <para>ca_pid_t *
- </para>
- </entry><entry
- align="char">
- <para>Undocumented.</para>
- </entry>
- </row></tbody></tgroup></informaltable>
- &return-value-dvb;
- </section>
- </section>
|