]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - Documentation/DocBook/media/dvb/frontend_legacy_api.xml
[media] DocBook: move fe_bandwidth to the frontend legacy section
[mirror_ubuntu-artful-kernel.git] / Documentation / DocBook / media / dvb / frontend_legacy_api.xml
1 <section id="frontend_legacy_types">
2 <title>Frontend Legacy Data Types</title>
3
4 <section id="fe-type-t">
5 <title>Frontend type</title>
6
7 <para>For historical reasons, frontend types are named by the type of modulation
8 used in transmission. The fontend types are given by fe_type_t type, defined as:</para>
9
10 <table pgwide="1" frame="none" id="fe-type">
11 <title>Frontend types</title>
12 <tgroup cols="3">
13 &cs-def;
14 <thead>
15 <row>
16 <entry>fe_type</entry>
17 <entry>Description</entry>
18 <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry>
19 </row>
20 </thead>
21 <tbody valign="top">
22 <row>
23 <entry id="FE_QPSK"><constant>FE_QPSK</constant></entry>
24 <entry>For DVB-S standard</entry>
25 <entry><constant>SYS_DVBS</constant></entry>
26 </row>
27 <row>
28 <entry id="FE_QAM"><constant>FE_QAM</constant></entry>
29 <entry>For DVB-C annex A standard</entry>
30 <entry><constant>SYS_DVBC_ANNEX_A</constant></entry>
31 </row>
32 <row>
33 <entry id="FE_OFDM"><constant>FE_OFDM</constant></entry>
34 <entry>For DVB-T standard</entry>
35 <entry><constant>SYS_DVBT</constant></entry>
36 </row>
37 <row>
38 <entry id="FE_ATSC"><constant>FE_ATSC</constant></entry>
39 <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry>
40 <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry>
41 </row>
42 </tbody></tgroup></table>
43
44 <para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're
45 supported via the new <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter.
46 </para>
47
48 <para>In the old days, &dvb-frontend-info; used to contain
49 <constant>fe_type_t</constant> field to indicate the delivery systems,
50 filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this is
51 still filled to keep backward compatibility, the usage of this
52 field is deprecated, as it can report just one delivery system, but some
53 devices support multiple delivery systems. Please use
54 <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.
55 </para>
56 <para>On devices that support multiple delivery systems,
57 &dvb-frontend-info;::<constant>fe_type_t</constant> is filled with the
58 currently standard, as selected by the last call to
59 <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link>
60 using the &DTV-DELIVERY-SYSTEM; property.</para>
61 </section>
62
63 <section id="fe-bandwidth-t">
64 <title>Frontend bandwidth</title>
65
66 <table pgwide="1" frame="none" id="fe-bandwidth">
67 <title>enum fe_bandwidth</title>
68 <tgroup cols="2">
69 &cs-def;
70 <thead>
71 <row>
72 <entry>ID</entry>
73 <entry>Description</entry>
74 </row>
75 </thead>
76 <tbody valign="top">
77 <row>
78 <entry>BANDWIDTH_AUTO</entry>
79 <entry>Autodetect bandwidth (if supported)</entry>
80 </row><row>
81 <entry>BANDWIDTH_1_712_MHZ</entry>
82 <entry>1.712 MHz</entry>
83 </row><row>
84 <entry>BANDWIDTH_5_MHZ</entry>
85 <entry>5 MHz</entry>
86 </row><row>
87 <entry>BANDWIDTH_6_MHZ</entry>
88 <entry>6 MHz</entry>
89 </row><row>
90 <entry>BANDWIDTH_7_MHZ</entry>
91 <entry>7 MHz</entry>
92 </row><row>
93 <entry>BANDWIDTH_8_MHZ</entry>
94 <entry>8 MHz</entry>
95 </row><row>
96 <entry>BANDWIDTH_10_MHZ</entry>
97 <entry>10 MHz</entry>
98 </row><row>
99 </row>
100 </tbody>
101 </tgroup>
102 </table>
103
104 </section>
105
106 <section id="dvb-frontend-parameters">
107 <title>frontend parameters</title>
108 <para>The kind of parameters passed to the frontend device for tuning depend on
109 the kind of hardware you are using.</para>
110 <para>The struct <constant>dvb_frontend_parameters</constant> uses an
111 union with specific per-system parameters. However, as newer delivery systems
112 required more data, the structure size weren't enough to fit, and just
113 extending its size would break the existing applications. So, those parameters
114 were replaced by the usage of <link linkend="FE_GET_PROPERTY">
115 <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The
116 new API is flexible enough to add new parameters to existing delivery systems,
117 and to add newer delivery systems.</para>
118 <para>So, newer applications should use <link linkend="FE_GET_PROPERTY">
119 <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in
120 order to be able to support the newer System Delivery like DVB-S2, DVB-T2,
121 DVB-C2, ISDB, etc.</para>
122 <para>All kinds of parameters are combined as an union in the FrontendParameters structure:
123 <programlisting>
124 struct dvb_frontend_parameters {
125 uint32_t frequency; /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
126 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
127 &fe-spectral-inversion-t; inversion;
128 union {
129 struct dvb_qpsk_parameters qpsk;
130 struct dvb_qam_parameters qam;
131 struct dvb_ofdm_parameters ofdm;
132 struct dvb_vsb_parameters vsb;
133 } u;
134 };
135 </programlisting></para>
136 <para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate
137 frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
138 the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
139 OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz.
140 </para>
141
142 <section id="dvb-qpsk-parameters">
143 <title>QPSK parameters</title>
144 <para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para>
145 <programlisting>
146 struct dvb_qpsk_parameters {
147 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
148 fe_code_rate_t fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
149 };
150 </programlisting>
151 </section>
152
153 <section id="dvb-qam-parameters">
154 <title>QAM parameters</title>
155 <para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para>
156 <programlisting>
157 struct dvb_qam_parameters {
158 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
159 fe_code_rate_t fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
160 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
161 };
162 </programlisting>
163 </section>
164
165 <section id="dvb-vsb-parameters">
166 <title>VSB parameters</title>
167 <para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para>
168 <programlisting>
169 struct dvb_vsb_parameters {
170 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
171 };
172 </programlisting>
173 </section>
174
175 <section id="dvb-ofdm-parameters">
176 <title>OFDM parameters</title>
177 <para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para>
178 <programlisting>
179 struct dvb_ofdm_parameters {
180 &fe-bandwidth-t; bandwidth;
181 fe_code_rate_t code_rate_HP; /&#x22C6; high priority stream code rate &#x22C6;/
182 fe_code_rate_t code_rate_LP; /&#x22C6; low priority stream code rate &#x22C6;/
183 &fe-modulation-t; constellation; /&#x22C6; modulation type (see above) &#x22C6;/
184 &fe-transmit-mode-t; transmission_mode;
185 fe_guard_interval_t guard_interval;
186 fe_hierarchy_t hierarchy_information;
187 };
188 </programlisting>
189 </section>
190 </section>
191
192 <section id="dvb-frontend-event">
193 <title>frontend events</title>
194 <programlisting>
195 struct dvb_frontend_event {
196 fe_status_t status;
197 struct dvb_frontend_parameters parameters;
198 };
199 </programlisting>
200 </section>
201 </section>
202
203 <section id="frontend_fcalls">
204 <title>Frontend Legacy Function Calls</title>
205
206 <para>Those functions are defined at DVB version 3. The support is kept in
207 the kernel due to compatibility issues only. Their usage is strongly
208 not recommended</para>
209
210 <section id="FE_READ_BER">
211 <title>FE_READ_BER</title>
212 <para>DESCRIPTION
213 </para>
214 <informaltable><tgroup cols="1"><tbody><row><entry
215 align="char">
216 <para>This ioctl call returns the bit error rate for the signal currently
217 received/demodulated by the front-end. For this command, read-only access to
218 the device is sufficient.</para>
219 </entry>
220 </row></tbody></tgroup></informaltable>
221 <para>SYNOPSIS
222 </para>
223 <informaltable><tgroup cols="1"><tbody><row><entry
224 align="char">
225 <para>int ioctl(int fd, int request = <link linkend="FE_READ_BER">FE_READ_BER</link>,
226 uint32_t &#x22C6;ber);</para>
227 </entry>
228 </row></tbody></tgroup></informaltable>
229 <para>PARAMETERS
230 </para>
231 <informaltable><tgroup cols="2"><tbody><row><entry
232 align="char">
233 <para>int fd</para>
234 </entry><entry
235 align="char">
236 <para>File descriptor returned by a previous call to open().</para>
237 </entry>
238 </row><row><entry
239 align="char">
240 <para>int request</para>
241 </entry><entry
242 align="char">
243 <para>Equals <link linkend="FE_READ_BER">FE_READ_BER</link> for this command.</para>
244 </entry>
245 </row><row><entry
246 align="char">
247 <para>uint32_t *ber</para>
248 </entry><entry
249 align="char">
250 <para>The bit error rate is stored into *ber.</para>
251 </entry>
252 </row></tbody></tgroup></informaltable>
253
254 &return-value-dvb;
255 </section>
256
257 <section id="FE_READ_SNR">
258 <title>FE_READ_SNR</title>
259
260 <para>DESCRIPTION
261 </para>
262 <informaltable><tgroup cols="1"><tbody><row><entry
263 align="char">
264 <para>This ioctl call returns the signal-to-noise ratio for the signal currently received
265 by the front-end. For this command, read-only access to the device is sufficient.</para>
266 </entry>
267 </row></tbody></tgroup></informaltable>
268 <para>SYNOPSIS
269 </para>
270 <informaltable><tgroup cols="1"><tbody><row><entry
271 align="char">
272 <para>int ioctl(int fd, int request = <link linkend="FE_READ_SNR">FE_READ_SNR</link>, uint16_t
273 &#x22C6;snr);</para>
274 </entry>
275 </row></tbody></tgroup></informaltable>
276 <para>PARAMETERS
277 </para>
278 <informaltable><tgroup cols="2"><tbody><row><entry
279 align="char">
280 <para>int fd</para>
281 </entry><entry
282 align="char">
283 <para>File descriptor returned by a previous call to open().</para>
284 </entry>
285 </row><row><entry
286 align="char">
287 <para>int request</para>
288 </entry><entry
289 align="char">
290 <para>Equals <link linkend="FE_READ_SNR">FE_READ_SNR</link> for this command.</para>
291 </entry>
292 </row><row><entry
293 align="char">
294 <para>uint16_t *snr</para>
295 </entry><entry
296 align="char">
297 <para>The signal-to-noise ratio is stored into *snr.</para>
298 </entry>
299 </row></tbody></tgroup></informaltable>
300
301 &return-value-dvb;
302 </section>
303
304 <section id="FE_READ_SIGNAL_STRENGTH">
305 <title>FE_READ_SIGNAL_STRENGTH</title>
306 <para>DESCRIPTION
307 </para>
308 <informaltable><tgroup cols="1"><tbody><row><entry
309 align="char">
310 <para>This ioctl call returns the signal strength value for the signal currently received
311 by the front-end. For this command, read-only access to the device is sufficient.</para>
312 </entry>
313 </row></tbody></tgroup></informaltable>
314 <para>SYNOPSIS
315 </para>
316 <informaltable><tgroup cols="1"><tbody><row><entry
317 align="char">
318 <para>int ioctl( int fd, int request =
319 <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link>, uint16_t &#x22C6;strength);</para>
320 </entry>
321 </row></tbody></tgroup></informaltable>
322
323 <para>PARAMETERS
324 </para>
325 <informaltable><tgroup cols="2"><tbody><row><entry
326 align="char">
327 <para>int fd</para>
328 </entry><entry
329 align="char">
330 <para>File descriptor returned by a previous call to open().</para>
331 </entry>
332 </row><row><entry
333 align="char">
334 <para>int request</para>
335 </entry><entry
336 align="char">
337 <para>Equals <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> for this
338 command.</para>
339 </entry>
340 </row><row><entry
341 align="char">
342 <para>uint16_t *strength</para>
343 </entry><entry
344 align="char">
345 <para>The signal strength value is stored into *strength.</para>
346 </entry>
347 </row></tbody></tgroup></informaltable>
348
349 &return-value-dvb;
350 </section>
351
352 <section id="FE_READ_UNCORRECTED_BLOCKS">
353 <title>FE_READ_UNCORRECTED_BLOCKS</title>
354 <para>DESCRIPTION
355 </para>
356 <informaltable><tgroup cols="1"><tbody><row><entry
357 align="char">
358 <para>This ioctl call returns the number of uncorrected blocks detected by the device
359 driver during its lifetime. For meaningful measurements, the increment in block
360 count during a specific time interval should be calculated. For this command,
361 read-only access to the device is sufficient.</para>
362 </entry>
363 </row><row><entry
364 align="char">
365 <para>Note that the counter will wrap to zero after its maximum count has been
366 reached.</para>
367 </entry>
368 </row></tbody></tgroup></informaltable>
369 <para>SYNOPSIS
370 </para>
371 <informaltable><tgroup cols="1"><tbody><row><entry
372 align="char">
373 <para>int ioctl( int fd, int request =
374 <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link>, uint32_t &#x22C6;ublocks);</para>
375 </entry>
376 </row></tbody></tgroup></informaltable>
377 <para>PARAMETERS
378 </para>
379 <informaltable><tgroup cols="2"><tbody><row><entry
380 align="char">
381 <para>int fd</para>
382 </entry><entry
383 align="char">
384 <para>File descriptor returned by a previous call to open().</para>
385 </entry>
386 </row><row><entry
387 align="char">
388 <para>int request</para>
389 </entry><entry
390 align="char">
391 <para>Equals <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> for this
392 command.</para>
393 </entry>
394 </row><row><entry
395 align="char">
396 <para>uint32_t *ublocks</para>
397 </entry><entry
398 align="char">
399 <para>The total number of uncorrected blocks seen by the driver
400 so far.</para>
401 </entry>
402 </row></tbody></tgroup></informaltable>
403
404 &return-value-dvb;
405 </section>
406
407 <section id="FE_SET_FRONTEND">
408 <title>FE_SET_FRONTEND</title>
409 <para>DESCRIPTION
410 </para>
411 <informaltable><tgroup cols="1"><tbody><row><entry
412 align="char">
413 <para>This ioctl call starts a tuning operation using specified parameters. The result
414 of this call will be successful if the parameters were valid and the tuning could
415 be initiated. The result of the tuning operation in itself, however, will arrive
416 asynchronously as an event (see documentation for <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> and
417 FrontendEvent.) If a new <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> operation is initiated before
418 the previous one was completed, the previous operation will be aborted in favor
419 of the new one. This command requires read/write access to the device.</para>
420 </entry>
421 </row></tbody></tgroup></informaltable>
422
423 <para>SYNOPSIS
424 </para>
425 <informaltable><tgroup cols="1"><tbody><row><entry
426 align="char">
427 <para>int ioctl(int fd, int request = <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link>,
428 struct dvb_frontend_parameters &#x22C6;p);</para>
429 </entry>
430 </row></tbody></tgroup></informaltable>
431 <para>PARAMETERS
432 </para>
433 <informaltable><tgroup cols="2"><tbody><row><entry
434 align="char">
435 <para>int fd</para>
436 </entry><entry
437 align="char">
438 <para>File descriptor returned by a previous call to open().</para>
439 </entry>
440 </row><row><entry
441 align="char">
442 <para>int request</para>
443 </entry><entry
444 align="char">
445 <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
446 </entry>
447 </row><row><entry
448 align="char">
449 <para>struct
450 dvb_frontend_parameters
451 *p</para>
452 </entry><entry
453 align="char">
454 <para>Points to parameters for tuning operation.</para>
455 </entry>
456 </row></tbody></tgroup></informaltable>
457
458 &return-value-dvb;
459 <informaltable><tgroup cols="2"><tbody><row><entry
460 align="char">
461 <para>EINVAL</para>
462 </entry><entry
463 align="char">
464 <para>Maximum supported symbol rate reached.</para>
465 </entry>
466 </row></tbody></tgroup></informaltable>
467 </section>
468
469 <section id="FE_GET_FRONTEND">
470 <title>FE_GET_FRONTEND</title>
471 <para>DESCRIPTION
472 </para>
473 <informaltable><tgroup cols="1"><tbody><row><entry
474 align="char">
475 <para>This ioctl call queries the currently effective frontend parameters. For this
476 command, read-only access to the device is sufficient.</para>
477 </entry>
478 </row></tbody></tgroup></informaltable>
479
480 <para>SYNOPSIS
481 </para>
482 <informaltable><tgroup cols="1"><tbody><row><entry
483 align="char">
484 <para>int ioctl(int fd, int request = <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link>,
485 struct dvb_frontend_parameters &#x22C6;p);</para>
486 </entry>
487 </row></tbody></tgroup></informaltable>
488
489 <para>PARAMETERS
490 </para>
491 <informaltable><tgroup cols="2"><tbody><row><entry
492 align="char">
493 <para>int fd</para>
494 </entry><entry
495 align="char">
496 <para>File descriptor returned by a previous call to open().</para>
497 </entry>
498 </row><row><entry
499 align="char">
500 <para>int request</para>
501 </entry><entry
502 align="char">
503 <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
504 </entry>
505 </row><row><entry
506 align="char">
507 <para>struct
508 dvb_frontend_parameters
509 *p</para>
510 </entry><entry
511 align="char">
512 <para>Points to parameters for tuning operation.</para>
513 </entry>
514 </row></tbody></tgroup></informaltable>
515
516 &return-value-dvb;
517 <informaltable><tgroup cols="2"><tbody><row><entry
518 align="char">
519 <para>EINVAL</para>
520 </entry><entry
521 align="char">
522 <para>Maximum supported symbol rate reached.</para>
523 </entry>
524 </row></tbody></tgroup></informaltable>
525
526 </section>
527
528 <section id="FE_GET_EVENT">
529 <title>FE_GET_EVENT</title>
530 <para>DESCRIPTION
531 </para>
532 <informaltable><tgroup cols="1"><tbody><row><entry
533 align="char">
534 <para>This ioctl call returns a frontend event if available. If an event is not
535 available, the behavior depends on whether the device is in blocking or
536 non-blocking mode. In the latter case, the call fails immediately with errno
537 set to EWOULDBLOCK. In the former case, the call blocks until an event
538 becomes available.</para>
539 </entry>
540 </row><row><entry
541 align="char">
542 <para>The standard Linux poll() and/or select() system calls can be used with the
543 device file descriptor to watch for new events. For select(), the file descriptor
544 should be included in the exceptfds argument, and for poll(), POLLPRI should
545 be specified as the wake-up condition. Since the event queue allocated is
546 rather small (room for 8 events), the queue must be serviced regularly to avoid
547 overflow. If an overflow happens, the oldest event is discarded from the queue,
548 and an error (EOVERFLOW) occurs the next time the queue is read. After
549 reporting the error condition in this fashion, subsequent
550 <link linkend="FE_GET_EVENT">FE_GET_EVENT</link>
551 calls will return events from the queue as usual.</para>
552 </entry>
553 </row><row><entry
554 align="char">
555 <para>For the sake of implementation simplicity, this command requires read/write
556 access to the device.</para>
557 </entry>
558 </row></tbody></tgroup></informaltable>
559
560 <para>SYNOPSIS
561 </para>
562 <informaltable><tgroup cols="1"><tbody><row><entry
563 align="char">
564 <para>int ioctl(int fd, int request = QPSK_GET_EVENT,
565 struct dvb_frontend_event &#x22C6;ev);</para>
566 </entry>
567 </row></tbody></tgroup></informaltable>
568
569 <para>PARAMETERS
570 </para>
571 <informaltable><tgroup cols="2"><tbody><row><entry
572 align="char">
573 <para>int fd</para>
574 </entry><entry
575 align="char">
576 <para>File descriptor returned by a previous call to open().</para>
577 </entry>
578 </row><row><entry
579 align="char">
580 <para>int request</para>
581 </entry><entry
582 align="char">
583 <para>Equals <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> for this command.</para>
584 </entry>
585 </row><row><entry
586 align="char">
587 <para>struct
588 dvb_frontend_event
589 *ev</para>
590 </entry><entry
591 align="char">
592 <para>Points to the location where the event,</para>
593 </entry>
594 </row><row><entry
595 align="char">
596 </entry><entry
597 align="char">
598 <para>if any, is to be stored.</para>
599 </entry>
600 </row></tbody></tgroup></informaltable>
601
602 &return-value-dvb;
603 <informaltable><tgroup cols="2"><tbody><row><entry
604 align="char">
605 <para>EWOULDBLOCK</para>
606 </entry><entry
607 align="char">
608 <para>There is no event pending, and the device is in
609 non-blocking mode.</para>
610 </entry>
611 </row><row><entry
612 align="char">
613 <para>EOVERFLOW</para>
614 </entry><entry
615 align="char">
616 <para>Overflow in event queue - one or more events were lost.</para>
617 </entry>
618 </row></tbody></tgroup></informaltable>
619 </section>
620
621 <section id="FE_DISHNETWORK_SEND_LEGACY_CMD">
622 <title>FE_DISHNETWORK_SEND_LEGACY_CMD</title>
623 <para>DESCRIPTION</para>
624 <informaltable><tgroup cols="1"><tbody><row>
625 <entry align="char">
626 <para>WARNING: This is a very obscure legacy command, used only at stv0299 driver. Should not be used on newer drivers.</para>
627 <para>It provides a non-standard method for selecting Diseqc voltage on the frontend, for Dish Network legacy switches.</para>
628 <para>As support for this ioctl were added in 2004, this means that such dishes were already legacy in 2004.</para>
629 </entry>
630 </row></tbody></tgroup></informaltable>
631
632 <para>SYNOPSIS</para>
633 <informaltable><tgroup cols="1"><tbody><row>
634 <entry align="char">
635 <para>int ioctl(int fd, int request =
636 <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link>, unsigned long cmd);</para>
637 </entry>
638 </row></tbody></tgroup></informaltable>
639
640 <para>PARAMETERS</para>
641 <informaltable><tgroup cols="2"><tbody><row>
642 <entry align="char">
643 <para>unsigned long cmd</para>
644 </entry>
645 <entry align="char">
646 <para>
647 sends the specified raw cmd to the dish via DISEqC.
648 </para>
649 </entry>
650 </row></tbody></tgroup></informaltable>
651
652 &return-value-dvb;
653 </section>
654
655 </section>