+
     hi  c                   s    ^ RI 5 ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^ RI
Ht ^ RIHt ^ RIt^ RItRtR.t]P$                  ! R4      t^t]P*                  P-                  R4      R=8w  ga   ]P*                  P-                  R	4      R=8w  gA   ]P*                  P-                  R
4      R=8w  g!   ]P*                  P-                  R4      R=8w  d   RtM8]P*                  R8X  g   ]P*                  R8X  d   RtM]P0                  ! RR4      t ! R R]4      t]P*                  R8X  g   ]P*                  R8X  d   ^]n         ! R R]4      t ! R R]4      t ! R R]]4      t ! R R]]4      t  ! R R]]4      t! ! R R]]4      t" ! R  R!]]4      t# ! R" R#]]4      t$ ! R$ R%]]4      t%R&]&! ]$4      3R']&! ]$4      3R(]']^,           ,          3R)]&! ]%4      3R*]#3R+]&! ]"4      3R,](3R-])3R.]*3R/]&! ]&! ]$4      4      3.
]$n+        R&]&! ]%4      3R']&! ]%4      3R0],]^,           ,          3R1]&! ]$4      3R2]-3R3]&! ]$4      3.]%n+        ](t. ! R4 R54      t/Rs0R>R6 lt1R7 t2R8 t3R9 t4 ! R: R;]Pj                  Pl                  4      t7R>R< lt8R# )?    )Z*N)USBErrorUSBTimeoutError)methodtracezWander Lairson Costaget_backendzusb.backend.libusb0ZbsdZmacdarwinZsunos5i   Zwin32Zcygwini  Z.ZPC_PATH_MAXc                   s    ] tR t^AtRtR# )_PackPolicy N__name__
__module____qualname____firstlineno____static_attributes__r       8/usr/lib/python3.14/site-packages/usb/backend/libusb0.pyr   r   A       r   r   c                   s*    ] tR t^It^tR]3R]3.tRtR# )_usb_descriptor_headerZ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                   s0    ] tR t^Nt^tR]3R]3R]3.tRtR# )_usb_string_descriptorbLengthr   ZwDatar   N	r	   r
   r   r   r   r   c_uint16r   r   r   r   r   r   r   N   s&    FG$"G,(#%Hr   r   c                   sb    ] tR t^TtR]3R]3R]3R]3R]3R]3R]3R]3R	]! ]4      3R
]3.
tRt	R# )_usb_endpoint_descriptorr   r   ZbEndpointAddressbmAttributesZwMaxPacketSizeZ	bIntervalZbRefreshZbSynchAddressextraextralenr   N)
r	   r
   r   r   r   r   POINTERc_intr   r   r   r   r   r   r   T   s^    G$"G,#W-)!8,g&W% '*''*+U#	%Hr   r   c                   sz    ] tR t^`tR]3R]3R]3R]3R]3R]3R]3R]3R	]3R
]! ]4      3R]! ]4      3R]3.tRt	R# )_usb_interface_descriptorr   r   ZbInterfaceNumberZbAlternateSettingbNumEndpointsZbInterfaceClassZbInterfaceSubClassZbInterfaceProtocolZ
iInterfaceendpointr   r   r   N)
r	   r
   r   r   r   r   r   r   r   r   r   r   r   r    r    `   st    G$"G,#W-$g. '*"G,%w/%w/w'W%=>?''*+U#%Hr   r    c                   s2    ] tR t^ntR]! ]4      3R]3.tRtR# )_usb_interface
altsettingnum_altsettingr   N)	r	   r
   r   r   r   r    r   r   r   r   r   r   r#   r#   n   s    w'@AB!5)+Hr   r#   c                   st    ] tR t^rtR]3R]3R]3R]3R]3R]3R]3R]3R	]! ]4      3R
]! ]4      3R]3.t	Rt
R# )_usb_config_descriptorr   r   ZwTotalLengthbNumInterfacesZbConfigurationValueZiConfigurationr   Z	bMaxPower	interfacer   r   r   N)r	   r
   r   r   r   r   r   r#   r   r   r   r   r   r   r&   r&   r   sk    G$"G,*!7+&0!7+)g&gn56''*+U#
%Hr   r&   c                   sr    ] tR t^t^tR]3R]3R]3R]3R]3R]3R]3R]3R	]3R
]3R]3R]3R]3R]3.tRtR# )_usb_device_descriptorr   r   bcdUSBbDeviceClassbDeviceSubClassbDeviceProtocolbMaxPacketSize0idVendor	idProduct	bcdDeviceiManufactureriProductiSerialNumberbNumConfigurationsr   Nr   r   r   r   r)   r)      s~    FG$"G,8$)"G,"G,"G,X&h'h' '*W% '*%w/1Hr   r)   c                   s    ] tR t^tRtR# )_usb_devicer   Nr   r   r   r   r6   r6      r   r   r6   c                   s    ] tR t^tRtR# )_usb_busr   Nr   r   r   r   r7   r7      r   r   r7   nextZprevZfilenamebus
descriptorconfigdevdevnumZnum_childrenZchildrenZdirnamedeviceslocationZroot_devc                   s&   a  ] tR t^t o R tRtV tR# )_DeviceDescriptorc                s   VP                   pVP                  V n        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        VP                  V n        VP                  V n	        VP                  V n
        VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP"                  ^ ,          P$                  V n        RV n        RV n        RV n        R# r    N)r:   r   r   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r=   addressr9   r?   port_numberport_numbersspeed)selfr<   Zdescs   && r   __init__Z_DeviceDescriptor.__init__   s    ~~||#33kk --#33#33#33!//!//"&"9"9zz771:&& 
r   )rB   r   r+   r-   r,   r   r.   r5   r1   r*   r9   r2   r3   r4   r0   r/   rC   rD   rE   N)r	   r
   r   r   rG   r   __classdictcell__Z__classdict__   @r   r@   r@      s      r   r@   c                 sH    \         P                  P                  RRRV R7      # )usb-0.1zcygusb0.dllzLibusb 0Zfind_library)rK   usbZlibusb0)rM   	libloaderZload_locate_libraryrL      &r   _load_libraryrP      s)    ==,,-z) -  r   c                 s:
   \        \        4      .V P                  n        \        V P                  n        \        .V P                  n        \        \        \        \        \        .V P                  n        \        \        \        \        .V P                  n        \        \        \        \        \        \        .V P                  n        \        \        \        \        \        .V P                  n        \        \        \        \        \        .V P                   n        \        \        \        \        \        .V P"                  n        \        \        \        \        \        .V P$                  n        \        \        \        \        \        .V P&                  n        \        \        \        \        \        \        \        \        .V P(                  n        \        \        .V P*                  n        \        \        .V P,                  n        \        \        .V P.                  n        \        \        .V P0                  n        \        \        .V P2                  n        \        \        .V P4                  n        \        .V P6                  n        . V P8                  n        \        V P8                  n        \        .V P:                  n        \        .V P<                  n        \        \        4      V P<                  n        \        \>        4      V P@                  n        \C        V R 4      '       d&   \        \        \        \D        .V PF                  n        \C        V R4      '       d   \        \        .V PH                  n        \C        V R4      '       d/   \        \        \        4      \J        \        .V PL                  n        \C        V R4      '       d*   \        \        \        4      \J        .V PN                  n        \C        V R4      '       d*   \        \        \        4      \J        .V PP                  n        \C        V R4      '       d!   \        \        \        .V PR                  n        \C        V R4      '       d   \        \        .V PT                  n        \C        V R4      '       d   \        \        .V PV                  n        \C        V R4      '       d   \        .V PX                  n        \C        V R	4      '       d"   \        \        4      .V PZ                  n        R
# R
# )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_asyncN).r   r6   usb_openZargtypes_usb_dev_handleZrestype	usb_closer   c_char_pZc_size_tZusb_get_stringZusb_get_string_simplec_ubytec_void_pZusb_get_descriptor_by_endpointZ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_altinterfaceZusb_resetepusb_clear_halt	usb_resetusb_strerrorZusb_set_debugZ
usb_devicer7   usb_get_busseshasattrZc_uintrQ   rR   r   rS   rT   rU   rV   rW   rX   rY   rZ   )ZlibrO   r   _setup_prototypesro      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                 sh   V f   \         P                  4       pMh\        V R4      '       d   V P                  p V ^ 8  dB   \         P                  4       pVP	                  4       R8X  d   \
        P                  ! V ) 4      pMV # V e$   V ) \        P                  8X  d   \        WV ) 4      h\        W4      h)Nvaluezno error)_librl   rn   rp   ZlowerosZstrerrorerrnoZ	ETIMEDOUTr   r   )retZerrmsgs   & r   _checkru     s    
{""$3  ))C7&&(F
 ||~+cT*J
C45??2fC400
6
r   c                  s"    \        \        R 4      # )rS   )rn   rq   r   r   r   _has_iso_transferrv     s    4677r   c                   s  a  ] tR tRt o ]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t	]! ]4      R 4       t
]! ]4      R 4       t]! ]4      R 4       t]! ]4      R	 4       t]! ]4      R
 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       tR tR tR tR t Rt!V t"R# )_LibUSBi  c              #  s~  "   \        \        P                  4       4       \        \        P                  4       4       \        P	                  4       p\        V4      '       dZ   V^ ,          P                  p\        V4      '       d!   V^ ,          x  V^ ,          P                  pK1  V^ ,          P                  pKj  R# 5irA   )ru   rq   Zusb_find_bussesZusb_find_devicesrm   Zboolr>   r8   )rF   r9   r<   s   &  r   enumerate_devicesZ_LibUSB.enumerate_devices  s|     t##%&t$$&'!!#3iia&..Cs))!f!fkka&++C s   B;B=c                s    \        V4      # N)r@   rF   r<      &&r   get_device_descriptorZ_LibUSB.get_device_descriptor  s     %%r   c                s    W!P                   P                  8  d   \        R \        V4      ,           4      hVP                  V,          pVP
                  RVP                   Vn        V# )zInvalid configuration index N)r:   r5   
IndexErrorstrr;   r   r   extra_descriptors)rF   r<   r;   Zconfig_descs   &&& r   get_configuration_descriptorZ$_LibUSB.get_configuration_descriptor  sW    ^^666;c&kIJJjj((3(9(9:O;;O;O(P%r   c                s\   V P                  W4      pW%P                  8  d   \        R \        V4      ,           4      hVP                  V,          pW6P
                  8  d   \        R\        V4      ,           4      hVP                  V,          pVP                  RVP                   Vn	        V# )zInvalid interface index z Invalid alternate setting index N)
r   r'   r}   r~   r(   r%   r$   r   r   r   )rF   r<   intfaltr;   Zcfgdescr(   Z	intf_descs   &&&&&   r   get_interface_descriptorZ _LibUSB.get_interface_descriptor  s    33C@)))7#d)CDD%%d+	***?#c(JKK((-	&/oo6Iy7I7I&J	#r   c                s    V P                  WWE4      pW&P                  8  d   \        R \        V4      ,           4      hVP                  V,          pVP
                  RVP                   Vn        V# )zInvalid endpoint index N)r   r!   r}   r~   r"   r   r   r   )rF   r<   epr   r   r;   r(   Zep_descs   &&&&&&  r   get_endpoint_descriptorZ_LibUSB.get_endpoint_descriptor  sd    11#SI	(((6R@AA$$R($+MM2C73C3C$D!r   c                s>    \        \        P                  V4      4      # ry   )ru   rq   r[   rz   r{   r   open_deviceZ_LibUSB.open_device  s    dmmC())r   c                B    \        \        P                  V4      4       R # ry   )ru   rq   r]   rF   
dev_handler{   r   close_deviceZ_LibUSB.close_device      t~~j)*r   c                B    \        \        P                  W4      4       R # ry   )ru   rq   rf   )rF   r   Zconfig_value   &&&r   set_configurationZ_LibUSB.set_configuration  s    t))*CDr   c           	     sR   \         P                  P                  \         P                  P                  \         P                  P                  \         P                  P
                  4      p\         P                  P                  ^4      pV P                  VV^^ ^ V^d4      pV^ ,          # )i   )rM   utilZbuild_request_typeZCTRL_INZCTRL_TYPE_STANDARDZCTRL_RECIPIENT_DEVICEcreate_bufferctrl_transfer)rF   r   bmRequestTypebuffrt   s   &&   r   get_configurationZ_LibUSB.get_configuration  s    33 # 0 0 # ; ; # > >
 xx%%a(   Awr   c                sB    \        \        P                  W4      4       R # ry   )ru   rq   ri   )rF   r   r   r$   s   &&&&r   set_interface_altsettingZ _LibUSB.set_interface_altsetting  s    t((@Ar   c                r   ry   )ru   rq   rg   rF   r   r   r   r   claim_interfaceZ_LibUSB.claim_interface  s    t''
9:r   c                r   ry   )ru   rq   rh   r   r   r   release_interfaceZ_LibUSB.release_interface  s    t))*;<r   c                sH    V P                  \        P                  VVVWE4      # ry   )_LibUSB__writerq   ra   rF   r   r   r   datatimeout   &&&&&&r   
bulk_writeZ_LibUSB.bulk_write  s'    ||D//&  	+ 	+r   c                J    V P                  \        P                  VVVVV4      # ry   )_LibUSB__readrq   rb   rF   r   r   r   r   r   r   r   	bulk_readZ_LibUSB.bulk_read'  s*    {{4--%"$ 	$r   c                r   ry   )r   rq   rc   r   r   r   
intr_writeZ_LibUSB.intr_write0  s*    ||D44&  #% 	%r   c                r   ry   )r   rq   rd   r   r   r   	intr_readZ_LibUSB.intr_read9  s*    {{422%"$ 	$r   c                    \        4       '       g,   \        P                  P                  P	                  WW#WE4      # V P                  WW4V4      # ry   )rv   rM   backendIBackend	iso_write_LibUSB__iso_transferr   r   r   r   Z_LibUSB.iso_writeB  s?     "";;''11$Bd\\"":4wGGr   c                r   ry   )rv   rM   r   r   iso_readr   r   r   r   r   Z_LibUSB.iso_readH  s?     "";;''002T[["":4wGGr   c                s    VP                  4       w  rWP                  ,          p	\        \        P	                  VVVVV\        V\        4      V	V4      4      # ry   )buffer_infoitemsizeru   rq   re   castr^   )
rF   r   r   ZbRequestZwValueZwIndexr   r   rB   lengths
   &&&&&&&&  r   r   Z_LibUSB.ctrl_transferN  sY     **,--d**&)$"" (3"#	 	 		r   c                r   ry   )ru   rq   rj   )rF   r   r   r   r   
clear_haltZ_LibUSB.clear_haltd  s    t"":23r   c                r   ry   )ru   rq   rk   r   r{   r   reset_deviceZ_LibUSB.reset_deviceh  r   r   c                s   \         P                  R 8X  d    V P                  W4      pVR8g  # \         P                  R8X  d    V P                  W4      pR# \         P                  P                  R4      '       g&   \         P                  P                  R4      '       d   V P                  W4      pVR8g  # \        V P                  P                  4      h  \         d-   pTP                  \
        P                  ) 8X  d    Rp?R# h Rp?ii ; i  \         d-   pTP                  \
        P                  ) 8X  d    Rp?R# h Rp?ii ; i)	Zlinuxs   usbfsNFr   TZfreebsdZ	dragonflys   ugen)sysplatform_LibUSB__get_driver_namer   Zbackend_error_coders   ZENODATAZ
startswithNotImplementedErroris_kernel_driver_activer	   )rF   r   r   Zdriver_nameZerrs   &&&  r   r   Z_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  DDDE E EEc                s    \        \        R 4      '       g    \        V P                  P                  4      h\        \        P                  W4      4       R# )rR   N)rn   rq   r   detach_kernel_driverr	   ru   rR   r   r   r   r   Z_LibUSB.detach_kernel_driver  s:    t:;;%d&?&?&H&HIIt//
ABr   c           
     sr   \        \        R 4      '       g   \        R 4      h\        P                  P                  \        ^,           4      pVP                  4       w  rEWSP                  ,          p\        \        P                  VV\        V\        4      V4      4       \        V\        4      P                  # )rQ   )rn   rq   r   rM   r   r   _USBFS_MAXDRIVERNAMEr   r   ru   rQ   r   r^   rp   )rF   r   r   ZbufZnamer   s   &&&   r   Z__get_driver_nameZ_LibUSB.__get_driver_name  s    t011%&9::hh$$%9A%=>(,,t%%x(	 	
 D(#)))r   c                s    VP                  4       w  rxWP                  ,          p\        \        V! VV\	        V\
        4      VV4      4      4      # ry   r   r   Zintru   r   r^   )	rF   fnr   r   r   r   r   rB   r   s	   &&&&&&&  r   Z__writeZ_LibUSB.__write  sO    **,--6""Wh/   	r   c                s    VP                  4       w  rxWP                  ,          p\        \        V! VV\	        V\
        4      VV4      4      4      p	V	# ry   r   )
rF   r   r   r   r   r   r   rB   r   rt   s
   &&&&&&&   r   Z__readZ_LibUSB.__read  sS    **,--&(+   
r   c           	     s   \        4       pVP                  4       w  rxWP                  ,          p\        \        P                  V\        V4      V^ 4      4       ^ p	 W8  d   \        \        P                  V\        Wy,           \        4      W,
          4      4       \        \        P                  We4      4      p
V
'       g*   V	\        \        P                  \        V4      4      4       # W,          p	K   \        \        P                  \        T4      4      4       T	#    T	'       g   h  L6; i  \        \        P                  \        T4      4      4       i ; i)r    )r`   r   r   ru   rq   rS   ZbyrefrV   r   r^   rW   rZ   )rF   r   r   r   r   r   Zcontextr   r   Ztransmittedrt   s   &&&&&&     r   Z__iso_transferZ_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 5D/ D,*D/ /)Er   N)#r	   r
   r   r   r   _loggerrx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   rI   rJ   r   rw   rw     sh    	 	 & &   	 	   * * + + E E  & B B ; ; = = + + $ $ % % $ $ H H
 H H
  * 4 4 + + $M $ML C C
*	
 r   rw   c                 sF    \         f/   \        V 4      s \        \         4       \         P                  4        \	        4       #   \
        P                  P                   d    \        P                  RRR7        R # \         d    \        P                  RRR7        R # i ; i)Nz Error loading libusb 0.1 backendF)Zexc_infoT)rq   rP   ro   Zusb_initrw   rM   rN   ZLibraryExceptionr   ZerrorZ	ExceptionrL   rO   r   r   r     sx    < .Dd#MMOy==)) 85I 84Hs   ?A 6B ;B B B iry   )9Zctypesrs   rr   Zusb.backendrM   Zusb.utilr   Zusb.corer   r   Z
usb._debugr   Zusb._interopZ_interopZloggingZusb.libloaderZ
__author__Z__all__Z	getLoggerr   r   r   ZfindZ	_PATH_MAXZpathconfZobjectr   r   Z	Structurer   r   r   r    r#   r&   r)   r6   r7   r   Zc_int8r`   r   r_   r   Zc_charZc_uint32r\   r@   rq   rP   ro   ru   rv   r   r   rw   r   r   r   r   <module>r      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   