blob: d9e27c77426cf9e94ad0365b801032cd7ab6d5d6 [file] [log] [blame]
Markus Heiser5377d912016-06-30 15:18:56 +02001.. -*- coding: utf-8; mode: rst -*-
2
3.. _ca_data_types:
4
5*************
6CA Data Types
7*************
8
9
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030010.. c:type:: ca_slot_info
Markus Heiser5377d912016-06-30 15:18:56 +020011
12ca_slot_info_t
13==============
14
15
16.. code-block:: c
17
18 typedef struct ca_slot_info {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030019 int num; /* slot number */
Markus Heiser5377d912016-06-30 15:18:56 +020020
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030021 int type; /* CA interface this slot supports */
Markus Heiser5377d912016-06-30 15:18:56 +020022 #define CA_CI 1 /* CI high level interface */
23 #define CA_CI_LINK 2 /* CI link layer level interface */
24 #define CA_CI_PHYS 4 /* CI physical layer level interface */
25 #define CA_DESCR 8 /* built-in descrambler */
26 #define CA_SC 128 /* simple smart card interface */
27
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030028 unsigned int flags;
Markus Heiser5377d912016-06-30 15:18:56 +020029 #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
30 #define CA_CI_MODULE_READY 2
31 } ca_slot_info_t;
32
33
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030034.. c:type:: ca_descr_info
Markus Heiser5377d912016-06-30 15:18:56 +020035
36ca_descr_info_t
37===============
38
39
40.. code-block:: c
41
42 typedef struct ca_descr_info {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030043 unsigned int num; /* number of available descramblers (keys) */
44 unsigned int type; /* type of supported scrambling system */
Markus Heiser5377d912016-06-30 15:18:56 +020045 #define CA_ECD 1
46 #define CA_NDS 2
47 #define CA_DSS 4
48 } ca_descr_info_t;
49
50
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030051.. c:type:: ca_caps
Markus Heiser5377d912016-06-30 15:18:56 +020052
53ca_caps_t
54=========
55
56
57.. code-block:: c
58
59 typedef struct ca_caps {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030060 unsigned int slot_num; /* total number of CA card and module slots */
61 unsigned int slot_type; /* OR of all supported types */
62 unsigned int descr_num; /* total number of descrambler slots (keys) */
63 unsigned int descr_type;/* OR of all supported types */
Markus Heiser5377d912016-06-30 15:18:56 +020064 } ca_cap_t;
65
66
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030067.. c:type:: ca_msg
Markus Heiser5377d912016-06-30 15:18:56 +020068
69ca_msg_t
70========
71
72
73.. code-block:: c
74
75 /* a message to/from a CI-CAM */
76 typedef struct ca_msg {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030077 unsigned int index;
78 unsigned int type;
79 unsigned int length;
Mauro Carvalho Chehab8968da92016-07-13 08:43:30 -030080 unsigned char msg[256];
Markus Heiser5377d912016-06-30 15:18:56 +020081 } ca_msg_t;
82
83
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030084.. c:type:: ca_descr
Markus Heiser5377d912016-06-30 15:18:56 +020085
86ca_descr_t
87==========
88
89
90.. code-block:: c
91
92 typedef struct ca_descr {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030093 unsigned int index;
94 unsigned int parity;
Mauro Carvalho Chehab8968da92016-07-13 08:43:30 -030095 unsigned char cw[8];
Markus Heiser5377d912016-06-30 15:18:56 +020096 } ca_descr_t;
97
98
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030099.. c:type:: ca_pid
Markus Heiser5377d912016-06-30 15:18:56 +0200100
101ca-pid
102======
103
104
105.. code-block:: c
106
107 typedef struct ca_pid {
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -0300108 unsigned int pid;
109 int index; /* -1 == disable*/
Markus Heiser5377d912016-06-30 15:18:56 +0200110 } ca_pid_t;