18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci.. c:type:: dvb_frontend_parameters
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci*******************
68c2ecf20Sopenharmony_cifrontend parameters
78c2ecf20Sopenharmony_ci*******************
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ciThe kind of parameters passed to the frontend device for tuning depend
108c2ecf20Sopenharmony_cion the kind of hardware you are using.
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciThe struct ``dvb_frontend_parameters`` uses a union with specific
138c2ecf20Sopenharmony_ciper-system parameters. However, as newer delivery systems required more
148c2ecf20Sopenharmony_cidata, the structure size weren't enough to fit, and just extending its
158c2ecf20Sopenharmony_cisize would break the existing applications. So, those parameters were
168c2ecf20Sopenharmony_cireplaced by the usage of
178c2ecf20Sopenharmony_ci:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
188c2ecf20Sopenharmony_ciioctl's. The new API is flexible enough to add new parameters to
198c2ecf20Sopenharmony_ciexisting delivery systems, and to add newer delivery systems.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ciSo, newer applications should use
228c2ecf20Sopenharmony_ci:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
238c2ecf20Sopenharmony_ciinstead, in order to be able to support the newer System Delivery like
248c2ecf20Sopenharmony_ciDVB-S2, DVB-T2, DVB-C2, ISDB, etc.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ciAll kinds of parameters are combined as a union in the
278c2ecf20Sopenharmony_ci``dvb_frontend_parameters`` structure:
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci.. code-block:: c
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci    struct dvb_frontend_parameters {
338c2ecf20Sopenharmony_ci	uint32_t frequency;     /* (absolute) frequency in Hz for QAM/OFDM */
348c2ecf20Sopenharmony_ci		    /* intermediate frequency in kHz for QPSK */
358c2ecf20Sopenharmony_ci	fe_spectral_inversion_t inversion;
368c2ecf20Sopenharmony_ci	union {
378c2ecf20Sopenharmony_ci	    struct dvb_qpsk_parameters qpsk;
388c2ecf20Sopenharmony_ci	    struct dvb_qam_parameters  qam;
398c2ecf20Sopenharmony_ci	    struct dvb_ofdm_parameters ofdm;
408c2ecf20Sopenharmony_ci	    struct dvb_vsb_parameters  vsb;
418c2ecf20Sopenharmony_ci	} u;
428c2ecf20Sopenharmony_ci    };
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciIn the case of QPSK frontends the ``frequency`` field specifies the
458c2ecf20Sopenharmony_ciintermediate frequency, i.e. the offset which is effectively added to
468c2ecf20Sopenharmony_cithe local oscillator frequency (LOF) of the LNB. The intermediate
478c2ecf20Sopenharmony_cifrequency has to be specified in units of kHz. For QAM and OFDM
488c2ecf20Sopenharmony_cifrontends the ``frequency`` specifies the absolute frequency and is
498c2ecf20Sopenharmony_cigiven in Hz.
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci.. c:type:: dvb_qpsk_parameters
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ciQPSK parameters
558c2ecf20Sopenharmony_ci===============
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ciFor satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
588c2ecf20Sopenharmony_cistructure:
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci.. code-block:: c
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci     struct dvb_qpsk_parameters {
648c2ecf20Sopenharmony_ci	 uint32_t        symbol_rate;  /* symbol rate in Symbols per second */
658c2ecf20Sopenharmony_ci	 fe_code_rate_t  fec_inner;    /* forward error correction (see above) */
668c2ecf20Sopenharmony_ci     };
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci.. c:type:: dvb_qam_parameters
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ciQAM parameters
728c2ecf20Sopenharmony_ci==============
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_cifor cable QAM frontend you use the ``dvb_qam_parameters`` structure:
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci.. code-block:: c
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci     struct dvb_qam_parameters {
808c2ecf20Sopenharmony_ci	 uint32_t         symbol_rate; /* symbol rate in Symbols per second */
818c2ecf20Sopenharmony_ci	 fe_code_rate_t   fec_inner;   /* forward error correction (see above) */
828c2ecf20Sopenharmony_ci	 fe_modulation_t  modulation;  /* modulation type (see above) */
838c2ecf20Sopenharmony_ci     };
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci.. c:type:: dvb_vsb_parameters
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciVSB parameters
898c2ecf20Sopenharmony_ci==============
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci.. code-block:: c
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci    struct dvb_vsb_parameters {
978c2ecf20Sopenharmony_ci	fe_modulation_t modulation; /* modulation type (see above) */
988c2ecf20Sopenharmony_ci    };
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci.. c:type:: dvb_ofdm_parameters
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ciOFDM parameters
1048c2ecf20Sopenharmony_ci===============
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciDVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci.. code-block:: c
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci     struct dvb_ofdm_parameters {
1128c2ecf20Sopenharmony_ci	 fe_bandwidth_t      bandwidth;
1138c2ecf20Sopenharmony_ci	 fe_code_rate_t      code_rate_HP;  /* high priority stream code rate */
1148c2ecf20Sopenharmony_ci	 fe_code_rate_t      code_rate_LP;  /* low priority stream code rate */
1158c2ecf20Sopenharmony_ci	 fe_modulation_t     constellation; /* modulation type (see above) */
1168c2ecf20Sopenharmony_ci	 fe_transmit_mode_t  transmission_mode;
1178c2ecf20Sopenharmony_ci	 fe_guard_interval_t guard_interval;
1188c2ecf20Sopenharmony_ci	 fe_hierarchy_t      hierarchy_information;
1198c2ecf20Sopenharmony_ci     };
120