ca.xml 6.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
<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_t">
<title>ca_slot_info_t</title>
 <programlisting>
 /&#x22C6; slot interface types and info &#x22C6;/

 typedef struct ca_slot_info_s {
	 int num;               /&#x22C6; slot number &#x22C6;/

	 int type;           /&#x22C6; CA interface this slot supports &#x22C6;/
 #define CA_CI            1  /&#x22C6; CI high level interface &#x22C6;/
 #define CA_CI_LINK       2  /&#x22C6; CI link layer level interface &#x22C6;/
 #define CA_CI_PHYS       4  /&#x22C6; CI physical layer level interface &#x22C6;/
 #define CA_SC          128  /&#x22C6; simple smart card interface &#x22C6;/

	 unsigned int flags;
 #define CA_CI_MODULE_PRESENT 1 /&#x22C6; module (or card) inserted &#x22C6;/
 #define CA_CI_MODULE_READY   2
 } ca_slot_info_t;
</programlisting>

</section>
<section id="ca_descr_info_t">
<title>ca_descr_info_t</title>
 <programlisting>
 typedef struct ca_descr_info_s {
	 unsigned int num;  /&#x22C6; number of available descramblers (keys) &#x22C6;/
	 unsigned int type; /&#x22C6; type of supported scrambling system &#x22C6;/
 #define CA_ECD           1
 #define CA_NDS           2
 #define CA_DSS           4
 } ca_descr_info_t;
</programlisting>

</section>
<section id="ca_cap_t">
<title>ca_cap_t</title>
 <programlisting>
 typedef struct ca_cap_s {
	 unsigned int slot_num;  /&#x22C6; total number of CA card and module slots &#x22C6;/
	 unsigned int slot_type; /&#x22C6; OR of all supported types &#x22C6;/
	 unsigned int descr_num; /&#x22C6; total number of descrambler slots (keys) &#x22C6;/
	 unsigned int descr_type;/&#x22C6; OR of all supported types &#x22C6;/
 } ca_cap_t;
</programlisting>

</section>
<section id="ca_msg_t">
<title>ca_msg_t</title>
 <programlisting>
 /&#x22C6; a message to/from a CI-CAM &#x22C6;/
 typedef struct ca_msg_s {
	 unsigned int index;
	 unsigned int type;
	 unsigned int length;
	 unsigned char msg[256];
 } ca_msg_t;
</programlisting>

</section>
<section id="ca_descr_t">
<title>ca_descr_t</title>
 <programlisting>
 typedef struct ca_descr_s {
	 unsigned int index;
	 unsigned int parity;
	 unsigned char cw[8];
 } ca_descr_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 &#x22C6;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>ERRORS
</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>ERRORS
</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>