
    wii                        S SK 7  S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
Jr  S SKJr  S SKrS SKrSrS/r\R$                  " S5      rSr\R*                  R-                  S	5      S
:w  d]  \R*                  R-                  S5      S
:w  d>  \R*                  R-                  S5      S
:w  d  \R*                  R-                  S5      S
:w  a  SrO6\R*                  S:X  d  \R*                  S:X  a  SrO\R0                  " SS5      r " S S\5      r\R*                  S:X  d  \R*                  S:X  a  S\l         " S S\5      r " S S\5      r " S S\\5      r " S S\\5      r  " S S \\5      r! " S! S"\\5      r" " S# S$\\5      r# " S% S&\\5      r$ " S' S(\\5      r%S)\&" \$5      4S*\&" \$5      4S+\'\S-   -  4S,\&" \%5      4S-\#4S.\&" \"5      4S/\(4S0\)4S1\*4S2\&" \&" \$5      5      4/
\$l+        S)\&" \%5      4S*\&" \%5      4S3\,\S-   -  4S4\&" \$5      4S5\-4S6\&" \$5      4/\%l+        \(r. " S7 S85      r/Sq0S@S9 jr1S: r2S; r3S< r4 " S= S>\Rj                  Rl                  5      r7S@S? jr8g)A    )*N)USBErrorUSBTimeoutError)methodtracezWander Lairson Costaget_backendzusb.backend.libusb0   bsdmacdarwinsunos5i   win32cygwini  .PC_PATH_MAXc                       \ rS rSrSrg)_PackPolicyA    N__name__
__module____qualname____firstlineno____static_attributes__r       M/home/james-whalen/.local/lib/python3.13/site-packages/usb/backend/libusb0.pyr   r   A       r   r      c                   (    \ rS rSrSrS\4S\4/rSrg)_usb_descriptor_headerI   r   blengthbDescriptorTyper   N)r   r   r   r   _pack_c_uint8_fields_r   r   r   r   r!   r!   I   s    FG$"G,.Hr   r!   c                   .    \ rS rSrSrS\4S\4S\4/rSrg)_usb_string_descriptorN   r   bLengthr$   wDatar   N	r   r   r   r   r%   r&   c_uint16r'   r   r   r   r   r)   r)   N   s&    FG$"G,(#%Hr   r)   c                   `    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\" \5      4S\4/
rSr	g)_usb_endpoint_descriptorT   r+   r$   bEndpointAddressbmAttributeswMaxPacketSize	bIntervalbRefreshbSynchAddressextraextralenr   N)
r   r   r   r   r&   r.   POINTERc_intr'   r   r   r   r   r0   r0   T   s^    G$"G,#W-)!8,g&W% '*''*+U#	%Hr   r0   c                   x    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\" \5      4S\" \5      4S\4/rSr	g)_usb_interface_descriptor`   r+   r$   bInterfaceNumberbAlternateSettingbNumEndpointsbInterfaceClassbInterfaceSubClassbInterfaceProtocol
iInterfaceendpointr8   r9   r   N)
r   r   r   r   r&   r:   r0   r;   r'   r   r   r   r   r=   r=   `   st    G$"G,#W-$g. '*"G,%w/%w/w'W%=>?''*+U#%Hr   r=   c                   0    \ rS rSrS\" \5      4S\4/rSrg)_usb_interfacen   
altsettingnum_altsettingr   N)	r   r   r   r   r:   r=   r;   r'   r   r   r   r   rH   rH   n   s    w'@AB!5)+Hr   rH   c                   r    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\" \5      4S\" \5      4S\4/r	Sr
g)_usb_config_descriptorr   r+   r$   wTotalLengthbNumInterfacesbConfigurationValueiConfigurationr3   	bMaxPower	interfacer8   r9   r   N)r   r   r   r   r&   r.   r:   rH   r;   r'   r   r   r   r   rM   rM   r   sk    G$"G,*!7+&0!7+)g&gn56''*+U#
%Hr   rM   c                   p    \ rS rSrSrS\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\4S\4S\4S\4S\4/rSrg)_usb_device_descriptor   r   r+   r$   bcdUSBbDeviceClassbDeviceSubClassbDeviceProtocolbMaxPacketSize0idVendor	idProduct	bcdDeviceiManufactureriProductiSerialNumberbNumConfigurationsr   Nr-   r   r   r   rV   rV      s~    FG$"G,8$)"G,"G,"G,X&h'h' '*W% '*%w/1Hr   rV   c                       \ rS rSrSrg)_usb_device   r   Nr   r   r   r   re   re      r   r   re   c                       \ rS rSrSrg)_usb_bus   r   Nr   r   r   r   rh   rh      r   r   rh   nextprevfilenamebus
descriptorconfigdevdevnumnum_childrenchildrendirnamedeviceslocationroot_devc                       \ rS rSrS rSrg)_DeviceDescriptor   c                    UR                   nUR                  U l        UR                  U l        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        UR                  U l	        UR                  U l
        UR                  U l        UR                  U l        UR                  U l        UR                  U l        UR                  U l        UR"                  S   R$                  U l        S U l        S U l        S U l        g Nr   )rn   r+   r$   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rq   addressrm   rv   port_numberport_numbersspeed)selfrp   descs      r   __init___DeviceDescriptor.__init__   s    ~~||#33kk --#33#33#33!//!//"&"9"9zz771:&& 
