[media] DocBook/dvbproperty.xml: Document the terrestrial delivery systems
[pandora-kernel.git] / Documentation / DocBook / media / dvb / dvbproperty.xml
1 <section id="FE_GET_SET_PROPERTY">
2 <title><constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></title>
3 <para>This section describes the DVB version 5 extention of the DVB-API, also
4 called "S2API", as this API were added to provide support for DVB-S2. It was
5 designed to be able to replace the old frontend API. Yet, the DISEQC and
6 the capability ioctls weren't implemented yet via the new way.</para>
7 <para>The typical usage for the <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant>
8 API is to replace the ioctl's were the <link linkend="dvb-frontend-parameters">
9 struct <constant>dvb_frontend_parameters</constant></link> were used.</para>
10 <programlisting>
11 /* Reserved fields should be set to 0 */
12 struct dtv_property {
13         __u32 cmd;
14         union {
15                 __u32 data;
16                 struct {
17                         __u8 data[32];
18                         __u32 len;
19                         __u32 reserved1[3];
20                         void *reserved2;
21                 } buffer;
22         } u;
23         int result;
24 } __attribute__ ((packed));
25
26 /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
27 #define DTV_IOCTL_MAX_MSGS 64
28
29 struct dtv_properties {
30         __u32 num;
31         struct dtv_property *props;
32 };
33 </programlisting>
34
35 <section id="FE_GET_PROPERTY">
36 <title>FE_GET_PROPERTY</title>
37 <para>DESCRIPTION
38 </para>
39 <informaltable><tgroup cols="1"><tbody><row><entry
40  align="char">
41 <para>This ioctl call returns one or more frontend properties. This call only
42  requires read-only access to the device.</para>
43 </entry>
44  </row></tbody></tgroup></informaltable>
45 <para>SYNOPSIS
46 </para>
47 <informaltable><tgroup cols="1"><tbody><row><entry
48  align="char">
49 <para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>,
50  dtv_properties &#x22C6;props);</para>
51 </entry>
52  </row></tbody></tgroup></informaltable>
53 <para>PARAMETERS
54 </para>
55 <informaltable><tgroup cols="2"><tbody><row><entry align="char">
56 <para>int fd</para>
57 </entry><entry
58  align="char">
59 <para>File descriptor returned by a previous call to open().</para>
60 </entry>
61  </row><row><entry
62  align="char">
63 <para>int num</para>
64 </entry><entry
65  align="char">
66 <para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para>
67 </entry>
68  </row><row><entry
69  align="char">
70 <para>struct dtv_property *props</para>
71 </entry><entry
72  align="char">
73 <para>Points to the location where the front-end property commands are stored.</para>
74 </entry>
75  </row></tbody></tgroup></informaltable>
76 <para>ERRORS</para>
77 <informaltable><tgroup cols="2"><tbody><row>
78   <entry align="char"><para>EINVAL</para></entry>
79   <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry>
80  </row><row>
81   <entry align="char"><para>ENOMEM</para></entry>
82   <entry align="char"><para>Out of memory.</para></entry>
83  </row><row>
84   <entry align="char"><para>EFAULT</para></entry>
85   <entry align="char"><para>Failure while copying data from/to userspace.</para></entry>
86  </row><row>
87   <entry align="char"><para>EOPNOTSUPP</para></entry>
88   <entry align="char"><para>Property type not supported.</para></entry>
89  </row></tbody></tgroup></informaltable>
90 </section>
91
92 <section id="FE_SET_PROPERTY">
93 <title>FE_SET_PROPERTY</title>
94 <para>DESCRIPTION
95 </para>
96 <informaltable><tgroup cols="1"><tbody><row><entry
97  align="char">
98 <para>This ioctl call sets one or more frontend properties. This call only
99  requires read-only access to the device.</para>
100 </entry>
101  </row></tbody></tgroup></informaltable>
102 <para>SYNOPSIS
103 </para>
104 <informaltable><tgroup cols="1"><tbody><row><entry
105  align="char">
106 <para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
107  dtv_properties &#x22C6;props);</para>
108 </entry>
109  </row></tbody></tgroup></informaltable>
110 <para>PARAMETERS
111 </para>
112 <informaltable><tgroup cols="2"><tbody><row><entry align="char">
113 <para>int fd</para>
114 </entry><entry
115  align="char">
116 <para>File descriptor returned by a previous call to open().</para>
117 </entry>
118  </row><row><entry
119  align="char">
120 <para>int num</para>
121 </entry><entry
122  align="char">
123 <para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para>
124 </entry>
125  </row><row><entry
126  align="char">
127 <para>struct dtv_property *props</para>
128 </entry><entry
129  align="char">
130 <para>Points to the location where the front-end property commands are stored.</para>
131 </entry>
132  </row></tbody></tgroup></informaltable>
133 <para>ERRORS
134 </para>
135 <informaltable><tgroup cols="2"><tbody><row>
136   <entry align="char"><para>EINVAL</para></entry>
137   <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry>
138  </row><row>
139   <entry align="char"><para>ENOMEM</para></entry>
140   <entry align="char"><para>Out of memory.</para></entry>
141  </row><row>
142   <entry align="char"><para>EFAULT</para></entry>
143   <entry align="char"><para>Failure while copying data from/to userspace.</para></entry>
144  </row><row>
145   <entry align="char"><para>EOPNOTSUPP</para></entry>
146   <entry align="char"><para>Property type not supported.</para></entry>
147  </row></tbody></tgroup></informaltable>
148 </section>
149
150 <section>
151         <title>Property types</title>
152 <para>
153 On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
154 the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
155 get/set up to 64 properties. The actual meaning of each property is described on the next sections.
156 </para>
157
158 <para>The available frontend property types are shown on the next section.</para>
159 </section>
160
161 <section id="fe_property_parameters">
162         <title>Digital TV property parameters</title>
163         <section id="DTV-UNDEFINED">
164         <title><constant>DTV_UNDEFINED</constant></title>
165         <para>Used internally. A GET/SET operation for it won't change or return anything.</para>
166         </section>
167         <section id="DTV-TUNE">
168         <title><constant>DTV_TUNE</constant></title>
169         <para>Interpret the cache of data, build either a traditional frontend tunerequest so we can pass validation in the <constant>FE_SET_FRONTEND</constant> ioctl.</para>
170         </section>
171         <section id="DTV-CLEAR">
172         <title><constant>DTV_CLEAR</constant></title>
173         <para>Reset a cache of data specific to the frontend here. This does not effect hardware.</para>
174         </section>
175         <section id="DTV-FREQUENCY">
176                 <title><constant>DTV_FREQUENCY</constant></title>
177
178                 <para>Central frequency of the channel, in HZ.</para>
179
180                 <para>Notes:</para>
181                 <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
182                         E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
183                         the channel which is 6MHz.</para>
184
185                 <para>2)As in ISDB-Tsb the channel consists of only one or three segments the
186                         frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
187                         central frequency of the channel is expected.</para>
188         </section>
189         <section id="DTV-MODULATION">
190         <title><constant>DTV_MODULATION</constant></title>
191 <para>Specifies the frontend modulation type for cable and satellite types. The modulation can be one of the types bellow:</para>
192 <programlisting>
193  typedef enum fe_modulation {
194         QPSK,
195         QAM_16,
196         QAM_32,
197         QAM_64,
198         QAM_128,
199         QAM_256,
200         QAM_AUTO,
201         VSB_8,
202         VSB_16,
203         PSK_8,
204         APSK_16,
205         APSK_32,
206         DQPSK,
207  } fe_modulation_t;
208 </programlisting>
209         </section>
210         <section id="DTV-BANDWIDTH-HZ">
211                 <title><constant>DTV_BANDWIDTH_HZ</constant></title>
212
213                 <para>Bandwidth for the channel, in HZ.</para>
214
215                 <para>Possible values:
216                         <constant>1712000</constant>,
217                         <constant>5000000</constant>,
218                         <constant>6000000</constant>,
219                         <constant>7000000</constant>,
220                         <constant>8000000</constant>,
221                         <constant>10000000</constant>.
222                 </para>
223
224                 <para>Notes:</para>
225
226                 <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para>
227                 <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para>
228                 <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth
229                          for DVB-C depends on the symbol rate</para>
230                 <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from
231                         other parameters (DTV_ISDBT_SB_SEGMENT_IDX,
232                         DTV_ISDBT_SB_SEGMENT_COUNT).</para>
233                 <para>5) DVB-T supports 6, 7 and 8MHz.</para>
234                 <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para>
235         </section>
236         <section id="DTV-INVERSION">
237         <title><constant>DTV_INVERSION</constant></title>
238         <para>The Inversion field can take one of these values:
239         </para>
240         <programlisting>
241         typedef enum fe_spectral_inversion {
242                 INVERSION_OFF,
243                 INVERSION_ON,
244                 INVERSION_AUTO
245         } fe_spectral_inversion_t;
246         </programlisting>
247         <para>It indicates if spectral inversion should be presumed or not. In the automatic setting
248         (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by
249         itself.
250         </para>
251         </section>
252         <section id="DTV-DISEQC-MASTER">
253         <title><constant>DTV_DISEQC_MASTER</constant></title>
254         <para>Currently not implemented.</para>
255         </section>
256         <section id="DTV-SYMBOL-RATE">
257         <title><constant>DTV_SYMBOL_RATE</constant></title>
258         <para>Digital TV symbol rate, in bauds (symbols/second). Used on cable standards.</para>
259         </section>
260         <section id="DTV-INNER-FEC">
261         <title><constant>DTV_INNER_FEC</constant></title>
262         <para>Used cable/satellite transmissions. The acceptable values are:
263         </para>
264         <programlisting>
265 typedef enum fe_code_rate {
266         FEC_NONE = 0,
267         FEC_1_2,
268         FEC_2_3,
269         FEC_3_4,
270         FEC_4_5,
271         FEC_5_6,
272         FEC_6_7,
273         FEC_7_8,
274         FEC_8_9,
275         FEC_AUTO,
276         FEC_3_5,
277         FEC_9_10,
278 } fe_code_rate_t;
279         </programlisting>
280         <para>which correspond to error correction rates of 1/2, 2/3, etc.,
281         no error correction or auto detection.</para>
282         </section>
283         <section id="DTV-VOLTAGE">
284         <title><constant>DTV_VOLTAGE</constant></title>
285         <para>The voltage is usually used with non-DiSEqC capable LNBs to switch
286         the polarzation (horizontal/vertical). When using DiSEqC epuipment this
287         voltage has to be switched consistently to the DiSEqC commands as
288         described in the DiSEqC spec.</para>
289         <programlisting>
290                 typedef enum fe_sec_voltage {
291                 SEC_VOLTAGE_13,
292                 SEC_VOLTAGE_18
293                 } fe_sec_voltage_t;
294         </programlisting>
295         </section>
296         <section id="DTV-TONE">
297         <title><constant>DTV_TONE</constant></title>
298         <para>Currently not used.</para>
299         </section>
300         <section id="DTV-PILOT">
301         <title><constant>DTV_PILOT</constant></title>
302         <para>Sets DVB-S2 pilot</para>
303         <section id="fe-pilot-t">
304                 <title>fe_pilot type</title>
305                 <programlisting>
306 typedef enum fe_pilot {
307         PILOT_ON,
308         PILOT_OFF,
309         PILOT_AUTO,
310 } fe_pilot_t;
311                 </programlisting>
312                 </section>
313         </section>
314         <section id="DTV-ROLLOFF">
315         <title><constant>DTV_ROLLOFF</constant></title>
316                 <para>Sets DVB-S2 rolloff</para>
317
318         <section id="fe-rolloff-t">
319                 <title>fe_rolloff type</title>
320                 <programlisting>
321 typedef enum fe_rolloff {
322         ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
323         ROLLOFF_20,
324         ROLLOFF_25,
325         ROLLOFF_AUTO,
326 } fe_rolloff_t;
327                 </programlisting>
328                 </section>
329         </section>
330         <section id="DTV-DISEQC-SLAVE-REPLY">
331         <title><constant>DTV_DISEQC_SLAVE_REPLY</constant></title>
332         <para>Currently not implemented.</para>
333         </section>
334         <section id="DTV-FE-CAPABILITY-COUNT">
335         <title><constant>DTV_FE_CAPABILITY_COUNT</constant></title>
336         <para>Currently not implemented.</para>
337         </section>
338         <section id="DTV-FE-CAPABILITY">
339         <title><constant>DTV_FE_CAPABILITY</constant></title>
340         <para>Currently not implemented.</para>
341         </section>
342         <section id="DTV-DELIVERY-SYSTEM">
343                 <title><constant>DTV_DELIVERY_SYSTEM</constant></title>
344                 <para>Specifies the type of Delivery system</para>
345                 <section id="fe-delivery-system-t">
346                 <title>fe_delivery_system type</title>
347                 <para>Possible values: </para>
348 <programlisting>
349 typedef enum fe_delivery_system {
350         SYS_UNDEFINED,
351         SYS_DVBC_ANNEX_AC,
352         SYS_DVBC_ANNEX_B,
353         SYS_DVBT,
354         SYS_DSS,
355         SYS_DVBS,
356         SYS_DVBS2,
357         SYS_DVBH,
358         SYS_ISDBT,
359         SYS_ISDBS,
360         SYS_ISDBC,
361         SYS_ATSC,
362         SYS_ATSCMH,
363         SYS_DMBTH,
364         SYS_CMMB,
365         SYS_DAB,
366         SYS_DVBT2,
367 } fe_delivery_system_t;
368 </programlisting>
369                 </section>
370         </section>
371         <section id="DTV-ISDBT-PARTIAL-RECEPTION">
372                 <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title>
373
374                 <para>If <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether
375                         the channel is in partial reception mode or not.</para>
376
377                 <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and
378                         <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para>
379
380                 <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'
381                         <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel
382                         is consisting of one segment and layer or three segments and two layers.</para>
383
384                 <para>Possible values: 0, 1, -1 (AUTO)</para>
385         </section>
386         <section id="DTV-ISDBT-SOUND-BROADCASTING">
387                 <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title>
388
389                 <para>This field represents whether the other DTV_ISDBT_*-parameters are
390                         referring to an ISDB-T and an ISDB-Tsb channel. (See also
391                         <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para>
392
393                 <para>Possible values: 0, 1, -1 (AUTO)</para>
394         </section>
395         <section id="DTV-ISDBT-SB-SUBCHANNEL-ID">
396                 <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title>
397
398                 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
399
400                 <para>(Note of the author: This might not be the correct description of the
401                         <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical
402                         background needed to program a device)</para>
403
404                 <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
405                         set of connected ISDB-Tsb channels. In this set of channels every
406                         channel can be received independently. The number of connected
407                         ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
408                         bandwidth available.</para>
409
410                 <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
411                         broadcaster has several possibilities to put those channels in the
412                         air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
413                         segments from position 1-8 to 5-13 or anything in between.</para>
414
415                 <para>The underlying layer of segments are subchannels: each segment is
416                         consisting of several subchannels with a predefined IDs. A sub-channel
417                         is used to help the demodulator to synchronize on the channel.</para>
418
419                 <para>An ISDB-T channel is always centered over all sub-channels. As for
420                         the example above, in ISDB-Tsb it is no longer as simple as that.</para>
421
422                 <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the
423                         sub-channel ID of the segment to be demodulated.</para>
424
425                 <para>Possible values: 0 .. 41, -1 (AUTO)</para>
426         </section>
427         <section id="DTV-ISDBT-SB-SEGMENT-IDX">
428                 <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title>
429                 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
430                 <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be
431                         demodulated for an ISDB-Tsb channel where several of them are
432                         transmitted in the connected manner.</para>
433                 <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para>
434                 <para>Note: This value cannot be determined by an automatic channel search.</para>
435         </section>
436         <section id="DTV-ISDBT-SB-SEGMENT-COUNT">
437                 <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title>
438                 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
439                 <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb
440                         channels.</para>
441                 <para>Possible values: 1 .. 13</para>
442                 <para>Note: This value cannot be determined by an automatic channel search.</para>
443         </section>
444         <section id="isdb-hierq-layers">
445                 <title>Hierarchical layers</title>
446                 <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
447                         ISDB-T hierarchical layers can be decoded simultaneously. For that
448                         reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para>
449                 <para>ISDB-T has 3 hierarchical layers which each can use a part of the
450                         available segments. The total number of segments over all layers has
451                         to 13 in ISDB-T.</para>
452                 <section id="DTV-ISDBT-LAYER-ENABLED">
453                         <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title>
454                         <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling
455                                 layers in the decoding process. Setting all bits of
456                                 <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be
457                                 demodulated. This is the default.</para>
458                         <para>If the channel is in the partial reception mode
459                                 (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded
460                                 independently of the other 12 segments. In that mode layer A has to
461                                 have a <constant>SEGMENT_COUNT</constant> of 1.</para>
462                         <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
463                                 according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled
464                                 accordingly.</para>
465                         <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para>
466                         <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para>
467                         <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para>
468                         <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para>
469                         <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para>
470                 </section>
471                 <section id="DTV-ISDBT-LAYER-FEC">
472                         <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title>
473                         <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para>
474                 </section>
475                 <section id="DTV-ISDBT-LAYER-MODULATION">
476                         <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title>
477                         <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para>
478                         <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant>
479                                 and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para>
480                 </section>
481                 <section id="DTV-ISDBT-LAYER-SEGMENT-COUNT">
482                         <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title>
483                         <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para>
484                         <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and
485                                 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para>
486                         <informaltable id="isdbt-layer_seg-cnt-table">
487                                 <tgroup cols="6">
488                                         <tbody>
489                                                 <row>
490                                                         <entry>PR</entry>
491                                                         <entry>SB</entry>
492                                                         <entry>Layer A width</entry>
493                                                         <entry>Layer B width</entry>
494                                                         <entry>Layer C width</entry>
495                                                         <entry>total width</entry>
496                                                 </row>
497                                                 <row>
498                                                         <entry>0</entry>
499                                                         <entry>0</entry>
500                                                         <entry>1 .. 13</entry>
501                                                         <entry>1 .. 13</entry>
502                                                         <entry>1 .. 13</entry>
503                                                         <entry>13</entry>
504                                                 </row>
505                                                 <row>
506                                                         <entry>1</entry>
507                                                         <entry>0</entry>
508                                                         <entry>1</entry>
509                                                         <entry>1 .. 13</entry>
510                                                         <entry>1 .. 13</entry>
511                                                         <entry>13</entry>
512                                                 </row>
513                                                 <row>
514                                                         <entry>0</entry>
515                                                         <entry>1</entry>
516                                                         <entry>1</entry>
517                                                         <entry>0</entry>
518                                                         <entry>0</entry>
519                                                         <entry>1</entry>
520                                                 </row>
521                                                 <row>
522                                                         <entry>1</entry>
523                                                         <entry>1</entry>
524                                                         <entry>1</entry>
525                                                         <entry>2</entry>
526                                                         <entry>0</entry>
527                                                         <entry>13</entry>
528                                                 </row>
529                                         </tbody>
530                                 </tgroup>
531                         </informaltable>
532                 </section>
533                 <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING">
534                         <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title>
535                         <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para>
536                         <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values
537                                 here are referring to what can be found in the TMCC-structure -
538                                 independent of the mode.</para>
539                 </section>
540         </section>
541         <section id="DTV-API-VERSION">
542         <title><constant>DTV_API_VERSION</constant></title>
543         <para>Returns the major/minor version of the DVB API</para>
544         </section>
545         <section id="DTV-CODE-RATE-HP">
546         <title><constant>DTV_CODE_RATE_HP</constant></title>
547         <para>Used on terrestrial transmissions. The acceptable values are:
548         </para>
549         <programlisting>
550 typedef enum fe_code_rate {
551         FEC_NONE = 0,
552         FEC_1_2,
553         FEC_2_3,
554         FEC_3_4,
555         FEC_4_5,
556         FEC_5_6,
557         FEC_6_7,
558         FEC_7_8,
559         FEC_8_9,
560         FEC_AUTO,
561         FEC_3_5,
562         FEC_9_10,
563 } fe_code_rate_t;
564         </programlisting>
565         </section>
566         <section id="DTV-CODE-RATE-LP">
567         <title><constant>DTV_CODE_RATE_LP</constant></title>
568         <para>Used on terrestrial transmissions. The acceptable values are:
569         </para>
570         <programlisting>
571 typedef enum fe_code_rate {
572         FEC_NONE = 0,
573         FEC_1_2,
574         FEC_2_3,
575         FEC_3_4,
576         FEC_4_5,
577         FEC_5_6,
578         FEC_6_7,
579         FEC_7_8,
580         FEC_8_9,
581         FEC_AUTO,
582         FEC_3_5,
583         FEC_9_10,
584 } fe_code_rate_t;
585         </programlisting>
586         </section>
587         <section id="DTV-GUARD-INTERVAL">
588                 <title><constant>DTV_GUARD_INTERVAL</constant></title>
589
590                 <para>Possible values are:</para>
591 <programlisting>
592 typedef enum fe_guard_interval {
593         GUARD_INTERVAL_1_32,
594         GUARD_INTERVAL_1_16,
595         GUARD_INTERVAL_1_8,
596         GUARD_INTERVAL_1_4,
597         GUARD_INTERVAL_AUTO,
598         GUARD_INTERVAL_1_128,
599         GUARD_INTERVAL_19_128,
600         GUARD_INTERVAL_19_256,
601 } fe_guard_interval_t;
602 </programlisting>
603
604                 <para>Notes:</para>
605                 <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will
606                         try to find the correct guard interval (if capable) and will use TMCC to fill
607                         in the missing parameters.</para>
608                 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
609         </section>
610         <section id="DTV-TRANSMISSION-MODE">
611                 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
612
613                 <para>Specifies the number of carriers used by the standard</para>
614
615                 <para>Possible values are:</para>
616 <programlisting>
617 typedef enum fe_transmit_mode {
618         TRANSMISSION_MODE_2K,
619         TRANSMISSION_MODE_8K,
620         TRANSMISSION_MODE_AUTO,
621         TRANSMISSION_MODE_4K,
622         TRANSMISSION_MODE_1K,
623         TRANSMISSION_MODE_16K,
624         TRANSMISSION_MODE_32K,
625 } fe_transmit_mode_t;
626 </programlisting>
627                 <para>Notes:</para>
628                 <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
629                         'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para>
630
631                 <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the
632                         hardware will try to find the correct FFT-size (if capable) and will
633                         use TMCC to fill in the missing parameters.</para>
634                 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
635                 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
636         </section>
637         <section id="DTV-HIERARCHY">
638         <title><constant>DTV_HIERARCHY</constant></title>
639         <para>Frontend hierarchy</para>
640         <programlisting>
641 typedef enum fe_hierarchy {
642          HIERARCHY_NONE,
643          HIERARCHY_1,
644          HIERARCHY_2,
645          HIERARCHY_4,
646          HIERARCHY_AUTO
647  } fe_hierarchy_t;
648         </programlisting>
649         </section>
650         <section id="DTV-ISDBS-TS-ID">
651         <title><constant>DTV_ISDBS_TS_ID</constant></title>
652         <para>Currently unused.</para>
653         </section>
654         <section id="DTV-DVBT2-PLP-ID">
655                 <title><constant>DTV_DVBT2_PLP_ID</constant></title>
656                 <para>DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of
657                         many data types via a single multiplex. The API will soon support this
658                         at which point this section will be expanded.</para>
659         </section>
660 </section>
661         <section id="frontend-property-terrestrial-systems">
662         <title>Properties used on terrestrial delivery systems</title>
663                 <section id="dvbt-params">
664                         <title>DVB-T delivery system</title>
665                         <para>The following parameters are valid for DVB-T:</para>
666                         <itemizedlist mark='opencircle'>
667                                 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
668                                 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
669                                 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
670                                 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
671                                 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
672                                 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
673                                 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
674                                 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
675                                 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
676                                 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
677                                 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
678                                 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
679                                 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
680                         </itemizedlist>
681                 </section>
682                 <section id="dvbt2-params">
683                         <title>DVB-T2 delivery system</title>
684                         <para>DVB-T2support is currently in the early stages
685                         of development so expect this section to grow and become
686                         more detailed with time.</para>
687                 <para>The following parameters are valid for DVB-T2:</para>
688                 <itemizedlist mark='opencircle'>
689                         <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
690                         <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
691                         <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
692                         <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
693                         <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
694                         <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
695                         <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
696                         <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
697                         <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
698                         <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
699                         <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
700                         <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
701                         <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
702                         <listitem><para><link linkend="DTV-DVBT2-PLP-ID"><constant>DTV_DVBT2_PLP_ID</constant></link></para></listitem>
703                 </itemizedlist>
704                 </section>
705                 <section id="isdbt">
706                 <title>ISDB-T delivery system</title>
707                 <para>This ISDB-T/ISDB-Tsb API extension should reflect all information
708                         needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
709                         that some very sophisticated devices won't need certain parameters to
710                         tune.</para>
711                 <para>The information given here should help application writers to know how
712                         to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para>
713                 <para>The details given here about ISDB-T and ISDB-Tsb are just enough to
714                         basically show the dependencies between the needed parameter values,
715                         but surely some information is left out. For more detailed information
716                         see the following documents:</para>
717                 <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial
718                         Television Broadcasting" and</para>
719                 <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial
720                         Television Broadcasting".</para>
721                 <para>In order to understand the ISDB specific parameters,
722                         one has to have some knowledge the channel structure in
723                         ISDB-T and ISDB-Tsb. I.e. it has to be known to
724                         the reader that an ISDB-T channel consists of 13 segments,
725                         that it can have up to 3 layer sharing those segments,
726                         and things like that.</para>
727                 <para>The following parameters are valid for ISDB-T:</para>
728                 <itemizedlist mark='opencircle'>
729                         <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
730                         <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
731                         <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
732                         <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
733                         <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
734                         <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
735                         <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
736                         <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
737                         <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
738                         <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
739                         <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
740                         <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
741                         <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
742                         <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
743                         <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
744                         <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
745                         <listitem><para><link linkend="DTV-ISDBT-SB-SUBCHANNEL-ID"><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></link></para></listitem>
746                         <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-IDX"><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></link></para></listitem>
747                         <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-COUNT"><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></link></para></listitem>
748                         <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERA_FEC</constant></link></para></listitem>
749                         <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERA_MODULATION</constant></link></para></listitem>
750                         <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant></link></para></listitem>
751                         <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERA_TIME_INTERLEAVING</constant></link></para></listitem>
752                         <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERB_FEC</constant></link></para></listitem>
753                         <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERB_MODULATION</constant></link></para></listitem>
754                         <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERB_SEGMENT_COUNT</constant></link></para></listitem>
755                         <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERB_TIME_INTERLEAVING</constant></link></para></listitem>
756                         <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERC_FEC</constant></link></para></listitem>
757                         <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERC_MODULATION</constant></link></para></listitem>
758                         <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem>
759                         <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem>
760                 </itemizedlist>
761                 </section>
762         </section>
763         <section id="frontend-property-cable-systems">
764         <title>Properties used on cable delivery systems</title>
765         <para>TODO</para>
766         </section>
767         <section id="frontend-property-satellital-systems">
768         <title>Properties used on satellital delivery systems</title>
769         <para>TODO</para>
770         </section>
771 </section>