mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 19:53:59 +08:00
9df4fc5b8f
Format it as a table and links it with the legacy API xml. Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
229 lines
7.7 KiB
XML
229 lines
7.7 KiB
XML
<title>DVB Frontend API</title>
|
|
|
|
<para>The DVB frontend API was designed to support three types of delivery systems:</para>
|
|
<itemizedlist>
|
|
<listitem>Terrestrial systems: DVB-T, DVB-T2, ATSC, ATSC M/H, ISDB-T, DVB-H, DTMB, CMMB</listitem>
|
|
<listitem>Cable systems: DVB-C Annex A/C, ClearQAM (DVB-C Annex B), ISDB-C</listitem>
|
|
<listitem>Satellital systems: DVB-S, DVB-S2, DVB Turbo, ISDB-S, DSS</listitem>
|
|
</itemizedlist>
|
|
<para>The DVB frontend controls several sub-devices including:</para>
|
|
<itemizedlist>
|
|
<listitem>Tuner</listitem>,
|
|
<listitem>Digital TV demodulator</listitem>
|
|
<listitem>Low noise amplifier (LNA)</listitem>
|
|
<listitem>Satellite Equipment Control (SEC) hardware (only for Satellite).</listitem>
|
|
</itemizedlist>
|
|
<para>The frontend can be accessed through
|
|
<emphasis role="bold">/dev/dvb/adapter?/frontend?</emphasis>. Data types and
|
|
ioctl definitions can be accessed by including
|
|
<emphasis role="bold">linux/dvb/frontend.h</emphasis> in your application.
|
|
</para>
|
|
|
|
<para>NOTE: Transmission via the internet (DVB-IP)
|
|
is not yet handled by this API but a future extension is possible.</para>
|
|
<para>On Satellital systems, the API support for the Satellite Equipment Control
|
|
(SEC) allows to power control and to send/receive signals to control the
|
|
antenna subsystem, selecting the polarization and choosing the Intermediate
|
|
Frequency IF) of the Low Noise Block Converter Feed Horn (LNBf). It
|
|
supports the DiSEqC and V-SEC protocols. The DiSEqC (digital SEC)
|
|
specification is available at
|
|
<ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para>
|
|
|
|
<section id="query-dvb-frontend-info">
|
|
<title>Querying frontend information</title>
|
|
|
|
<para>Usually, the first thing to do when the frontend is opened is to
|
|
check the frontend capabilities. This is done using <link linkend="FE_GET_INFO">FE_GET_INFO</link>. This ioctl will enumerate
|
|
the DVB API version and other characteristics about the frontend, and
|
|
can be opened either in read only or read/write mode.</para>
|
|
</section>
|
|
|
|
<section id="dvb-fe-read-status">
|
|
<title>Querying frontend status and statistics</title>
|
|
|
|
<para>Once <link linkend="FE_GET_PROPERTY"><constant>FE_SET_PROPERTY</constant></link>
|
|
is called, the frontend will run a kernel thread that will periodically
|
|
check for the tuner lock status and provide statistics about the quality
|
|
of the signal.</para>
|
|
<para>The information about the frontend tuner locking status can be queried
|
|
using <link linkend="FE_READ_STATUS">FE_READ_STATUS</link>.</para>
|
|
<para>Signal statistics are provided via <link linkend="FE_GET_PROPERTY"><constant>FE_GET_PROPERTY</constant></link>.
|
|
Please notice that several statistics require the demodulator to be fully
|
|
locked (e. g. with FE_HAS_LOCK bit set). See
|
|
<xref linkend="frontend-stat-properties">Frontend statistics indicators</xref>
|
|
for more details.</para>
|
|
</section>
|
|
|
|
&sub-dvbproperty;
|
|
|
|
<section id="frontend_fcalls">
|
|
<title>Frontend Function Calls</title>
|
|
|
|
<section id="frontend_f_open">
|
|
<title>open()</title>
|
|
<para>DESCRIPTION</para>
|
|
<informaltable><tgroup cols="1"><tbody><row>
|
|
<entry align="char">
|
|
<para>This system call opens a named frontend device (/dev/dvb/adapter0/frontend0)
|
|
for subsequent use. Usually the first thing to do after a successful open is to
|
|
find out the frontend type with <link linkend="FE_GET_INFO">FE_GET_INFO</link>.</para>
|
|
<para>The device can be opened in read-only mode, which only allows monitoring of
|
|
device status and statistics, or read/write mode, which allows any kind of use
|
|
(e.g. performing tuning operations.)
|
|
</para>
|
|
<para>In a system with multiple front-ends, it is usually the case that multiple devices
|
|
cannot be open in read/write mode simultaneously. As long as a front-end
|
|
device is opened in read/write mode, other open() calls in read/write mode will
|
|
either fail or block, depending on whether non-blocking or blocking mode was
|
|
specified. A front-end 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. When an open() call has succeeded, the device will be ready
|
|
for use in the specified mode. This implies that the corresponding hardware is
|
|
powered up, and that other front-ends may have been powered down to make
|
|
that possible.</para>
|
|
</entry>
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
<para>SYNOPSIS</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>int open(const char ⋆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>RETURN VALUE</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="frontend_f_close">
|
|
<title>close()</title>
|
|
<para>DESCRIPTION
|
|
</para>
|
|
<informaltable><tgroup cols="1"><tbody><row><entry
|
|
align="char">
|
|
<para>This system call closes a previously opened front-end device. After closing
|
|
a front-end device, its corresponding hardware might be powered down
|
|
automatically.</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>RETURN VALUE</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>
|
|
|
|
&sub-fe-get-info;
|
|
&sub-fe-read-status;
|
|
&sub-fe-get-property;
|
|
&sub-fe-diseqc-reset-overload;
|
|
&sub-fe-diseqc-send-master-cmd;
|
|
&sub-fe-diseqc-recv-slave-reply;
|
|
&sub-fe-diseqc-send-burst;
|
|
&sub-fe-set-tone;
|
|
&sub-fe-set-voltage;
|
|
&sub-fe-enable-high-lnb-voltage;
|
|
&sub-fe-set-frontend-tune-mode;
|
|
|
|
</section>
|
|
|
|
<section id="frontend_legacy_dvbv3_api">
|
|
<title>DVB Frontend legacy API (a. k. a. DVBv3)</title>
|
|
<para>The usage of this API is deprecated, as it doesn't support all digital
|
|
TV standards, doesn't provide good statistics measurements and provides
|
|
incomplete information. This is kept only to support legacy applications.</para>
|
|
|
|
&sub-frontend_legacy_api;
|
|
</section>
|