sphinx.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]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-modeuh1hhKhhhhhhexpect_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}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK 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_MODEhNtauh1jhjhhhNhNubhdesc)}(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)}(hj0h]h CEC_G_MODE}(hj@hhhNhNubah}(h]h ]nah"]h$]h&]uh1j>hj:ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j8hj4hhhhhKubah}(h]h ]h"]h$]h&]hh add_permalinkuh1j2sphinx_line_type declaratorhj.hhhhhKubah}(h]j%ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j,hhhKhj)hhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jjhj)hhhhhKubeh}(h]h ](cmacroeh"]h$]h&]domainjxobjtypejydesctypejynoindex noindexentrynocontentsentryuh1j'hhhjhNhNubh)}(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&]uh1hhhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#CEC.CEC_S_MODE (C macro)c.CEC.CEC_S_MODEhNtauh1jhjhhhNhNubj()}(hhh](j-)}(h CEC_S_MODEh]j3)}(h CEC_S_MODEh]j9)}(h CEC_S_MODEh]j?)}(hjh]h CEC_S_MODE}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j>hjubah}(h]h ](jQjReh"]h$]h&]hhuh1j8hjhhhhhKubah}(h]h ]h"]h$]h&]hhj\uh1j2j]j^hjhhhhhKubah}(h]jah ](jbjceh"]h$]h&]jgjh)jihuh1j,hhhKhjhhubjk)}(hhh]h}(h]h ]h"]h$]h&]uh1jjhjhhhhhKubeh}(h]h ](jxmacroeh"]h$]h&]j}jxj~jjjjjjuh1j'hhhjhNhNubh)}(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&]uh1hhhhKhjhhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Argumentsh]h Arguments}(hj hhhNhNubah}(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&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1j#hhhKhjubh definition)}(hhh]h)}(h-File descriptor returned by :c:func:`open()`.h](hFile descriptor returned by }(hjAhhhNhNubh)}(h:c:func:`open()`h]j)}(hjKh]hopen()}(hjMhhhNhNubah}(h]h ](xrefjxc-funceh"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]refdoc&userspace-api/media/cec/cec-ioc-g-mode refdomainjxreftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]jj ASTIdentifier)} identifierCECsbNasb reftargetopenuh1hhhhKhjAubh.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(h``argp`` Pointer to CEC mode. h](j$)}(h``argp``h]j)}(hjh]hargp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j#hhhK hjubj=)}(hhh]h)}(hPointer to CEC mode.h]hPointer to CEC mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhhhK hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h] argumentsah ]h"] argumentsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK#ubh)}(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}(hjhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx 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&]uh1hhhhK%hjhhubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjhhubh)}(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)}(hj3h]hioctl CEC_RECEIVE}(hj5hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]refdocjc refdomainj?reftyperef refexplicitrefwarnjx 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&]uh1hhhhK4hjhhubh)}(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 }(hj[hhhNhNubh)}(h:ref:`cec-core-processing`h]j)}(hjeh]hcec-core-processing}(hjghhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]refdocjc refdomainjqreftyperef refexplicitrefwarnjxcec-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 ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx 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 ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx cec_transmituh1hhhhKChjubh). The follower can of course always call }(hjhhhNhNubh)}(h(:ref:`ioctl CEC_TRANSMIT `h]j)}(hjh]hioctl CEC_TRANSMIT}(hjhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx cec_transmituh1hhhhKChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKChjhhubh)}(hAvailable initiator modes are:h]hAvailable initiator modes are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjhhubhtabular_col_spec)}(hhh]h}(h]h ]h"]h$]h&]spec|p{5.6cm}|p{0.9cm}|p{10.8cm}|uh1jhhhKKhjhhubh)}(h.. _cec-mode-initiator_e:h]h}(h]h ]h"]h$]h&]hcec-mode-initiator-euh1hhKMhjhhhhubhtable)}(hhh](h)}(hInitiator Modesh]hInitiator Modes}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhj/ubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjBubjF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjBubjF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjBubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh](h)}(h.. _`CEC-MODE-NO-INITIATOR`:h]h}(h]h ]h"]h$]h&]hcec-mode-no-initiatoruh1hhKThjp)}(hhh](jth)}(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]j~ah ]h"]cec-mode-no-initiatorah$]h&]uh1hhhhKXhjh}jjtsh}j~jtsubeh}(h]h ]h"]h$]h&]uh1johjlububh)}(h``CEC_MODE_NO_INITIATOR``h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKVhjqubeh}(h]h ]h"]h$]h&]uh1johjlubjp)}(hhh](jth)}(h0x0h]h0x0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubeh}(h]h ]h"]h$]h&]uh1johjlubjeh}(h]h ]h"]h$]h&]uh1jjhjgubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-INITIATOR`:h]h}(h]h ]h"]h$]h&]hcec-mode-initiatoruh1hhKZhjp)}(hhh](jh)}(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&]uh1hhhhK^hjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(h``CEC_MODE_INITIATOR``h]j)}(hjh]hCEC_MODE_INITIATOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhK\hjubeh}(h]h ]h"]h$]h&]uh1johjubjp)}(hhh](jh)}(h0x1h]h0x1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubeh}(h]h ]h"]h$]h&]uh1johjubjeh}(h]h ]h"]h$]h&]uh1jjhjgubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-EXCL-INITIATOR`:h]h}(h]h ]h"]h$]h&]hcec-mode-excl-initiatoruh1hhKahjp)}(hhh](j>h)}(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 }(hjLhhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh error code error.}(hjLhhhNhNubeh}(h]jHah ]h"]cec-mode-excl-initiatorah$]h&]uh1hhhhKehjIh}jjj>sh}jHj>subeh}(h]h ]h"]h$]h&]uh1johj8ububh)}(h``CEC_MODE_EXCL_INITIATOR``h]j)}(hjwh]hCEC_MODE_EXCL_INITIATOR}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhhhKchj;ubeh}(h]h ]h"]h$]h&]uh1johj8ubjp)}(hhh](j>h)}(h0x2h]h0x2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubeh}(h]h ]h"]h$]h&]uh1johj8ubjIeh}(h]h ]h"]h$]h&]uh1jjhjgubeh}(h]h ]h"]h$]h&]uh1jehjBubeh}(h]h ]h"]h$]h&]colsKuh1j@hj/ubeh}(h](id1j,eh ]h"]cec-mode-initiator_eah$]h&]uh1j-hjhhhNhNh}jj"sh}j,j"subh)}(hAvailable follower modes are:h]hAvailable follower modes are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]j |p{6.6cm}|p{0.9cm}|p{9.8cm}|uh1jhhhKmhjhhubh)}(h.. _cec-mode-follower_e:h]h}(h]h ]h"]h$]h&]hcec-mode-follower-euh1hhKohjhhhhubj.)}(hhh](h)}(hFollower Modesh]hFollower Modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjubjA)}(hhh](jF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjubjF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjubjF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhjubjf)}(hhh](jk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-NO-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hcec-mode-no-followeruh1hhKxhjp)}(hhh](j$h)}(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).}(hj2hhhNhNubah}(h]j.ah ]h"]cec-mode-no-followerah$]h&]uh1hhhhK|hj/h}j>j$sh}j.j$subeh}(h]h ]h"]h$]h&]uh1johjububh)}(h``CEC_MODE_NO_FOLLOWER``h]j)}(hjKh]hCEC_MODE_NO_FOLLOWER}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhhhKzhj!ubeh}(h]h ]h"]h$]h&]uh1johjubjp)}(hhh](j$h)}(h0x00h]h0x00}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjfubeh}(h]h ]h"]h$]h&]uh1johjubj/eh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hcec-mode-followeruh1hhK}hjp)}(hhh](jh)}(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 ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjxcec-cap-transmituh1hhhhKhjubh is not set or if }(hjhhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjxcec-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&]uh1hhhhKhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(h``CEC_MODE_FOLLOWER``h]j)}(hj h]hCEC_MODE_FOLLOWER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1johjubjp)}(hhh](jh)}(h0x10h]h0x10}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%ubeh}(h]h ]h"]h$]h&]uh1johjubjeh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-EXCL-FOLLOWER`:h]h}(h]h ]h"]h$]h&]hcec-mode-excl-followeruh1hhKhjp)}(hhh](jHh)}(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 }(hjVhhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh- error code. You cannot become a follower if }(hjVhhhNhNubh)}(h*:ref:`CEC_CAP_TRANSMIT `h]j)}(hjrh]hCEC_CAP_TRANSMIT}(hjthhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]refdocjc refdomainj~reftyperef refexplicitrefwarnjxcec-cap-transmituh1hhhhKhjVubh is not set or if }(hjVhhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hjh]hCEC_MODE_NO_INITIATOR}(hjhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjxcec-mode-no-initiatoruh1hhhhKhjVubh was specified, the }(hjVhhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh% error code is returned in that case.}(hjVhhhNhNubeh}(h]jRah ]h"]cec-mode-excl-followerah$]h&]uh1hhhhKhjSh}jjHsh}jRjHsubeh}(h]h ]h"]h$]h&]uh1johjBububh)}(h``CEC_MODE_EXCL_FOLLOWER``h]j)}(hjh]hCEC_MODE_EXCL_FOLLOWER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjEubeh}(h]h ]h"]h$]h&]uh1johjBubjp)}(hhh](jHh)}(h0x20h]h0x20}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1johjBubjSeh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h&.. _`CEC-MODE-EXCL-FOLLOWER-PASSTHRU`:h]h}(h]h ]h"]h$]h&]hcec-mode-excl-follower-passthruuh1hhKhjp)}(hhh](jh)}(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}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubh- error code. You cannot become a follower if }(hj'hhhNhNubh)}(h*:ref:`CEC_CAP_TRANSMIT `h]j)}(hjCh]hCEC_CAP_TRANSMIT}(hjEhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]refdocjc refdomainjOreftyperef refexplicitrefwarnjxcec-cap-transmituh1hhhhKhj'ubh is not set or if }(hj'hhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hjgh]hCEC_MODE_NO_INITIATOR}(hjihhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]refdocjc refdomainjsreftyperef refexplicitrefwarnjxcec-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]j#ah ]h"]cec-mode-excl-follower-passthruah$]h&]uh1hhhhKhj$h}jjsh}j#jsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(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&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1johjubjp)}(hhh](jh)}(h0x30h]h0x30}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1johjubj$eh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-MONITOR-PIN`:h]h}(h]h ]h"]h$]h&]hcec-mode-monitor-pinuh1hhKhjp)}(hhh](jh)}(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 }(hjhhhNhNubh)}(h4:ref:`CEC_MODE_NO_INITIATOR `h]j)}(hj h]hCEC_MODE_NO_INITIATOR}(hj hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj reftyperef refexplicitrefwarnjxcec-mode-no-initiatoruh1hhhhKhjubh, otherwise the }(hjhhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: error code will be returned. This mode requires that the }(hjhhhNhNubh)}(h0:ref:`CEC_CAP_MONITOR_PIN `h]j)}(hj8 h]hCEC_CAP_MONITOR_PIN}(hj: hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj6 ubah}(h]h ]h"]h$]h&]refdocjc refdomainjD reftyperef refexplicitrefwarnjxcec-cap-monitor-pinuh1hhhhKhjubh" capability is set, otherwise the }(hjhhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh[ error code is returned. While in pin monitoring mode this file descriptor can receive the }(hjhhhNhNubj)}(h``CEC_EVENT_PIN_CEC_LOW``h]hCEC_EVENT_PIN_CEC_LOW}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h``CEC_EVENT_PIN_CEC_HIGH``h]hCEC_EVENT_PIN_CEC_HIGH}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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 }(hjhhhNhNubj)}(h``CAP_NET_ADMIN``h]h CAP_NET_ADMIN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh* capability. If that is not set, then the }(hjhhhNhNubj)}(h ``EPERM``h]hEPERM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh error code is returned.}(hjhhhNhNubeh}(h]jah ]h"]cec-mode-monitor-pinah$]h&]uh1hhhhKhjh}j jsh}jjsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(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&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1johjubjp)}(hhh](jh)}(h0xd0h]h0xd0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johjubjeh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-MONITOR`:h]h}(h]h ]h"]h$]h&]hcec-mode-monitoruh1hhKhjp)}(hhh](j h)}(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}(hj hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj' reftyperef refexplicitrefwarnjxcec-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 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}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh* capability. If that is not set, then the }(hj hhhNhNubj)}(h ``EPERM``h]hEPERM}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh error code is returned.}(hj hhhNhNubeh}(h]j ah ]h"]cec-mode-monitorah$]h&]uh1hhhhKhj h}jw j sh}j j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(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&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubjp)}(hhh](j h)}(h0xe0h]h0xe0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj eh}(h]h ]h"]h$]h&]uh1jjhjubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MODE-MONITOR-ALL`:h]h}(h]h ]h"]h$]h&]hcec-mode-monitor-alluh1hhKhjp)}(hhh](j h)}(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 ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj reftyperef refexplicitrefwarnjxcec-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 ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj reftyperef refexplicitrefwarnjxcec-cap-monitor-alluh1hhhhKhj ubh" capability is set, otherwise the }(hj hhhNhNubj)}(h ``EINVAL``h]hEINVAL}(hj2 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}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh* capability. If that is not set, then the }(hj hhhNhNubj)}(h ``EPERM``h]hEPERM}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh error code is returned.}(hj hhhNhNubeh}(h]j ah ]h"]cec-mode-monitor-allah$]h&]uh1hhhhKhj h}jl j sh}j j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(h``CEC_MODE_MONITOR_ALL``h]j)}(hjy h]hCEC_MODE_MONITOR_ALL}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubjp)}(hhh](j h)}(h0xf0h]h0xf0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj eh}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ]h"]h$]h&]colsKuh1j@hjubeh}(h](id2jeh ] longtableah"]cec-mode-follower_eah$]h&]uh1j-hjhhhNhNh}j jsh}jjsubh)}(h Core message processing details:h]h Core message processing details:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]j |p{6.6cm}|p{10.9cm}|uh1jhhhKhjhhubh)}(h.. _cec-core-processing:h]h}(h]h ]h"]h$]h&]hcec-core-processinguh1hhKhjhhhhubj.)}(hhh](h)}(hCore Message Processingh]hCore Message Processing}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubjA)}(hhh](jF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhj ubjF)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jEhj ubjf)}(hhh](jk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MSG-GET-CEC-VERSION`:h]h}(h]h ]h"]h$]h&]hcec-msg-get-cec-versionuh1hhKhjp)}(hhh](j h)}(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)}(hj5 h]hioctl CEC_ADAP_S_LOG_ADDRS}(hj7 hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj3 ubah}(h]h ]h"]h$]h&]refdocjc refdomainjA reftyperef refexplicitrefwarnjxcec_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&]uh1hhhhKhj( h}j[ j sh}j' j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(h``CEC_MSG_GET_CEC_VERSION``h]j)}(hjh h]hCEC_MSG_GET_CEC_VERSION}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj( eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h$.. _`CEC-MSG-GIVE-DEVICE-VENDOR-ID`:h]h}(h]h ]h"]h$]h&]hcec-msg-give-device-vendor-iduh1hhKhjp)}(hhh](j h)}(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 ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj reftyperef refexplicitrefwarnjxcec_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&]uh1hhhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(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&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MSG-ABORT`:h]h}(h]h ]h"]h$]h&]h cec-msg-abortuh1hhKhjp)}(hhh](j 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.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&]uh1hhhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(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&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h!.. _`CEC-MSG-GIVE-PHYSICAL-ADDR`:h]h}(h]h ]h"]h$]h&]hcec-msg-give-physical-addruh1hhKhjp)}(hhh](jO 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.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.}(hj] hhhNhNubah}(h]jY ah ]h"]cec-msg-give-physical-addrah$]h&]uh1hhhhKhjZ h}ji jO sh}jY jO subeh}(h]h ]h"]h$]h&]uh1johjI ububh)}(h``CEC_MSG_GIVE_PHYSICAL_ADDR``h]j)}(hjv h]hCEC_MSG_GIVE_PHYSICAL_ADDR}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt ubah}(h]h ]h"]h$]h&]uh1hhhhKhjL ubeh}(h]h ]h"]h$]h&]uh1johjI ubjZ eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MSG-GIVE-OSD-NAME`:h]h}(h]h ]h"]h$]h&]hcec-msg-give-osd-nameuh1hhKhjp)}(hhh](j h)}(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 ](jWstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjc refdomainj reftyperef refexplicitrefwarnjxcec_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&]uh1hhhhKhj h}j j sh}j j subeh}(h]h ]h"]h$]h&]uh1johj ububh)}(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&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubj eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h.. _`CEC-MSG-GIVE-FEATURES`:h]h}(h]h ]h"]h$]h&]hcec-msg-give-featuresuh1hhKhjp)}(hhh](jh)}(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 }(hjhhhNhNubh)}(h8:ref:`ioctl CEC_ADAP_S_LOG_ADDRS `h]j)}(hj'h]hioctl CEC_ADAP_S_LOG_ADDRS}(hj)hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]refdocjc refdomainj3reftyperef refexplicitrefwarnjxcec_adap_s_log_addrsuh1hhhhKhjubh, 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.}(hjhhhNhNubeh}(h]jah ]h"]cec-msg-give-featuresah$]h&]uh1hhhhKhjh}jMjsh}jjsubeh}(h]h ]h"]h$]h&]uh1johj ububh)}(h``CEC_MSG_GIVE_FEATURES``h]j)}(hjZh]hCEC_MSG_GIVE_FEATURES}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1johj ubjeh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h#.. _`CEC-MSG-USER-CONTROL-PRESSED`:h]h}(h]h ]h"]h$]h&]hcec-msg-user-control-presseduh1hhKhjp)}(hhh](jh)}(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 ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx 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 ](jWstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx"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&]uh1hhhhMhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1johj{ububh)}(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&]uh1hhhhMhj~ubeh}(h]h ]h"]h$]h&]uh1johj{ubjeh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h$.. _`CEC-MSG-USER-CONTROL-RELEASED`:h]h}(h]h ]h"]h$]h&]hcec-msg-user-control-releaseduh1hhMhjp)}(hhh](jh)}(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 }(hj%hhhNhNubh)}(h:ref:`CEC_CAP_RC `h]j)}(hj/h]h CEC_CAP_RC}(hj1hhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]refdocjc refdomainj;reftyperef refexplicitrefwarnjx cec-cap-rcuh1hhhhM hj%ubh is set and if }(hj%hhhNhNubh)}(hN:ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU `h]j)}(hjSh]h"CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU}(hjUhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]refdocjc refdomainj_reftyperef refexplicitrefwarnjx"cec-log-addrs-fl-allow-rc-passthruuh1hhhhM hj%ubhi is set, then generate a remote control key release. This message is always passed on to the follower(s).}(hj%hhhNhNubeh}(h]j!ah ]h"]cec-msg-user-control-releasedah$]h&]uh1hhhhM hj"h}jyjsh}j!jsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(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&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1johjubj"eh}(h]h ]h"]h$]h&]uh1jjhj ubjk)}(hhh](jp)}(hhh](h)}(h#.. _`CEC-MSG-REPORT-PHYSICAL-ADDR`:h]h}(h]h ]h"]h$]h&]hcec-msg-report-physical-addruh1hhM hjp)}(hhh](jh)}(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&]uh1hhhhMhjh}jjsh}jjsubeh}(h]h ]h"]h$]h&]uh1johjububh)}(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&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1johjubjeh}(h]h ]h"]h$]h&]uh1jjhj ubeh}(h]h ]h"]h$]h&]uh1jehj ubeh}(h]h ]h"]h$]h&]colsKuh1j@hj ubeh}(h](id3j eh ]h"]cec-core-processingah$]h&]uh1j-hjhhhNhNh}jj sh}j j subeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhK#ubh)}(hhh](h)}(h Return Valueh]h Return Value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(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 }(hj%hhhNhNubj)}(h ``errno``h]herrno}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubhM variable is set appropriately. The generic error codes are described at the }(hj%hhhNhNubh)}(h':ref:`Generic Error Codes `h]j)}(hjAh]hGeneric Error Codes}(hjChhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]refdocjc refdomainjMreftyperef refexplicitrefwarnjx gen-errorsuh1hhhhMhj%ubh chapter.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hNThe :ref:`ioctl CEC_S_MODE ` can return the following error codes:h](hThe }(hjihhhNhNubh)}(h$:ref:`ioctl CEC_S_MODE `h]j)}(hjsh]hioctl CEC_S_MODE}(hjuhhhNhNubah}(h]h ](jWstdstd-refeh"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjx cec_s_modeuh1hhhhMhjiubh& can return the following error codes:}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hhh](j)}(h&EINVAL The requested mode is invalid. h](j$)}(hEINVALh]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhMhjubj=)}(hhh]h)}(hThe requested mode is invalid.h]hThe requested mode is invalid.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h]EPERM Monitor mode is requested, but the process does have the ``CAP_NET_ADMIN`` capability. h](j$)}(hEPERMh]hEPERM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhM#hjubj=)}(hhh]h)}(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&]uh1hhhhM"hjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhhhM#hjhhubj)}(hAEBUSY Someone else is already an exclusive follower or initiator.h](j$)}(hEBUSYh]hEBUSY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhM%hjubj=)}(hhh]h)}(h;Someone else is already an exclusive follower or initiator.h]h;Someone else is already an exclusive follower or initiator.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj ubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhhhM%hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(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}(jQhhhhhuh}(hhhhhhuubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjofootnote_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_handlerjxerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _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,]j"aj~]jtaj]jajH]j>aj]jaj.]j$aj]jajR]jHaj#]jaj]jaj ]j aj ]j aj ]j aj' ]j aj ]j aj ]j ajY ]jO aj ]j aj]jaj]jaj!]jaj]jaunameids}(hhhhjQhjPjMjjjjjjjj,jj~jjjjjHj jj>j.jjjjRjj#j jjw j jl j jj j[ j' j j j j ji jY j j jMjjjjyj!jjjHjEu nametypes}(hψhވjQjPjjjjjjjjj j>jjjj jw jl jj[ j j ji j jMjjyjjHuh}(hhhhhhjMhjjj%j.jjjjjjj,j/j~jjjjHjLjjj.j2jjjRjVj#j'jjj j j j j j j' j+ j j j j jY j] j j jjjjj!j%jjjEjjj/j 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]h)}(hhh]h.Hyperlink target "cec-mode" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1jubj)}(hhh]h)}(hhh]h0Hyperlink target "cec-g-mode" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h0Hyperlink target "cec-s-mode" is not referenced.}hj/sbah}(h]h ]h"]h$]h&]uh1hhj,ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h:Hyperlink target "cec-mode-initiator-e" is not referenced.}hjIsbah}(h]h ]h"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKMuh1jubj)}(hhh]h)}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hjcsbah}(h]h ]h"]h$]h&]uh1hhj`ubah}(h]h ]h"]h$]h&]levelKtypejlineKTsourcehuh1jubj)}(hhh]h)}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hj}sbah}(h]h ]h"]h$]h&]uh1hhjzubah}(h]h ]h"]h$]h&]levelKtypejlineKTsourcehuh1jubj)}(hhh]h)}(hhh]h;Hyperlink target "cec-mode-no-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKTsourcehuh1jubj)}(hhh]h)}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKZsourcehuh1jubj)}(hhh]h)}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKZsourcehuh1jubj)}(hhh]h)}(hhh]h8Hyperlink target "cec-mode-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKZsourcehuh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKasourcehuh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKasourcehuh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "cec-mode-excl-initiator" is not referenced.}hj3sbah}(h]h ]h"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]levelKtypejlineKasourcehuh1jubj)}(hhh]h)}(hhh]h9Hyperlink target "cec-mode-follower-e" is not referenced.}hjMsbah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKouh1jubj)}(hhh]h)}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hjgsbah}(h]h ]h"]h$]h&]uh1hhjdubah}(h]h ]h"]h$]h&]levelKtypejlineKxsourcehuh1jubj)}(hhh]h)}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhj~ubah}(h]h ]h"]h$]h&]levelKtypejlineKxsourcehuh1jubj)}(hhh]h)}(hhh]h:Hyperlink target "cec-mode-no-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKxsourcehuh1jubj)}(hhh]h)}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineK}sourcehuh1jubj)}(hhh]h)}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineK}sourcehuh1jubj)}(hhh]h)}(hhh]h7Hyperlink target "cec-mode-follower" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineK}sourcehuh1jubj)}(hhh]h)}(hhh]h