€•Œ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”Œ=/translations/zh_CN/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/zh_TW/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/it_IT/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ja_JP/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ko_KR/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/pt_BR/driver-api/surface_aggregator/clients/dtx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/sp_SP/driver-api/surface_aggregator/clients/dtx”Œ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Œ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx.rst”h´KubhŒsubstitution_definition”“”)�”}”(hŒ,.. |__u16| replace:: :c:type:`__u16 <__u16>`”h]”h)�”}”(hŒ:c:type:`__u16 <__u16>`”h]”hŒliteral”“”)�”}”(hhÐh]”hŒ__u16”…”�”}”(hhÔh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1hÒhhÎubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ)driver-api/surface_aggregator/clients/dtx”Œ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œ__u16”uh1hh³hÇh´KhhÊubah}”(h]”h ]”h"]”Œ__u16”ah$]”h&]”uh1hÈh³hÇh´Khhh²hubhÉ)�”}”(hŒB.. |sdtx_event| replace:: :c:type:`struct sdtx_event `”h]”h)�”}”(hŒ(:c:type:`struct sdtx_event `”h]”hÓ)�”}”(hjh]”hŒstruct sdtx_event”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhhþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰hñŒ sdtx_event”uh1hh³hÇh´Khhúubah}”(h]”h ]”h"]”Œ sdtx_event”ah$]”h&]”uh1hÈh³hÇh´Khhh²hubhÉ)�”}”(hŒO.. |sdtx_event_code| replace:: :c:type:`enum sdtx_event_code `”h]”h)�”}”(hŒ0:c:type:`enum sdtx_event_code `”h]”hÓ)�”}”(hj*h]”hŒenum sdtx_event_code”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰hñŒsdtx_event_code”uh1hh³hÇh´Khj$ubah}”(h]”h ]”h"]”Œsdtx_event_code”ah$]”h&]”uh1hÈh³hÇh´Khhh²hubhÉ)�”}”(hŒN.. |sdtx_base_info| replace:: :c:type:`struct sdtx_base_info `”h]”h)�”}”(hŒ0:c:type:`struct sdtx_base_info `”h]”hÓ)�”}”(hjTh]”hŒstruct sdtx_base_info”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhjRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰hñŒsdtx_base_info”uh1hh³hÇh´KhjNubah}”(h]”h ]”h"]”Œsdtx_base_info”ah$]”h&]”uh1hÈh³hÇh´Khhh²hubhÉ)�”}”(hŒU.. |sdtx_device_mode| replace:: :c:type:`struct sdtx_device_mode ` ”h]”h)�”}”(hŒ4:c:type:`struct sdtx_device_mode `”h]”hÓ)�”}”(hj~h]”hŒstruct sdtx_device_mode”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhj|ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰hñŒsdtx_device_mode”uh1hh³hÇh´Khjxubah}”(h]”h ]”h"]”Œsdtx_device_mode”ah$]”h&]”uh1hÈh³hÇh´Khhh²hubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ6User-Space DTX (Clipboard Detachment System) Interface”h]”hŒ6User-Space DTX (Clipboard Detachment System) Interface”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid13”uh1j§hj¤h²hh³hÇh´K ubhŒ paragraph”“”)�”}”(hX©The ``surface_dtx`` driver is responsible for proper clipboard detachment and re-attachment handling. To this end, it provides the ``/dev/surface/dtx`` device file, through which it can interface with a user-space daemon. This daemon is then ultimately responsible for determining and taking necessary actions, such as unmounting devices attached to the base, unloading/reloading the graphics-driver, user-notifications, etc.”h]”(hŒThe ”…”�”}”(hj»h²hh³Nh´NubhÓ)�”}”(hŒ``surface_dtx``”h]”hŒ surface_dtx”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj»ubhŒp driver is responsible for proper clipboard detachment and re-attachment handling. To this end, it provides the ”…”�”}”(hj»h²hh³Nh´NubhÓ)�”}”(hŒ``/dev/surface/dtx``”h]”hŒ/dev/surface/dtx”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj»ubhX device file, through which it can interface with a user-space daemon. This daemon is then ultimately responsible for determining and taking necessary actions, such as unmounting devices attached to the base, unloading/reloading the graphics-driver, user-notifications, etc.”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K hj¤h²hubjº)�”}”(hX‚There are two basic communication principles used in this driver: Commands (in other parts of the documentation also referred to as requests) and events. Commands are sent to the EC and may have a different implications in different contexts. Events are sent by the EC upon some internal state change. Commands are always driver-initiated, whereas events are always initiated by the EC.”h]”hX‚There are two basic communication principles used in this driver: Commands (in other parts of the documentation also referred to as requests) and events. Commands are sent to the EC and may have a different implications in different contexts. Events are sent by the EC upon some internal state change. Commands are always driver-initiated, whereas events are always initiated by the EC.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Khj¤h²hubhŒtopic”“”)�”}”(hŒ Contents ”h]”(j¨)�”}”(hŒContents”h]”hŒContents”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hjýh³hÇh´KubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(jº)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒ6User-Space DTX (Clipboard Detachment System) Interface”…”�”}”(hjh²hh³Nh´Nubah}”(h]”j¸ah ]”h"]”h$]”h&]”Œrefid”Œ4user-space-dtx-clipboard-detachment-system-interface”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubj)�”}”(hhh]”(j)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒ Nomenclature”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”Œid14”ah ]”h"]”h$]”h&]”Œrefid”Œ nomenclature”uh1jhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubj)�”}”(hhh]”(jº)�”}”(hhh]”j)�”}”(hhh]”hŒDetachment Process”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”Œid15”ah ]”h"]”h$]”h&]”Œrefid”Œdetachment-process”uh1jhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjXubj)�”}”(hhh]”(j)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒ Latch States”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”Œid16”ah ]”h"]”h$]”h&]”Œrefid”Œ latch-states”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒDetachment Procedure”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”Œid17”ah ]”h"]”h$]”h&]”Œrefid”Œdetachment-procedure”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubj)�”}”(hhh]”(jº)�”}”(hhh]”j)�”}”(hhh]”hŒ"User-Space Interface Documentation”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”Œid18”ah ]”h"]”h$]”h&]”Œrefid”Œ"user-space-interface-documentation”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjÇubj)�”}”(hhh]”(j)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒError Codes and Status Values”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”Œid19”ah ]”h"]”h$]”h&]”Œrefid”Œerror-codes-and-status-values”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubj)�”}”(hhh]”(jº)�”}”(hhh]”j)�”}”(hhh]”hŒEvents”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid20”ah ]”h"]”h$]”h&]”Œrefid”Œevents”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubj)�”}”(hhh]”(j)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj-ubah}”(h]”Œid21”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-event-request”uh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´NhjYubah}”(h]”Œid22”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-event-cancel”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_EVENT_BASE_CONNECTION``”h]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj…ubah}”(h]”Œid23”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-event-base-connection”uh1jhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_EVENT_LATCH_STATUS``”h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj±ubah}”(h]”Œid24”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-event-latch-status”uh1jhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_EVENT_DEVICE_MODE``”h]”hŒSDTX_EVENT_DEVICE_MODE”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´NhjÝubah}”(h]”Œid25”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-event-device-mode”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubj)�”}”(hhh]”(jº)�”}”(hhh]”j)�”}”(hhh]”hŒIOCTLs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid26”ah ]”h"]”h$]”h&]”Œrefid”Œioctls”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubj)�”}”(hhh]”(j)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_EVENTS_ENABLE``”h]”hŒSDTX_IOCTL_EVENTS_ENABLE”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj4ubah}”(h]”Œid27”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-events-enable”uh1jhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_EVENTS_DISABLE``”h]”hŒSDTX_IOCTL_EVENTS_DISABLE”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj`ubah}”(h]”Œid28”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-events-disable”uh1jhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_LOCK``”h]”hŒSDTX_IOCTL_LATCH_LOCK”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´NhjŒubah}”(h]”Œid29”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-lock”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_UNLOCK``”h]”hŒSDTX_IOCTL_LATCH_UNLOCK”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj¸ubah}”(h]”Œid30”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-unlock”uh1jhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_REQUEST``”h]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhjäubah}”(h]”Œid31”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-request”uh1jhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_CONFIRM``”h]”hŒSDTX_IOCTL_LATCH_CONFIRM”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhjubah}”(h]”Œid32”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-confirm”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_HEARTBEAT``”h]”hŒSDTX_IOCTL_LATCH_HEARTBEAT”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj<ubah}”(h]”Œid33”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-heartbeat”uh1jhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_CANCEL``”h]”hŒSDTX_IOCTL_LATCH_CANCEL”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhjhubah}”(h]”Œid34”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-latch-cancel”uh1jhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_GET_BASE_INFO``”h]”hŒSDTX_IOCTL_GET_BASE_INFO”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhj”ubah}”(h]”Œid35”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-get-base-info”uh1jhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_GET_DEVICE_MODE``”h]”hŒSDTX_IOCTL_GET_DEVICE_MODE”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´NhjÀubah}”(h]”Œid36”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-get-device-mode”uh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hÓ)�”}”(hŒ``SDTX_IOCTL_GET_LATCH_STATUS``”h]”hŒSDTX_IOCTL_GET_LATCH_STATUS”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒh³Nh´Nhjìubah}”(h]”Œid37”ah ]”h"]”h$]”h&]”Œrefid”Œsdtx-ioctl-get-latch-status”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒA Note on Base IDs”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”Œid38”ah ]”h"]”h$]”h&]”Œrefid”Œa-note-on-base-ids”uh1jhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒStructures and Enums”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”Œid39”ah ]”h"]”h$]”h&]”Œrefid”Œstructures-and-enums”uh1jhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubj)�”}”(hhh]”jº)�”}”(hhh]”j)�”}”(hhh]”hŒ API Users”…”�”}”(hjth²hh³Nh´Nubah}”(h]”Œid40”ah ]”h"]”h$]”h&]”Œrefid”Œ api-users”uh1jhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýh²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1jûh³hÇh´Khj¤h²hubj£)�”}”(hhh]”(j¨)�”}”(hŒ Nomenclature”h]”hŒ Nomenclature”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·jEuh1j§hj«h²hh³hÇh´Kubj)�”}”(hhh]”(j)�”}”(hŒZ**Clipboard:** The detachable upper part of the Surface Book, housing the screen and CPU. ”h]”jº)�”}”(hŒY**Clipboard:** The detachable upper part of the Surface Book, housing the screen and CPU.”h]”(hŒstrong”“”)�”}”(hŒ**Clipboard:**”h]”hŒ Clipboard:”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÃubhŒK The detachable upper part of the Surface Book, housing the screen and CPU.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼h²hh³hÇh´Nubj)�”}”(hŒ•**Base:** The lower part of the Surface Book from which the clipboard can be detached, optionally (model dependent) housing the discrete GPU (dGPU). ”h]”jº)�”}”(hŒ”**Base:** The lower part of the Surface Book from which the clipboard can be detached, optionally (model dependent) housing the discrete GPU (dGPU).”h]”(jÈ)�”}”(hŒ **Base:**”h]”hŒBase:”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjëubhŒ‹ The lower part of the Surface Book from which the clipboard can be detached, optionally (model dependent) housing the discrete GPU (dGPU).”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K#hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼h²hh³hÇh´Nubj)�”}”(hŒ‡**Latch:** The mechanism keeping the clipboard attached to the base in normal operation and allowing it to be detached when requested. ”h]”jº)�”}”(hŒ†**Latch:** The mechanism keeping the clipboard attached to the base in normal operation and allowing it to be detached when requested.”h]”(jÈ)�”}”(hŒ **Latch:**”h]”hŒLatch:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjubhŒ| The mechanism keeping the clipboard attached to the base in normal operation and allowing it to be detached when requested.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K'hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼h²hh³hÇh´Nubj)�”}”(hŒÜ**Silently ignored commands:** The command is accepted by the EC as a valid command and acknowledged (following the standard communication protocol), but the EC does not act upon it, i.e. ignores it.e upper part of the ”h]”jº)�”}”(hŒÚ**Silently ignored commands:** The command is accepted by the EC as a valid command and acknowledged (following the standard communication protocol), but the EC does not act upon it, i.e. ignores it.e upper part of the”h]”(jÈ)�”}”(hŒ**Silently ignored commands:**”h]”hŒSilently ignored commands:”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj7ubhŒ¼ The command is accepted by the EC as a valid command and acknowledged (following the standard communication protocol), but the EC does not act upon it, i.e. ignores it.e upper part of the”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K+hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jh³hÇh´K hj«h²hubeh}”(h]”jKah ]”h"]”Œ nomenclature”ah$]”h&]”uh1j¢hj¤h²hh³hÇh´Kubj£)�”}”(hhh]”(j¨)�”}”(hŒDetachment Process”h]”hŒDetachment Process”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·jguh1j§hjhh²hh³hÇh´K2ubjº)�”}”(hŒ�Warning: This part of the documentation is based on reverse engineering and testing and thus may contain errors or be incomplete.”h]”hŒ�Warning: This part of the documentation is based on reverse engineering and testing and thus may contain errors or be incomplete.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K4hjhh²hubj£)�”}”(hhh]”(j¨)�”}”(hŒ Latch States”h]”hŒ Latch States”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·j†uh1j§hj‡h²hh³hÇh´K8ubjº)�”}”(hŒÊThe latch mechanism has two major states: *open* and *closed*. In the *closed* state (default), the clipboard is secured to the base, whereas in the *open* state, the clipboard can be removed by a user.”h]”(hŒ*The latch mechanism has two major states: ”…”�”}”(hj˜h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*open*”h]”hŒopen”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ubhŒ and ”…”�”}”(hj˜h²hh³Nh´Nubj¡)�”}”(hŒ*closed*”h]”hŒclosed”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ubhŒ . In the ”…”�”}”(hj˜h²hh³Nh´Nubj¡)�”}”(hŒ*closed*”h]”hŒclosed”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ubhŒG state (default), the clipboard is secured to the base, whereas in the ”…”�”}”(hj˜h²hh³Nh´Nubj¡)�”}”(hŒ*open*”h]”hŒopen”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ubhŒ/ state, the clipboard can be removed by a user.”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K:hj‡h²hubjº)�”}”(hX{The latch can additionally be locked and, correspondingly, unlocked, which can influence the detachment procedure. Specifically, this locking mechanism is intended to prevent the dGPU, positioned in the base of the device, from being hot-unplugged while in use. More details can be found in the documentation for the detachment procedure below. By default, the latch is unlocked.”h]”hX{The latch can additionally be locked and, correspondingly, unlocked, which can influence the detachment procedure. Specifically, this locking mechanism is intended to prevent the dGPU, positioned in the base of the device, from being hot-unplugged while in use. More details can be found in the documentation for the detachment procedure below. By default, the latch is unlocked.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K>hj‡h²hubeh}”(h]”jŒah ]”h"]”Œ latch states”ah$]”h&]”uh1j¢hjhh²hh³hÇh´K8ubj£)�”}”(hhh]”(j¨)�”}”(hŒDetachment Procedure”h]”hŒDetachment Procedure”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·j¨uh1j§hjh²hh³hÇh´KFubjº)�”}”(hŒÖNote that the detachment process is governed fully by the EC. The ``surface_dtx`` driver only relays events from the EC to user-space and commands from user-space to the EC, i.e. it does not influence this process.”h]”(hŒBNote that the detachment process is governed fully by the EC. The ”…”�”}”(hjh²hh³Nh´NubhÓ)�”}”(hŒ``surface_dtx``”h]”hŒ surface_dtx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubhŒ… driver only relays events from the EC to user-space and commands from user-space to the EC, i.e. it does not influence this process.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KHhjh²hubjº)�”}”(hŒ«The detachment process is started with the user pressing the *detach* button on the base of the device or executing the ``SDTX_IOCTL_LATCH_REQUEST`` IOCTL. Following that:”h]”(hŒ=The detachment process is started with the user pressing the ”…”�”}”(hj6h²hh³Nh´Nubj¡)�”}”(hŒ*detach*”h]”hŒdetach”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6ubhŒ3 button on the base of the device or executing the ”…”�”}”(hj6h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_REQUEST``”h]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj6ubhŒ IOCTL. Following that:”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KLhjh²hubhŒenumerated_list”“”)�”}”(hhh]”(j)�”}”(hX The EC turns on the indicator led on the detach-button, sends a *detach-request* event (``SDTX_EVENT_REQUEST``), and awaits further instructions/commands. In case the latch is unlocked, the led will flash green. If the latch has been locked, the led will be solid red ”h]”jº)�”}”(hX The EC turns on the indicator led on the detach-button, sends a *detach-request* event (``SDTX_EVENT_REQUEST``), and awaits further instructions/commands. In case the latch is unlocked, the led will flash green. If the latch has been locked, the led will be solid red”h]”(hŒ@The EC turns on the indicator led on the detach-button, sends a ”…”�”}”(hjqh²hh³Nh´Nubj¡)�”}”(hŒ*detach-request*”h]”hŒdetach-request”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubhŒ event (”…”�”}”(hjqh²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjqubhŒ�), and awaits further instructions/commands. In case the latch is unlocked, the led will flash green. If the latch has been locked, the led will be solid red”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KPhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjh²hh³hÇh´Nubj)�”}”(hŒÃThe event is, via the ``surface_dtx`` driver, relayed to user-space, where an appropriate user-space daemon can handle it and send instructions back to the EC via IOCTLs provided by this driver. ”h]”jº)�”}”(hŒÂThe event is, via the ``surface_dtx`` driver, relayed to user-space, where an appropriate user-space daemon can handle it and send instructions back to the EC via IOCTLs provided by this driver.”h]”(hŒThe event is, via the ”…”�”}”(hj­h²hh³Nh´NubhÓ)�”}”(hŒ``surface_dtx``”h]”hŒ surface_dtx”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj­ubhŒ� driver, relayed to user-space, where an appropriate user-space daemon can handle it and send instructions back to the EC via IOCTLs provided by this driver.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KUhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjh²hh³hÇh´Nubj)�”}”(hXøThe EC waits for instructions from user-space and acts according to them. If the EC does not receive any instructions in a given period, it will time out and continue as follows: - If the latch is unlocked, the EC will open the latch and the clipboard can be detached from the base. This is the exact behavior as without this driver or any user-space daemon. See the ``SDTX_IOCTL_LATCH_CONFIRM`` description below for more details on the follow-up behavior of the EC. - If the latch is locked, the EC will *not* open the latch, meaning the clipboard cannot be detached from the base. Furthermore, the EC sends an cancel event (``SDTX_EVENT_CANCEL``) detailing this with the cancel reason ``SDTX_DETACH_TIMEDOUT`` (see :ref:`events` for details). ”h]”(jº)�”}”(hŒ²The EC waits for instructions from user-space and acts according to them. If the EC does not receive any instructions in a given period, it will time out and continue as follows:”h]”hŒ²The EC waits for instructions from user-space and acts according to them. If the EC does not receive any instructions in a given period, it will time out and continue as follows:”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KYhjÓubj)�”}”(hhh]”(j)�”}”(hXIf the latch is unlocked, the EC will open the latch and the clipboard can be detached from the base. This is the exact behavior as without this driver or any user-space daemon. See the ``SDTX_IOCTL_LATCH_CONFIRM`` description below for more details on the follow-up behavior of the EC. ”h]”jº)�”}”(hXIf the latch is unlocked, the EC will open the latch and the clipboard can be detached from the base. This is the exact behavior as without this driver or any user-space daemon. See the ``SDTX_IOCTL_LATCH_CONFIRM`` description below for more details on the follow-up behavior of the EC.”h]”(hŒºIf the latch is unlocked, the EC will open the latch and the clipboard can be detached from the base. This is the exact behavior as without this driver or any user-space daemon. See the ”…”�”}”(hjìh²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_CONFIRM``”h]”hŒSDTX_IOCTL_LATCH_CONFIRM”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjìubhŒH description below for more details on the follow-up behavior of the EC.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K]hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubj)�”}”(hXIf the latch is locked, the EC will *not* open the latch, meaning the clipboard cannot be detached from the base. Furthermore, the EC sends an cancel event (``SDTX_EVENT_CANCEL``) detailing this with the cancel reason ``SDTX_DETACH_TIMEDOUT`` (see :ref:`events` for details). ”h]”jº)�”}”(hXIf the latch is locked, the EC will *not* open the latch, meaning the clipboard cannot be detached from the base. Furthermore, the EC sends an cancel event (``SDTX_EVENT_CANCEL``) detailing this with the cancel reason ``SDTX_DETACH_TIMEDOUT`` (see :ref:`events` for details).”h]”(hŒ$If the latch is locked, the EC will ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒt open the latch, meaning the clipboard cannot be detached from the base. Furthermore, the EC sends an cancel event (”…”�”}”(hj h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj ubhŒ() detailing this with the cancel reason ”…”�”}”(hj h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_DETACH_TIMEDOUT``”h]”hŒSDTX_DETACH_TIMEDOUT”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj ubhŒ (see ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ :ref:`events`”h]”hŒinline”“”)�”}”(hjV h]”hŒevents”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”(hÞŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jX hjT ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”jd Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆhñŒevents”uh1hh³hÇh´Kbhj ubhŒ for details).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kbhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”j_Œ-”uh1jh³hÇh´K]hjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jhhjh²hh³hÇh´KPubjº)�”}”(hŒIValid responses by a user-space daemon to a detachment request event are:”h]”hŒIValid responses by a user-space daemon to a detachment request event are:”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kghjh²hubj)�”}”(hhh]”(j)�”}”(hŒãExecute ``SDTX_IOCTL_LATCH_REQUEST``. This will immediately abort the detachment process. Furthermore, the EC will send a detach-request event, similar to the user pressing the detach-button to cancel said process (see below). ”h]”jº)�”}”(hŒâExecute ``SDTX_IOCTL_LATCH_REQUEST``. This will immediately abort the detachment process. Furthermore, the EC will send a detach-request event, similar to the user pressing the detach-button to cancel said process (see below).”h]”(hŒExecute ”…”�”}”(hj³ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_REQUEST``”h]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj³ ubhŒ¾. This will immediately abort the detachment process. Furthermore, the EC will send a detach-request event, similar to the user pressing the detach-button to cancel said process (see below).”…”�”}”(hj³ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kihj¯ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ h²hh³hÇh´Nubj)�”}”(hX8Execute ``SDTX_IOCTL_LATCH_CONFIRM``. This will cause the EC to open the latch, after which the user can separate clipboard and base. As this changes the latch state, a *latch-status* event (``SDTX_EVENT_LATCH_STATUS``) will be sent once the latch has been opened successfully. If the EC fails to open the latch, e.g. due to hardware error or low battery, a latch-cancel event (``SDTX_EVENT_CANCEL``) will be sent with the cancel reason indicating the specific failure. If the latch is currently locked, the latch will automatically be unlocked before it is opened. ”h]”(jº)�”}”(hŒ…Execute ``SDTX_IOCTL_LATCH_CONFIRM``. This will cause the EC to open the latch, after which the user can separate clipboard and base.”h]”(hŒExecute ”…”�”}”(hjÝ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_CONFIRM``”h]”hŒSDTX_IOCTL_LATCH_CONFIRM”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÝ ubhŒa. This will cause the EC to open the latch, after which the user can separate clipboard and base.”…”�”}”(hjÝ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KnhjÙ ubjº)�”}”(hXOAs this changes the latch state, a *latch-status* event (``SDTX_EVENT_LATCH_STATUS``) will be sent once the latch has been opened successfully. If the EC fails to open the latch, e.g. due to hardware error or low battery, a latch-cancel event (``SDTX_EVENT_CANCEL``) will be sent with the cancel reason indicating the specific failure.”h]”(hŒ#As this changes the latch state, a ”…”�”}”(hjý h²hh³Nh´Nubj¡)�”}”(hŒ*latch-status*”h]”hŒ latch-status”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý ubhŒ event (”…”�”}”(hjý h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_LATCH_STATUS``”h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjý ubhŒ ) will be sent once the latch has been opened successfully. If the EC fails to open the latch, e.g. due to hardware error or low battery, a latch-cancel event (”…”�”}”(hjý h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjý ubhŒF) will be sent with the cancel reason indicating the specific failure.”…”�”}”(hjý h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KqhjÙ ubjº)�”}”(hŒ_If the latch is currently locked, the latch will automatically be unlocked before it is opened.”h]”hŒ_If the latch is currently locked, the latch will automatically be unlocked before it is opened.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KwhjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ h²hh³hÇh´Nubj)�”}”(hŒîExecute ``SDTX_IOCTL_LATCH_HEARTBEAT``. This will reset the internal timeout. No other actions will be performed, i.e. the detachment process will neither be completed nor canceled, and the EC will still be waiting for further responses. ”h]”jº)�”}”(hŒíExecute ``SDTX_IOCTL_LATCH_HEARTBEAT``. This will reset the internal timeout. No other actions will be performed, i.e. the detachment process will neither be completed nor canceled, and the EC will still be waiting for further responses.”h]”(hŒExecute ”…”�”}”(hjY h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_HEARTBEAT``”h]”hŒSDTX_IOCTL_LATCH_HEARTBEAT”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjY ubhŒÇ. This will reset the internal timeout. No other actions will be performed, i.e. the detachment process will neither be completed nor canceled, and the EC will still be waiting for further responses.”…”�”}”(hjY h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KzhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ h²hh³hÇh´Nubj)�”}”(hXuExecute ``SDTX_IOCTL_LATCH_CANCEL``. This will abort the detachment process, similar to ``SDTX_IOCTL_LATCH_REQUEST``, described above, or the button press, described below. A *generic request* event (``SDTX_EVENT_REQUEST``) is send in response to this. In contrast to those, however, this command does not trigger a new detachment process if none is currently in progress. ”h]”jº)�”}”(hXtExecute ``SDTX_IOCTL_LATCH_CANCEL``. This will abort the detachment process, similar to ``SDTX_IOCTL_LATCH_REQUEST``, described above, or the button press, described below. A *generic request* event (``SDTX_EVENT_REQUEST``) is send in response to this. In contrast to those, however, this command does not trigger a new detachment process if none is currently in progress.”h]”(hŒExecute ”…”�”}”(hjƒ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_CANCEL``”h]”hŒSDTX_IOCTL_LATCH_CANCEL”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjƒ ubhŒ5. This will abort the detachment process, similar to ”…”�”}”(hjƒ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_REQUEST``”h]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjƒ ubhŒ;, described above, or the button press, described below. A ”…”�”}”(hjƒ h²hh³Nh´Nubj¡)�”}”(hŒ*generic request*”h]”hŒgeneric request”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubhŒ event (”…”�”}”(hjƒ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjƒ ubhŒ–) is send in response to this. In contrast to those, however, this command does not trigger a new detachment process if none is currently in progress.”…”�”}”(hjƒ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ h²hh³hÇh´Nubj)�”}”(hŒQDo nothing. The detachment process eventually times out as described in point 3. ”h]”jº)�”}”(hŒPDo nothing. The detachment process eventually times out as described in point 3.”h]”hŒPDo nothing. The detachment process eventually times out as described in point 3.”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K†hjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_jŒ uh1jh³hÇh´Kihjh²hubjº)�”}”(hŒ6See :ref:`ioctls` for more details on these responses.”h]”(hŒSee ”…”�”}”(hjý h²hh³Nh´Nubh)�”}”(hŒ :ref:`ioctls`”h]”jY )�”}”(hj h]”hŒioctls”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(hÞŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jX hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”j Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆhñŒioctls”uh1hh³hÇh´K‰hjý ubhŒ% for more details on these responses.”…”�”}”(hjý h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K‰hjh²hubjº)�”}”(hXÖIt is important to note that, if the user presses the detach button at any point when a detachment operation is in progress (i.e. after the EC has sent the initial *detach-request* event (``SDTX_EVENT_REQUEST``) and before it received the corresponding response concluding the process), the detachment process is canceled on the EC-level and an identical event is being sent. Thus a *detach-request* event, by itself, does not signal the start of the detachment process.”h]”(hŒ¤It is important to note that, if the user presses the detach button at any point when a detachment operation is in progress (i.e. after the EC has sent the initial ”…”�”}”(hj/ h²hh³Nh´Nubj¡)�”}”(hŒ*detach-request*”h]”hŒdetach-request”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/ ubhŒ event (”…”�”}”(hj/ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj/ ubhŒ­) and before it received the corresponding response concluding the process), the detachment process is canceled on the EC-level and an identical event is being sent. Thus a ”…”�”}”(hj/ h²hh³Nh´Nubj¡)�”}”(hŒ*detach-request*”h]”hŒdetach-request”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/ ubhŒG event, by itself, does not signal the start of the detachment process.”…”�”}”(hj/ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K‹hjh²hubjº)�”}”(hŒËThe detachment process may further be canceled by the EC due to hardware failures or a low clipboard battery. This is done via a cancel event (``SDTX_EVENT_CANCEL``) with the corresponding cancel reason.”h]”(hŒ�The detachment process may further be canceled by the EC due to hardware failures or a low clipboard battery. This is done via a cancel event (”…”�”}”(hjs h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjs ubhŒ') with the corresponding cancel reason.”…”�”}”(hjs h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K“hjh²hubeh}”(h]”j®ah ]”h"]”Œdetachment procedure”ah$]”h&]”uh1j¢hjhh²hh³hÇh´KFubeh}”(h]”jmah ]”h"]”Œdetachment process”ah$]”h&]”uh1j¢hj¤h²hh³hÇh´K2ubj£)�”}”(hhh]”(j¨)�”}”(hŒ"User-Space Interface Documentation”h]”hŒ"User-Space Interface Documentation”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·jÖuh1j§hj¡ h²hh³hÇh´K™ubj£)�”}”(hhh]”(j¨)�”}”(hŒError Codes and Status Values”h]”hŒError Codes and Status Values”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·jõuh1j§hj² h²hh³hÇh´Kœubjº)�”}”(hŒÌError and status codes are divided into different categories, which can be used to determine if the status code is an error, and, if it is, the severity and type of that error. The current categories are:”h]”hŒÌError and status codes are divided into different categories, which can be used to determine if the status code is an error, and, if it is, the severity and type of that error. The current categories are:”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kžhj² h²hubhŒtable”“”)�”}”(hhh]”(j¨)�”}”(hŒ$Overview of Status/Error Categories.”h]”hŒ$Overview of Status/Error Categories.”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´K¢hjÓ ubhŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjæ ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjæ ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjæ ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¦hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”jº)�”}”(hŒValue”h]”hŒValue”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K§hj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”jº)�”}”(hŒShort Description”h]”hŒShort Description”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¨hjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjæ ubhŒtbody”“”)�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``STATUS``”h]”hÓ)�”}”(hjs h]”hŒSTATUS”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kªhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj )�”}”(hhh]”jº)�”}”(hŒ ``0x0000``”h]”hÓ)�”}”(hj“ h]”hŒ0x0000”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K«hjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj )�”}”(hhh]”jº)�”}”(hŒNon-error status codes.”h]”hŒNon-error status codes.”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¬hj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``RUNTIME_ERROR``”h]”hÓ)�”}”(hjÓ h]”hŒ RUNTIME_ERROR”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K®hjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjË ubj )�”}”(hhh]”jº)�”}”(hŒ ``0x1000``”h]”hÓ)�”}”(hjó h]”hŒ0x1000”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¯hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjË ubj )�”}”(hhh]”jº)�”}”(hŒNon-critical runtime errors.”h]”hŒNon-critical runtime errors.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K°hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjË ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``HARDWARE_ERROR``”h]”hÓ)�”}”(hj3 h]”hŒHARDWARE_ERROR”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K²hj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ ubj )�”}”(hhh]”jº)�”}”(hŒ ``0x2000``”h]”hÓ)�”}”(hjS h]”hŒ0x2000”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K³hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ ubj )�”}”(hhh]”jº)�”}”(hŒCritical hardware failures.”h]”hŒCritical hardware failures.”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K´hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``UNKNOWN``”h]”hÓ)�”}”(hj“ h]”hŒUNKNOWN”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¶hjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubj )�”}”(hhh]”jº)�”}”(hŒ ``0xF000``”h]”hÓ)�”}”(hj³ h]”hŒ0xF000”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K·hj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubj )�”}”(hhh]”jº)�”}”(hŒUnknown error codes.”h]”hŒUnknown error codes.”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¸hjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hjæ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjÓ ubeh}”(h]”Œid3”ah ]”h"]”h$]”h&]”uh1jÑ hj² h²hh³Nh´Nubjº)�”}”(hXOther categories are reserved for future use. The ``SDTX_CATEGORY()`` macro can be used to determine the category of any status value. The ``SDTX_SUCCESS()`` macro can be used to check if the status value is a success value (``SDTX_CATEGORY_STATUS``) or if it indicates a failure.”h]”(hŒ2Other categories are reserved for future use. The ”…”�”}”(hjÿ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_CATEGORY()``”h]”hŒSDTX_CATEGORY()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÿ ubhŒF macro can be used to determine the category of any status value. The ”…”�”}”(hjÿ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_SUCCESS()``”h]”hŒSDTX_SUCCESS()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÿ ubhŒD macro can be used to check if the status value is a success value (”…”�”}”(hjÿ h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_CATEGORY_STATUS``”h]”hŒSDTX_CATEGORY_STATUS”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÿ ubhŒ) or if it indicates a failure.”…”�”}”(hjÿ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kºhj² h²hubjº)�”}”(hŒœUnknown status or error codes sent by the EC are assigned to the ``UNKNOWN`` category by the driver and may be implemented via their own code in the future.”h]”(hŒAUnknown status or error codes sent by the EC are assigned to the ”…”�”}”(hjCh²hh³Nh´NubhÓ)�”}”(hŒ ``UNKNOWN``”h]”hŒUNKNOWN”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjCubhŒP category by the driver and may be implemented via their own code in the future.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K¿hj² h²hubjº)�”}”(hŒCurrently used error codes are:”h]”hŒCurrently used error codes are:”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÃhj² h²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒOverview of Error Codes.”h]”hŒOverview of Error Codes.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´KÅhjqubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj‚ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj‚ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj‚ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj‚ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÉhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubj )�”}”(hhh]”jº)�”}”(hŒCategory”h]”hŒCategory”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÊhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubj )�”}”(hhh]”jº)�”}”(hŒValue”h]”hŒValue”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KËhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubj )�”}”(hhh]”jº)�”}”(hŒShort Description”h]”hŒShort Description”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÌhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚ubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``”h]”hÓ)�”}”(hj&h]”hŒSDTX_DETACH_NOT_FEASIBLE”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÎhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``RUNTIME``”h]”hÓ)�”}”(hjFh]”hŒRUNTIME”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÏhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``0x1001``”h]”hÓ)�”}”(hjfh]”hŒ0x1001”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÐhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ5Detachment not feasible due to low clipboard battery.”h]”hŒ5Detachment not feasible due to low clipboard battery.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÑhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_DETACH_TIMEDOUT``”h]”hÓ)�”}”(hj¦h]”hŒSDTX_DETACH_TIMEDOUT”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÓhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒ ``RUNTIME``”h]”hÓ)�”}”(hjÆh]”hŒRUNTIME”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÔhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒ ``0x1002``”h]”hÓ)�”}”(hjæh]”hŒ0x1002”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÕhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒ8Detachment process timed out while the latch was locked.”h]”hŒ8Detachment process timed out while the latch was locked.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``”h]”hÓ)�”}”(hj&h]”hŒSDTX_ERR_FAILED_TO_OPEN”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KØhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``HARDWARE``”h]”hÓ)�”}”(hjFh]”hŒHARDWARE”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÙhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``0x2001``”h]”hÓ)�”}”(hjfh]”hŒ0x2001”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÚhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒFailed to open latch.”h]”hŒFailed to open latch.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÛhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ"``SDTX_ERR_FAILED_TO_REMAIN_OPEN``”h]”hÓ)�”}”(hj¦h]”hŒSDTX_ERR_FAILED_TO_REMAIN_OPEN”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÝhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒ ``HARDWARE``”h]”hÓ)�”}”(hjÆh]”hŒHARDWARE”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÞhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒ ``0x2002``”h]”hÓ)�”}”(hjæh]”hŒ0x2002”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kßhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”jº)�”}”(hŒFailed to keep latch open.”h]”hŒFailed to keep latch open.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kàhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``”h]”hÓ)�”}”(hj&h]”hŒSDTX_ERR_FAILED_TO_CLOSE”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kâhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``HARDWARE``”h]”hÓ)�”}”(hjFh]”hŒHARDWARE”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KãhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``0x2003``”h]”hÓ)�”}”(hjfh]”hŒ0x2003”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kähjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒFailed to close latch.”h]”hŒFailed to close latch.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kåhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjqubeh}”(h]”Œid4”ah ]”h"]”h$]”h&]”uh1jÑ hj² h²hh³Nh´Nubjº)�”}”(hŒ†Other error codes are reserved for future use. Non-error status codes may overlap and are generally only unique within their use-case:”h]”hŒ†Other error codes are reserved for future use. Non-error status codes may overlap and are generally only unique within their use-case:”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kçhj² h²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒLatch Status Codes.”h]”hŒLatch Status Codes.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´KêhjÀubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÑubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÑubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÑubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÑubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kîhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubj )�”}”(hhh]”jº)�”}”(hŒCategory”h]”hŒCategory”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubj )�”}”(hhh]”jº)�”}”(hŒValue”h]”hŒValue”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kðhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubj )�”}”(hhh]”jº)�”}”(hŒShort Description”h]”hŒShort Description”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KñhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_LATCH_CLOSED``”h]”hÓ)�”}”(hjuh]”hŒSDTX_LATCH_CLOSED”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kóhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubj )�”}”(hhh]”jº)�”}”(hŒ ``STATUS``”h]”hÓ)�”}”(hj•h]”hŒSTATUS”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kôhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubj )�”}”(hhh]”jº)�”}”(hŒ ``0x0000``”h]”hÓ)�”}”(hjµh]”hŒ0x0000”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kõhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubj )�”}”(hhh]”jº)�”}”(hŒ Latch is closed/has been closed.”h]”hŒ Latch is closed/has been closed.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KöhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_LATCH_OPENED``”h]”hÓ)�”}”(hjõh]”hŒSDTX_LATCH_OPENED”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Køhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubj )�”}”(hhh]”jº)�”}”(hŒ ``STATUS``”h]”hÓ)�”}”(hjh]”hŒSTATUS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kùhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubj )�”}”(hhh]”jº)�”}”(hŒ ``0x0001``”h]”hÓ)�”}”(hj5h]”hŒ0x0001”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kúhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubj )�”}”(hhh]”jº)�”}”(hŒLatch is open/has been opened.”h]”hŒLatch is open/has been opened.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KûhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjÀubeh}”(h]”Œid5”ah ]”h"]”h$]”h&]”uh1jÑ hj² h²hh³Nh´NubjÒ )�”}”(hhh]”(j¨)�”}”(hŒBase State Codes.”h]”hŒBase State Codes.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´Kýhj�ubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj’ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj’ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj’ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj’ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀubj )�”}”(hhh]”jº)�”}”(hŒCategory”h]”hŒCategory”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀubj )�”}”(hhh]”jº)�”}”(hŒValue”h]”hŒValue”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀubj )�”}”(hhh]”jº)�”}”(hŒShort Description”h]”hŒShort Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_BASE_DETACHED``”h]”hÓ)�”}”(hj6h]”hŒSDTX_BASE_DETACHED”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj )�”}”(hhh]”jº)�”}”(hŒ ``STATUS``”h]”hÓ)�”}”(hjVh]”hŒSTATUS”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj )�”}”(hhh]”jº)�”}”(hŒ ``0x0000``”h]”hÓ)�”}”(hjvh]”hŒ0x0000”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj )�”}”(hhh]”jº)�”}”(hŒ&Base has been detached/is not present.”h]”hŒ&Base has been detached/is not present.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_BASE_ATTACHED``”h]”hÓ)�”}”(hj¶h]”hŒSDTX_BASE_ATTACHED”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”jº)�”}”(hŒ ``STATUS``”h]”hÓ)�”}”(hjÖh]”hŒSTATUS”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”jº)�”}”(hŒ ``0x0001``”h]”hÓ)�”}”(hjöh]”hŒ0x0001”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”jº)�”}”(hŒ"Base has been attached/is present.”h]”hŒ"Base has been attached/is present.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hj�ubeh}”(h]”Œid6”ah ]”h"]”h$]”h&]”uh1jÑ hj² h²hh³Nh´Nubjº)�”}”(hŒ/Again, other codes are reserved for future use.”h]”hŒ/Again, other codes are reserved for future use.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj² h²hubhŒtarget”“”)�”}”(hŒ .. _events:”h]”h}”(h]”h ]”h"]”h$]”h&]”j·juh1jPh´Mhj² h²hh³hÇubeh}”(h]”jûah ]”h"]”Œerror codes and status values”ah$]”h&]”uh1j¢hj¡ h²hh³hÇh´Kœubj£)�”}”(hhh]”(j¨)�”}”(hŒEvents”h]”hŒEvents”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·juh1j§hjch²hh³hÇh´Mubjº)�”}”(hXEvents can be received by reading from the device file. They are disabled by default and have to be enabled by executing ``SDTX_IOCTL_EVENTS_ENABLE`` first. All events follow the layout prescribed by |sdtx_event|. Specific event types can be identified by their event code, described in |sdtx_event_code|. Note that other event codes are reserved for future use, thus an event parser must be able to handle any unknown/unsupported event types gracefully, by relying on the payload length given in the event header.”h]”(hŒyEvents can be received by reading from the device file. They are disabled by default and have to be enabled by executing ”…”�”}”(hjth²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_EVENTS_ENABLE``”h]”hŒSDTX_IOCTL_EVENTS_ENABLE”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjtubhŒ3 first. All events follow the layout prescribed by ”…”�”}”(hjth²hh³Nh´Nubh)�”}”(hjh]”hÓ)�”}”(hjh]”hŒstruct sdtx_event”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”(hÞhßj eh"]”h$]”h&]”uh1hÒh³Nh´NhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”jŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”juh1hh³hÇh´Khjth²hubhŒK. Specific event types can be identified by their event code, described in ”…”�”}”(hjth²hh³Nh´Nubh)�”}”(hj*h]”hÓ)�”}”(hj*h]”hŒenum sdtx_event_code”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”(hÞhßj6eh"]”h$]”h&]”uh1hÒh³Nh´Nhj®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”jCŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”jFuh1hh³hÇh´Khjth²hubhŒÒ. Note that other event codes are reserved for future use, thus an event parser must be able to handle any unknown/unsupported event types gracefully, by relying on the payload length given in the event header.”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjch²hubjº)�”}”(hŒ#Currently provided event types are:”h]”hŒ#Currently provided event types are:”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjch²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒOverview of DTX events.”h]”hŒOverview of DTX events.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´M!hjâubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjóubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjóubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjóubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjóubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”•}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M%hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubj )�”}”(hhh]”jº)�”}”(hŒCode”h]”hŒCode”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M&hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubj )�”}”(hhh]”jº)�”}”(hŒPayload”h]”hŒPayload”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M'hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubj )�”}”(hhh]”jº)�”}”(hŒShort Description”h]”hŒShort Description”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M(hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjóubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hÓ)�”}”(hj—h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M*hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj )�”}”(hhh]”jº)�”}”(hŒ``1``”h]”hÓ)�”}”(hj·h]”hŒ1”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M+hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj )�”}”(hhh]”jº)�”}”(hŒ ``0`` bytes”h]”(hÓ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÕubhŒ bytes”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M,hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj )�”}”(hhh]”jº)�”}”(hŒ%Detachment process initiated/aborted.”h]”hŒ%Detachment process initiated/aborted.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M-hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hÓ)�”}”(hjh]”hŒSDTX_EVENT_CANCEL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M/hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ``2``”h]”hÓ)�”}”(hj<h]”hŒ2”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M0hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``2`` bytes”h]”(hÓ)�”}”(hŒ``2``”h]”hŒ2”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjZubhŒ bytes”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M1hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒEC canceled detachment process.”h]”hŒEC canceled detachment process.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M2hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_EVENT_BASE_CONNECTION``”h]”hÓ)�”}”(hj¡h]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M4hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubj )�”}”(hhh]”jº)�”}”(hŒ``3``”h]”hÓ)�”}”(hjÁh]”hŒ3”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M5hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubj )�”}”(hhh]”jº)�”}”(hŒ ``4`` bytes”h]”(hÓ)�”}”(hŒ``4``”h]”hŒ4”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjßubhŒ bytes”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M6hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubj )�”}”(hhh]”jº)�”}”(hŒBase connection state changed.”h]”hŒBase connection state changed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_EVENT_LATCH_STATUS``”h]”hÓ)�”}”(hj&h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M9hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ``4``”h]”hÓ)�”}”(hjFh]”hŒ4”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M:hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ ``2`` bytes”h]”(hÓ)�”}”(hŒ``2``”h]”hŒ2”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjdubhŒ bytes”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M;hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒLatch status changed.”h]”hŒLatch status changed.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M<hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``SDTX_EVENT_DEVICE_MODE``”h]”hÓ)�”}”(hj«h]”hŒSDTX_EVENT_DEVICE_MODE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M>hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubj )�”}”(hhh]”jº)�”}”(hŒ``5``”h]”hÓ)�”}”(hjËh]”hŒ5”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M?hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubj )�”}”(hhh]”jº)�”}”(hŒ ``2`` bytes”h]”(hÓ)�”}”(hŒ``2``”h]”hŒ2”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjéubhŒ bytes”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M@hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubj )�”}”(hhh]”jº)�”}”(hŒDevice mode changed.”h]”hŒDevice mode changed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MAhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjâubeh}”(h]”Œid7”ah ]”h"]”h$]”h&]”uh1jÑ hjch²hh³Nh´Nubjº)�”}”(hŒ!Individual events in more detail:”h]”hŒ!Individual events in more detail:”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MChjch²hubj£)�”}”(hhh]”(j¨)�”}”(hj2h]”hÓ)�”}”(hj2h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjMubah}”(h]”h ]”h"]”h$]”h&]”j·j@uh1j§hjJh²hh³hÇh´MFubjº)�”}”(hŒÂSent when a detachment process is started or, if in progress, aborted by the user, either via a detach button press or a detach request (``SDTX_IOCTL_LATCH_REQUEST``) being sent from user-space.”h]”(hŒ‰Sent when a detachment process is started or, if in progress, aborted by the user, either via a detach button press or a detach request (”…”�”}”(hjch²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_LATCH_REQUEST``”h]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjcubhŒ) being sent from user-space.”…”�”}”(hjch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MHhjJh²hubjº)�”}”(hŒDoes not have any payload.”h]”hŒDoes not have any payload.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MLhjJh²hubeh}”(h]”jFah ]”h"]”Œsdtx_event_request”ah$]”h&]”uh1j¢hjch²hh³hÇh´MFubj£)�”}”(hhh]”(j¨)�”}”(hj^h]”hÓ)�”}”(hj^h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj›ubah}”(h]”h ]”h"]”h$]”h&]”j·jluh1j§hj˜h²hh³hÇh´MOubjº)�”}”(hŒðSent when a detachment process is canceled by the EC due to unfulfilled preconditions (e.g. clipboard battery too low to detach) or hardware failure. The reason for cancellation is given in the event payload detailed below and can be one of”h]”hŒðSent when a detachment process is canceled by the EC due to unfulfilled preconditions (e.g. clipboard battery too low to detach) or hardware failure. The reason for cancellation is given in the event payload detailed below and can be one of”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MQhj˜h²hubj)�”}”(hhh]”(j)�”}”(hŒ{``SDTX_DETACH_TIMEDOUT``: Detachment timed out while the latch was locked. The latch has neither been opened nor unlocked. ”h]”jº)�”}”(hŒz``SDTX_DETACH_TIMEDOUT``: Detachment timed out while the latch was locked. The latch has neither been opened nor unlocked.”h]”(hÓ)�”}”(hŒ``SDTX_DETACH_TIMEDOUT``”h]”hŒSDTX_DETACH_TIMEDOUT”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÆubhŒb: Detachment timed out while the latch was locked. The latch has neither been opened nor unlocked.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MVhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubj)�”}”(hŒT``SDTX_DETACH_NOT_FEASIBLE``: Detachment not feasible due to low clipboard battery. ”h]”jº)�”}”(hŒS``SDTX_DETACH_NOT_FEASIBLE``: Detachment not feasible due to low clipboard battery.”h]”(hÓ)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``”h]”hŒSDTX_DETACH_NOT_FEASIBLE”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjìubhŒ7: Detachment not feasible due to low clipboard battery.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MYhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubj)�”}”(hŒJ``SDTX_ERR_FAILED_TO_OPEN``: Could not open the latch (hardware failure). ”h]”jº)�”}”(hŒI``SDTX_ERR_FAILED_TO_OPEN``: Could not open the latch (hardware failure).”h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_OPEN”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubhŒ.: Could not open the latch (hardware failure).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M\hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubj)�”}”(hŒV``SDTX_ERR_FAILED_TO_REMAIN_OPEN``: Could not keep the latch open (hardware failure). ”h]”jº)�”}”(hŒU``SDTX_ERR_FAILED_TO_REMAIN_OPEN``: Could not keep the latch open (hardware failure).”h]”(hÓ)�”}”(hŒ"``SDTX_ERR_FAILED_TO_REMAIN_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_REMAIN_OPEN”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj8ubhŒ3: Could not keep the latch open (hardware failure).”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M^hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubj)�”}”(hŒL``SDTX_ERR_FAILED_TO_CLOSE``: Could not close the latch (hardware failure). ”h]”jº)�”}”(hŒK``SDTX_ERR_FAILED_TO_CLOSE``: Could not close the latch (hardware failure).”h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``”h]”hŒSDTX_ERR_FAILED_TO_CLOSE”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^ubhŒ/: Could not close the latch (hardware failure).”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MahjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´MVhj˜h²hubjº)�”}”(hŒ>Other error codes in this context are reserved for future use.”h]”hŒ>Other error codes in this context are reserved for future use.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mchj˜h²hubjº)�”}”(hX1These codes can be classified via the ``SDTX_CATEGORY()`` macro to discern between critical hardware errors (``SDTX_CATEGORY_HARDWARE_ERROR``) or runtime errors (``SDTX_CATEGORY_RUNTIME_ERROR``), the latter of which may happen during normal operation if certain preconditions for detachment are not given.”h]”(hŒ&These codes can be classified via the ”…”�”}”(hj”h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_CATEGORY()``”h]”hŒSDTX_CATEGORY()”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj”ubhŒ4 macro to discern between critical hardware errors (”…”�”}”(hj”h²hh³Nh´NubhÓ)�”}”(hŒ ``SDTX_CATEGORY_HARDWARE_ERROR``”h]”hŒSDTX_CATEGORY_HARDWARE_ERROR”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj”ubhŒ) or runtime errors (”…”�”}”(hj”h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_CATEGORY_RUNTIME_ERROR``”h]”hŒSDTX_CATEGORY_RUNTIME_ERROR”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj”ubhŒp), the latter of which may happen during normal operation if certain preconditions for detachment are not given.”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mehj˜h²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒDetachment Cancel Event Payload”h]”hŒDetachment Cancel Event Payload”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´MkhjØubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjéubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjéubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjéubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒField”h]”hŒField”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mohjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”jº)�”}”(hŒType”h]”hŒType”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mphj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”jº)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mqhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjéubjg )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``reason``”h]”hÓ)�”}”(hjlh]”hŒreason”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mshjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjdubj )�”}”(hhh]”jº)�”}”(hŒ|__u16|”h]”h)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´NhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´KhjŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mthj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjdubj )�”}”(hhh]”jº)�”}”(hŒReason for cancellation.”h]”hŒReason for cancellation.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Muhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jf hjéubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjØubeh}”(h]”Œid8”ah ]”h"]”h$]”h&]”uh1jÑ hj˜h²hh³Nh´Nubeh}”(h]”jrah ]”h"]”Œsdtx_event_cancel”ah$]”h&]”uh1j¢hjch²hh³hÇh´MOubj£)�”}”(hhh]”(j¨)�”}”(hjŠh]”hÓ)�”}”(hjŠh]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjñubah}”(h]”h ]”h"]”h$]”h&]”j·j˜uh1j§hjîh²hh³hÇh´Mxubjº)�”}”(hX-Sent when the base connection state has changed, i.e. when the base has been attached, detached, or detachment has become infeasible due to low clipboard battery. The new state and, if a base is connected, ID of the base is provided as payload of type |sdtx_base_info| with its layout presented below:”h]”(hŒüSent when the base connection state has changed, i.e. when the base has been attached, detached, or detachment has become infeasible due to low clipboard battery. The new state and, if a base is connected, ID of the base is provided as payload of type ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hjTh]”hÓ)�”}”(hjTh]”hŒstruct sdtx_base_info”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(hÞhßj`eh"]”h$]”h&]”uh1hÒh³Nh´Nhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”jmŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”jpuh1hh³hÇh´Khjh²hubhŒ! with its layout presented below:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mzhjîh²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒ$Base-Connection-Change Event Payload”h]”hŒ$Base-Connection-Change Event Payload”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´M€hj5ubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjFubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjFubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjFubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒField”h]”hŒField”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M„hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”jº)�”}”(hŒType”h]”hŒType”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M…hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”jº)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M†hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjFubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``state``”h]”hÓ)�”}”(hjÉh]”hŒstate”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MˆhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubj )�”}”(hhh]”jº)�”}”(hŒ|__u16|”h]”h)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´Nhjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´Khjçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M‰hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubj )�”}”(hhh]”jº)�”}”(hŒBase connection state.”h]”hŒBase connection state.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MŠhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``base_id``”h]”hÓ)�”}”(hj8h]”hŒbase_id”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MŒhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0ubj )�”}”(hhh]”jº)�”}”(hŒ|__u16|”h]”h)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´NhjZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´KhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M�hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0ubj )�”}”(hhh]”jº)�”}”(hŒ&Type of base connected (zero if none).”h]”hŒ&Type of base connected (zero if none).”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MŽhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hjFubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hj5ubeh}”(h]”Œid9”ah ]”h"]”h$]”h&]”uh1jÑ hjîh²hh³Nh´Nubjº)�”}”(hŒ"Possible values for ``state`` are:”h]”(hŒPossible values for ”…”�”}”(hj³h²hh³Nh´NubhÓ)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj³ubhŒ are:”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M�hjîh²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_BASE_DETACHED``,”h]”jº)�”}”(hjØh]”(hÓ)�”}”(hŒ``SDTX_BASE_DETACHED``”h]”hŒSDTX_BASE_DETACHED”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÚubhŒ,”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M’hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓh²hh³hÇh´Nubj)�”}”(hŒ``SDTX_BASE_ATTACHED``, and”h]”jº)�”}”(hjýh]”(hÓ)�”}”(hŒ``SDTX_BASE_ATTACHED``”h]”hŒSDTX_BASE_ATTACHED”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÿubhŒ, and”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M“hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓh²hh³hÇh´Nubj)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``. ”h]”jº)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``.”h]”(hÓ)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``”h]”hŒSDTX_DETACH_NOT_FEASIBLE”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubhŒ.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M”hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´M’hjîh²hubjº)�”}”(hŒ)Other values are reserved for future use.”h]”hŒ)Other values are reserved for future use.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M–hjîh²hubeh}”(h]”jžah ]”h"]”Œsdtx_event_base_connection”ah$]”h&]”uh1j¢hjch²hh³hÇh´Mxubj£)�”}”(hhh]”(j¨)�”}”(hj¶h]”hÓ)�”}”(hj¶h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjdubah}”(h]”h ]”h"]”h$]”h&]”j·jÄuh1j§hjah²hh³hÇh´M™ubjº)�”}”(hŒ•Sent when the latch status has changed, i.e. when the latch has been opened, closed, or an error occurred. The current status is provided as payload:”h]”hŒ•Sent when the latch status has changed, i.e. when the latch has been opened, closed, or an error occurred. The current status is provided as payload:”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M›hjah²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒ!Latch-Status-Change Event Payload”h]”hŒ!Latch-Status-Change Event Payload”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´Mžhjˆubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj™ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj™ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj™ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒField”h]”hŒField”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¢hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubj )�”}”(hhh]”jº)�”}”(hŒType”h]”hŒType”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M£hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubj )�”}”(hhh]”jº)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¤hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubjg )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ ``status``”h]”hÓ)�”}”(hjh]”hŒstatus”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¦hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ|__u16|”h]”h)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´Nhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´Khj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M§hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”jº)�”}”(hŒ Latch status.”h]”hŒ Latch status.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¨hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jf hj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjˆubeh}”(h]”Œid10”ah ]”h"]”h$]”h&]”uh1jÑ hjah²hh³Nh´Nubjº)�”}”(hŒ#Possible values for ``status`` are:”h]”(hŒPossible values for ”…”�”}”(hj—h²hh³Nh´NubhÓ)�”}”(hŒ ``status``”h]”hŒstatus”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj—ubhŒ are:”…”�”}”(hj—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mªhjah²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_LATCH_CLOSED``,”h]”jº)�”}”(hj¼h]”(hÓ)�”}”(hŒ``SDTX_LATCH_CLOSED``”h]”hŒSDTX_LATCH_CLOSED”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾ubhŒ,”…”�”}”(hj¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¬hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_LATCH_OPENED``,”h]”jº)�”}”(hjáh]”(hÓ)�”}”(hŒ``SDTX_LATCH_OPENED``”h]”hŒSDTX_LATCH_OPENED”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjãubhŒ,”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M­hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``,”h]”jº)�”}”(hj h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_OPEN”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj ubhŒ,”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M®hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³hÇh´Nubj)�”}”(hŒ'``SDTX_ERR_FAILED_TO_REMAIN_OPEN``, and”h]”jº)�”}”(hj+ h]”(hÓ)�”}”(hŒ"``SDTX_ERR_FAILED_TO_REMAIN_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_REMAIN_OPEN”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj- ubhŒ, and”…”�”}”(hj- h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¯hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``. ”h]”jº)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``.”h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``”h]”hŒSDTX_ERR_FAILED_TO_CLOSE”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjR ubhŒ.”…”�”}”(hjR h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M°hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´M¬hjah²hubjº)�”}”(hŒ)Other values are reserved for future use.”h]”hŒ)Other values are reserved for future use.”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M²hjah²hubeh}”(h]”jÊah ]”h"]”Œsdtx_event_latch_status”ah$]”h&]”uh1j¢hjch²hh³hÇh´M™ubj£)�”}”(hhh]”(j¨)�”}”(hjâh]”hÓ)�”}”(hjâh]”hŒSDTX_EVENT_DEVICE_MODE”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj’ ubah}”(h]”h ]”h"]”h$]”h&]”j·jðuh1j§hj� h²hh³hÇh´Mµubjº)�”}”(hŒRSent when the device mode has changed. The new device mode is provided as payload:”h]”hŒRSent when the device mode has changed. The new device mode is provided as payload:”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M·hj� h²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒ Device-Mode-Change Event Payload”h]”hŒ Device-Mode-Change Event Payload”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´Mºhj¶ ubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÇ ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÇ ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hjÇ ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒField”h]”hŒField”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¾hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubj )�”}”(hhh]”jº)�”}”(hŒType”h]”hŒType”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¿hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubj )�”}”(hhh]”jº)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÀhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjè ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ ubjg )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``mode``”h]”hÓ)�”}”(hjJ!h]”hŒmode”…”�”}”(hjL!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjH!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÂhjE!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB!ubj )�”}”(hhh]”jº)�”}”(hŒ|__u16|”h]”h)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hjo!h²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´Nhjl!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´Khjh!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÃhje!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB!ubj )�”}”(hhh]”jº)�”}”(hŒDevice operation mode.”h]”hŒDevice operation mode.”…”�”}”(hj—!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÄhj”!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj?!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jf hjÇ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hj¶ ubeh}”(h]”Œid11”ah ]”h"]”h$]”h&]”uh1jÑ hj� h²hh³Nh´Nubjº)�”}”(hŒ!Possible values for ``mode`` are:”h]”(hŒPossible values for ”…”�”}”(hjÅ!h²hh³Nh´NubhÓ)�”}”(hŒ``mode``”h]”hŒmode”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÅ!ubhŒ are:”…”�”}”(hjÅ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÆhj� h²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_DEVICE_MODE_TABLET``,”h]”jº)�”}”(hjê!h]”(hÓ)�”}”(hŒ``SDTX_DEVICE_MODE_TABLET``”h]”hŒSDTX_DEVICE_MODE_TABLET”…”�”}”(hjï!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjì!ubhŒ,”…”�”}”(hjì!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÈhjè!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå!h²hh³hÇh´Nubj)�”}”(hŒ ``SDTX_DEVICE_MODE_LAPTOP``, and”h]”jº)�”}”(hj"h]”(hÓ)�”}”(hŒ``SDTX_DEVICE_MODE_LAPTOP``”h]”hŒSDTX_DEVICE_MODE_LAPTOP”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj"ubhŒ, and”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÉhj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå!h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO``. ”h]”jº)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO``.”h]”(hÓ)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO``”h]”hŒSDTX_DEVICE_MODE_STUDIO”…”�”}”(hj:"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj6"ubhŒ.”…”�”}”(hj6"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÊhj2"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå!h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´MÈhj� h²hubjº)�”}”(hŒ)Other values are reserved for future use.”h]”hŒ)Other values are reserved for future use.”…”�”}”(hj^"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÌhj� h²hubjQ)�”}”(hŒ .. _ioctls:”h]”h}”(h]”h ]”h"]”h$]”h&]”j·j$uh1jPh´MÎhj� h²hh³hÇubeh}”(h]”jöah ]”h"]”Œsdtx_event_device_mode”ah$]”h&]”uh1j¢hjch²hh³hÇh´Mµubeh}”(h]”(jŒid1”eh ]”h"]”Œevents”ah$]”Œevents”ah&]”uh1j¢hj¡ h²hh³hÇh´MŒ referenced”KŒexpect_referenced_by_name”}”j‚"jRsŒexpect_referenced_by_id”}”jjRsubj£)�”}”(hhh]”(j¨)�”}”(hŒIOCTLs”h]”hŒIOCTLs”…”�”}”(hjŽ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·juh1j§hj‹"h²hh³hÇh´MÑubjº)�”}”(hŒ"The following IOCTLs are provided:”h]”hŒ"The following IOCTLs are provided:”…”�”}”(hjœ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÓhj‹"h²hubjÒ )�”}”(hhh]”(j¨)�”}”(hŒOverview of DTX IOCTLs”h]”hŒOverview of DTX IOCTLs”…”�”}”(hj­"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´MÕhjª"ubjå )�”}”(hhh]”(jê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj»"ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj»"ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj»"ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj»"ubjê )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jé hj»"ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒType”h]”hŒType”…”�”}”(hjù"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÙhjö"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubj )�”}”(hhh]”jº)�”}”(hŒNumber”h]”hŒNumber”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÚhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubj )�”}”(hhh]”jº)�”}”(hŒ Direction”h]”hŒ Direction”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÛhj$#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubj )�”}”(hhh]”jº)�”}”(hŒName”h]”hŒName”…”�”}”(hj>#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÜhj;#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubj )�”}”(hhh]”jº)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjU#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÝhjR#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjð"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»"ubjg )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj€#h]”hŒ0xA5”…”�”}”(hj‚#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mßhj{#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx#ubj )�”}”(hhh]”jº)�”}”(hŒ``0x21``”h]”hÓ)�”}”(hj #h]”hŒ0x21”…”�”}”(hj¢#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjž#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Màhj›#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx#ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hjÀ#h]”hŒ-”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Máhj»#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx#ubj )�”}”(hhh]”jº)�”}”(hŒ``EVENTS_ENABLE``”h]”hÓ)�”}”(hjà#h]”hŒ EVENTS_ENABLE”…”�”}”(hjâ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MâhjÛ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx#ubj )�”}”(hhh]”jº)�”}”(hŒ.Enable events for the current file descriptor.”h]”hŒ.Enable events for the current file descriptor.”…”�”}”(hjþ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mãhjû#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj $h]”hŒ0xA5”…”�”}”(hj"$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Måhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubj )�”}”(hhh]”jº)�”}”(hŒ``0x22``”h]”hÓ)�”}”(hj@$h]”hŒ0x22”…”�”}”(hjB$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj>$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mæhj;$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj`$h]”hŒ-”…”�”}”(hjb$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mçhj[$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubj )�”}”(hhh]”jº)�”}”(hŒ``EVENTS_DISABLE``”h]”hÓ)�”}”(hj€$h]”hŒEVENTS_DISABLE”…”�”}”(hj‚$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mèhj{$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubj )�”}”(hhh]”jº)�”}”(hŒ/Disable events for the current file descriptor.”h]”hŒ/Disable events for the current file descriptor.”…”�”}”(hjž$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Méhj›$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hjÀ$h]”hŒ0xA5”…”�”}”(hjÂ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mëhj»$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸$ubj )�”}”(hhh]”jº)�”}”(hŒ``0x23``”h]”hÓ)�”}”(hjà$h]”hŒ0x23”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MìhjÛ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸$ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj%h]”hŒ-”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Míhjû$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸$ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_LOCK``”h]”hÓ)�”}”(hj %h]”hŒ LATCH_LOCK”…”�”}”(hj"%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mîhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸$ubj )�”}”(hhh]”jº)�”}”(hŒLock the latch.”h]”hŒLock the latch.”…”�”}”(hj>%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mïhj;%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj`%h]”hŒ0xA5”…”�”}”(hjb%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mñhj[%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX%ubj )�”}”(hhh]”jº)�”}”(hŒ``0x24``”h]”hÓ)�”}”(hj€%h]”hŒ0x24”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mòhj{%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX%ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj %h]”hŒ-”…”�”}”(hj¢%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjž%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Móhj›%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX%ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_UNLOCK``”h]”hÓ)�”}”(hjÀ%h]”hŒ LATCH_UNLOCK”…”�”}”(hjÂ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Môhj»%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX%ubj )�”}”(hhh]”jº)�”}”(hŒUnlock the latch.”h]”hŒUnlock the latch.”…”�”}”(hjÞ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MõhjÛ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj&h]”hŒ0xA5”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M÷hjû%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø%ubj )�”}”(hhh]”jº)�”}”(hŒ``0x25``”h]”hÓ)�”}”(hj &h]”hŒ0x25”…”�”}”(hj"&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Møhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø%ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj@&h]”hŒ-”…”�”}”(hjB&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj>&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mùhj;&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø%ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_REQUEST``”h]”hÓ)�”}”(hj`&h]”hŒ LATCH_REQUEST”…”�”}”(hjb&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Múhj[&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø%ubj )�”}”(hhh]”jº)�”}”(hŒRequest clipboard detachment.”h]”hŒRequest clipboard detachment.”…”�”}”(hj~&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mûhj{&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj &h]”hŒ0xA5”…”�”}”(hj¢&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjž&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mýhj›&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜&ubj )�”}”(hhh]”jº)�”}”(hŒ``0x26``”h]”hÓ)�”}”(hjÀ&h]”hŒ0x26”…”�”}”(hjÂ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mþhj»&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜&ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hjà&h]”hŒ-”…”�”}”(hjâ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÿhjÛ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜&ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_CONFIRM``”h]”hÓ)�”}”(hj'h]”hŒ LATCH_CONFIRM”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjû&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜&ubj )�”}”(hhh]”jº)�”}”(hŒ%Confirm clipboard detachment request.”h]”hŒ%Confirm clipboard detachment request.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj@'h]”hŒ0xA5”…”�”}”(hjB'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj>'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj;'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8'ubj )�”}”(hhh]”jº)�”}”(hŒ``0x27``”h]”hÓ)�”}”(hj`'h]”hŒ0x27”…”�”}”(hjb'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj['ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8'ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj€'h]”hŒ-”…”�”}”(hj‚'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj{'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8'ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_HEARTBEAT``”h]”hÓ)�”}”(hj 'h]”hŒLATCH_HEARTBEAT”…”�”}”(hj¢'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjž'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj›'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8'ubj )�”}”(hhh]”jº)�”}”(hŒSend heartbeat signal to EC.”h]”hŒSend heartbeat signal to EC.”…”�”}”(hj¾'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj»'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hjà'h]”hŒ0xA5”…”�”}”(hjâ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hjÛ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'ubj )�”}”(hhh]”jº)�”}”(hŒ``0x28``”h]”hÓ)�”}”(hj(h]”hŒ0x28”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hjû'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'ubj )�”}”(hhh]”jº)�”}”(hŒ``-``”h]”hÓ)�”}”(hj (h]”hŒ-”…”�”}”(hj"(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'ubj )�”}”(hhh]”jº)�”}”(hŒ``LATCH_CANCEL``”h]”hÓ)�”}”(hj@(h]”hŒ LATCH_CANCEL”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj>(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hj;(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'ubj )�”}”(hhh]”jº)�”}”(hŒCancel detachment process.”h]”hŒCancel detachment process.”…”�”}”(hj^(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hj[(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj€(h]”hŒ0xA5”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj{(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx(ubj )�”}”(hhh]”jº)�”}”(hŒ``0x29``”h]”hÓ)�”}”(hj (h]”hŒ0x29”…”�”}”(hj¢(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjž(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj›(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx(ubj )�”}”(hhh]”jº)�”}”(hŒ``R``”h]”hÓ)�”}”(hjÀ(h]”hŒR”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj»(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx(ubj )�”}”(hhh]”jº)�”}”(hŒ``GET_BASE_INFO``”h]”hÓ)�”}”(hjà(h]”hŒ GET_BASE_INFO”…”�”}”(hjâ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjÛ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx(ubj )�”}”(hhh]”jº)�”}”(hŒ(Get current base/connection information.”h]”hŒ(Get current base/connection information.”…”�”}”(hjþ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjû(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hj )h]”hŒ0xA5”…”�”}”(hj")h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubj )�”}”(hhh]”jº)�”}”(hŒ``0x2A``”h]”hÓ)�”}”(hj@)h]”hŒ0x2A”…”�”}”(hjB)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj>)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj;)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubj )�”}”(hhh]”jº)�”}”(hŒ``R``”h]”hÓ)�”}”(hj`)h]”hŒR”…”�”}”(hjb)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj^)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj[)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubj )�”}”(hhh]”jº)�”}”(hŒ``GET_DEVICE_MODE``”h]”hÓ)�”}”(hj€)h]”hŒGET_DEVICE_MODE”…”�”}”(hj‚)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj~)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj{)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubj )�”}”(hhh]”jº)�”}”(hŒ"Get current device operation mode.”h]”hŒ"Get current device operation mode.”…”�”}”(hjž)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj›)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubj )�”}”(hhh]”(j )�”}”(hhh]”jº)�”}”(hŒ``0xA5``”h]”hÓ)�”}”(hjÀ)h]”hŒ0xA5”…”�”}”(hjÂ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¾)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj»)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸)ubj )�”}”(hhh]”jº)�”}”(hŒ``0x2B``”h]”hÓ)�”}”(hjà)h]”hŒ0x2B”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÞ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjÛ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸)ubj )�”}”(hhh]”jº)�”}”(hŒ``R``”h]”hÓ)�”}”(hj*h]”hŒR”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhjû)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸)ubj )�”}”(hhh]”jº)�”}”(hŒ``GET_LATCH_STATUS``”h]”hÓ)�”}”(hj *h]”hŒGET_LATCH_STATUS”…”�”}”(hj"*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸)ubj )�”}”(hhh]”jº)�”}”(hŒ Get current device latch status.”h]”hŒ Get current device latch status.”…”�”}”(hj>*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhj;*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jf hj»"ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jä hjª"ubeh}”(h]”Œid12”ah ]”h"]”h$]”h&]”uh1jÑ hj‹"h²hh³Nh´Nubj£)�”}”(hhh]”(j¨)�”}”(hj9h]”hÓ)�”}”(hj9h]”hŒSDTX_IOCTL_EVENTS_ENABLE”…”�”}”(hjr*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjo*ubah}”(h]”h ]”h"]”h$]”h&]”j·jGuh1j§hjl*h²hh³hÇh´M"ubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x22)``.”h]”(hŒ Defined as ”…”�”}”(hj…*h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x22)``”h]”hŒ_IO(0xA5, 0x22)”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj…*ubhŒ.”…”�”}”(hj…*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M$hjl*h²hubjº)�”}”(hŒ�Enable events for the current file descriptor. Events can be obtained by reading from the device, if enabled. Events are disabled by default.”h]”hŒ�Enable events for the current file descriptor. Events can be obtained by reading from the device, if enabled. Events are disabled by default.”…”�”}”(hj¥*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M&hjl*h²hubeh}”(h]”jMah ]”h"]”Œsdtx_ioctl_events_enable”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´M"ubj£)�”}”(hhh]”(j¨)�”}”(hjeh]”hÓ)�”}”(hjeh]”hŒSDTX_IOCTL_EVENTS_DISABLE”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj½*ubah}”(h]”h ]”h"]”h$]”h&]”j·jsuh1j§hjº*h²hh³hÇh´M*ubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x22)``.”h]”(hŒ Defined as ”…”�”}”(hjÓ*h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x22)``”h]”hŒ_IO(0xA5, 0x22)”…”�”}”(hjÛ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÓ*ubhŒ.”…”�”}”(hjÓ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M,hjº*h²hubjº)�”}”(hŒŽDisable events for the current file descriptor. Events can be obtained by reading from the device, if enabled. Events are disabled by default.”h]”hŒŽDisable events for the current file descriptor. Events can be obtained by reading from the device, if enabled. Events are disabled by default.”…”�”}”(hjó*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M.hjº*h²hubeh}”(h]”jyah ]”h"]”Œsdtx_ioctl_events_disable”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´M*ubj£)�”}”(hhh]”(j¨)�”}”(hj‘h]”hÓ)�”}”(hj‘h]”hŒSDTX_IOCTL_LATCH_LOCK”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj +ubah}”(h]”h ]”h"]”h$]”h&]”j·jŸuh1j§hj+h²hh³hÇh´M2ubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x23)``.”h]”(hŒ Defined as ”…”�”}”(hj!+h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x23)``”h]”hŒ_IO(0xA5, 0x23)”…”�”}”(hj)+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj!+ubhŒ.”…”�”}”(hj!+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M4hj+h²hubjº)�”}”(hŒÈLocks the latch, causing the detachment procedure to abort without opening the latch on timeout. The latch is unlocked by default. This command will be silently ignored if the latch is already locked.”h]”hŒÈLocks the latch, causing the detachment procedure to abort without opening the latch on timeout. The latch is unlocked by default. This command will be silently ignored if the latch is already locked.”…”�”}”(hjA+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M6hj+h²hubeh}”(h]”j¥ah ]”h"]”Œsdtx_ioctl_latch_lock”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´M2ubj£)�”}”(hhh]”(j¨)�”}”(hj½h]”hÓ)�”}”(hj½h]”hŒSDTX_IOCTL_LATCH_UNLOCK”…”�”}”(hj\+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjY+ubah}”(h]”h ]”h"]”h$]”h&]”j·jËuh1j§hjV+h²hh³hÇh´M;ubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x24)``.”h]”(hŒ Defined as ”…”�”}”(hjo+h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x24)``”h]”hŒ_IO(0xA5, 0x24)”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjo+ubhŒ.”…”�”}”(hjo+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M=hjV+h²hubjº)�”}”(hXUnlocks the latch, causing the detachment procedure to open the latch on timeout. The latch is unlocked by default. This command will not open the latch when sent during an ongoing detachment process. It will be silently ignored if the latch is already unlocked.”h]”hXUnlocks the latch, causing the detachment procedure to open the latch on timeout. The latch is unlocked by default. This command will not open the latch when sent during an ongoing detachment process. It will be silently ignored if the latch is already unlocked.”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M?hjV+h²hubeh}”(h]”jÑah ]”h"]”Œsdtx_ioctl_latch_unlock”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´M;ubj£)�”}”(hhh]”(j¨)�”}”(hjéh]”hÓ)�”}”(hjéh]”hŒSDTX_IOCTL_LATCH_REQUEST”…”�”}”(hjª+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj§+ubah}”(h]”h ]”h"]”h$]”h&]”j·j÷uh1j§hj¤+h²hh³hÇh´MEubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x25)``.”h]”(hŒ Defined as ”…”�”}”(hj½+h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x25)``”h]”hŒ_IO(0xA5, 0x25)”…”�”}”(hjÅ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj½+ubhŒ.”…”�”}”(hj½+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MGhj¤+h²hubjº)�”}”(hŒ·Generic latch request. Behavior depends on the context: If no detachment-process is active, detachment is requested. Otherwise the currently active detachment-process will be aborted.”h]”hŒ·Generic latch request. Behavior depends on the context: If no detachment-process is active, detachment is requested. Otherwise the currently active detachment-process will be aborted.”…”�”}”(hjÝ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MIhj¤+h²hubjº)�”}”(hŒ€If a detachment process is canceled by this operation, a generic detachment request event (``SDTX_EVENT_REQUEST``) will be sent.”h]”(hŒ[If a detachment process is canceled by this operation, a generic detachment request event (”…”�”}”(hjë+h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hjó+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjë+ubhŒ) will be sent.”…”�”}”(hjë+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MMhj¤+h²hubjº)�”}”(hŒ?This essentially behaves the same as a detachment button press.”h]”hŒ?This essentially behaves the same as a detachment button press.”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MPhj¤+h²hubeh}”(h]”jýah ]”h"]”Œsdtx_ioctl_latch_request”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´MEubj£)�”}”(hhh]”(j¨)�”}”(hjh]”hÓ)�”}”(hjh]”hŒSDTX_IOCTL_LATCH_CONFIRM”…”�”}”(hj&,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj#,ubah}”(h]”h ]”h"]”h$]”h&]”j·j#uh1j§hj ,h²hh³hÇh´MSubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x26)``.”h]”(hŒ Defined as ”…”�”}”(hj9,h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x26)``”h]”hŒ_IO(0xA5, 0x26)”…”�”}”(hjA,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj9,ubhŒ.”…”�”}”(hj9,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MUhj ,h²hubjº)�”}”(hXAcknowledges and confirms a latch request. If sent during an ongoing detachment process, this command causes the latch to be opened immediately. The latch will also be opened if it has been locked. In this case, the latch lock is reset to the unlocked state.”h]”hXAcknowledges and confirms a latch request. If sent during an ongoing detachment process, this command causes the latch to be opened immediately. The latch will also be opened if it has been locked. In this case, the latch lock is reset to the unlocked state.”…”�”}”(hjY,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MWhj ,h²hubjº)�”}”(hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”h]”hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”…”�”}”(hjg,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M\hj ,h²hubeh}”(h]”j)ah ]”h"]”Œsdtx_ioctl_latch_confirm”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´MSubj£)�”}”(hhh]”(j¨)�”}”(hjAh]”hÓ)�”}”(hjAh]”hŒSDTX_IOCTL_LATCH_HEARTBEAT”…”�”}”(hj‚,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj,ubah}”(h]”h ]”h"]”h$]”h&]”j·jOuh1j§hj|,h²hh³hÇh´M`ubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x27)``.”h]”(hŒ Defined as ”…”�”}”(hj•,h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x27)``”h]”hŒ_IO(0xA5, 0x27)”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj•,ubhŒ.”…”�”}”(hj•,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mbhj|,h²hubjº)�”}”(hŒÆSends a heartbeat, essentially resetting the detachment timeout. This command can be used to keep the detachment process alive while work required for the detachment to succeed is still in progress.”h]”hŒÆSends a heartbeat, essentially resetting the detachment timeout. This command can be used to keep the detachment process alive while work required for the detachment to succeed is still in progress.”…”�”}”(hjµ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mdhj|,h²hubjº)�”}”(hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”h]”hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”…”�”}”(hjÃ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mhhj|,h²hubeh}”(h]”jUah ]”h"]”Œsdtx_ioctl_latch_heartbeat”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´M`ubj£)�”}”(hhh]”(j¨)�”}”(hjmh]”hÓ)�”}”(hjmh]”hŒSDTX_IOCTL_LATCH_CANCEL”…”�”}”(hjÞ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÛ,ubah}”(h]”h ]”h"]”h$]”h&]”j·j{uh1j§hjØ,h²hh³hÇh´Mlubjº)�”}”(hŒDefined as ``_IO(0xA5, 0x28)``.”h]”(hŒ Defined as ”…”�”}”(hjñ,h²hh³Nh´NubhÓ)�”}”(hŒ``_IO(0xA5, 0x28)``”h]”hŒ_IO(0xA5, 0x28)”…”�”}”(hjù,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjñ,ubhŒ.”…”�”}”(hjñ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MnhjØ,h²hubjº)�”}”(hŒ©Cancels detachment in progress (if any). If a detachment process is canceled by this operation, a generic detachment request event (``SDTX_EVENT_REQUEST``) will be sent.”h]”(hŒ„Cancels detachment in progress (if any). If a detachment process is canceled by this operation, a generic detachment request event (”…”�”}”(hj-h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj-ubhŒ) will be sent.”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MphjØ,h²hubjº)�”}”(hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”h]”hŒ`This command will be silently ignored if there is currently no detachment procedure in progress.”…”�”}”(hj1-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MthjØ,h²hubeh}”(h]”j�ah ]”h"]”Œsdtx_ioctl_latch_cancel”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´Mlubj£)�”}”(hhh]”(j¨)�”}”(hj™h]”hÓ)�”}”(hj™h]”hŒSDTX_IOCTL_GET_BASE_INFO”…”�”}”(hjL-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjI-ubah}”(h]”h ]”h"]”h$]”h&]”j·j§uh1j§hjF-h²hh³hÇh´Mxubjº)�”}”(hŒ7Defined as ``_IOR(0xA5, 0x29, struct sdtx_base_info)``.”h]”(hŒ Defined as ”…”�”}”(hj_-h²hh³Nh´NubhÓ)�”}”(hŒ+``_IOR(0xA5, 0x29, struct sdtx_base_info)``”h]”hŒ'_IOR(0xA5, 0x29, struct sdtx_base_info)”…”�”}”(hjg-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj_-ubhŒ.”…”�”}”(hj_-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MzhjF-h²hubjº)�”}”(hXGet the current base connection state (i.e. attached/detached) and the type of the base connected to the clipboard. This is command essentially provides a way to query the information provided by the base connection change event (``SDTX_EVENT_BASE_CONNECTION``).”h]”(hŒæGet the current base connection state (i.e. attached/detached) and the type of the base connected to the clipboard. This is command essentially provides a way to query the information provided by the base connection change event (”…”�”}”(hj-h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_BASE_CONNECTION``”h]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj-ubhŒ).”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M|hjF-h²hubjº)�”}”(hŒ8Possible values for ``struct sdtx_base_info.state`` are:”h]”(hŒPossible values for ”…”�”}”(hjŸ-h²hh³Nh´NubhÓ)�”}”(hŒ``struct sdtx_base_info.state``”h]”hŒstruct sdtx_base_info.state”…”�”}”(hj§-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjŸ-ubhŒ are:”…”�”}”(hjŸ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M�hjF-h²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_BASE_DETACHED``,”h]”jº)�”}”(hjÄ-h]”(hÓ)�”}”(hŒ``SDTX_BASE_DETACHED``”h]”hŒSDTX_BASE_DETACHED”…”�”}”(hjÉ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÆ-ubhŒ,”…”�”}”(hjÆ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MƒhjÂ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿-h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_BASE_ATTACHED``, and”h]”jº)�”}”(hjé-h]”(hÓ)�”}”(hŒ``SDTX_BASE_ATTACHED``”h]”hŒSDTX_BASE_ATTACHED”…”�”}”(hjî-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjë-ubhŒ, and”…”�”}”(hjë-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M„hjç-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿-h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``. ”h]”jº)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``.”h]”(hÓ)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``”h]”hŒSDTX_DETACH_NOT_FEASIBLE”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj.ubhŒ.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M…hj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿-h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´MƒhjF-h²hubjº)�”}”(hŒ)Other values are reserved for future use.”h]”hŒ)Other values are reserved for future use.”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M‡hjF-h²hubeh}”(h]”j­ah ]”h"]”Œsdtx_ioctl_get_base_info”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´Mxubj£)�”}”(hhh]”(j¨)�”}”(hjÅh]”hÓ)�”}”(hjÅh]”hŒSDTX_IOCTL_GET_DEVICE_MODE”…”�”}”(hjS.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjP.ubah}”(h]”h ]”h"]”h$]”h&]”j·jÓuh1j§hjM.h²hh³hÇh´MŠubjº)�”}”(hŒ'Defined as ``_IOR(0xA5, 0x2A, __u16)``.”h]”(hŒ Defined as ”…”�”}”(hjf.h²hh³Nh´NubhÓ)�”}”(hŒ``_IOR(0xA5, 0x2A, __u16)``”h]”hŒ_IOR(0xA5, 0x2A, __u16)”…”�”}”(hjn.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjf.ubhŒ.”…”�”}”(hjf.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MŒhjM.h²hubjº)�”}”(hŒêReturns the device operation mode, indicating if and how the base is attached to the clipboard. This is command essentially provides a way to query the information provided by the device mode change event (``SDTX_EVENT_DEVICE_MODE``).”h]”(hŒÎReturns the device operation mode, indicating if and how the base is attached to the clipboard. This is command essentially provides a way to query the information provided by the device mode change event (”…”�”}”(hj†.h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_DEVICE_MODE``”h]”hŒSDTX_EVENT_DEVICE_MODE”…”�”}”(hjŽ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj†.ubhŒ).”…”�”}”(hj†.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MŽhjM.h²hubjº)�”}”(hŒReturned values are:”h]”hŒReturned values are:”…”�”}”(hj¦.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M“hjM.h²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_DEVICE_MODE_LAPTOP``”h]”jº)�”}”(hj¹.h]”hÓ)�”}”(hj¹.h]”hŒSDTX_DEVICE_MODE_LAPTOP”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj».ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M•hj·.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´.h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_DEVICE_MODE_TABLET``”h]”jº)�”}”(hjÙ.h]”hÓ)�”}”(hjÙ.h]”hŒSDTX_DEVICE_MODE_TABLET”…”�”}”(hjÞ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÛ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M–hj×.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´.h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO`` ”h]”jº)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO``”h]”hÓ)�”}”(hjý.h]”hŒSDTX_DEVICE_MODE_STUDIO”…”�”}”(hjÿ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjû.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M—hj÷.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´.h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´M•hjM.h²hubjº)�”}”(hŒMSee |sdtx_device_mode| for details. Other values are reserved for future use.”h]”(hŒSee ”…”�”}”(hj/h²hh³Nh´Nubh)�”}”(hj~h]”hÓ)�”}”(hj~h]”hŒstruct sdtx_device_mode”…”�”}”(hj)/h²hh³Nh´Nubah}”(h]”h ]”(hÞhßjŠeh"]”h$]”h&]”uh1hÒh³Nh´Nhj&/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”j—Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”jšuh1hh³hÇh´Khj/h²hubhŒ7 for details. Other values are reserved for future use.”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M™hjM.h²hubeh}”(h]”jÙah ]”h"]”Œsdtx_ioctl_get_device_mode”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´MŠubj£)�”}”(hhh]”(j¨)�”}”(hjñh]”hÓ)�”}”(hjñh]”hŒSDTX_IOCTL_GET_LATCH_STATUS”…”�”}”(hjY/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjV/ubah}”(h]”h ]”h"]”h$]”h&]”j·jÿuh1j§hjS/h²hh³hÇh´Mžubjº)�”}”(hŒ'Defined as ``_IOR(0xA5, 0x2B, __u16)``.”h]”(hŒ Defined as ”…”�”}”(hjl/h²hh³Nh´NubhÓ)�”}”(hŒ``_IOR(0xA5, 0x2B, __u16)``”h]”hŒ_IOR(0xA5, 0x2B, __u16)”…”�”}”(hjt/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjl/ubhŒ.”…”�”}”(hjl/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M hjS/h²hubjº)�”}”(hŒùGet the current latch status or (presumably) the last error encountered when trying to open/close the latch. This is command essentially provides a way to query the information provided by the latch status change event (``SDTX_EVENT_LATCH_STATUS``).”h]”(hŒÜGet the current latch status or (presumably) the last error encountered when trying to open/close the latch. This is command essentially provides a way to query the information provided by the latch status change event (”…”�”}”(hjŒ/h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_LATCH_STATUS``”h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hj”/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjŒ/ubhŒ).”…”�”}”(hjŒ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¢hjS/h²hubjº)�”}”(hŒReturned values are:”h]”hŒReturned values are:”…”�”}”(hj¬/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M§hjS/h²hubj)�”}”(hhh]”(j)�”}”(hŒ``SDTX_LATCH_CLOSED``,”h]”jº)�”}”(hj¿/h]”(hÓ)�”}”(hŒ``SDTX_LATCH_CLOSED``”h]”hŒSDTX_LATCH_CLOSED”…”�”}”(hjÄ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÁ/ubhŒ,”…”�”}”(hjÁ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M©hj½/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº/h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_LATCH_OPENED``,”h]”jº)�”}”(hjä/h]”(hÓ)�”}”(hŒ``SDTX_LATCH_OPENED``”h]”hŒSDTX_LATCH_OPENED”…”�”}”(hjé/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjæ/ubhŒ,”…”�”}”(hjæ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mªhjâ/ubah}”(h•D’]”h ]”h"]”h$]”h&]”uh1jhjº/h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``,”h]”jº)�”}”(hj 0h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_OPEN”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj 0ubhŒ,”…”�”}”(hj 0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M«hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº/h²hh³hÇh´Nubj)�”}”(hŒ'``SDTX_ERR_FAILED_TO_REMAIN_OPEN``, and”h]”jº)�”}”(hj.0h]”(hÓ)�”}”(hŒ"``SDTX_ERR_FAILED_TO_REMAIN_OPEN``”h]”hŒSDTX_ERR_FAILED_TO_REMAIN_OPEN”…”�”}”(hj30h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj00ubhŒ, and”…”�”}”(hj00h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¬hj,0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº/h²hh³hÇh´Nubj)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``. ”h]”jº)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``.”h]”(hÓ)�”}”(hŒ``SDTX_ERR_FAILED_TO_CLOSE``”h]”hŒSDTX_ERR_FAILED_TO_CLOSE”…”�”}”(hjY0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjU0ubhŒ.”…”�”}”(hjU0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M­hjQ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº/h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´M©hjS/h²hubjº)�”}”(hŒ)Other values are reserved for future use.”h]”hŒ)Other values are reserved for future use.”…”�”}”(hj}0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¯hjS/h²hubeh}”(h]”jah ]”h"]”Œsdtx_ioctl_get_latch_status”ah$]”h&]”uh1j¢hj‹"h²hh³hÇh´Mžubeh}”(h]”(j$Œid2”eh ]”h"]”Œioctls”ah$]”Œioctls”ah&]”uh1j¢hj¡ h²hh³hÇh´MÑj†"Kj‡"}”j—0jl"sj‰"}”j$jl"subj£)�”}”(hhh]”(j¨)�”}”(hŒA Note on Base IDs”h]”hŒA Note on Base IDs”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·j-uh1j§hj�0h²hh³hÇh´M²ubjº)�”}”(hXEBase types/IDs provided via ``SDTX_EVENT_BASE_CONNECTION`` or ``SDTX_IOCTL_GET_BASE_INFO`` are directly forwarded from the EC in the lower byte of the combined |__u16| value, with the driver storing the EC type from which this ID comes in the high byte (without this, base IDs over different types of ECs may be overlapping).”h]”(hŒBase types/IDs provided via ”…”�”}”(hj®0h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_EVENT_BASE_CONNECTION``”h]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hj¶0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj®0ubhŒ or ”…”�”}”(hj®0h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_IOCTL_GET_BASE_INFO``”h]”hŒSDTX_IOCTL_GET_BASE_INFO”…”�”}”(hjÈ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj®0ubhŒF are directly forwarded from the EC in the lower byte of the combined ”…”�”}”(hj®0h²hh³Nh´Nubh)�”}”(hhÐh]”hÓ)�”}”(hhÐh]”hŒ__u16”…”�”}”(hjÝ0h²hh³Nh´Nubah}”(h]”h ]”(hÞhßhàeh"]”h$]”h&]”uh1hÒh³Nh´NhjÚ0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”hîŒ refexplicit”ˆŒrefwarn”‰Œ reftarget”hòuh1hh³hÇh´Khj®0h²hubhŒž value, with the driver storing the EC type from which this ID comes in the high byte (without this, base IDs over different types of ECs may be overlapping).”…”�”}”(hj®0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M´hj�0h²hubjº)�”}”(hŒ`The ``SDTX_DEVICE_TYPE()`` macro can be used to determine the EC device type. This can be one of”h]”(hŒThe ”…”�”}”(hj1h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_DEVICE_TYPE()``”h]”hŒSDTX_DEVICE_TYPE()”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj1ubhŒF macro can be used to determine the EC device type. This can be one of”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Mºhj�0h²hubj)�”}”(hhh]”(j)�”}”(hŒF``SDTX_DEVICE_TYPE_HID``, for Surface Aggregator Module over HID, and ”h]”jº)�”}”(hŒE``SDTX_DEVICE_TYPE_HID``, for Surface Aggregator Module over HID, and”h]”(hÓ)�”}”(hŒ``SDTX_DEVICE_TYPE_HID``”h]”hŒSDTX_DEVICE_TYPE_HID”…”�”}”(hj+1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj'1ubhŒ-, for Surface Aggregator Module over HID, and”…”�”}”(hj'1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M½hj#1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 1h²hh³hÇh´Nubj)�”}”(hŒQ``SDTX_DEVICE_TYPE_SSH``, for Surface Aggregator Module over Surface Serial Hub. ”h]”jº)�”}”(hŒP``SDTX_DEVICE_TYPE_SSH``, for Surface Aggregator Module over Surface Serial Hub.”h]”(hÓ)�”}”(hŒ``SDTX_DEVICE_TYPE_SSH``”h]”hŒSDTX_DEVICE_TYPE_SSH”…”�”}”(hjQ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjM1ubhŒ8, for Surface Aggregator Module over Surface Serial Hub.”…”�”}”(hjM1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M¿hjI1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 1h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1jh³hÇh´M½hj�0h²hubjº)�”}”(hŒkNote that currently only the ``SSH`` type EC is supported, however ``HID`` type is reserved for future use.”h]”(hŒNote that currently only the ”…”�”}”(hju1h²hh³Nh´NubhÓ)�”}”(hŒ``SSH``”h]”hŒSSH”…”�”}”(hj}1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhju1ubhŒ type EC is supported, however ”…”�”}”(hju1h²hh³Nh´NubhÓ)�”}”(hŒ``HID``”h]”hŒHID”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhju1ubhŒ! type is reserved for future use.”…”�”}”(hju1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÂhj�0h²hubeh}”(h]”j3ah ]”h"]”Œa note on base ids”ah$]”h&]”uh1j¢hj¡ h²hh³hÇh´M²ubj£)�”}”(hhh]”(j¨)�”}”(hŒStructures and Enums”h]”hŒStructures and Enums”…”�”}”(hj±1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·jOuh1j§hj®1h²hh³hÇh´MÆubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œsdtx_device_mode (C enum)”Œc.sdtx_device_mode”hNt”auh1j¿1hj®1h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒsdtx_device_mode”h]”hŒdesc_signature_line”“”)�”}”(hŒenum sdtx_device_mode”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjã1h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1já1hjÝ1h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ1h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jó1hjÝ1h²hh³jò1h´KubhŒ desc_name”“”)�”}”(hŒsdtx_device_mode”h]”hŒ desc_sig_name”“”)�”}”(hjÙ1h]”hŒsdtx_device_mode”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j 2hj2ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j2hjÝ1h²hh³jò1h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jÛ1Œsphinx_line_type”Œ declarator”hj×1h²hh³jò1h´Kubah}”(h]”jÎ1ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jÕ1h³jò1h´KhjÒ1h²hubhŒ desc_content”“”)�”}”(hhh]”jº)�”}”(hŒQMode describing how (and if) the clipboard is attached to the base of the device.”h]”hŒQMode describing how (and if) the clipboard is attached to the base of the device.”…”�”}”(hj;2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K>hj82h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j62hjÒ1h²hh³jò1h´Kubeh}”(h]”h ]”(hߌenum”eh"]”h$]”h&]”Œdomain”hߌobjtype”jS2Œdesctype”jS2Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jÐ1h²hhj®1h³Nh´NubhŒ container”“”)�”}”(hXõ**Constants** ``SDTX_DEVICE_MODE_TABLET`` The clipboard is detached from the base and the device operates as tablet. ``SDTX_DEVICE_MODE_LAPTOP`` The clipboard is attached normally to the base and the device operates as laptop. ``SDTX_DEVICE_MODE_STUDIO`` The clipboard is attached to the base in reverse. The device operates as tablet with keyboard and touchpad deactivated, however, the base battery and, if present in the specific device model, dGPU are available to the system.”h]”(jº)�”}”(hŒ **Constants**”h]”jÈ)�”}”(hje2h]”hŒ Constants”…”�”}”(hjg2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjc2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KBhj_2ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒg``SDTX_DEVICE_MODE_TABLET`` The clipboard is detached from the base and the device operates as tablet. ”h]”(hŒterm”“”)�”}”(hŒ``SDTX_DEVICE_MODE_TABLET``”h]”hÓ)�”}”(hjŠ2h]”hŒSDTX_DEVICE_MODE_TABLET”…”�”}”(hjŒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjˆ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KFhj‚2ubhŒ definition”“”)�”}”(hhh]”jº)�”}”(hŒJThe clipboard is detached from the base and the device operates as tablet.”h]”hŒJThe clipboard is detached from the base and the device operates as tablet.”…”�”}”(hj¥2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KEhj¢2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj‚2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jŸ2h´KFhj}2ubj�2)�”}”(hŒn``SDTX_DEVICE_MODE_LAPTOP`` The clipboard is attached normally to the base and the device operates as laptop. ”h]”(j‡2)�”}”(hŒ``SDTX_DEVICE_MODE_LAPTOP``”h]”hÓ)�”}”(hjÆ2h]”hŒSDTX_DEVICE_MODE_LAPTOP”…”�”}”(hjÈ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjÄ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KJhjÀ2ubj¡2)�”}”(hhh]”jº)�”}”(hŒQThe clipboard is attached normally to the base and the device operates as laptop.”h]”hŒQThe clipboard is attached normally to the base and the device operates as laptop.”…”�”}”(hjß2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KIhjÜ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjÀ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jÛ2h´KJhj}2ubj�2)�”}”(hŒý``SDTX_DEVICE_MODE_STUDIO`` The clipboard is attached to the base in reverse. The device operates as tablet with keyboard and touchpad deactivated, however, the base battery and, if present in the specific device model, dGPU are available to the system.”h]”(j‡2)�”}”(hŒ``SDTX_DEVICE_MODE_STUDIO``”h]”hÓ)�”}”(hj3h]”hŒSDTX_DEVICE_MODE_STUDIO”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjþ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KPhjú2ubj¡2)�”}”(hhh]”jº)�”}”(hŒáThe clipboard is attached to the base in reverse. The device operates as tablet with keyboard and touchpad deactivated, however, the base battery and, if present in the specific device model, dGPU are available to the system.”h]”hŒáThe clipboard is attached to the base in reverse. The device operates as tablet with keyboard and touchpad deactivated, however, the base battery and, if present in the specific device model, dGPU are available to the system.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KMhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjú2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j3h´KPhj}2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{2hj_2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j]2hj®1h²hh³Nh´NubjÀ1)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jÌ1Œsdtx_event (C struct)”Œ c.sdtx_event”hNt”auh1j¿1hj®1h²hh³Nh´NubjÑ1)�”}”(hhh]”(jÖ1)�”}”(hŒ sdtx_event”h]”jÜ1)�”}”(hŒstruct sdtx_event”h]”(jâ1)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjZ3h²hh³Nh´Nubah}”(h]”h ]”jî1ah"]”h$]”h&]”uh1já1hjV3h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KVubjô1)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji3h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1jó1hjV3h²hh³jh3h´KVubj2)�”}”(hŒ sdtx_event”h]”j 2)�”}”(hjT3h]”hŒ sdtx_event”…”�”}”(hj{3h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1j 2hjw3ubah}”(h]”h ]”(j2j2eh"]”h$]”h&]”hÅhÆuh1j2hjV3h²hh³jh3h´KVubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj(2ˆuh1jÛ1j)2j*2hjR3h²hh³jh3h´KVubah}”(h]”jM3ah ]”(j.2j/2eh"]”h$]”h&]”j32ˆj42)j52huh1jÕ1h³jh3h´KVhjO3h²hubj72)�”}”(hhh]”jº)�”}”(hŒ3Event provided by reading from the DTX device file.”h]”hŒ3Event provided by reading from the DTX device file.”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KQhjš3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j62hjO3h²hh³jh3h´KVubeh}”(h]”h ]”(hߌstruct”eh"]”h$]”h&]”jW2hßjX2jµ3jY2jµ3jZ2‰j[2‰j\2‰uh1jÐ1h²hhj®1h³Nh´Nubj^2)�”}”(hX$**Definition**:: struct sdtx_event { __u16 length; __u16 code; __u8 data[]; }; **Members** ``length`` Length of the event payload, in bytes. ``code`` Event code, detailing what type of event this is. ``data`` Payload of the event, containing **length** bytes.”h]”(jº)�”}”(hŒ**Definition**::”h]”(jÈ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÁ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj½3ubhŒ:”…”�”}”(hj½3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KUhj¹3ubhŒ literal_block”“”)�”}”(hŒIstruct sdtx_event { __u16 length; __u16 code; __u8 data[]; };”h]”hŒIstruct sdtx_event { __u16 length; __u16 code; __u8 data[]; };”…”�”}”hjÜ3sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÚ3h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KWhj¹3ubjº)�”}”(hŒ **Members**”h]”jÈ)�”}”(hjí3h]”hŒMembers”…”�”}”(hjï3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjë3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K]hj¹3ubj|2)�”}”(hhh]”(j�2)�”}”(hŒ2``length`` Length of the event payload, in bytes. ”h]”(j‡2)�”}”(hŒ ``length``”h]”hÓ)�”}”(hj 4h]”hŒlength”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KShj4ubj¡2)�”}”(hhh]”jº)�”}”(hŒ&Length of the event payload, in bytes.”h]”hŒ&Length of the event payload, in bytes.”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³j!4h´KShj"4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j!4h´KShj4ubj�2)�”}”(hŒ;``code`` Event code, detailing what type of event this is. ”h]”(j‡2)�”}”(hŒ``code``”h]”hÓ)�”}”(hjE4h]”hŒcode”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjC4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KThj?4ubj¡2)�”}”(hhh]”jº)�”}”(hŒ1Event code, detailing what type of event this is.”h]”hŒ1Event code, detailing what type of event this is.”…”�”}”(hj^4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³jZ4h´KThj[4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj?4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jZ4h´KThj4ubj�2)�”}”(hŒ;``data`` Payload of the event, containing **length** bytes.”h]”(j‡2)�”}”(hŒ``data``”h]”hÓ)�”}”(hj~4h]”hŒdata”…”�”}”(hj€4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj|4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KThjx4ubj¡2)�”}”(hhh]”jº)�”}”(hŒ2Payload of the event, containing **length** bytes.”h]”(hŒ!Payload of the event, containing ”…”�”}”(hj—4h²hh³Nh´NubjÈ)�”}”(hŒ **length**”h]”hŒlength”…”�”}”(hjŸ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj—4ubhŒ bytes.”…”�”}”(hj—4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KUhj”4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjx4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j“4h´KThj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{2hj¹3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j]2hj®1h²hh³Nh´Nubjº)�”}”(hŒ**Description**”h]”jÈ)�”}”(hjÓ4h]”hŒ Description”…”�”}”(hjÕ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÑ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KXhj®1h²hubjº)�”}”(hŒUSee :c:type:`enum sdtx_event_code ` for currently valid event codes.”h]”(hŒSee ”…”�”}”(hjé4h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum sdtx_event_code `”h]”hÓ)�”}”(hjó4h]”hŒenum sdtx_event_code”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhjñ4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbhñŒsdtx_event_code”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KUhjé4ubhŒ! for currently valid event codes.”…”�”}”(hjé4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³j5h´KUhj®1h²hubjÀ1)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jÌ1Œsdtx_event_code (C enum)”Œc.sdtx_event_code”hNt”auh1j¿1hj®1h²hh³Nh´NubjÑ1)�”}”(hhh]”(jÖ1)�”}”(hŒsdtx_event_code”h]”jÜ1)�”}”(hŒenum sdtx_event_code”h]”(jâ1)�”}”(hjå1h]”hŒenum”…”�”}”(hj<5h²hh³Nh´Nubah}”(h]”h ]”jî1ah"]”h$]”h&]”uh1já1hj85h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´KZubjô1)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1jó1hj85h²hh³jI5h´KZubj2)�”}”(hŒsdtx_event_code”h]”j 2)�”}”(hj65h]”hŒsdtx_event_code”…”�”}”(hj\5h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1j 2hjX5ubah}”(h]”h ]”(j2j2eh"]”h$]”h&]”hÅhÆuh1j2hj85h²hh³jI5h´KZubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj(2ˆuh1jÛ1j)2j*2hj45h²hh³jI5h´KZubah}”(h]”j/5ah ]”(j.2j/2eh"]”h$]”h&]”j32ˆj42)j52huh1jÕ1h³jI5h´KZhj15h²hubj72)�”}”(hhh]”jº)�”}”(hŒ%Code describing the type of an event.”h]”hŒ%Code describing the type of an event.”…”�”}”(hj~5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K_hj{5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j62hj15h²hh³jI5h´KZubeh}”(h]”h ]”(hߌenum”eh"]”h$]”h&]”jW2hßjX2j–5jY2j–5jZ2‰j[2‰j\2‰uh1jÐ1h²hhj®1h³Nh´Nubj^2)�”}”(hXP**Constants** ``SDTX_EVENT_REQUEST`` Detachment request event type. ``SDTX_EVENT_CANCEL`` Cancel detachment process event type. ``SDTX_EVENT_BASE_CONNECTION`` Base/clipboard connection change event type. ``SDTX_EVENT_LATCH_STATUS`` Latch status change event type. ``SDTX_EVENT_DEVICE_MODE`` Device mode change event type.”h]”(jº)�”}”(hŒ **Constants**”h]”jÈ)�”}”(hj 5h]”hŒ Constants”…”�”}”(hj¢5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjž5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kchjš5ubj|2)�”}”(hhh]”(j�2)�”}”(hŒ6``SDTX_EVENT_REQUEST`` Detachment request event type. ”h]”(j‡2)�”}”(hŒ``SDTX_EVENT_REQUEST``”h]”hÓ)�”}”(hj¿5h]”hŒSDTX_EVENT_REQUEST”…”�”}”(hjÁ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj½5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kfhj¹5ubj¡2)�”}”(hhh]”jº)�”}”(hŒDetachment request event type.”h]”hŒDetachment request event type.”…”�”}”(hjØ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³jÔ5h´KfhjÕ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj¹5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jÔ5h´Kfhj¶5ubj�2)�”}”(hŒ<``SDTX_EVENT_CANCEL`` Cancel detachment process event type. ”h]”(j‡2)�”}”(hŒ``SDTX_EVENT_CANCEL``”h]”hÓ)�”}”(hjø5h]”hŒSDTX_EVENT_CANCEL”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjö5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kihjò5ubj¡2)�”}”(hhh]”jº)�”}”(hŒ%Cancel detachment process event type.”h]”hŒ%Cancel detachment process event type.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³j 6h´Kihj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjò5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j 6h´Kihj¶5ubj�2)�”}”(hŒL``SDTX_EVENT_BASE_CONNECTION`` Base/clipboard connection change event type. ”h]”(j‡2)�”}”(hŒ``SDTX_EVENT_BASE_CONNECTION``”h]”hÓ)�”}”(hj16h]”hŒSDTX_EVENT_BASE_CONNECTION”…”�”}”(hj36h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj/6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Klhj+6ubj¡2)�”}”(hhh]”jº)�”}”(hŒ,Base/clipboard connection change event type.”h]”hŒ,Base/clipboard connection change event type.”…”�”}”(hjJ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³jF6h´KlhjG6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj+6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jF6h´Klhj¶5ubj�2)�”}”(hŒ<``SDTX_EVENT_LATCH_STATUS`` Latch status change event type. ”h]”(j‡2)�”}”(hŒ``SDTX_EVENT_LATCH_STATUS``”h]”hÓ)�”}”(hjj6h]”hŒSDTX_EVENT_LATCH_STATUS”…”�”}”(hjl6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjh6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kohjd6ubj¡2)�”}”(hhh]”jº)�”}”(hŒLatch status change event type.”h]”hŒLatch status change event type.”…”�”}”(hjƒ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³j6h´Kohj€6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjd6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j6h´Kohj¶5ubj�2)�”}”(hŒ9``SDTX_EVENT_DEVICE_MODE`` Device mode change event type.”h]”(j‡2)�”}”(hŒ``SDTX_EVENT_DEVICE_MODE``”h]”hÓ)�”}”(hj£6h]”hŒSDTX_EVENT_DEVICE_MODE”…”�”}”(hj¥6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kqhj�6ubj¡2)�”}”(hhh]”jº)�”}”(hŒDevice mode change event type.”h]”hŒDevice mode change event type.”…”�”}”(hj¼6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Krhj¹6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hj�6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j¸6h´Kqhj¶5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{2hjš5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j]2hj®1h²hh³Nh´Nubjº)�”}”(hŒ**Description**”h]”jÈ)�”}”(hjæ6h]”hŒ Description”…”�”}”(hjè6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjä6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kthj®1h²hubjº)�”}”(hŒçUsed in :c:type:`struct sdtx_event ` to describe the type of the event. Further event codes are reserved for future use. Any event parser should be able to gracefully handle unknown events, i.e. by simply skipping them.”h]”(hŒUsed in ”…”�”}”(hjü6h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct sdtx_event `”h]”hÓ)�”}”(hj7h]”hŒstruct sdtx_event”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”(hÞhߌc-type”eh"]”h$]”h&]”uh1hÒhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hëŒ refdomain”hߌreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j5j5hñŒ sdtx_event”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kehjü6ubhŒ· to describe the type of the event. Further event codes are reserved for future use. Any event parser should be able to gracefully handle unknown events, i.e. by simply skipping them.”…”�”}”(hjü6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³j#7h´Kehj®1h²hubjº)�”}”(hŒdConsult the DTX user-space interface documentation for details regarding the individual event types.”h]”hŒdConsult the DTX user-space interface documentation for details regarding the individual event types.”…”�”}”(hj.7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kihj®1h²hubjÀ1)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jÌ1Œsdtx_base_info (C struct)”Œc.sdtx_base_info”hNt”auh1j¿1hj®1h²hh³Nh´NubjÑ1)�”}”(hhh]”(jÖ1)�”}”(hŒsdtx_base_info”h]”jÜ1)�”}”(hŒstruct sdtx_base_info”h]”(jâ1)�”}”(hj\3h]”hŒstruct”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”jî1ah"]”h$]”h&]”uh1já1hjR7h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Koubjô1)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd7h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1jó1hjR7h²hh³jc7h´Koubj2)�”}”(hŒsdtx_base_info”h]”j 2)�”}”(hjP7h]”hŒsdtx_base_info”…”�”}”(hjv7h²hh³Nh´Nubah}”(h]”h ]”j2ah"]”h$]”h&]”uh1j 2hjr7ubah}”(h]”h ]”(j2j2eh"]”h$]”h&]”hÅhÆuh1j2hjR7h²hh³jc7h´Koubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj(2ˆuh1jÛ1j)2j*2hjN7h²hh³jc7h´Koubah}”(h]”jI7ah ]”(j.2j/2eh"]”h$]”h&]”j32ˆj42)j52huh1jÕ1h³jc7h´KohjK7h²hubj72)�”}”(hhh]”jº)�”}”(hŒ0Describes if and what type of base is connected.”h]”hŒ0Describes if and what type of base is connected.”…”�”}”(hj˜7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kvhj•7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j62hjK7h²hh³jc7h´Koubeh}”(h]”h ]”(hߌstruct”eh"]”h$]”h&]”jW2hßjX2j°7jY2j°7jZ2‰j[2‰j\2‰uh1jÐ1h²hhj®1h³Nh´Nubj^2)�”}”(hX±**Definition**:: struct sdtx_base_info { __u16 state; __u16 base_id; }; **Members** ``state`` The state of the connection. Valid values are ``SDTX_BASE_DETACHED``, ``SDTX_BASE_ATTACHED``, and ``SDTX_DETACH_NOT_FEASIBLE`` (in case a base is attached but low clipboard battery prevents detachment). Other values are currently reserved. ``base_id`` The type of base connected. Zero if no base is connected.”h]”(jº)�”}”(hŒ**Definition**::”h]”(jÈ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¼7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj¸7ubhŒ:”…”�”}”(hj¸7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kzhj´7ubjÛ3)�”}”(hŒ>struct sdtx_base_info { __u16 state; __u16 base_id; };”h]”hŒ>struct sdtx_base_info { __u16 state; __u16 base_id; };”…”�”}”hjÕ7sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÚ3h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K|hj´7ubjº)�”}”(hŒ **Members**”h]”jÈ)�”}”(hjæ7h]”hŒMembers”…”�”}”(hjè7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjä7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K�hj´7ubj|2)�”}”(hhh]”(j�2)�”}”(hŒú``state`` The state of the connection. Valid values are ``SDTX_BASE_DETACHED``, ``SDTX_BASE_ATTACHED``, and ``SDTX_DETACH_NOT_FEASIBLE`` (in case a base is attached but low clipboard battery prevents detachment). Other values are currently reserved. ”h]”(j‡2)�”}”(hŒ ``state``”h]”hÓ)�”}”(hj8h]”hŒstate”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K{hjÿ7ubj¡2)�”}”(hhh]”jº)�”}”(hŒïThe state of the connection. Valid values are ``SDTX_BASE_DETACHED``, ``SDTX_BASE_ATTACHED``, and ``SDTX_DETACH_NOT_FEASIBLE`` (in case a base is attached but low clipboard battery prevents detachment). Other values are currently reserved.”h]”(hŒ.The state of the connection. Valid values are ”…”�”}”(hj8h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_BASE_DETACHED``”h]”hŒSDTX_BASE_DETACHED”…”�”}”(hj&8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj8ubhŒ, ”…”�”}”(hj8h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_BASE_ATTACHED``”h]”hŒSDTX_BASE_ATTACHED”…”�”}”(hj88h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj8ubhŒ, and ”…”�”}”(hj8h²hh³Nh´NubhÓ)�”}”(hŒ``SDTX_DETACH_NOT_FEASIBLE``”h]”hŒSDTX_DETACH_NOT_FEASIBLE”…”�”}”(hjJ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj8ubhŒq (in case a base is attached but low clipboard battery prevents detachment). Other values are currently reserved.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´Kxhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjÿ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³j8h´K{hjü7ubj�2)�”}”(hŒE``base_id`` The type of base connected. Zero if no base is connected.”h]”(j‡2)�”}”(hŒ ``base_id``”h]”hÓ)�”}”(hju8h]”hŒbase_id”…”�”}”(hjw8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjs8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†2h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K{hjo8ubj¡2)�”}”(hhh]”jº)�”}”(hŒ9The type of base connected. Zero if no base is connected.”h]”hŒ9The type of base connected. Zero if no base is connected.”…”�”}”(hjŽ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/clients/dtx:712: ./include/uapi/linux/surface_aggregator/dtx.h”h´K|hj‹8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j 2hjo8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€2h³jŠ8h´K{hjü7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{2hj´7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j]2hj®1h²hh³Nh´Nubeh}”(h]”jUah ]”h"]”Œstructures and enums”ah$]”h&]”uh1j¢hj¡ h²hh³hÇh´MÆubeh}”(h]”jÜah ]”h"]”Œ"user-space interface documentation”ah$]”h&]”uh1j¢hj¤h²hh³hÇh´K™ubj£)�”}”(hhh]”(j¨)�”}”(hŒ API Users”h]”hŒ API Users”…”�”}”(hjÇ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j·j}uh1j§hjÄ8h²hh³hÇh´MËubjº)�”}”(hŒkA user-space daemon utilizing this API can be found at https://github.com/linux-surface/surface-dtx-daemon.”h]”(hŒ7A user-space daemon utilizing this API can be found at ”…”�”}”(hjÕ8h²hh³Nh´Nubj)�”}”(hŒ3https://github.com/linux-surface/surface-dtx-daemon”h]”hŒ3https://github.com/linux-surface/surface-dtx-daemon”…”�”}”(hjÝ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jß8uh1jhjÕ8ubhŒ.”…”�”}”(hjÕ8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MÍhjÄ8h²hubeh}”(h]”jƒah ]”h"]”Œ api users”ah$]”h&]”uh1j¢hj¤h²hh³hÇh´MËubeh}”(h]”j,ah ]”h"]”Œ6user-space dtx (clipboard detachment system) interface”ah$]”h&]”uh1j¢hhh²hh³hÇh´K ubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(j§NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j Œ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&9Œ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”}”(h÷hÊj!hújKj$jujNjŸjxuŒsubstitution_names”}”(Œ__u16”h÷Œ sdtx_event”j!Œsdtx_event_code”jKŒsdtx_base_info”juŒsdtx_device_mode”jŸuŒrefnames”}”Œrefids”}”(j]”jRaj$]”jl"auŒnameids”}”(j9j,j¨j¤jejKjž jmjjŒj— j®jÁ8jÜj`jûj‚"jj•jFjëjrj^jžjŒ jÊjz"jöj—0j$j·*jMj+jyjS+j¥j¡+jÑj,jýjy,j)jÕ,jUjC-j�jJ.j­jP/jÙj�0jj«1j3jº8jUjú8jƒuŒ nametypes”}”(j9‰j¨‰je‰jž ‰j‰j— ‰jÁ8‰j`‰j‚"ˆj•‰jë‰j^‰jŒ ‰jz"‰j—0ˆj·*‰j+‰jS+‰j¡+‰j,‰jy,‰jÕ,‰jC-‰jJ.‰jP/‰j�0‰j«1‰jº8‰jú8‰uh}”(j,j¤j¤jýjKj«jmjhjŒj‡j®jjÜj¡ jûj² jjcj"jcjFjJjrj˜jžjîjÊjajöj� j$j‹"j”0j‹"jMjl*jyjº*j¥j+jÑjV+jýj¤+j)j ,jUj|,j�jØ,j­jF-jÙjM.jjS/j3j�0jUj®1jÎ1j×1jM3jR3j/5j45jI7jN7jƒjÄ8jú jÓ j­jqj|jÀj=j�j7jâjâjØj®j5j’jˆjÀ!j¶ jg*jª"j¸jjEj<jgj^j†j}j¨jŸjÖjÍjõjìjjj@j-jljYj˜j…jÄj±jðjÝjjjGj4jsj`jŸjŒjËj¸j÷jäj#jjOj<j{jhj§j”jÓjÀjÿjìj-j$jOjFj}jtuŒ 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”“”}”j49K(s…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”jº)�”}”(hŒ)Duplicate implicit target name: "events".”h]”hŒ-Duplicate implicit target name: “eventsâ€�.”…”�”}”(hj”9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj‘9ubah}”(h]”h ]”h"]”h$]”h&]”j"aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Muh1j�9hjch²hh³hÇh´Mubj�9)�”}”(hhh]”jº)�”}”(hŒ)Duplicate implicit target name: "ioctls".”h]”hŒ-Duplicate implicit target name: “ioctlsâ€�.”…”�”}”(hj°9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj­9ubah}”(h]”h ]”h"]”h$]”h&]”j”0aŒlevel”KŒtype”jª9Œsource”hÇŒline”MÑuh1j�9hj‹"h²hh³hÇh´MÑubeŒtransform_messages”]”(j�9)�”}”(hhh]”jº)�”}”(hhh]”hŒ,Hyperlink target "events" is not referenced.”…”�”}”hjÍ9sbah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjÊ9ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jª9Œsource”hÇŒline”Muh1j�9ubj�9)�”}”(hhh]”jº)�”}”(hhh]”hŒ,Hyperlink target "ioctls" is not referenced.”…”�”}”hjç9sbah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjä9ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jª9Œsource”hÇŒline”MÎuh1j�9ubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.