| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later | |
| .. c:type:: dvb_frontend_parameters | |
| ******************* | |
| frontend parameters | |
| ******************* | |
| The kind of parameters passed to the frontend device for tuning depend | |
| on the kind of hardware you are using. | |
| The struct ``dvb_frontend_parameters`` uses a union with specific | |
| per-system parameters. However, as newer delivery systems required more | |
| data, the structure size weren't enough to fit, and just extending its | |
| size would break the existing applications. So, those parameters were | |
| replaced by the usage of | |
| :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>` | |
| ioctl's. The new API is flexible enough to add new parameters to | |
| existing delivery systems, and to add newer delivery systems. | |
| So, newer applications should use | |
| :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>` | |
| instead, in order to be able to support the newer System Delivery like | |
| DVB-S2, DVB-T2, DVB-C2, ISDB, etc. | |
| All kinds of parameters are combined as a union in the | |
| ``dvb_frontend_parameters`` structure: | |
| .. code-block:: c | |
| 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; | |
| struct dvb_vsb_parameters vsb; | |
| } u; | |
| }; | |
| In the case of QPSK frontends the ``frequency`` 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. | |
| .. c:type:: dvb_qpsk_parameters | |
| QPSK parameters | |
| =============== | |
| For satellite QPSK frontends you have to use the ``dvb_qpsk_parameters`` | |
| structure: | |
| .. code-block:: c | |
| 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) */ | |
| }; | |
| .. c:type:: dvb_qam_parameters | |
| QAM parameters | |
| ============== | |
| for cable QAM frontend you use the ``dvb_qam_parameters`` structure: | |
| .. code-block:: c | |
| 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) */ | |
| }; | |
| .. c:type:: dvb_vsb_parameters | |
| VSB parameters | |
| ============== | |
| ATSC frontends are supported by the ``dvb_vsb_parameters`` structure: | |
| .. code-block:: c | |
| struct dvb_vsb_parameters { | |
| fe_modulation_t modulation; /* modulation type (see above) */ | |
| }; | |
| .. c:type:: dvb_ofdm_parameters | |
| OFDM parameters | |
| =============== | |
| DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure: | |
| .. code-block:: c | |
| 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; | |
| }; |