€•÷TŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ7/translations/zh_CN/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/zh_TW/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/it_IT/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ja_JP/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ko_KR/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/pt_BR/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/sp_SP/userspace-api/media/dvb/dvbproperty”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”h]”hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/userspace-api/media/dvb/dvbproperty.rst”h´KubhŒtarget”“”)”}”(hŒ.. _frontend-properties:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œfrontend-properties”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒProperty types”h]”hŒProperty types”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hX™Tuning into a Digital TV physical channel and starting decoding it requires changing a set of parameters, in order to control the tuner, the demodulator, the Linear Low-noise Amplifier (LNA) and to set the antenna subsystem via Satellite Equipment Control - SEC (on satellite systems). The actual parameters are specific to each particular digital TV standards, and may change as the digital TV specs evolves.”h]”hX™Tuning into a Digital TV physical channel and starting decoding it requires changing a set of parameters, in order to control the tuner, the demodulator, the Linear Low-noise Amplifier (LNA) and to set the antenna subsystem via Satellite Equipment Control - SEC (on satellite systems). The actual parameters are specific to each particular digital TV standards, and may change as the digital TV specs evolves.”…””}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhØh²hubhì)”}”(hX“In the past (up to DVB API version 3 - DVBv3), the strategy used was to have a union with the parameters needed to tune for DVB-S, DVB-C, DVB-T and ATSC delivery systems grouped there. The problem is that, as the second generation standards appeared, the size of such union was not big enough to group the structs that would be required for those new standards. Also, extending it would break userspace.”h]”hX“In the past (up to DVB API version 3 - DVBv3), the strategy used was to have a union with the parameters needed to tune for DVB-S, DVB-C, DVB-T and ATSC delivery systems grouped there. The problem is that, as the second generation standards appeared, the size of such union was not big enough to group the structs that would be required for those new standards. Also, extending it would break userspace.”…””}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒäSo, the legacy union/struct based approach was deprecated, in favor of a properties set approach. On such approach, :ref:`FE_GET_PROPERTY and FE_SET_PROPERTY ` are used to setup the frontend and read its status.”h]”(hŒtSo, the legacy union/struct based approach was deprecated, in favor of a properties set approach. On such approach, ”…””}”(hj h²hh³Nh´Nubh)”}”(hŒ<:ref:`FE_GET_PROPERTY and FE_SET_PROPERTY `”h]”hŒinline”“”)”}”(hjh]”hŒ#FE_GET_PROPERTY and FE_SET_PROPERTY”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ#userspace-api/media/dvb/dvbproperty”Œ refdomain”j"Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œfe_get_property”uh1hh³hÇh´Khj ubhŒ4 are used to setup the frontend and read its status.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒ‹The actual action is determined by a set of dtv_property cmd/data pairs. With one single ioctl, is possible to get/set up to 64 properties.”h]”hŒ‹The actual action is determined by a set of dtv_property cmd/data pairs. With one single ioctl, is possible to get/set up to 64 properties.”…””}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒvThis section describes the new and recommended way to set the frontend, with supports all digital TV delivery systems.”h]”hŒvThis section describes the new and recommended way to set the frontend, with supports all digital TV delivery systems.”…””}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhŒnote”“”)”}”(hXB1. On Linux DVB API version 3, setting a frontend was done via struct :c:type:`dvb_frontend_parameters`. 2. Don't use DVB API version 3 calls on hardware with supports newer standards. Such API provides no support or a very limited support to new standards and/or new hardware. 3. Nowadays, most frontends support multiple delivery systems. Only with DVB API version 5 calls it is possible to switch between the multiple delivery systems supported by a frontend. 4. DVB API version 5 is also called *S2API*, as the first new standard added to it was DVB-S2.”h]”hŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒfOn Linux DVB API version 3, setting a frontend was done via struct :c:type:`dvb_frontend_parameters`. ”h]”hì)”}”(hŒeOn Linux DVB API version 3, setting a frontend was done via struct :c:type:`dvb_frontend_parameters`.”h]”(hŒCOn Linux DVB API version 3, setting a frontend was done via struct ”…””}”(hjmh²hh³Nh´Nubh)”}”(hŒ!:c:type:`dvb_frontend_parameters`”h]”hŒliteral”“”)”}”(hjwh]”hŒdvb_frontend_parameters”…””}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(j!Œc”Œc-type”eh"]”h$]”h&]”uh1jyhjuubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j4Œdvb_frontend_parameters”uh1hh³hÇh´K$hjmubhŒ.”…””}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K$hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjdubjh)”}”(hŒªDon't use DVB API version 3 calls on hardware with supports newer standards. Such API provides no support or a very limited support to new standards and/or new hardware. ”h]”hì)”}”(hŒ©Don't use DVB API version 3 calls on hardware with supports newer standards. Such API provides no support or a very limited support to new standards and/or new hardware.”h]”hŒ«Don’t use DVB API version 3 calls on hardware with supports newer standards. Such API provides no support or a very limited support to new standards and/or new hardware.”…””}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K'hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjdubjh)”}”(hŒ¶Nowadays, most frontends support multiple delivery systems. Only with DVB API version 5 calls it is possible to switch between the multiple delivery systems supported by a frontend. ”h]”hì)”}”(hŒµNowadays, most frontends support multiple delivery systems. Only with DVB API version 5 calls it is possible to switch between the multiple delivery systems supported by a frontend.”h]”hŒµNowadays, most frontends support multiple delivery systems. Only with DVB API version 5 calls it is possible to switch between the multiple delivery systems supported by a frontend.”…””}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K+hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjdubjh)”}”(hŒ[DVB API version 5 is also called *S2API*, as the first new standard added to it was DVB-S2.”h]”hì)”}”(hŒ[DVB API version 5 is also called *S2API*, as the first new standard added to it was DVB-S2.”h]”(hŒ!DVB API version 5 is also called ”…””}”(hjÛh²hh³Nh´NubhŒemphasis”“”)”}”(hŒ*S2API*”h]”hŒS2API”…””}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÛubhŒ3, as the first new standard added to it was DVB-S2.”…””}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K/hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjdubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jbhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hhØh²hh³Nh´Nubhì)”}”(hŒæ**Example**: in order to set the hardware to tune into a DVB-C channel at 651 kHz, modulated with 256-QAM, FEC 3/4 and symbol rate of 5.217 Mbauds, those properties should be sent to :ref:`FE_SET_PROPERTY ` ioctl:”h]”(hŒstrong”“”)”}”(hŒ **Example**”h]”hŒExample”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ¬: in order to set the hardware to tune into a DVB-C channel at 651 kHz, modulated with 256-QAM, FEC 3/4 and symbol rate of 5.217 Mbauds, those properties should be sent to ”…””}”(hjh²hh³Nh´Nubh)”}”(hŒ(:ref:`FE_SET_PROPERTY `”h]”j)”}”(hj.h]”hŒFE_SET_PROPERTY”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”j:Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œfe_get_property”uh1hh³hÇh´K2hjubhŒ ioctl:”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K2hhØh²hubhŒ block_quote”“”)”}”(hX_:ref:`DTV_DELIVERY_SYSTEM ` = SYS_DVBC_ANNEX_A :ref:`DTV_FREQUENCY ` = 651000000 :ref:`DTV_MODULATION ` = QAM_256 :ref:`DTV_INVERSION ` = INVERSION_AUTO :ref:`DTV_SYMBOL_RATE ` = 5217000 :ref:`DTV_INNER_FEC ` = FEC_3_4 :ref:`DTV_TUNE ` ”h]”(hì)”}”(hŒC:ref:`DTV_DELIVERY_SYSTEM ` = SYS_DVBC_ANNEX_A”h]”(h)”}”(hŒ0:ref:`DTV_DELIVERY_SYSTEM `”h]”j)”}”(hjbh]”hŒDTV_DELIVERY_SYSTEM”…””}”(hjdh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œdtv-delivery-system”uh1hh³hÇh´K7hj\ubhŒ = SYS_DVBC_ANNEX_A”…””}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K7hjXubhì)”}”(hŒ0:ref:`DTV_FREQUENCY ` = 651000000”h]”(h)”}”(hŒ$:ref:`DTV_FREQUENCY `”h]”j)”}”(hjh]”hŒ DTV_FREQUENCY”…””}”(hj’h²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jœŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œ dtv-frequency”uh1hh³hÇh´K9hjŠubhŒ = 651000000”…””}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K9hjXubhì)”}”(hŒ0:ref:`DTV_MODULATION ` = QAM_256”h]”(h)”}”(hŒ&:ref:`DTV_MODULATION `”h]”j)”}”(hj¾h]”hŒDTV_MODULATION”…””}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jÊŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œdtv-modulation”uh1hh³hÇh´K;hj¸ubhŒ = QAM_256”…””}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K;hjXubhì)”}”(hŒ5:ref:`DTV_INVERSION ` = INVERSION_AUTO”h]”(h)”}”(hŒ$:ref:`DTV_INVERSION `”h]”j)”}”(hjìh]”hŒ DTV_INVERSION”…””}”(hjîh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjêubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jøŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œ dtv-inversion”uh1hh³hÇh´K=hjæubhŒ = INVERSION_AUTO”…””}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K=hjXubhì)”}”(hŒ2:ref:`DTV_SYMBOL_RATE ` = 5217000”h]”(h)”}”(hŒ(:ref:`DTV_SYMBOL_RATE `”h]”j)”}”(hjh]”hŒDTV_SYMBOL_RATE”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”j&Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œdtv-symbol-rate”uh1hh³hÇh´K?hjubhŒ = 5217000”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K?hjXubhì)”}”(hŒ.:ref:`DTV_INNER_FEC ` = FEC_3_4”h]”(h)”}”(hŒ$:ref:`DTV_INNER_FEC `”h]”j)”}”(hjHh]”hŒ DTV_INNER_FEC”…””}”(hjJh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jTŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œ dtv-inner-fec”uh1hh³hÇh´KAhjBubhŒ = FEC_3_4”…””}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KAhjXubhì)”}”(hŒ:ref:`DTV_TUNE `”h]”h)”}”(hjrh]”j)”}”(hjrh]”hŒDTV_TUNE”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj4Œdtv-tune”uh1hh³hÇh´KChjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KChjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jVh³hÇh´K7hhØh²hubhì)”}”(hŒOThe code that would that would do the above is show in :ref:`dtv-prop-example`.”h]”(hŒ7The code that would that would do the above is show in ”…””}”(hjŸh²hh³Nh´Nubh)”}”(hŒ:ref:`dtv-prop-example`”h]”j)”}”(hj©h]”hŒdtv-prop-example”…””}”(hj«h²hh³Nh´Nubah}”(h]”h ]”(j!Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jµŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj4Œdtv-prop-example”uh1hh³hÇh´KEhjŸubhŒ.”…””}”(hjŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KEhhØh²hubhŒ container”“”)”}”(hhh]”(hŒcaption”“”)”}”(hŒ/Example: Setting digital TV frontend properties”h]”hŒ/Example: Setting digital TV frontend properties”…””}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖh³hÇh´KHhjÓubhŒ literal_block”“”)”}”(hXl#include #include #include #include static struct dtv_property props[] = { { .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A }, { .cmd = DTV_FREQUENCY, .u.data = 651000000 }, { .cmd = DTV_MODULATION, .u.data = QAM_256 }, { .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO }, { .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 }, { .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 }, { .cmd = DTV_TUNE } }; static struct dtv_properties dtv_prop = { .num = 6, .props = props }; int main(void) { int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR); if (!fd) { perror ("open"); return -1; } if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) { perror("ioctl"); return -1; } printf("Frontend set\\n"); return 0; }”h]”hXl#include #include #include #include static struct dtv_property props[] = { { .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A }, { .cmd = DTV_FREQUENCY, .u.data = 651000000 }, { .cmd = DTV_MODULATION, .u.data = QAM_256 }, { .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO }, { .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 }, { .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 }, { .cmd = DTV_TUNE } }; static struct dtv_properties dtv_prop = { .num = 6, .props = props }; int main(void) { int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR); if (!fd) { perror ("open"); return -1; } if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) { perror("ioctl"); return -1; } printf("Frontend set\\n"); return 0; }”…””}”hjèsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”j…Œhighlight_args”}”uh1jæh³hÇh´KHhjÓubeh}”(h]”Œdtv-prop-example”ah ]”Œliteral-block-wrapper”ah"]”Œdtv-prop-example”ah$]”h&]”Œ literal_block”ˆuh1jÑhhØh²hh³hh´NubhŒ attention”“”)”}”(hXcWhile it is possible to directly call the Kernel code like the above example, it is strongly recommended to use `libdvbv5 `__, as it provides abstraction to work with the supported digital TV standards and provides methods for usual operations like program scanning and to read/write channel descriptor files.”h]”hì)”}”(hXcWhile it is possible to directly call the Kernel code like the above example, it is strongly recommended to use `libdvbv5 `__, as it provides abstraction to work with the supported digital TV standards and provides methods for usual operations like program scanning and to read/write channel descriptor files.”h]”(hŒpWhile it is possible to directly call the Kernel code like the above example, it is strongly recommended to use ”…””}”(hj h²hh³Nh´NubhŒ reference”“”)”}”(hŒ;`libdvbv5 `__”h]”hŒlibdvbv5”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œlibdvbv5”Œrefuri”Œ,https://linuxtv.org/docs/libdvbv5/index.html”uh1jhj ubhŒ¸, as it provides abstraction to work with the supported digital TV standards and provides methods for usual operations like program scanning and to read/write channel descriptor files.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kohjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhØh²hh³hÇh´NubhŒcompound”“”)”}”(hhh]”hŒtoctree”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”hj.Œentries”]”(NŒ.userspace-api/media/dvb/fe_property_parameters”†”NŒ0userspace-api/media/dvb/frontend-stat-properties”†”NŒ=userspace-api/media/dvb/frontend-property-terrestrial-systems”†”NŒ7userspace-api/media/dvb/frontend-property-cable-systems”†”NŒ;userspace-api/media/dvb/frontend-property-satellite-systems”†”NŒ'userspace-api/media/dvb/frontend-header”†”eŒ includefiles”]”(jHjJjLjNjPjReŒmaxdepth”KjÖNŒglob”‰Œhidden”‰Œ includehidden”‰Œnumbered”KŒ titlesonly”‰Œ rawentries”]”uh1j;h³hÇh´Kvhj8ubah}”(h]”h ]”Œtoctree-wrapper”ah"]”h$]”h&]”uh1j6hhØh²hh³hÇh´Nubeh}”(h]”(Œproperty-types”hÕeh ]”h"]”(Œproperty types”Œfrontend-properties”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”jkhÊsŒexpect_referenced_by_id”}”hÕhÊsubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j•Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÕ]”hÊasŒnameids”}”(jkhÕjjjgjjüuŒ nametypes”}”(jkˆjj‰jˆuh}”(hÕhØjghØjüjÓuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hì)”}”(hhh]”hŒ9Hyperlink target "frontend-properties" is not referenced.”…””}”hjÿsbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjüubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1júubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.