0001 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
0002
0003 .. c:type:: dvb_frontend_parameters
0004
0005 *******************
0006 frontend parameters
0007 *******************
0008
0009 The kind of parameters passed to the frontend device for tuning depend
0010 on the kind of hardware you are using.
0011
0012 The struct ``dvb_frontend_parameters`` uses a union with specific
0013 per-system parameters. However, as newer delivery systems required more
0014 data, the structure size weren't enough to fit, and just extending its
0015 size would break the existing applications. So, those parameters were
0016 replaced by the usage of
0017 :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
0018 ioctl's. The new API is flexible enough to add new parameters to
0019 existing delivery systems, and to add newer delivery systems.
0020
0021 So, newer applications should use
0022 :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
0023 instead, in order to be able to support the newer System Delivery like
0024 DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
0025
0026 All kinds of parameters are combined as a union in the
0027 ``dvb_frontend_parameters`` structure:
0028
0029
0030 .. code-block:: c
0031
0032 struct dvb_frontend_parameters {
0033 uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
0034 /* intermediate frequency in kHz for QPSK */
0035 fe_spectral_inversion_t inversion;
0036 union {
0037 struct dvb_qpsk_parameters qpsk;
0038 struct dvb_qam_parameters qam;
0039 struct dvb_ofdm_parameters ofdm;
0040 struct dvb_vsb_parameters vsb;
0041 } u;
0042 };
0043
0044 In the case of QPSK frontends the ``frequency`` field specifies the
0045 intermediate frequency, i.e. the offset which is effectively added to
0046 the local oscillator frequency (LOF) of the LNB. The intermediate
0047 frequency has to be specified in units of kHz. For QAM and OFDM
0048 frontends the ``frequency`` specifies the absolute frequency and is
0049 given in Hz.
0050
0051
0052 .. c:type:: dvb_qpsk_parameters
0053
0054 QPSK parameters
0055 ===============
0056
0057 For satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
0058 structure:
0059
0060
0061 .. code-block:: c
0062
0063 struct dvb_qpsk_parameters {
0064 uint32_t symbol_rate; /* symbol rate in Symbols per second */
0065 fe_code_rate_t fec_inner; /* forward error correction (see above) */
0066 };
0067
0068
0069 .. c:type:: dvb_qam_parameters
0070
0071 QAM parameters
0072 ==============
0073
0074 for cable QAM frontend you use the ``dvb_qam_parameters`` structure:
0075
0076
0077 .. code-block:: c
0078
0079 struct dvb_qam_parameters {
0080 uint32_t symbol_rate; /* symbol rate in Symbols per second */
0081 fe_code_rate_t fec_inner; /* forward error correction (see above) */
0082 fe_modulation_t modulation; /* modulation type (see above) */
0083 };
0084
0085
0086 .. c:type:: dvb_vsb_parameters
0087
0088 VSB parameters
0089 ==============
0090
0091 ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
0092
0093
0094 .. code-block:: c
0095
0096 struct dvb_vsb_parameters {
0097 fe_modulation_t modulation; /* modulation type (see above) */
0098 };
0099
0100
0101 .. c:type:: dvb_ofdm_parameters
0102
0103 OFDM parameters
0104 ===============
0105
0106 DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
0107
0108
0109 .. code-block:: c
0110
0111 struct dvb_ofdm_parameters {
0112 fe_bandwidth_t bandwidth;
0113 fe_code_rate_t code_rate_HP; /* high priority stream code rate */
0114 fe_code_rate_t code_rate_LP; /* low priority stream code rate */
0115 fe_modulation_t constellation; /* modulation type (see above) */
0116 fe_transmit_mode_t transmission_mode;
0117 fe_guard_interval_t guard_interval;
0118 fe_hierarchy_t hierarchy_information;
0119 };