| <title>DVB Frontend API</title> |
| |
| <para>The DVB frontend device controls the tuner and DVB demodulator |
| hardware. It can be accessed through <emphasis |
| role="tt">/dev/dvb/adapter0/frontend0</emphasis>. Data types and and |
| ioctl definitions can be accessed by including <emphasis |
| role="tt">linux/dvb/frontend.h</emphasis> in your application.</para> |
| |
| <para>DVB frontends come in three varieties: DVB-S (satellite), DVB-C |
| (cable) and DVB-T (terrestrial). Transmission via the internet (DVB-IP) |
| is not yet handled by this API but a future extension is possible. For |
| DVB-S the frontend device also supports satellite equipment control |
| (SEC) via DiSEqC and V-SEC protocols. The DiSEqC (digital SEC) |
| specification is available from |
| <ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para> |
| |
| <para>Note that the DVB API may also be used for MPEG decoder-only PCI |
| cards, in which case there exists no frontend device.</para> |
| |
| <section id="frontend_types"> |
| <title>Frontend Data Types</title> |
| |
| <section id="frontend_type"> |
| <title>frontend type</title> |
| |
| <para>For historical reasons frontend types are named after the type of modulation used in |
| transmission.</para> |
| <programlisting> |
| typedef enum fe_type { |
| FE_QPSK, /⋆ DVB-S ⋆/ |
| FE_QAM, /⋆ DVB-C ⋆/ |
| FE_OFDM /⋆ DVB-T ⋆/ |
| } fe_type_t; |
| </programlisting> |
| |
| </section> |
| |
| <section id="frontend_caps"> |
| <title>frontend capabilities</title> |
| |
| <para>Capabilities describe what a frontend can do. Some capabilities can only be supported for |
| a specific frontend type.</para> |
| <programlisting> |
| typedef enum fe_caps { |
| FE_IS_STUPID = 0, |
| FE_CAN_INVERSION_AUTO = 0x1, |
| FE_CAN_FEC_1_2 = 0x2, |
| FE_CAN_FEC_2_3 = 0x4, |
| FE_CAN_FEC_3_4 = 0x8, |
| FE_CAN_FEC_4_5 = 0x10, |
| FE_CAN_FEC_5_6 = 0x20, |
| FE_CAN_FEC_6_7 = 0x40, |
| FE_CAN_FEC_7_8 = 0x80, |
| FE_CAN_FEC_8_9 = 0x100, |
| FE_CAN_FEC_AUTO = 0x200, |
| FE_CAN_QPSK = 0x400, |
| FE_CAN_QAM_16 = 0x800, |
| FE_CAN_QAM_32 = 0x1000, |
| FE_CAN_QAM_64 = 0x2000, |
| FE_CAN_QAM_128 = 0x4000, |
| FE_CAN_QAM_256 = 0x8000, |
| FE_CAN_QAM_AUTO = 0x10000, |
| FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, |
| FE_CAN_BANDWIDTH_AUTO = 0x40000, |
| FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, |
| FE_CAN_HIERARCHY_AUTO = 0x100000, |
| FE_CAN_MUTE_TS = 0x80000000, |
| FE_CAN_CLEAN_SETUP = 0x40000000 |
| } fe_caps_t; |
| </programlisting> |
| </section> |
| |
| <section id="frontend_info"> |
| <title>frontend information</title> |
| |
| <para>Information about the frontend ca be queried with FE_GET_INFO.</para> |
| |
| <programlisting> |
| struct dvb_frontend_info { |
| char name[128]; |
| fe_type_t type; |
| uint32_t frequency_min; |
| uint32_t frequency_max; |
| uint32_t frequency_stepsize; |
| uint32_t frequency_tolerance; |
| uint32_t symbol_rate_min; |
| uint32_t symbol_rate_max; |
| uint32_t symbol_rate_tolerance; /⋆ ppm ⋆/ |
| uint32_t notifier_delay; /⋆ ms ⋆/ |
| fe_caps_t caps; |
| }; |
| </programlisting> |
| </section> |
| |
| <section id="frontend_diseqc"> |
| <title>diseqc master command</title> |
| |
| <para>A message sent from the frontend to DiSEqC capable equipment.</para> |
| <programlisting> |
| struct dvb_diseqc_master_cmd { |
| uint8_t msg [6]; /⋆ { framing, address, command, data[3] } ⋆/ |
| uint8_t msg_len; /⋆ valid values are 3...6 ⋆/ |
| }; |
| </programlisting> |
| </section> |
| <section role="subsection"> |
| <title>diseqc slave reply</title> |
| |
| <para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para> |
| <programlisting> |
| struct dvb_diseqc_slave_reply { |
| uint8_t msg [4]; /⋆ { framing, data [3] } ⋆/ |
| uint8_t msg_len; /⋆ valid values are 0...4, 0 means no msg ⋆/ |
| int timeout; /⋆ return from ioctl after timeout ms with ⋆/ |
| }; /⋆ errorcode when no message was received ⋆/ |
| </programlisting> |
| </section> |
| |
| <section id="frontend_diseqc_slave_reply"> |
| <title>diseqc slave reply</title> |
| <para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation |
| (horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched |
| consistently to the DiSEqC commands as described in the DiSEqC spec.</para> |
| <programlisting> |
| typedef enum fe_sec_voltage { |
| SEC_VOLTAGE_13, |
| SEC_VOLTAGE_18 |
| } fe_sec_voltage_t; |
| </programlisting> |
| </section> |
| |
| <section id="frontend_sec_tone"> |
| <title>SEC continuous tone</title> |
| |
| <para>The continous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the |
| high/low band of a dual-band LNB. When using DiSEqC epuipment this voltage has to |
| be switched consistently to the DiSEqC commands as described in the DiSEqC |
| spec.</para> |
| <programlisting> |
| typedef enum fe_sec_tone_mode { |
| SEC_TONE_ON, |
| SEC_TONE_OFF |
| } fe_sec_tone_mode_t; |
| </programlisting> |
| </section> |
| |
| <section id="frontend_sec_burst"> |
| <title>SEC tone burst</title> |
| |
| <para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select |
| between two connected LNBs/satellites. When using DiSEqC epuipment this voltage has to |
| be switched consistently to the DiSEqC commands as described in the DiSEqC |
| spec.</para> |
| <programlisting> |
| typedef enum fe_sec_mini_cmd { |
| SEC_MINI_A, |
| SEC_MINI_B |
| } fe_sec_mini_cmd_t; |
| </programlisting> |
| |
| <para></para> |
| </section> |
| |
| <section id="frontend_status"> |
| <title>frontend status</title> |
| <para>Several functions of the frontend device use the fe_status data type defined |
| by</para> |
| <programlisting> |
| typedef enum fe_status { |
| FE_HAS_SIGNAL = 0x01, /⋆ found something above the noise level ⋆/ |
| FE_HAS_CARRIER = 0x02, /⋆ found a DVB signal ⋆/ |
| FE_HAS_VITERBI = 0x04, /⋆ FEC is stable ⋆/ |
| FE_HAS_SYNC = 0x08, /⋆ found sync bytes ⋆/ |
| FE_HAS_LOCK = 0x10, /⋆ everything's working... ⋆/ |
| FE_TIMEDOUT = 0x20, /⋆ no lock within the last ~2 seconds ⋆/ |
| FE_REINIT = 0x40 /⋆ frontend was reinitialized, ⋆/ |
| } fe_status_t; /⋆ application is recommned to reset ⋆/ |
| </programlisting> |
| <para>to indicate the current state and/or state changes of the frontend hardware. |
| </para> |
| |
| </section> |
| |
| <section id="frontend_params"> |
| <title>frontend parameters</title> |
| <para>The kind of parameters passed to the frontend device for tuning depend on |
| the kind of hardware you are using. All kinds of parameters are combined as an |
| union in the FrontendParameters structure:</para> |
| <programlisting> |
| struct dvb_frontend_parameters { |
| uint32_t frequency; /⋆ (absolute) frequency in Hz for QAM/OFDM ⋆/ |
| /⋆ intermediate frequency in kHz for QPSK ⋆/ |
| fe_spectral_inversion_t inversion; |
| union { |
| struct dvb_qpsk_parameters qpsk; |
| struct dvb_qam_parameters qam; |
| struct dvb_ofdm_parameters ofdm; |
| } u; |
| }; |
| </programlisting> |
| <para>For satellite QPSK frontends you have to use the <constant>QPSKParameters</constant> member defined by</para> |
| <programlisting> |
| struct dvb_qpsk_parameters { |
| uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ |
| fe_code_rate_t fec_inner; /⋆ forward error correction (see above) ⋆/ |
| }; |
| </programlisting> |
| <para>for cable QAM frontend you use the <constant>QAMParameters</constant> structure</para> |
| <programlisting> |
| struct dvb_qam_parameters { |
| uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ |
| fe_code_rate_t fec_inner; /⋆ forward error correction (see above) ⋆/ |
| fe_modulation_t modulation; /⋆ modulation type (see above) ⋆/ |
| }; |
| </programlisting> |
| <para>DVB-T frontends are supported by the <constant>OFDMParamters</constant> structure |
| </para> |
| <programlisting> |
| struct dvb_ofdm_parameters { |
| fe_bandwidth_t bandwidth; |
| fe_code_rate_t code_rate_HP; /⋆ high priority stream code rate ⋆/ |
| fe_code_rate_t code_rate_LP; /⋆ low priority stream code rate ⋆/ |
| fe_modulation_t constellation; /⋆ modulation type (see above) ⋆/ |
| fe_transmit_mode_t transmission_mode; |
| fe_guard_interval_t guard_interval; |
| fe_hierarchy_t hierarchy_information; |
| }; |
| </programlisting> |
| <para>In the case of QPSK frontends the <constant>Frequency</constant> field specifies the intermediate |
| frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of |
| the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and |
| OFDM frontends the Frequency specifies the absolute frequency and is given in |
| Hz. |
| </para> |
| <para>The Inversion field can take one of these values: |
| </para> |
| <programlisting> |
| typedef enum fe_spectral_inversion { |
| INVERSION_OFF, |
| INVERSION_ON, |
| INVERSION_AUTO |
| } fe_spectral_inversion_t; |
| </programlisting> |
| <para>It indicates if spectral inversion should be presumed or not. In the automatic setting |
| (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by |
| itself. |
| </para> |
| <para>The possible values for the <constant>FEC_inner</constant> field are |
| </para> |
| <programlisting> |
| typedef enum fe_code_rate { |
| FEC_NONE = 0, |
| FEC_1_2, |
| FEC_2_3, |
| FEC_3_4, |
| FEC_4_5, |
| FEC_5_6, |
| FEC_6_7, |
| FEC_7_8, |
| FEC_8_9, |
| FEC_AUTO |
| } fe_code_rate_t; |
| </programlisting> |
| <para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto |
| detection. |
| </para> |
| <para>For cable and terrestrial frontends (QAM and OFDM) one also has to specify the quadrature |
| modulation mode which can be one of the following: |
| </para> |
| <programlisting> |
| typedef enum fe_modulation { |
| QPSK, |
| QAM_16, |
| QAM_32, |
| QAM_64, |
| QAM_128, |
| QAM_256, |
| QAM_AUTO |
| } fe_modulation_t; |
| </programlisting> |
| <para>Finally, there are several more parameters for OFDM: |
| </para> |
| <programlisting> |
| typedef enum fe_transmit_mode { |
| TRANSMISSION_MODE_2K, |
| TRANSMISSION_MODE_8K, |
| TRANSMISSION_MODE_AUTO |
| } fe_transmit_mode_t; |
| </programlisting> |
| <programlisting> |
| typedef enum fe_bandwidth { |
| BANDWIDTH_8_MHZ, |
| BANDWIDTH_7_MHZ, |
| BANDWIDTH_6_MHZ, |
| BANDWIDTH_AUTO |
| } fe_bandwidth_t; |
| </programlisting> |
| <programlisting> |
| typedef enum fe_guard_interval { |
| GUARD_INTERVAL_1_32, |
| GUARD_INTERVAL_1_16, |
| GUARD_INTERVAL_1_8, |
| GUARD_INTERVAL_1_4, |
| GUARD_INTERVAL_AUTO |
| } fe_guard_interval_t; |
| </programlisting> |
| <programlisting> |
| typedef enum fe_hierarchy { |
| HIERARCHY_NONE, |
| HIERARCHY_1, |
| HIERARCHY_2, |
| HIERARCHY_4, |
| HIERARCHY_AUTO |
| } fe_hierarchy_t; |
| </programlisting> |
| |
| </section> |
| |
| <section id="frontend_events"> |
| <title>frontend events</title> |
| <programlisting> |
| struct dvb_frontend_event { |
| fe_status_t status; |
| struct dvb_frontend_parameters parameters; |
| }; |
| </programlisting> |
| </section> |
| </section> |
| |
| |
| <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 FE_GET_INFO.</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>ERRORS |
| </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>ERRORS |
| </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> |
| |
| <section id="frontend_read_status"> |
| <title>FE_READ_STATUS</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns status information about the front-end. This call only |
| requires read-only access to the device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_READ_STATUS, |
| fe_status_t ⋆status);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_READ_STATUS for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct fe_status_t |
| *status</para> |
| </entry><entry |
| align="char"> |
| <para>Points to the location where the front-end status word is |
| to be stored.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>status points to invalid address.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_read_ber"> |
| <title>FE_READ_BER</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns the bit error rate for the signal currently |
| received/demodulated by the front-end. For this command, read-only access to |
| the device is sufficient.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_READ_BER, |
| uint32_t ⋆ber);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_READ_BER for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>uint32_t *ber</para> |
| </entry><entry |
| align="char"> |
| <para>The bit error rate is stored into *ber.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>ber points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSIGNAL</para> |
| </entry><entry |
| align="char"> |
| <para>There is no signal, thus no meaningful bit error rate. Also |
| returned if the front-end is not turned on.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSYS</para> |
| </entry><entry |
| align="char"> |
| <para>Function not available for this device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_read_snr"> |
| <title>FE_READ_SNR</title> |
| |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns the signal-to-noise ratio for the signal currently received |
| by the front-end. For this command, read-only access to the device is sufficient.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_READ_SNR, int16_t |
| ⋆snr);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_READ_SNR for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>int16_t *snr</para> |
| </entry><entry |
| align="char"> |
| <para>The signal-to-noise ratio is stored into *snr.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>snr points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSIGNAL</para> |
| </entry><entry |
| align="char"> |
| <para>There is no signal, thus no meaningful signal strength |
| value. Also returned if front-end is not turned on.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSYS</para> |
| </entry><entry |
| align="char"> |
| <para>Function not available for this device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_read_signal_strength"> |
| <title>FE_READ_SIGNAL_STRENGTH</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns the signal strength value for the signal currently received |
| by the front-end. For this command, read-only access to the device is sufficient.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl( int fd, int request = |
| FE_READ_SIGNAL_STRENGTH, int16_t ⋆strength);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_READ_SIGNAL_STRENGTH for this |
| command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>int16_t *strength</para> |
| </entry><entry |
| align="char"> |
| <para>The signal strength value is stored into *strength.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>status points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSIGNAL</para> |
| </entry><entry |
| align="char"> |
| <para>There is no signal, thus no meaningful signal strength |
| value. Also returned if front-end is not turned on.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSYS</para> |
| </entry><entry |
| align="char"> |
| <para>Function not available for this device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_read_ub"> |
| <title>FE_READ_UNCORRECTED_BLOCKS</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns the number of uncorrected blocks detected by the device |
| driver during its lifetime. For meaningful measurements, the increment in block |
| count during a specific time interval should be calculated. For this command, |
| read-only access to the device is sufficient.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>Note that the counter will wrap to zero after its maximum count has been |
| reached.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl( int fd, int request = |
| FE_READ_UNCORRECTED_BLOCKS, uint32_t ⋆ublocks);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_READ_UNCORRECTED_BLOCKS for this |
| command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>uint32_t *ublocks</para> |
| </entry><entry |
| align="char"> |
| <para>The total number of uncorrected blocks seen by the driver |
| so far.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>ublocks points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>ENOSYS</para> |
| </entry><entry |
| align="char"> |
| <para>Function not available for this device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_set_fe"> |
| <title>FE_SET_FRONTEND</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call starts a tuning operation using specified parameters. The result |
| of this call will be successful if the parameters were valid and the tuning could |
| be initiated. The result of the tuning operation in itself, however, will arrive |
| asynchronously as an event (see documentation for FE_GET_EVENT and |
| FrontendEvent.) If a new FE_SET_FRONTEND operation is initiated before |
| the previous one was completed, the previous operation will be aborted in favor |
| of the new one. This command requires read/write access to the device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_SET_FRONTEND, |
| struct dvb_frontend_parameters ⋆p);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_SET_FRONTEND for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_frontend_parameters |
| *p</para> |
| </entry><entry |
| align="char"> |
| <para>Points to parameters for tuning operation.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>p points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINVAL</para> |
| </entry><entry |
| align="char"> |
| <para>Maximum supported symbol rate reached.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_get_fe"> |
| <title>FE_GET_FRONTEND</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call queries the currently effective frontend parameters. For this |
| command, read-only access to the device is sufficient.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_GET_FRONTEND, |
| struct dvb_frontend_parameters ⋆p);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_SET_FRONTEND for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_frontend_parameters |
| *p</para> |
| </entry><entry |
| align="char"> |
| <para>Points to parameters for tuning operation.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>p points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINVAL</para> |
| </entry><entry |
| align="char"> |
| <para>Maximum supported symbol rate reached.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| </section> |
| |
| <section id="frontend_get_event"> |
| <title>FE_GET_EVENT</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns a frontend event if available. If an event is not |
| available, the behavior depends on whether the device is in blocking or |
| non-blocking mode. In the latter case, the call fails immediately with errno |
| set to EWOULDBLOCK. In the former case, the call blocks until an event |
| becomes available.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>The standard Linux poll() and/or select() system calls can be used with the |
| device file descriptor to watch for new events. For select(), the file descriptor |
| should be included in the exceptfds argument, and for poll(), POLLPRI should |
| be specified as the wake-up condition. Since the event queue allocated is |
| rather small (room for 8 events), the queue must be serviced regularly to avoid |
| overflow. If an overflow happens, the oldest event is discarded from the queue, |
| and an error (EOVERFLOW) occurs the next time the queue is read. After |
| reporting the error condition in this fashion, subsequent FE_GET_EVENT |
| calls will return events from the queue as usual.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>For the sake of implementation simplicity, this command requires read/write |
| access to the device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = QPSK_GET_EVENT, |
| struct dvb_frontend_event ⋆ev);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_GET_EVENT for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_frontend_event |
| *ev</para> |
| </entry><entry |
| align="char"> |
| <para>Points to the location where the event,</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| </entry><entry |
| align="char"> |
| <para>if any, is to be stored.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>ev points to invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EWOULDBLOCK</para> |
| </entry><entry |
| align="char"> |
| <para>There is no event pending, and the device is in |
| non-blocking mode.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EOVERFLOW</para> |
| </entry><entry |
| align="char"> |
| </entry> |
| </row><row><entry |
| align="char"> |
| </entry><entry |
| align="char"> |
| <para>Overflow in event queue - one or more events were lost.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_get_info"> |
| <title>FE_GET_INFO</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call returns information about the front-end. This call only requires |
| read-only access to the device.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para> int ioctl(int fd, int request = FE_GET_INFO, struct |
| dvb_frontend_info ⋆info);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_GET_INFO for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_frontend_info |
| *info</para> |
| </entry><entry |
| align="char"> |
| <para>Points to the location where the front-end information is |
| to be stored.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>info points to invalid address.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_diseqc_reset_overload"> |
| <title>FE_DISEQC_RESET_OVERLOAD</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>If the bus has been automatically powered off due to power overload, this ioctl |
| call restores the power to the bus. The call requires read/write access to the |
| device. This call has no effect if the device is manually powered off. Not all |
| DVB adapters support this ioctl.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = |
| FE_DISEQC_RESET_OVERLOAD);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_DISEQC_RESET_OVERLOAD for this |
| command.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </para> |
| <informaltable><tgroup cols="2"><tbody><row><entry |
| align="char"> |
| <para>EBADF</para> |
| </entry><entry |
| align="char"> |
| <para>fd is not a valid file descriptor.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>Permission denied (needs read/write access).</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_diseqc_send_master_cmd"> |
| <title>FE_DISEQC_SEND_MASTER_CMD</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call is used to send a a DiSEqC command.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = |
| FE_DISEQC_SEND_MASTER_CMD, struct |
| dvb_diseqc_master_cmd ⋆cmd);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_DISEQC_SEND_MASTER_CMD for this |
| command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_diseqc_master_cmd |
| *cmd</para> |
| </entry><entry |
| align="char"> |
| <para>Pointer to the command to be transmitted.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </para> |
| <informaltable><tgroup cols="2"><tbody><row><entry |
| align="char"> |
| <para>EBADF</para> |
| </entry><entry |
| align="char"> |
| <para>fd is not a valid file descriptor.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>Seq points to an invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINVAL</para> |
| </entry><entry |
| align="char"> |
| <para>The data structure referred to by seq is invalid in some |
| way.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>Permission denied (needs read/write access).</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_diseqc_recv_slave_reply"> |
| <title>FE_DISEQC_RECV_SLAVE_REPLY</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call is used to receive reply to a DiSEqC 2.0 command.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = |
| FE_DISEQC_RECV_SLAVE_REPLY, struct |
| dvb_diseqc_slave_reply ⋆reply);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_DISEQC_RECV_SLAVE_REPLY for this |
| command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>struct |
| dvb_diseqc_slave_reply |
| *reply</para> |
| </entry><entry |
| align="char"> |
| <para>Pointer to the command to be received.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </para> |
| <informaltable><tgroup cols="2"><tbody><row><entry |
| align="char"> |
| <para>EBADF</para> |
| </entry><entry |
| align="char"> |
| <para>fd is not a valid file descriptor.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>Seq points to an invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINVAL</para> |
| </entry><entry |
| align="char"> |
| <para>The data structure referred to by seq is invalid in some |
| way.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>Permission denied (needs read/write access).</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_diseqc_send_burst"> |
| <title>FE_DISEQC_SEND_BURST</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This ioctl call is used to send a 22KHz tone burst.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = |
| FE_DISEQC_SEND_BURST, fe_sec_mini_cmd_t burst);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_DISEQC_SEND_BURST for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>fe_sec_mini_cmd_t |
| burst</para> |
| </entry><entry |
| align="char"> |
| <para>burst A or B.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </para> |
| <informaltable><tgroup cols="2"><tbody><row><entry |
| align="char"> |
| <para>EBADF</para> |
| </entry><entry |
| align="char"> |
| <para>fd is not a valid file descriptor.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EFAULT</para> |
| </entry><entry |
| align="char"> |
| <para>Seq points to an invalid address.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINVAL</para> |
| </entry><entry |
| align="char"> |
| <para>The data structure referred to by seq is invalid in some |
| way.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>Permission denied (needs read/write access).</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_set_tone"> |
| <title>FE_SET_TONE</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This call is used to set the generation of the continuous 22kHz tone. This call |
| requires read/write permissions.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_SET_TONE, |
| fe_sec_tone_mode_t tone);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_SET_TONE for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>fe_sec_tone_mode_t |
| tone</para> |
| </entry><entry |
| align="char"> |
| <para>The requested tone generation mode (on/off).</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>ERRORS |
| </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>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><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>File not opened with read permissions.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="fe_set_voltage"> |
| <title>FE_SET_VOLTAGE</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>This call is used to set the bus voltage. This call requires read/write |
| permissions.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = FE_SET_VOLTAGE, |
| fe_sec_voltage_t voltage);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_SET_VOLTAGE for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>fe_sec_voltage_t |
| voltage</para> |
| </entry><entry |
| align="char"> |
| <para>The requested bus voltage.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </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>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><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>File not opened with read permissions.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| |
| <section id="frontend_enable_high_lnb_volt"> |
| <title>FE_ENABLE_HIGH_LNB_VOLTAGE</title> |
| <para>DESCRIPTION |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>If high != 0 enables slightly higher voltages instead of 13/18V (to compensate |
| for long cables). This call requires read/write permissions. Not all DVB |
| adapters support this ioctl.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>SYNOPSIS |
| </para> |
| <informaltable><tgroup cols="1"><tbody><row><entry |
| align="char"> |
| <para>int ioctl(int fd, int request = |
| FE_ENABLE_HIGH_LNB_VOLTAGE, int high);</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><row><entry |
| align="char"> |
| <para>int request</para> |
| </entry><entry |
| align="char"> |
| <para>Equals FE_SET_VOLTAGE for this command.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>int high</para> |
| </entry><entry |
| align="char"> |
| <para>The requested bus voltage.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| |
| <para>ERRORS |
| </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>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><row><entry |
| align="char"> |
| <para>EPERM</para> |
| </entry><entry |
| align="char"> |
| <para>File not opened with read permissions.</para> |
| </entry> |
| </row><row><entry |
| align="char"> |
| <para>EINTERNAL</para> |
| </entry><entry |
| align="char"> |
| <para>Internal error in the device driver.</para> |
| </entry> |
| </row></tbody></tgroup></informaltable> |
| </section> |
| </section> |
| &sub-isdbt; |