dvb-frontend-parameters.rst 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
  2. .. c:type:: dvb_frontend_parameters
  3. *******************
  4. frontend parameters
  5. *******************
  6. The kind of parameters passed to the frontend device for tuning depend
  7. on the kind of hardware you are using.
  8. The struct ``dvb_frontend_parameters`` uses a union with specific
  9. per-system parameters. However, as newer delivery systems required more
  10. data, the structure size weren't enough to fit, and just extending its
  11. size would break the existing applications. So, those parameters were
  12. replaced by the usage of
  13. :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
  14. ioctl's. The new API is flexible enough to add new parameters to
  15. existing delivery systems, and to add newer delivery systems.
  16. So, newer applications should use
  17. :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
  18. instead, in order to be able to support the newer System Delivery like
  19. DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
  20. All kinds of parameters are combined as a union in the
  21. ``dvb_frontend_parameters`` structure:
  22. .. code-block:: c
  23. struct dvb_frontend_parameters {
  24. uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
  25. /* intermediate frequency in kHz for QPSK */
  26. fe_spectral_inversion_t inversion;
  27. union {
  28. struct dvb_qpsk_parameters qpsk;
  29. struct dvb_qam_parameters qam;
  30. struct dvb_ofdm_parameters ofdm;
  31. struct dvb_vsb_parameters vsb;
  32. } u;
  33. };
  34. In the case of QPSK frontends the ``frequency`` field specifies the
  35. intermediate frequency, i.e. the offset which is effectively added to
  36. the local oscillator frequency (LOF) of the LNB. The intermediate
  37. frequency has to be specified in units of kHz. For QAM and OFDM
  38. frontends the ``frequency`` specifies the absolute frequency and is
  39. given in Hz.
  40. .. c:type:: dvb_qpsk_parameters
  41. QPSK parameters
  42. ===============
  43. For satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
  44. structure:
  45. .. code-block:: c
  46. struct dvb_qpsk_parameters {
  47. uint32_t symbol_rate; /* symbol rate in Symbols per second */
  48. fe_code_rate_t fec_inner; /* forward error correction (see above) */
  49. };
  50. .. c:type:: dvb_qam_parameters
  51. QAM parameters
  52. ==============
  53. for cable QAM frontend you use the ``dvb_qam_parameters`` structure:
  54. .. code-block:: c
  55. struct dvb_qam_parameters {
  56. uint32_t symbol_rate; /* symbol rate in Symbols per second */
  57. fe_code_rate_t fec_inner; /* forward error correction (see above) */
  58. fe_modulation_t modulation; /* modulation type (see above) */
  59. };
  60. .. c:type:: dvb_vsb_parameters
  61. VSB parameters
  62. ==============
  63. ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
  64. .. code-block:: c
  65. struct dvb_vsb_parameters {
  66. fe_modulation_t modulation; /* modulation type (see above) */
  67. };
  68. .. c:type:: dvb_ofdm_parameters
  69. OFDM parameters
  70. ===============
  71. DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
  72. .. code-block:: c
  73. struct dvb_ofdm_parameters {
  74. fe_bandwidth_t bandwidth;
  75. fe_code_rate_t code_rate_HP; /* high priority stream code rate */
  76. fe_code_rate_t code_rate_LP; /* low priority stream code rate */
  77. fe_modulation_t constellation; /* modulation type (see above) */
  78. fe_transmit_mode_t transmission_mode;
  79. fe_guard_interval_t guard_interval;
  80. fe_hierarchy_t hierarchy_information;
  81. };