Jsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget:/translations/zh_CN/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/zh_TW/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/it_IT/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/ja_JP/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/ko_KR/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/pt_BR/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget:/translations/sp_SP/userspace-api/media/cec/cec-ioc-g-modemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-laterh]h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhT/var/lib/git/docbuild/linux/Documentation/userspace-api/media/cec/cec-ioc-g-mode.rsthKubhtarget)}(h .. _CEC_MODE:h]h}(h]h ]h"]h$]h&]refidcec-modeuh1hhKhhhhhhubh)}(h.. _CEC_G_MODE:h]h}(h]h ]h"]h$]h&]hԌ cec-g-modeuh1hhKhhhhhhnjexpect_referenced_by_name}cec_modehsexpect_referenced_by_id}hhsubh)}(h.. _CEC_S_MODE:h]h}(h]h ]h"]h$]h&]hԌ cec-s-modeuh1hhKhhhhhhh}( cec_g_modehhhuh}(hhhhuubhsection)}(hhh](htitle)}(h ioctls CEC_G_MODE and CEC_S_MODEh]h ioctls CEC_G_MODE and CEC_S_MODE}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh paragraph)}(hDCEC_G_MODE, CEC_S_MODE - Get or set exclusive use of the CEC adapterh]hDCEC_G_MODE, CEC_S_MODE - Get or set exclusive use of the CEC adapter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK hhhhubh)}(hhh](h)}(hSynopsish]hSynopsis}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleCEC.CEC_G_MODE (C macro)c.CEC.CEC_G_MODEhNtauh1j*hjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h CEC_G_MODEh]hdesc_signature_line)}(h CEC_G_MODEh]h desc_name)}(h CEC_G_MODEh]h desc_sig_name)}(hjDh]h CEC_G_MODE}(hjThhhNhNubah}(h]h ]nah"]h$]h&]uh1jRhjNubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jLhjHhhhhhKubah}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jFsphinx_line_type declaratorhjBhhhhhKubah}(h]j9ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j@hhhKhj=hhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1j~hj=hhhhhKubeh}(h]h ](cmacroeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j;hhhjhNhNubj )}(h.``int ioctl(int fd, CEC_G_MODE, __u32 *argp)``h]hliteral)}(hjh]h*int ioctl(int fd, CEC_G_MODE, __u32 *argp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKhjhhubj+)}(hhh]h}(h]h ]h"]h$]h&]entries](j7CEC.CEC_S_MODE (C macro)c.CEC.CEC_S_MODEhNtauh1j*hjhhhNhNubj<)}(hhh](jA)}(h CEC_S_MODEh]jG)}(h CEC_S_MODEh]jM)}(h CEC_S_MODEh]jS)}(hjh]h CEC_S_MODE}(hjhhhNhNubah}(h]h ]j^ah"]h$]h&]uh1jRhjubah}(h]h ](jejfeh"]h$]h&]hhuh1jLhjhhhhhKubah}(h]h ]h"]h$]h&]hhjpuh1jFjqjrhjhhhhhKubah}(h]jah ](jvjweh"]h$]h&]j{j|)j}huh1j@hhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1j~hjhhhhhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1j;hhhjhNhNubj )}(h.``int ioctl(int fd, CEC_S_MODE, __u32 *argp)``h]j)}(hjh]h*int ioctl(int fd, CEC_S_MODE, __u32 *argp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKhjhhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Argumentsh]h Arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhdefinition_list)}(hhh](hdefinition_list_item)}(h5``fd`` File descriptor returned by :c:func:`open()`. h](hterm)}(h``fd``h]j)}(hj;h]hfd}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j7hhhKhj3ubh definition)}(hhh]j )}(h-File descriptor returned by :c:func:`open()`.h](hFile descriptor returned by }(hjUhhhNhNubh)}(h:c:func:`open()`h]j)}(hj_h]hopen()}(hjahhhNhNubah}(h]h ](xrefjc-funceh"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]refdoc&userspace-api/media/cec/cec-ioc-g-mode refdomainjreftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]j~ ASTIdentifier)} identifierCECsbNasb reftargetopenuh1hhhhKhjUubh.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKhjRubah}(h]h ]h"]h$]h&]uh1jPhj3ubeh}(h]h ]h"]h$]h&]uh1j1hhhKhj.ubj2)}(h``argp`` Pointer to CEC mode. h](j8)}(h``argp``h]j)}(hjh]hargp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j7hhhK hjubjQ)}(hhh]j )}(hPointer to CEC mode.h]hPointer to CEC mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j1hhhK hj.hhubeh}(h]h ]h"]h$]h&]uh1j,hjhhhhhNubeh}(h] argumentsah ]h"] argumentsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK#ubj )}(hXoBy default any filehandle can use :ref:`CEC_TRANSMIT`, but in order to prevent applications from stepping on each others toes it must be possible to obtain exclusive access to the CEC adapter. This ioctl sets the filehandle to initiator and/or follower mode which can be exclusive depending on the chosen mode. The initiator is the filehandle that is used to initiate messages, i.e. it commands other CEC devices. The follower is the filehandle that receives messages sent to the CEC adapter and processes them. The same filehandle can be both initiator and follower, or this role can be taken by two different filehandles.h](h"By default any filehandle can use }(hjhhhNhNubh)}(h:ref:`CEC_TRANSMIT`h]hinline)}(hjh]h CEC_TRANSMIT}(hj hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec_transmituh1hhhhK%hjubhX:, but in order to prevent applications from stepping on each others toes it must be possible to obtain exclusive access to the CEC adapter. This ioctl sets the filehandle to initiator and/or follower mode which can be exclusive depending on the chosen mode. The initiator is the filehandle that is used to initiate messages, i.e. it commands other CEC devices. The follower is the filehandle that receives messages sent to the CEC adapter and processes them. The same filehandle can be both initiator and follower, or this role can be taken by two different filehandles.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhK%hjhhubj )}(hXWhen a CEC message is received, then the CEC framework will decide how it will be processed. If the message is a reply to an earlier transmitted message, then the reply is sent back to the filehandle that is waiting for it. In addition the CEC framework will process it.h]hXWhen a CEC message is received, then the CEC framework will decide how it will be processed. If the message is a reply to an earlier transmitted message, then the reply is sent back to the filehandle that is waiting for it. In addition the CEC framework will process it.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK/hjhhubj )}(hXIf the message is not a reply, then the CEC framework will process it first. If there is no follower, then the message is just discarded and a feature abort is sent back to the initiator if the framework couldn't process it. If there is a follower, then the message is passed on to the follower who will use :ref:`ioctl CEC_RECEIVE ` to dequeue the new message. The framework expects the follower to make the right decisions.h](hX6If the message is not a reply, then the CEC framework will process it first. If there is no follower, then the message is just discarded and a feature abort is sent back to the initiator if the framework couldn’t process it. If there is a follower, then the message is passed on to the follower who will use }(hj=hhhNhNubh)}(h&:ref:`ioctl CEC_RECEIVE `h]j)}(hjGh]hioctl CEC_RECEIVE}(hjIhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]refdocjw refdomainjSreftyperef refexplicitrefwarnj cec_receiveuh1hhhhK4hj=ubh\ to dequeue the new message. The framework expects the follower to make the right decisions.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhK4hjhhubj )}(hXThe CEC framework will process core messages unless requested otherwise by the follower. The follower can enable the passthrough mode. In that case, the CEC framework will pass on most core messages without processing them and the follower will have to implement those messages. There are some messages that the core will always process, regardless of the passthrough mode. See :ref:`cec-core-processing` for details.h](hXzThe CEC framework will process core messages unless requested otherwise by the follower. The follower can enable the passthrough mode. In that case, the CEC framework will pass on most core messages without processing them and the follower will have to implement those messages. There are some messages that the core will always process, regardless of the passthrough mode. See }(hjohhhNhNubh)}(h:ref:`cec-core-processing`h]j)}(hjyh]hcec-core-processing}(hj{hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-core-processinguh1hhhhK`. If there is an exclusive initiator then only that initiator can call :ref:`CEC_TRANSMIT`. The follower can of course always call :ref:`ioctl CEC_TRANSMIT `.h](h:If there is no initiator, then any CEC filehandle can use }(hjhhhNhNubh)}(h(:ref:`ioctl CEC_TRANSMIT `h]j)}(hjh]hioctl CEC_TRANSMIT}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec_transmituh1hhhhKChjubhG. If there is an exclusive initiator then only that initiator can call }(hjhhhNhNubh)}(h:ref:`CEC_TRANSMIT`h]j)}(hjh]h CEC_TRANSMIT}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec_transmituh1hhhhKChjubh). The follower can of course always call }(hjhhhNhNubh)}(h(:ref:`ioctl CEC_TRANSMIT `h]j)}(hjh]hioctl CEC_TRANSMIT}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec_transmituh1hhhhKChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKChjhhubj )}(hAvailable initiator modes are:h]hAvailable initiator modes are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKIhjhhubhtabular_col_spec)}(hhh]h}(h]h ]h"]h$]h&]spec|p{5.6cm}|p{0.9cm}|p{10.8cm}|uh1j)hhhKKhjhhubh)}(h.. _cec-mode-initiator_e:h]h}(h]h ]h"]h$]h&]hԌcec-mode-initiator-euh1hhKMhjhhhhubhtable)}(hhh](h)}(hInitiator Modesh]hInitiator Modes}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjCubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjVubjZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjVubjZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjVubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh](h)}(h.. _`CEC-MODE-NO-INITIATOR`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-no-initiatoruh1hhKThj)}(hhh](jj )}(hlThis is not an initiator, i.e. it cannot transmit CEC messages or make any other changes to the CEC adapter.h]hlThis is not an initiator, i.e. it cannot transmit CEC messages or make any other changes to the CEC adapter.}(hjhhhNhNubah}(h]jah ]h"]cec-mode-no-initiatorah$]h&]uh1j hhhKXhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h``CEC_MODE_NO_INITIATOR``h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKVhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](jj )}(h0x0h]h0x0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKWhjubeh}(h]h ]h"]h$]h&]uh1jhjubjeh}(h]h ]h"]h$]h&]uh1j~hj{ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-INITIATOR`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-initiatoruh1hhKZhj)}(hhh](jj )}(hThis is an initiator (the default when the device is opened) and it can transmit CEC messages and make changes to the CEC adapter, unless there is an exclusive initiator.h]hThis is an initiator (the default when the device is opened) and it can transmit CEC messages and make changes to the CEC adapter, unless there is an exclusive initiator.}(hjhhhNhNubah}(h]jah ]h"]cec-mode-initiatorah$]h&]uh1j hhhK^hjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h``CEC_MODE_INITIATOR``h]j)}(hjh]hCEC_MODE_INITIATOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhK\hjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](jj )}(h0x1h]h0x1}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK]hj/ubeh}(h]h ]h"]h$]h&]uh1jhjubjeh}(h]h ]h"]h$]h&]uh1j~hj{ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-EXCL-INITIATOR`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-excl-initiatoruh1hhKahj)}(hhh](jRj )}(hXThis is an exclusive initiator and this file descriptor is the only one that can transmit CEC messages and make changes to the CEC adapter. If someone else is already the exclusive initiator then an attempt to become one will return the ``EBUSY`` error code error.h](hThis is an exclusive initiator and this file descriptor is the only one that can transmit CEC messages and make changes to the CEC adapter. If someone else is already the exclusive initiator then an attempt to become one will return the }(hj`hhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh error code error.}(hj`hhhNhNubeh}(h]j\ah ]h"]cec-mode-excl-initiatorah$]h&]uh1j hhhKehj]h}j~jRsh}j\jRsubeh}(h]h ]h"]h$]h&]uh1jhjLububj )}(h``CEC_MODE_EXCL_INITIATOR``h]j)}(hjh]hCEC_MODE_EXCL_INITIATOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKchjOubeh}(h]h ]h"]h$]h&]uh1jhjLubj)}(hhh](jRj )}(h0x2h]h0x2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKdhjubeh}(h]h ]h"]h$]h&]uh1jhjLubj]eh}(h]h ]h"]h$]h&]uh1j~hj{ubeh}(h]h ]h"]h$]h&]uh1jyhjVubeh}(h]h ]h"]h$]h&]colsKuh1jThjCubeh}(h](id1j@eh ]h"]cec-mode-initiator_eah$]h&]uh1jAhjhhhNhNh}jj6sh}j@j6subj )}(hAvailable follower modes are:h]hAvailable follower modes are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKkhjhhubj*)}(hhh]h}(h]h ]h"]h$]h&]j4|p{6.6cm}|p{0.9cm}|p{9.8cm}|uh1j)hhhKmhjhhubh)}(h.. _cec-mode-follower_e:h]h}(h]h ]h"]h$]h&]hԌcec-mode-follower-euh1hhKohjhhhhubjB)}(hhh](h)}(hFollower Modesh]hFollower Modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjubjU)}(hhh](jZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjubjZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjubjZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhjubjz)}(hhh](j)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-NO-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-no-followeruh1hhKxhj)}(hhh](j8j )}(h?This is not a follower (the default when the device is opened).h]h?This is not a follower (the default when the device is opened).}(hjFhhhNhNubah}(h]jBah ]h"]cec-mode-no-followerah$]h&]uh1j hhhK|hjCh}jRj8sh}jBj8subeh}(h]h ]h"]h$]h&]uh1jhj2ububj )}(h``CEC_MODE_NO_FOLLOWER``h]j)}(hj_h]hCEC_MODE_NO_FOLLOWER}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hhhKzhj5ubeh}(h]h ]h"]h$]h&]uh1jhj2ubj)}(hhh](j8j )}(h0x00h]h0x00}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK{hjzubeh}(h]h ]h"]h$]h&]uh1jhj2ubjCeh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-followeruh1hhK}hj)}(hhh](jj )}(hX.This is a follower and it will receive CEC messages unless there is an exclusive follower. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT ` is not set or if :ref:`CEC_MODE_NO_INITIATOR ` was specified, the ``EINVAL`` error code is returned in that case.h](h{This is a follower and it will receive CEC messages unless there is an exclusive follower. You cannot become a follower if }(hjhhhNhNubh)}(h*:ref:`CEC_CAP_TRANSMIT `h]j)}(hjh]hCEC_CAP_TRANSMIT}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-cap-transmituh1hhhhKhjubh is not set or if }(hjhhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhjubh was specified, the }(hjhhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh% error code is returned in that case.}(hjhhhNhNubeh}(h]jah ]h"]cec-mode-followerah$]h&]uh1j hhhKhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h``CEC_MODE_FOLLOWER``h]j)}(hjh]hCEC_MODE_FOLLOWER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](jj )}(h0x10h]h0x10}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj9ubeh}(h]h ]h"]h$]h&]uh1jhjubjeh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-EXCL-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-excl-followeruh1hhKhj)}(hhh](j\j )}(hXThis is an exclusive follower and only this file descriptor will receive CEC messages for processing. If someone else is already the exclusive follower then an attempt to become one will return the ``EBUSY`` error code. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT ` is not set or if :ref:`CEC_MODE_NO_INITIATOR ` was specified, the ``EINVAL`` error code is returned in that case.h](hThis is an exclusive follower and only this file descriptor will receive CEC messages for processing. If someone else is already the exclusive follower then an attempt to become one will return the }(hjjhhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubh- error code. You cannot become a follower if }(hjjhhhNhNubh)}(h*:ref:`CEC_CAP_TRANSMIT `h]j)}(hjh]hCEC_CAP_TRANSMIT}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-cap-transmituh1hhhhKhjjubh is not set or if }(hjjhhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhjjubh was specified, the }(hjjhhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubh% error code is returned in that case.}(hjjhhhNhNubeh}(h]jfah ]h"]cec-mode-excl-followerah$]h&]uh1j hhhKhjgh}jj\sh}jfj\subeh}(h]h ]h"]h$]h&]uh1jhjVububj )}(h``CEC_MODE_EXCL_FOLLOWER``h]j)}(hjh]hCEC_MODE_EXCL_FOLLOWER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKhjYubeh}(h]h ]h"]h$]h&]uh1jhjVubj)}(hhh](j\j )}(h0x20h]h0x20}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjVubjgeh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h&.. _`CEC-MODE-EXCL-FOLLOWER-PASSTHRU`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-excl-follower-passthruuh1hhKhj)}(hhh](j-j )}(hX\This is an exclusive follower and only this file descriptor will receive CEC messages for processing. In addition it will put the CEC device into passthrough mode, allowing the exclusive follower to handle most core messages instead of relying on the CEC framework for that. If someone else is already the exclusive follower then an attempt to become one will return the ``EBUSY`` error code. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT ` is not set or if :ref:`CEC_MODE_NO_INITIATOR ` was specified, the ``EINVAL`` error code is returned in that case.h](hXsThis is an exclusive follower and only this file descriptor will receive CEC messages for processing. In addition it will put the CEC device into passthrough mode, allowing the exclusive follower to handle most core messages instead of relying on the CEC framework for that. If someone else is already the exclusive follower then an attempt to become one will return the }(hj;hhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh- error code. You cannot become a follower if }(hj;hhhNhNubh)}(h*:ref:`CEC_CAP_TRANSMIT `h]j)}(hjWh]hCEC_CAP_TRANSMIT}(hjYhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]refdocjw refdomainjcreftyperef refexplicitrefwarnjcec-cap-transmituh1hhhhKhj;ubh is not set or if }(hj;hhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hj{h]hCEC_MODE_NO_INITIATOR}(hj}hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhj;ubh was specified, the }(hj;hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh% error code is returned in that case.}(hj;hhhNhNubeh}(h]j7ah ]h"]cec-mode-excl-follower-passthruah$]h&]uh1j hhhKhj8h}jj-sh}j7j-subeh}(h]h ]h"]h$]h&]uh1jhj'ububj )}(h#``CEC_MODE_EXCL_FOLLOWER_PASSTHRU``h]j)}(hjh]hCEC_MODE_EXCL_FOLLOWER_PASSTHRU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhKhj*ubeh}(h]h ]h"]h$]h&]uh1jhj'ubj)}(hhh](j-j )}(h0x30h]h0x30}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhjubeh}(h]h ]h"]h$]h&]uh1jhj'ubj8eh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-MONITOR-PIN`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-monitor-pinuh1hhKhj)}(hhh](jj )}(hXPut the file descriptor into pin monitoring mode. Can only be used in combination with :ref:`CEC_MODE_NO_INITIATOR `, otherwise the ``EINVAL`` error code will be returned. This mode requires that the :ref:`CEC_CAP_MONITOR_PIN ` capability is set, otherwise the ``EINVAL`` error code is returned. While in pin monitoring mode this file descriptor can receive the ``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events to see the low-level CEC pin transitions. This is very useful for debugging. This mode is only allowed if the process has the ``CAP_NET_ADMIN`` capability. If that is not set, then the ``EPERM`` error code is returned.h](hWPut the file descriptor into pin monitoring mode. Can only be used in combination with }(hj hhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hj h]hCEC_MODE_NO_INITIATOR}(hj hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjw refdomainj" reftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhj ubh, otherwise the }(hj hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh: error code will be returned. This mode requires that the }(hj hhhNhNubh)}(h0:ref:`CEC_CAP_MONITOR_PIN `h]j)}(hjL h]hCEC_CAP_MONITOR_PIN}(hjN hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjJ ubah}(h]h ]h"]h$]h&]refdocjw refdomainjX reftyperef refexplicitrefwarnjcec-cap-monitor-pinuh1hhhhKhj ubh" capability is set, otherwise the }(hj hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh[ error code is returned. While in pin monitoring mode this file descriptor can receive the }(hj hhhNhNubj)}(h``CEC_EVENT_PIN_CEC_LOW``h]hCEC_EVENT_PIN_CEC_LOW}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh and }(hj hhhNhNubj)}(h``CEC_EVENT_PIN_CEC_HIGH``h]hCEC_EVENT_PIN_CEC_HIGH}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh events to see the low-level CEC pin transitions. This is very useful for debugging. This mode is only allowed if the process has the }(hj hhhNhNubj)}(h``CAP_NET_ADMIN``h]h CAP_NET_ADMIN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh* capability. If that is not set, then the }(hj hhhNhNubj)}(h ``EPERM``h]hEPERM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh error code is returned.}(hj hhhNhNubeh}(h]j ah ]h"]cec-mode-monitor-pinah$]h&]uh1j hhhKhj h}j jsh}j jsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h``CEC_MODE_MONITOR_PIN``h]j)}(hj h]hCEC_MODE_MONITOR_PIN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](jj )}(h0xd0h]h0xd0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj eh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-MONITOR`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-monitoruh1hhKhj)}(hhh](j j )}(hXPut the file descriptor into monitor mode. Can only be used in combination with :ref:`CEC_MODE_NO_INITIATOR `, otherwise the ``EINVAL`` error code will be returned. In monitor mode all messages this CEC device transmits and all messages it receives (both broadcast messages and directed messages for one its logical addresses) will be reported. This is very useful for debugging. This is only allowed if the process has the ``CAP_NET_ADMIN`` capability. If that is not set, then the ``EPERM`` error code is returned.h](hPPut the file descriptor into monitor mode. Can only be used in combination with }(hj% hhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hj/ h]hCEC_MODE_NO_INITIATOR}(hj1 hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj- ubah}(h]h ]h"]h$]h&]refdocjw refdomainj; reftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhj% ubh, otherwise the }(hj% hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubhX! error code will be returned. In monitor mode all messages this CEC device transmits and all messages it receives (both broadcast messages and directed messages for one its logical addresses) will be reported. This is very useful for debugging. This is only allowed if the process has the }(hj% hhhNhNubj)}(h``CAP_NET_ADMIN``h]h CAP_NET_ADMIN}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubh* capability. If that is not set, then the }(hj% hhhNhNubj)}(h ``EPERM``h]hEPERM}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubh error code is returned.}(hj% hhhNhNubeh}(h]j! ah ]h"]cec-mode-monitorah$]h&]uh1j hhhKhj" h}j j sh}j! j subeh}(h]h ]h"]h$]h&]uh1jhj ububj )}(h``CEC_MODE_MONITOR``h]j)}(hj h]hCEC_MODE_MONITOR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j j )}(h0xe0h]h0xe0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj" eh}(h]h ]h"]h$]h&]uh1j~hj/ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MODE-MONITOR-ALL`:h]h}(h]h ]h"]h$]h&]hԌcec-mode-monitor-alluh1hhKhj)}(hhh](j j )}(hXPut the file descriptor into 'monitor all' mode. Can only be used in combination with :ref:`CEC_MODE_NO_INITIATOR `, otherwise the ``EINVAL`` error code will be returned. In 'monitor all' mode all messages this CEC device transmits and all messages it receives, including directed messages for other CEC devices, will be reported. This is very useful for debugging, but not all devices support this. This mode requires that the :ref:`CEC_CAP_MONITOR_ALL ` capability is set, otherwise the ``EINVAL`` error code is returned. This is only allowed if the process has the ``CAP_NET_ADMIN`` capability. If that is not set, then the ``EPERM`` error code is returned.h](hZPut the file descriptor into ‘monitor all’ mode. Can only be used in combination with }(hj hhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hj h]hCEC_MODE_NO_INITIATOR}(hj hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjw refdomainj reftyperef refexplicitrefwarnjcec-mode-no-initiatoruh1hhhhKhj ubh, otherwise the }(hj hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhX# error code will be returned. In ‘monitor all’ mode all messages this CEC device transmits and all messages it receives, including directed messages for other CEC devices, will be reported. This is very useful for debugging, but not all devices support this. This mode requires that the }(hj hhhNhNubh)}(h0:ref:`CEC_CAP_MONITOR_ALL `h]j)}(hj$ h]hCEC_CAP_MONITOR_ALL}(hj& hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj" ubah}(h]h ]h"]h$]h&]refdocjw refdomainj0 reftyperef refexplicitrefwarnjcec-cap-monitor-alluh1hhhhKhj ubh" capability is set, otherwise the }(hj hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhE error code is returned. This is only allowed if the process has the }(hj hhhNhNubj)}(h``CAP_NET_ADMIN``h]h CAP_NET_ADMIN}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh* capability. If that is not set, then the }(hj hhhNhNubj)}(h ``EPERM``h]hEPERM}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh error code is returned.}(hj hhhNhNubeh}(h]j ah ]h"]cec-mode-monitor-allah$]h&]uh1j hhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1jhj ububj )}(h``CEC_MODE_MONITOR_ALL``h]j)}(hj h]hCEC_MODE_MONITOR_ALL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j j )}(h0xf0h]h0xf0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj eh}(h]h ]h"]h$]h&]uh1j~hj/ubeh}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]colsKuh1jThjubeh}(h](id2jeh ] longtableah"]cec-mode-follower_eah$]h&]uh1jAhjhhhNhNh}j jsh}jjsubj )}(h Core message processing details:h]h Core message processing details:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhjhhubj*)}(hhh]h}(h]h ]h"]h$]h&]j4|p{6.6cm}|p{10.9cm}|uh1j)hhhKhjhhubh)}(h.. _cec-core-processing:h]h}(h]h ]h"]h$]h&]hԌcec-core-processinguh1hhKhjhhhhubjB)}(hhh](h)}(hCore Message Processingh]hCore Message Processing}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubjU)}(hhh](jZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhj ubjZ)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jYhj ubjz)}(hhh](j)}(hhh](j)}(hhh](h)}(h.. _`CEC-MSG-GET-CEC-VERSION`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-get-cec-versionuh1hhKhj)}(hhh](j1 j )}(hThe core will return the CEC version that was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS `, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.h](h7The core will return the CEC version that was set with }(hj? hhhNhNubh)}(h8:ref:`ioctl CEC_ADAP_S_LOG_ADDRS `h]j)}(hjI h]hioctl CEC_ADAP_S_LOG_ADDRS}(hjK hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjG ubah}(h]h ]h"]h$]h&]refdocjw refdomainjU reftyperef refexplicitrefwarnjcec_adap_s_log_addrsuh1hhhhKhj? ubh, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.}(hj? hhhNhNubeh}(h]j; ah ]h"]cec-msg-get-cec-versionah$]h&]uh1j hhhKhj< h}jo j1 sh}j; j1 subeh}(h]h ]h"]h$]h&]uh1jhj+ ububj )}(h``CEC_MSG_GET_CEC_VERSION``h]j)}(hj| h]hCEC_MSG_GET_CEC_VERSION}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz ubah}(h]h ]h"]h$]h&]uh1j hhhKhj. ubeh}(h]h ]h"]h$]h&]uh1jhj+ ubj< eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h$.. _`CEC-MSG-GIVE-DEVICE-VENDOR-ID`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-give-device-vendor-iduh1hhKhj)}(hhh](j j )}(hThe core will return the vendor ID that was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS `, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.h](h5The core will return the vendor ID that was set with }(hj hhhNhNubh)}(h8:ref:`ioctl CEC_ADAP_S_LOG_ADDRS `h]j)}(hj h]hioctl CEC_ADAP_S_LOG_ADDRS}(hj hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjw refdomainj reftyperef refexplicitrefwarnjcec_adap_s_log_addrsuh1hhhhKhj ubh, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.}(hj hhhNhNubeh}(h]j ah ]h"]cec-msg-give-device-vendor-idah$]h&]uh1j hhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1jhj ububj )}(h!``CEC_MSG_GIVE_DEVICE_VENDOR_ID``h]j)}(hj h]hCEC_MSG_GIVE_DEVICE_VENDOR_ID}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MSG-ABORT`:h]h}(h]h ]h"]h$]h&]hԌ cec-msg-abortuh1hhKhj)}(hhh](j j )}(hThe core will return a Feature Abort message with reason 'Feature Refused' as per the specification, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.h]hThe core will return a Feature Abort message with reason ‘Feature Refused’ as per the specification, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.}(hj# hhhNhNubah}(h]j ah ]h"] cec-msg-abortah$]h&]uh1j hhhKhj h}j/ j sh}j j subeh}(h]h ]h"]h$]h&]uh1jhj ububj )}(h``CEC_MSG_ABORT``h]j)}(hj< h]h CEC_MSG_ABORT}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj: ubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h!.. _`CEC-MSG-GIVE-PHYSICAL-ADDR`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-give-physical-addruh1hhKhj)}(hhh](jc j )}(hThe core will report the current physical address, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.h]hThe core will report the current physical address, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.}(hjq hhhNhNubah}(h]jm ah ]h"]cec-msg-give-physical-addrah$]h&]uh1j hhhKhjn h}j} jc sh}jm jc subeh}(h]h ]h"]h$]h&]uh1jhj] ububj )}(h``CEC_MSG_GIVE_PHYSICAL_ADDR``h]j)}(hj h]hCEC_MSG_GIVE_PHYSICAL_ADDR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhj` ubeh}(h]h ]h"]h$]h&]uh1jhj] ubjn eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MSG-GIVE-OSD-NAME`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-give-osd-nameuh1hhKhj)}(hhh](j j )}(hThe core will report the current OSD name that was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS `, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.h](h`h]j)}(hj h]hioctl CEC_ADAP_S_LOG_ADDRS}(hj hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjw refdomainj reftyperef refexplicitrefwarnjcec_adap_s_log_addrsuh1hhhhKhj ubh, except when in passthrough mode. In passthrough mode the core does nothing and this message has to be handled by a follower instead.}(hj hhhNhNubeh}(h]j ah ]h"]cec-msg-give-osd-nameah$]h&]uh1j hhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1jhj ububj )}(h``CEC_MSG_GIVE_OSD_NAME``h]j)}(hj h]hCEC_MSG_GIVE_OSD_NAME}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h.. _`CEC-MSG-GIVE-FEATURES`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-give-featuresuh1hhKhj)}(hhh](j#j )}(hXTThe core will do nothing if the CEC version is older than 2.0, otherwise it will report the current features that were set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS `, except when in passthrough mode. In passthrough mode the core does nothing (for any CEC version) and this message has to be handled by a follower instead.h](hThe core will do nothing if the CEC version is older than 2.0, otherwise it will report the current features that were set with }(hj1hhhNhNubh)}(h8:ref:`ioctl CEC_ADAP_S_LOG_ADDRS `h]j)}(hj;h]hioctl CEC_ADAP_S_LOG_ADDRS}(hj=hhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]refdocjw refdomainjGreftyperef refexplicitrefwarnjcec_adap_s_log_addrsuh1hhhhKhj1ubh, except when in passthrough mode. In passthrough mode the core does nothing (for any CEC version) and this message has to be handled by a follower instead.}(hj1hhhNhNubeh}(h]j-ah ]h"]cec-msg-give-featuresah$]h&]uh1j hhhKhj.h}jaj#sh}j-j#subeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h``CEC_MSG_GIVE_FEATURES``h]j)}(hjnh]hCEC_MSG_GIVE_FEATURES}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj.eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h#.. _`CEC-MSG-USER-CONTROL-PRESSED`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-user-control-presseduh1hhKhj)}(hhh](jj )}(hIf :ref:`CEC_CAP_RC ` is set and if :ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU ` is set, then generate a remote control key press. This message is always passed on to the follower(s).h](hIf }(hjhhhNhNubh)}(h:ref:`CEC_CAP_RC `h]j)}(hjh]h CEC_CAP_RC}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec-cap-rcuh1hhhhMhjubh is set and if }(hjhhhNhNubh)}(hN:ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU `h]j)}(hjh]h"CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj"cec-log-addrs-fl-allow-rc-passthruuh1hhhhMhjubhg is set, then generate a remote control key press. This message is always passed on to the follower(s).}(hjhhhNhNubeh}(h]jah ]h"]cec-msg-user-control-pressedah$]h&]uh1j hhhMhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h ``CEC_MSG_USER_CONTROL_PRESSED``h]j)}(hjh]hCEC_MSG_USER_CONTROL_PRESSED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjeh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h$.. _`CEC-MSG-USER-CONTROL-RELEASED`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-user-control-releaseduh1hhMhj)}(hhh](j+j )}(hIf :ref:`CEC_CAP_RC ` is set and if :ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU ` is set, then generate a remote control key release. This message is always passed on to the follower(s).h](hIf }(hj9hhhNhNubh)}(h:ref:`CEC_CAP_RC `h]j)}(hjCh]h CEC_CAP_RC}(hjEhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]refdocjw refdomainjOreftyperef refexplicitrefwarnj cec-cap-rcuh1hhhhM hj9ubh is set and if }(hj9hhhNhNubh)}(hN:ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU `h]j)}(hjgh]h"CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU}(hjihhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]refdocjw refdomainjsreftyperef refexplicitrefwarnj"cec-log-addrs-fl-allow-rc-passthruuh1hhhhM hj9ubhi is set, then generate a remote control key release. This message is always passed on to the follower(s).}(hj9hhhNhNubeh}(h]j5ah ]h"]cec-msg-user-control-releasedah$]h&]uh1j hhhM hj6h}jj+sh}j5j+subeh}(h]h ]h"]h$]h&]uh1jhj%ububj )}(h!``CEC_MSG_USER_CONTROL_RELEASED``h]j)}(hjh]hCEC_MSG_USER_CONTROL_RELEASED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhMhj(ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj6eh}(h]h ]h"]h$]h&]uh1j~hj( ubj)}(hhh](j)}(hhh](h)}(h#.. _`CEC-MSG-REPORT-PHYSICAL-ADDR`:h]h}(h]h ]h"]h$]h&]hԌcec-msg-report-physical-addruh1hhM hj)}(hhh](jj )}(hwThe CEC framework will make note of the reported physical address and then just pass the message on to the follower(s).h]hwThe CEC framework will make note of the reported physical address and then just pass the message on to the follower(s).}(hjhhhNhNubah}(h]jah ]h"]cec-msg-report-physical-addrah$]h&]uh1j hhhMhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1jhjububj )}(h ``CEC_MSG_REPORT_PHYSICAL_ADDR``h]j)}(hjh]hCEC_MSG_REPORT_PHYSICAL_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjeh}(h]h ]h"]h$]h&]uh1j~hj( ubeh}(h]h ]h"]h$]h&]uh1jyhj ubeh}(h]h ]h"]h$]h&]colsKuh1jThj ubeh}(h](id3j eh ]h"]cec-core-processingah$]h&]uh1jAhjhhhNhNh}jj sh}j j subeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhK#ubh)}(hhh](h)}(h Return Valueh]h Return Value}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhMubj )}(hOn success 0 is returned, on error -1 and the ``errno`` variable is set appropriately. The generic error codes are described at the :ref:`Generic Error Codes ` chapter.h](h.On success 0 is returned, on error -1 and the }(hj9hhhNhNubj)}(h ``errno``h]herrno}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubhM variable is set appropriately. The generic error codes are described at the }(hj9hhhNhNubh)}(h':ref:`Generic Error Codes `h]j)}(hjUh]hGeneric Error Codes}(hjWhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]refdocjw refdomainjareftyperef refexplicitrefwarnj gen-errorsuh1hhhhMhj9ubh chapter.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhMhj(hhubj )}(hNThe :ref:`ioctl CEC_S_MODE ` can return the following error codes:h](hThe }(hj}hhhNhNubh)}(h$:ref:`ioctl CEC_S_MODE `h]j)}(hjh]hioctl CEC_S_MODE}(hjhhhNhNubah}(h]h ](jkstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjw refdomainjreftyperef refexplicitrefwarnj cec_s_modeuh1hhhhMhj}ubh& can return the following error codes:}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhMhj(hhubj-)}(hhh](j2)}(h&EINVAL The requested mode is invalid. h](j8)}(hEINVALh]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hhhMhjubjQ)}(hhh]j )}(hThe requested mode is invalid.h]hThe requested mode is invalid.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j1hhhMhjubj2)}(h]EPERM Monitor mode is requested, but the process does have the ``CAP_NET_ADMIN`` capability. h](j8)}(hEPERMh]hEPERM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hhhM#hjubjQ)}(hhh]j )}(hVMonitor mode is requested, but the process does have the ``CAP_NET_ADMIN`` capability.h](h9Monitor mode is requested, but the process does have the }(hjhhhNhNubj)}(h``CAP_NET_ADMIN``h]h CAP_NET_ADMIN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh capability.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhM"hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1j1hhhM#hjhhubj2)}(hAEBUSY Someone else is already an exclusive follower or initiator.h](j8)}(hEBUSYh]hEBUSY}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hhhM%hj"ubjQ)}(hhh]j )}(h;Someone else is already an exclusive follower or initiator.h]h;Someone else is already an exclusive follower or initiator.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhM&hj4ubah}(h]h ]h"]h$]h&]uh1jPhj"ubeh}(h]h ]h"]h$]h&]uh1j1hhhM%hjhhubeh}(h]h ]h"]h$]h&]uh1j,hj(hhhhhNubeh}(h] return-valueah ]h"] return valueah$]h&]uh1hhhhhhhhMubeh}(h]( ioctls-cec-g-mode-and-cec-s-modehhheh ]h"]( ioctls cec_g_mode and cec_s_mode cec_s_modehheh$]h&]uh1hhhhhhhhK h}(jehhhhhuh}(hhhhhhuubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(h]hah]hah]haj@]j6aj]jaj]jaj\]jRaj]jajB]j8aj]jajf]j\aj7]j-aj ]jaj! ]j aj ]j aj ]j aj; ]j1 aj ]j aj ]j ajm ]jc aj ]j aj-]j#aj]jaj5]j+aj]jaunameids}(hhhhjehjdjajjjjj%j"jj@jjjjj~j\j jjRjBjjjjfjj7j j j j! j j jj jo j; j j j/ j j} jm j j jaj-jjjj5jjj\jYu nametypes}(hhjejdjjj%jjjj~j jRjjjj j j jjo j j/ j} j jajjjj\uh}(hhhhhhjahjjj9jBjjjjj"jj@jCjjjjj\j`jjjBjFjjjfjjj7j;j j j! j% j j j j j; j? j j j j# jm jq j j j-j1jjj5j9jjjYj(jjCj jjj u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages](hsystem_message)}(hhh]j )}(hhh]h.Hyperlink target "cec-mode" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineKuh1j ubj )}(hhh]j )}(hhh]h0Hyperlink target "cec-g-mode" is not referenced.}hj)sbah}(h]h ]h"]h$]h&]uh1j hj&ubah}(h]h ]h"]h$]h&]levelKtypej#sourcehnjlineKuh1j ubj )}(hhh]j )}(hhh]h0Hyperlink target "cec-s-mode" is not referenced.}hjCsbah}(h]h ]h"]h$]h&]uh1j hj@ubah}(h]h ]h"]h$]h&]levelKtypej#sourcehnjlineKuh1j ubj )}(hhh]j )}(hhh]h:Hyperlink target "cec-mode-initiator-e" is not referenced.}hj]sbah}(h]h ]h"]h$]h&]uh1j hjZubah}(h]h ]h"]h$]h&]levelKtypej#sourcehnjlineKMuh1j ubj )}(hhh]j )}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hjwsbah}(h]h ]h"]h$]h&]uh1j hjtubah}(h]h ]h"]h$]h&]levelKtypej#lineKTsourcehuh1j ubj )}(hhh]j )}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKTsourcehuh1j ubj )}(hhh]j )}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKTsourcehuh1j ubj )}(hhh]j )}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKZsourcehuh1j ubj )}(hhh]j )}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKZsourcehuh1j ubj )}(hhh]j )}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKZsourcehuh1j ubj )}(hhh]j )}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKasourcehuh1j ubj )}(hhh]j )}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hj-sbah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]levelKtypej#lineKasourcehuh1j ubj )}(hhh]j )}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hjGsbah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]levelKtypej#lineKasourcehuh1j ubj )}(hhh]j )}(hhh]h9Hyperlink target "cec-mode-follower-e" is not referenced.}hjasbah}(h]h ]h"]h$]h&]uh1j hj^ubah}(h]h ]h"]h$]h&]levelKtypej#sourcehnjlineKouh1j ubj )}(hhh]j )}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hj{sbah}(h]h ]h"]h$]h&]uh1j hjxubah}(h]h ]h"]h$]h&]levelKtypej#lineKxsourcehuh1j ubj )}(hhh]j )}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKxsourcehuh1j ubj )}(hhh]j )}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineKxsourcehuh1j ubj )}(hhh]j )}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineK}sourcehuh1j ubj )}(hhh]j )}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineK}sourcehuh1j ubj )}(hhh]j )}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]levelKtypej#lineK}sourcehuh1j ubj )}(hhh]j )}(hhh]h