| .. 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; |
| }; |