r   )r}   r$   rY   r[   rZ   r+   r\   rc   r_   rX   rm   r`   ra   rb   r^   r]   r~   r   r   N)r   r   r   r   r   r   r   r   r   ry   ry      s    r   ry   c                 B    [         R                  R                  SSSU S9$ )N)zusb-0.1usblibusb0zcygusb0.dllzLibusb 0find_library)r   	libloaderload_locate_libraryr   s    r   _load_libraryr      s)    ==,,-z) -  r   c                 "
   [        [        5      /U R                  l        [        U R                  l        [        /U R                  l        [        [        [        [        [        /U R                  l        [        [        [        [        /U R                  l        [        [        [        [        [        [        /U R                  l        [        [        [        [        [        /U R                  l        [        [        [        [        [        /U R                   l        [        [        [        [        [        /U R"                  l        [        [        [        [        [        /U R$                  l        [        [        [        [        [        /U R&                  l        [        [        [        [        [        [        [        [        /U R(                  l        [        [        /U R*                  l        [        [        /U R,                  l        [        [        /U R.                  l        [        [        /U R0                  l        [        [        /U R2                  l        [        [        /U R4                  l        [        /U R6                  l        / U R8                  l        [        U R8                  l        [        /U R:                  l        [        /U R<                  l        [        [        5      U R<                  l        [        [>        5      U R@                  l        [C        U S5      (       a%  [        [        [        [D        /U RF                  l        [C        U S5      (       a  [        [        /U RH                  l        [C        U S5      (       a.  [        [        [        5      [J        [        /U RL                  l        [C        U S5      (       a)  [        [        [        5      [J        /U RN                  l        [C        U S5      (       a)  [        [        [        5      [J        /U RP                  l        [C        U S5      (       a   [        [        [        /U RR                  l        [C        U S5      (       a  [        [        /U RT                  l        [C        U S5      (       a  [        [        /U RV                  l        [C        U S	5      (       a  [        /U RX                  l        [C        U S
5      (       a   [        [        5      /U RZ                  l        g g )Nusb_get_driver_npusb_detach_kernel_driver_npusb_isochronous_setup_asyncusb_bulk_setup_asyncusb_interrupt_setup_asyncusb_submit_asyncusb_reap_asyncusb_reap_async_nocancelusb_cancel_asyncusb_free_async).r:   re   usb_openargtypes_usb_dev_handlerestype	usb_closer;   c_char_pc_size_tusb_get_stringusb_get_string_simplec_ubytec_void_pusb_get_descriptor_by_endpointusb_get_descriptorusb_bulk_writeusb_bulk_readusb_interrupt_writeusb_interrupt_readusb_control_msgusb_set_configurationusb_claim_interfaceusb_release_interfaceusb_set_altinterfaceusb_resetepusb_clear_halt	usb_resetusb_strerrorusb_set_debug
usb_devicerh   usb_get_busseshasattrc_uintr   r   r&   r   r   r   r   r   r   r   r   )libs    r   _setup_prototypesr      s   $[12CLL*CLL ..CMM #
C 	*
C& !0 % ' ' ( %3C&&/ $'C# #
C "
C (
C$ '
C#" 	$
C  +:5)AC& )8'?C$ +:5)AC& *9%(@C% !07COO $3E":C ..CMM !#C'C #(C  //CNN$[1CNN ")!2C s'((eXv6 	& s1224CU3K''0 s122gh/%@ 	''0 s*++gh/9 	  ) s/00gh/9 	%%. s&'')18U(C% s$%%'/&7# s-..08%/@##, s&'')1
% s$%%'.x'8&9# &r   c                 \   U c  [         R                  5       nOe[        U S5      (       a  U R                  n U S:  a@  [         R                  5       nUR	                  5       S:X  a  [
        R                  " U * 5      nOU $ U b"  U * [        R                  :X  a  [        XU * 5      e[        X5      e)Nvaluer   zno error)_libr   r   r   lowerosstrerrorerrno	ETIMEDOUTr   r   )reterrmsgs     r   _checkr     s    
{""$3  ))C7&&(F
 ||~+cT*J
C45??2fC400
6
r   c                  "    [        [        S5      $ )Nr   )r   r   r   r   r   _has_iso_transferr     s    4677r   c                      \ rS rSr\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r	\" \5      S 5       r
\" \5      S 5       r\" \5      S 5       r\" \5      S	 5       r\" \5      S
 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       rS rS rS rS r Sr!g)_LibUSBi  c              #     #    [        [        R                  5       5        [        [        R                  5       5        [        R	                  5       n[        U5      (       ai  US   R                  n[        U5      (       a(  US   v   US   R                  n[        U5      (       a  M(  US   R                  n[        U5      (       a  Mh  g g 7fr|   )r   r   usb_find_bussesusb_find_devicesr   boolru   rj   )r   rm   rp   s      r   enumerate_devices_LibUSB.enumerate_devices  s     t##%&t$$&'!!#3iia&..Cs))!f!fkk s)) a&++C 3iis   B$C(C	Cc                     [        U5      $ N)ry   r   rp   s     r   get_device_descriptor_LibUSB.get_device_descriptor  s     %%r   c                     X!R                   R                  :  a  [        S[        U5      -   5      eUR                  U   nUR
                  S UR                   Ul        U$ )NzInvalid configuration index )rn   rc   
IndexErrorstrro   r8   r9   extra_descriptors)r   rp   ro   config_descs       r   get_configuration_descriptor$_LibUSB.get_configuration_descriptor  sW    ^^666;c&kIJJjj((3(9(9:O;;O;O(P%r   c                 8   U R                  X5      nX%R                  :  a  [        S[        U5      -   5      eUR                  U   nX6R
                  :  a  [        S[        U5      -   5      eUR                  U   nUR                  S UR                   Ul	        U$ )NzInvalid interface index z Invalid alternate setting index )
r   rP   r   r   rT   rK   rJ   r8   r9   r   )r   rp   intfaltro   cfgdescrT   	intf_descs           r   get_interface_descriptor _LibUSB.get_interface_descriptor  s    33C@)))7#d)CDD%%d+	***?#c(JKK((-	&/oo6Iy7I7I&J	#r   c                     U R                  XXE5      nX&R                  :  a  [        S[        U5      -   5      eUR                  U   nUR
                  S UR                   Ul        U$ )NzInvalid endpoint index )r   rA   r   r   rF   r8   r9   r   )r   rp   epr   r   ro   rT   ep_descs           r   get_endpoint_descriptor_LibUSB.get_endpoint_descriptor  sd    11#SI	(((6R@AA$$R($+MM2C73C3C$D!r   c                 >    [        [        R                  U5      5      $ r   )r   r   r   r   s     r   open_device_LibUSB.open_device  s    dmmC())r   c                 @    [        [        R                  U5      5        g r   )r   r   r   r   
dev_handles     r   close_device_LibUSB.close_device      t~~j)*r   c                 @    [        [        R                  X5      5        g r   )r   r   r   )r   r   config_values      r   set_configuration_LibUSB.set_configuration  s    t))*CDr   c           	      Z   [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R
                  5      n[         R                  R                  S5      nU R                  UUSSSUS5      nUS:X  d   eUS   $ )Nr      r   d   )r   utilbuild_request_typeCTRL_INCTRL_TYPE_STANDARDCTRL_RECIPIENT_DEVICEcreate_bufferctrl_transfer)r   r   bmRequestTypebuffr   s        r   get_configuration_LibUSB.get_configuration  s    33 # 0 0 # ; ; # > >
 xx%%a(   axxAwr   c                 @    [        [        R                  X5      5        g r   )r   r   r   )r   r   r   rJ   s       r   set_interface_altsetting _LibUSB.set_interface_altsetting  s    t((@Ar   c                 @    [        [        R                  X5      5        g r   )r   r   r   r   r   r   s      r   claim_interface_LibUSB.claim_interface  s    t''
9:r   c                 @    [        [        R                  X5      5        g r   )r   r   r   r  s      r   release_interface_LibUSB.release_interface  s    t))*;<r   c                 H    U R                  [        R                  UUUXE5      $ r   )_LibUSB__writer   r   r   r   r   r   datatimeouts         r   
bulk_write_LibUSB.bulk_write  s'    ||D//&  	+ 	+r   c                 J    U R                  [        R                  UUUUU5      $ r   )_LibUSB__readr   r   r   r   r   r   r   r  s         r   	bulk_read_LibUSB.bulk_read'  s*    {{4--%"$ 	$r   c                 J    U R                  [        R                  UUUUU5      $ r   )r  r   r   r  s         r   
intr_write_LibUSB.intr_write0  s*    ||D44&  #% 	%r   c                 J    U R                  [        R                  UUUUU5      $ r   )r  r   r   r  s         r   	intr_read_LibUSB.intr_read9  s*    {{422%"$ 	$r   c                     [        5       (       d+  [        R                  R                  R	                  XX#XE5      $ U R                  XX4U5      $ r   )r   r   backendIBackend	iso_write_LibUSB__iso_transferr  s         r   r   _LibUSB.iso_writeB  s?     "";;''11$Bd\\"":4wGGr   c                     [        5       (       d+  [        R                  R                  R	                  XX#XE5      $ U R                  XX4U5      $ r   )r   r   r  r  iso_readr!  r  s         r   r$  _LibUSB.iso_readH  s?     "";;''002T[["":4wGGr   c                     UR                  5       u  pXR                  -  n	[        [        R	                  UUUUU[        U[        5      U	U5      5      $ r   )buffer_infoitemsizer   r   r   castr   )
r   r   r   bRequestwValuewIndexr  r  r}   lengths
             r   r   _LibUSB.ctrl_transferN  sY     **,--d**&)$"" (3"#	 	 		r   c                 @    [        [        R                  X5      5        g r   )r   r   r   )r   r   r   s      r   
clear_halt_LibUSB.clear_haltd  s    t"":23r   c                 @    [        [        R                  U5      5        g r   )r   r   r   r   s     r   reset_device_LibUSB.reset_deviceh  r   r   c                 |   [         R                  S:X  a   U R                  X5      nUS:g  $ [         R                  S:X  a   U R                  X5      ng[         R                  R                  S5      (       d$  [         R                  R                  S5      (       a  U R                  X5      nUS:g  $ [        U R                  R                  5      e! [         a*  nUR                  [
        R                  * :X  a   S nAge S nAff = f! [         a*  nUR                  [
        R                  * :X  a   S nAge S nAff = f)	Nlinuxs   usbfsFr   Tfreebsd	dragonflys   ugen)sysplatform_LibUSB__get_driver_namer   backend_error_coder   ENODATA
startswithNotImplementedErroris_kernel_driver_activer   )r   r   r   driver_nameerrs        r   r@  _LibUSB.is_kernel_driver_activel  s   <<7"
	"44ZF #h.. \\X%"44ZF \\$$Y//3<<3J3J;3W3W 00BK '))%d&B&B&K&KLL3  ))emm^; 	  ))emm^; 	s;   C D 
DC?>C??D
D;D65D66D;c                     [        [        S5      (       d  [        U R                  R                  5      e[        [        R                  X5      5        g )Nr   )r   r   r?  detach_kernel_driverr   r   r   r  s      r   rE  _LibUSB.detach_kernel_driver  s:    t:;;%d&?&?&H&HIIt//
ABr   c           
      `   [        [        S5      (       d  [        S5      e[        R                  R                  [        S-   5      nUR                  5       u  pEXSR                  -  n[        [        R                  UU[        U[        5      U5      5        [        U[        5      R                  $ )Nr   r   )r   r   r?  r   r   r   _USBFS_MAXDRIVERNAMEr'  r(  r   r   r)  r   r   )r   r   r   bufnamer-  s         r   __get_driver_name_LibUSB.__get_driver_name  s    t011%&9::hh$$%9A%=>(,,t%%x(	 	
 D(#)))r   c                     UR                  5       u  pxXR                  -  n[        [        U" UU[	        U[
        5      UU5      5      5      $ r   r'  r(  intr   r)  r   )	r   fnr   r   r   r  r  r}   r-  s	            r   __write_LibUSB.__write  sO    **,--6""Wh/   	r   c                     UR                  5       u  pxXR                  -  n[        [        U" UU[	        U[
        5      UU5      5      5      n	U	$ r   rN  )
r   rP  r   r   r   r   r  r}   r-  r   s
             r   __read_LibUSB.__read  sS    **,--&(+   
r   c           	         [        5       nUR                  5       u  pxXR                  -  n[        [        R                  U[        U5      US5      5        Sn	 X:  a  [        [        R                  U[        Xy-   [        5      X-
  5      5        [        [        R                  Xe5      5      n
U
(       d)  U	[        [        R                  [        U5      5      5        $ X-  n	X:  a  M  [        [        R                  [        U5      5      5        U	$ !   U	(       d  e  N5= f! [        [        R                  [        U5      5      5        f = fr|   )r   r'  r(  r   r   r   byrefr   r)  r   r   r   )r   r   r   r   r  r  contextr   r-  transmittedr   s              r   __iso_transfer_LibUSB.__iso_transfer  s   *'')--t//'N	 	 	8&t,,+X6(* +
 T00BC& 4&&uW~67 " & 4&&uW~67	  4&&uW~67s   AD 	D 
DD   )E	r   N)"r   r   r   r   r   _loggerr   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r   r$  r   r0  r3  r@  rE  r;  r  r  r!  r   r   r   r   r   r     s`   	 	 & &   	 	   * * + + E E  & B B ; ; = = + + $ $ % % $ $ H H
 H H
  * 4 4 + + $M $ML C C
*	
r   r   c                 0    [         c.  [        U 5      q [        [         5        [         R                  5         [	        5       $ ! [
        R                  R                   a    [        R                  SSS9   g [         a    [        R                  SSS9   g f = f)Nz Error loading libusb 0.1 backendF)exc_infoT)r   r   r   usb_initr   r   r   LibraryExceptionr\  error	Exceptionr   s    r   r   r     sx    < .Dd#MMOy==)) 85I 84Hs   >A 2B5BBr   )9ctypesr   r   usb.backendr   usb.utilr9  usb.corer   r   
usb._debugr   usb._interop_interoploggingusb.libloader
__author____all__	getLoggerr\  rH  r:  find	_PATH_MAXpathconfobjectr   r%   	Structurer!   r)   r0   r=   rH   rM   rV   re   rh   r:   c_int8r   r&   r   r'   c_charc_uint32r   ry   r   r   r   r   r   r  r  r   r   r   r   r   <module>rw     s  >   	   
 . "   #
/


1
2  <<Ur!S\\%6%6u%=%C(#r)S\\->->x-HB-NI\\W 8IC/I	& 	 <<7cllh6K.Y .
%Y %
%y+ 
%%	; %+Y +%Y %1Y 1"	)[ 		y+ 	  !56!56#Vy1}%=> 12%'=>!7+A#BC)!7+'1#WW[-A%BC	E  gh/0gh/09q=!9:!56 (+ '+"679   0 ^:@ ,8Wckk"" Wrr   