Back to home page

OSCL-LXR

 
 

    


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