ca.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. <title>DVB CA Device</title>
  2. <para>The DVB CA device controls the conditional access hardware. It can be accessed through
  3. <emphasis role="tt">/dev/dvb/adapter0/ca0</emphasis>. Data types and and ioctl definitions can be accessed by
  4. including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application.
  5. </para>
  6. <section id="ca_data_types">
  7. <title>CA Data Types</title>
  8. <section id="ca-slot-info">
  9. <title>ca_slot_info_t</title>
  10. <programlisting>
  11. typedef struct ca_slot_info {
  12. int num; /&#x22C6; slot number &#x22C6;/
  13. int type; /&#x22C6; CA interface this slot supports &#x22C6;/
  14. #define CA_CI 1 /&#x22C6; CI high level interface &#x22C6;/
  15. #define CA_CI_LINK 2 /&#x22C6; CI link layer level interface &#x22C6;/
  16. #define CA_CI_PHYS 4 /&#x22C6; CI physical layer level interface &#x22C6;/
  17. #define CA_DESCR 8 /&#x22C6; built-in descrambler &#x22C6;/
  18. #define CA_SC 128 /&#x22C6; simple smart card interface &#x22C6;/
  19. unsigned int flags;
  20. #define CA_CI_MODULE_PRESENT 1 /&#x22C6; module (or card) inserted &#x22C6;/
  21. #define CA_CI_MODULE_READY 2
  22. } ca_slot_info_t;
  23. </programlisting>
  24. </section>
  25. <section id="ca-descr-info">
  26. <title>ca_descr_info_t</title>
  27. <programlisting>
  28. typedef struct ca_descr_info {
  29. unsigned int num; /&#x22C6; number of available descramblers (keys) &#x22C6;/
  30. unsigned int type; /&#x22C6; type of supported scrambling system &#x22C6;/
  31. #define CA_ECD 1
  32. #define CA_NDS 2
  33. #define CA_DSS 4
  34. } ca_descr_info_t;
  35. </programlisting>
  36. </section>
  37. <section id="ca-caps">
  38. <title>ca_caps_t</title>
  39. <programlisting>
  40. typedef struct ca_caps {
  41. unsigned int slot_num; /&#x22C6; total number of CA card and module slots &#x22C6;/
  42. unsigned int slot_type; /&#x22C6; OR of all supported types &#x22C6;/
  43. unsigned int descr_num; /&#x22C6; total number of descrambler slots (keys) &#x22C6;/
  44. unsigned int descr_type;/&#x22C6; OR of all supported types &#x22C6;/
  45. } ca_cap_t;
  46. </programlisting>
  47. </section>
  48. <section id="ca-msg">
  49. <title>ca_msg_t</title>
  50. <programlisting>
  51. /&#x22C6; a message to/from a CI-CAM &#x22C6;/
  52. typedef struct ca_msg {
  53. unsigned int index;
  54. unsigned int type;
  55. unsigned int length;
  56. unsigned char msg[256];
  57. } ca_msg_t;
  58. </programlisting>
  59. </section>
  60. <section id="ca-descr">
  61. <title>ca_descr_t</title>
  62. <programlisting>
  63. typedef struct ca_descr {
  64. unsigned int index;
  65. unsigned int parity;
  66. unsigned char cw[8];
  67. } ca_descr_t;
  68. </programlisting>
  69. </section>
  70. <section id="ca-pid">
  71. <title>ca-pid</title>
  72. <programlisting>
  73. typedef struct ca_pid {
  74. unsigned int pid;
  75. int index; /&#x22C6; -1 == disable&#x22C6;/
  76. } ca_pid_t;
  77. </programlisting>
  78. </section></section>
  79. <section id="ca_function_calls">
  80. <title>CA Function Calls</title>
  81. <section id="ca_fopen">
  82. <title>open()</title>
  83. <para>DESCRIPTION
  84. </para>
  85. <informaltable><tgroup cols="1"><tbody><row><entry
  86. align="char">
  87. <para>This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.</para>
  88. <para>When an open() call has succeeded, the device will be ready for use.
  89. The significance of blocking or non-blocking mode is described in the
  90. documentation for functions where there is a difference. It does not affect the
  91. semantics of the open() call itself. A device opened in blocking mode can later
  92. be put into non-blocking mode (and vice versa) using the F_SETFL command
  93. of the fcntl system call. This is a standard system call, documented in the Linux
  94. manual page for fcntl. Only one user can open the CA Device in O_RDWR
  95. mode. All other attempts to open the device in this mode will fail, and an error
  96. code will be returned.</para>
  97. </entry>
  98. </row></tbody></tgroup></informaltable>
  99. <para>SYNOPSIS
  100. </para>
  101. <informaltable><tgroup cols="1"><tbody><row><entry
  102. align="char">
  103. <para>int open(const char &#x22C6;deviceName, int flags);</para>
  104. </entry>
  105. </row></tbody></tgroup></informaltable>
  106. <para>PARAMETERS
  107. </para>
  108. <informaltable><tgroup cols="2"><tbody><row><entry
  109. align="char">
  110. <para>const char
  111. *deviceName</para>
  112. </entry><entry
  113. align="char">
  114. <para>Name of specific video device.</para>
  115. </entry>
  116. </row><row><entry
  117. align="char">
  118. <para>int flags</para>
  119. </entry><entry
  120. align="char">
  121. <para>A bit-wise OR of the following flags:</para>
  122. </entry>
  123. </row><row><entry
  124. align="char">
  125. </entry><entry
  126. align="char">
  127. <para>O_RDONLY read-only access</para>
  128. </entry>
  129. </row><row><entry
  130. align="char">
  131. </entry><entry
  132. align="char">
  133. <para>O_RDWR read/write access</para>
  134. </entry>
  135. </row><row><entry
  136. align="char">
  137. </entry><entry
  138. align="char">
  139. <para>O_NONBLOCK open in non-blocking mode</para>
  140. </entry>
  141. </row><row><entry
  142. align="char">
  143. </entry><entry
  144. align="char">
  145. <para>(blocking mode is the default)</para>
  146. </entry>
  147. </row></tbody></tgroup></informaltable>
  148. <para>RETURN VALUE</para>
  149. <informaltable><tgroup cols="2"><tbody><row><entry
  150. align="char">
  151. <para>ENODEV</para>
  152. </entry><entry
  153. align="char">
  154. <para>Device driver not loaded/available.</para>
  155. </entry>
  156. </row><row><entry
  157. align="char">
  158. <para>EINTERNAL</para>
  159. </entry><entry
  160. align="char">
  161. <para>Internal error.</para>
  162. </entry>
  163. </row><row><entry
  164. align="char">
  165. <para>EBUSY</para>
  166. </entry><entry
  167. align="char">
  168. <para>Device or resource busy.</para>
  169. </entry>
  170. </row><row><entry
  171. align="char">
  172. <para>EINVAL</para>
  173. </entry><entry
  174. align="char">
  175. <para>Invalid argument.</para>
  176. </entry>
  177. </row></tbody></tgroup></informaltable>
  178. </section>
  179. <section id="ca_fclose">
  180. <title>close()</title>
  181. <para>DESCRIPTION
  182. </para>
  183. <informaltable><tgroup cols="1"><tbody><row><entry
  184. align="char">
  185. <para>This system call closes a previously opened audio device.</para>
  186. </entry>
  187. </row></tbody></tgroup></informaltable>
  188. <para>SYNOPSIS
  189. </para>
  190. <informaltable><tgroup cols="1"><tbody><row><entry
  191. align="char">
  192. <para>int close(int fd);</para>
  193. </entry>
  194. </row></tbody></tgroup></informaltable>
  195. <para>PARAMETERS
  196. </para>
  197. <informaltable><tgroup cols="2"><tbody><row><entry
  198. align="char">
  199. <para>int fd</para>
  200. </entry><entry
  201. align="char">
  202. <para>File descriptor returned by a previous call to open().</para>
  203. </entry>
  204. </row></tbody></tgroup></informaltable>
  205. <para>RETURN VALUE</para>
  206. <informaltable><tgroup cols="2"><tbody><row><entry
  207. align="char">
  208. <para>EBADF</para>
  209. </entry><entry
  210. align="char">
  211. <para>fd is not a valid open file descriptor.</para>
  212. </entry>
  213. </row></tbody></tgroup></informaltable>
  214. </section>
  215. <section id="CA_RESET"
  216. role="subsection"><title>CA_RESET</title>
  217. <para>DESCRIPTION
  218. </para>
  219. <informaltable><tgroup cols="1"><tbody><row><entry
  220. align="char">
  221. <para>This ioctl is undocumented. Documentation is welcome.</para>
  222. </entry>
  223. </row></tbody></tgroup></informaltable>
  224. <para>SYNOPSIS
  225. </para>
  226. <informaltable><tgroup cols="1"><tbody><row><entry
  227. align="char">
  228. <para>int ioctl(fd, int request = CA_RESET);
  229. </para>
  230. </entry>
  231. </row></tbody></tgroup></informaltable>
  232. <para>PARAMETERS
  233. </para>
  234. <informaltable><tgroup cols="2"><tbody><row><entry
  235. align="char">
  236. <para>int fd</para>
  237. </entry><entry
  238. align="char">
  239. <para>File descriptor returned by a previous call to open().</para>
  240. </entry>
  241. </row><row><entry
  242. align="char">
  243. <para>int request</para>
  244. </entry><entry
  245. align="char">
  246. <para>Equals CA_RESET for this command.</para>
  247. </entry>
  248. </row></tbody></tgroup></informaltable>
  249. &return-value-dvb;
  250. </section>
  251. <section id="CA_GET_CAP"
  252. role="subsection"><title>CA_GET_CAP</title>
  253. <para>DESCRIPTION
  254. </para>
  255. <informaltable><tgroup cols="1"><tbody><row><entry
  256. align="char">
  257. <para>This ioctl is undocumented. Documentation is welcome.</para>
  258. </entry>
  259. </row></tbody></tgroup></informaltable>
  260. <para>SYNOPSIS
  261. </para>
  262. <informaltable><tgroup cols="1"><tbody><row><entry
  263. align="char">
  264. <para>int ioctl(fd, int request = CA_GET_CAP,
  265. ca_caps_t *);</para>
  266. </entry>
  267. </row></tbody></tgroup></informaltable>
  268. <para>PARAMETERS
  269. </para>
  270. <informaltable><tgroup cols="2"><tbody><row><entry
  271. align="char">
  272. <para>int fd</para>
  273. </entry><entry
  274. align="char">
  275. <para>File descriptor returned by a previous call to open().</para>
  276. </entry>
  277. </row><row><entry
  278. align="char">
  279. <para>int request</para>
  280. </entry><entry
  281. align="char">
  282. <para>Equals CA_GET_CAP for this command.</para>
  283. </entry>
  284. </row><row><entry
  285. align="char">
  286. <para>ca_caps_t *
  287. </para>
  288. </entry><entry
  289. align="char">
  290. <para>Undocumented.</para>
  291. </entry>
  292. </row></tbody></tgroup></informaltable>
  293. &return-value-dvb;
  294. </section>
  295. <section id="CA_GET_SLOT_INFO"
  296. role="subsection"><title>CA_GET_SLOT_INFO</title>
  297. <para>DESCRIPTION
  298. </para>
  299. <informaltable><tgroup cols="1"><tbody><row><entry
  300. align="char">
  301. <para>This ioctl is undocumented. Documentation is welcome.</para>
  302. </entry>
  303. </row></tbody></tgroup></informaltable>
  304. <para>SYNOPSIS
  305. </para>
  306. <informaltable><tgroup cols="1"><tbody><row><entry
  307. align="char">
  308. <para>int ioctl(fd, int request = CA_GET_SLOT_INFO,
  309. ca_slot_info_t *);</para>
  310. </entry>
  311. </row></tbody></tgroup></informaltable>
  312. <para>PARAMETERS
  313. </para>
  314. <informaltable><tgroup cols="2"><tbody><row><entry
  315. align="char">
  316. <para>int fd</para>
  317. </entry><entry
  318. align="char">
  319. <para>File descriptor returned by a previous call to open().</para>
  320. </entry>
  321. </row><row><entry
  322. align="char">
  323. <para>int request</para>
  324. </entry><entry
  325. align="char">
  326. <para>Equals CA_GET_SLOT_INFO for this command.</para>
  327. </entry>
  328. </row><row><entry
  329. align="char">
  330. <para>ca_slot_info_t *
  331. </para>
  332. </entry><entry
  333. align="char">
  334. <para>Undocumented.</para>
  335. </entry>
  336. </row></tbody></tgroup></informaltable>
  337. &return-value-dvb;
  338. </section>
  339. <section id="CA_GET_DESCR_INFO"
  340. role="subsection"><title>CA_GET_DESCR_INFO</title>
  341. <para>DESCRIPTION
  342. </para>
  343. <informaltable><tgroup cols="1"><tbody><row><entry
  344. align="char">
  345. <para>This ioctl is undocumented. Documentation is welcome.</para>
  346. </entry>
  347. </row></tbody></tgroup></informaltable>
  348. <para>SYNOPSIS
  349. </para>
  350. <informaltable><tgroup cols="1"><tbody><row><entry
  351. align="char">
  352. <para>int ioctl(fd, int request = CA_GET_DESCR_INFO,
  353. ca_descr_info_t *);</para>
  354. </entry>
  355. </row></tbody></tgroup></informaltable>
  356. <para>PARAMETERS
  357. </para>
  358. <informaltable><tgroup cols="2"><tbody><row><entry
  359. align="char">
  360. <para>int fd</para>
  361. </entry><entry
  362. align="char">
  363. <para>File descriptor returned by a previous call to open().</para>
  364. </entry>
  365. </row><row><entry
  366. align="char">
  367. <para>int request</para>
  368. </entry><entry
  369. align="char">
  370. <para>Equals CA_GET_DESCR_INFO for this command.</para>
  371. </entry>
  372. </row><row><entry
  373. align="char">
  374. <para>ca_descr_info_t *
  375. </para>
  376. </entry><entry
  377. align="char">
  378. <para>Undocumented.</para>
  379. </entry>
  380. </row></tbody></tgroup></informaltable>
  381. &return-value-dvb;
  382. </section>
  383. <section id="CA_GET_MSG"
  384. role="subsection"><title>CA_GET_MSG</title>
  385. <para>DESCRIPTION
  386. </para>
  387. <informaltable><tgroup cols="1"><tbody><row><entry
  388. align="char">
  389. <para>This ioctl is undocumented. Documentation is welcome.</para>
  390. </entry>
  391. </row></tbody></tgroup></informaltable>
  392. <para>SYNOPSIS
  393. </para>
  394. <informaltable><tgroup cols="1"><tbody><row><entry
  395. align="char">
  396. <para>int ioctl(fd, int request = CA_GET_MSG,
  397. ca_msg_t *);</para>
  398. </entry>
  399. </row></tbody></tgroup></informaltable>
  400. <para>PARAMETERS
  401. </para>
  402. <informaltable><tgroup cols="2"><tbody><row><entry
  403. align="char">
  404. <para>int fd</para>
  405. </entry><entry
  406. align="char">
  407. <para>File descriptor returned by a previous call to open().</para>
  408. </entry>
  409. </row><row><entry
  410. align="char">
  411. <para>int request</para>
  412. </entry><entry
  413. align="char">
  414. <para>Equals CA_GET_MSG for this command.</para>
  415. </entry>
  416. </row><row><entry
  417. align="char">
  418. <para>ca_msg_t *
  419. </para>
  420. </entry><entry
  421. align="char">
  422. <para>Undocumented.</para>
  423. </entry>
  424. </row></tbody></tgroup></informaltable>
  425. &return-value-dvb;
  426. </section>
  427. <section id="CA_SEND_MSG"
  428. role="subsection"><title>CA_SEND_MSG</title>
  429. <para>DESCRIPTION
  430. </para>
  431. <informaltable><tgroup cols="1"><tbody><row><entry
  432. align="char">
  433. <para>This ioctl is undocumented. Documentation is welcome.</para>
  434. </entry>
  435. </row></tbody></tgroup></informaltable>
  436. <para>SYNOPSIS
  437. </para>
  438. <informaltable><tgroup cols="1"><tbody><row><entry
  439. align="char">
  440. <para>int ioctl(fd, int request = CA_SEND_MSG,
  441. ca_msg_t *);</para>
  442. </entry>
  443. </row></tbody></tgroup></informaltable>
  444. <para>PARAMETERS
  445. </para>
  446. <informaltable><tgroup cols="2"><tbody><row><entry
  447. align="char">
  448. <para>int fd</para>
  449. </entry><entry
  450. align="char">
  451. <para>File descriptor returned by a previous call to open().</para>
  452. </entry>
  453. </row><row><entry
  454. align="char">
  455. <para>int request</para>
  456. </entry><entry
  457. align="char">
  458. <para>Equals CA_SEND_MSG for this command.</para>
  459. </entry>
  460. </row><row><entry
  461. align="char">
  462. <para>ca_msg_t *
  463. </para>
  464. </entry><entry
  465. align="char">
  466. <para>Undocumented.</para>
  467. </entry>
  468. </row></tbody></tgroup></informaltable>
  469. &return-value-dvb;
  470. </section>
  471. <section id="CA_SET_DESCR"
  472. role="subsection"><title>CA_SET_DESCR</title>
  473. <para>DESCRIPTION
  474. </para>
  475. <informaltable><tgroup cols="1"><tbody><row><entry
  476. align="char">
  477. <para>This ioctl is undocumented. Documentation is welcome.</para>
  478. </entry>
  479. </row></tbody></tgroup></informaltable>
  480. <para>SYNOPSIS
  481. </para>
  482. <informaltable><tgroup cols="1"><tbody><row><entry
  483. align="char">
  484. <para>int ioctl(fd, int request = CA_SET_DESCR,
  485. ca_descr_t *);</para>
  486. </entry>
  487. </row></tbody></tgroup></informaltable>
  488. <para>PARAMETERS
  489. </para>
  490. <informaltable><tgroup cols="2"><tbody><row><entry
  491. align="char">
  492. <para>int fd</para>
  493. </entry><entry
  494. align="char">
  495. <para>File descriptor returned by a previous call to open().</para>
  496. </entry>
  497. </row><row><entry
  498. align="char">
  499. <para>int request</para>
  500. </entry><entry
  501. align="char">
  502. <para>Equals CA_SET_DESCR for this command.</para>
  503. </entry>
  504. </row><row><entry
  505. align="char">
  506. <para>ca_descr_t *
  507. </para>
  508. </entry><entry
  509. align="char">
  510. <para>Undocumented.</para>
  511. </entry>
  512. </row></tbody></tgroup></informaltable>
  513. &return-value-dvb;
  514. </section>
  515. <section id="CA_SET_PID"
  516. role="subsection"><title>CA_SET_PID</title>
  517. <para>DESCRIPTION
  518. </para>
  519. <informaltable><tgroup cols="1"><tbody><row><entry
  520. align="char">
  521. <para>This ioctl is undocumented. Documentation is welcome.</para>
  522. </entry>
  523. </row></tbody></tgroup></informaltable>
  524. <para>SYNOPSIS
  525. </para>
  526. <informaltable><tgroup cols="1"><tbody><row><entry
  527. align="char">
  528. <para>int ioctl(fd, int request = CA_SET_PID,
  529. ca_pid_t *);</para>
  530. </entry>
  531. </row></tbody></tgroup></informaltable>
  532. <para>PARAMETERS
  533. </para>
  534. <informaltable><tgroup cols="2"><tbody><row><entry
  535. align="char">
  536. <para>int fd</para>
  537. </entry><entry
  538. align="char">
  539. <para>File descriptor returned by a previous call to open().</para>
  540. </entry>
  541. </row><row><entry
  542. align="char">
  543. <para>int request</para>
  544. </entry><entry
  545. align="char">
  546. <para>Equals CA_SET_PID for this command.</para>
  547. </entry>
  548. </row><row><entry
  549. align="char">
  550. <para>ca_pid_t *
  551. </para>
  552. </entry><entry
  553. align="char">
  554. <para>Undocumented.</para>
  555. </entry>
  556. </row></tbody></tgroup></informaltable>
  557. &return-value-dvb;
  558. </section>
  559. </section>