
    wiqo                      H   S SK 7  S SKr S SKrS SKJr  S SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKrS SKJrJr  Sr/ SQr\R(                  " S5      rS rSrS	rS
rSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr*Sr+Sr,Sr-Sr.S r/S!r0S"r1S#r2S$r3S%r40 \S_\S_\\Rj                  Rm                  S&S5      _\S_\\Rj                  Rm                  S'S5      _\\Rj                  Rm                  S(S5      _\\Rj                  Rm                  S)S5      _\\Rj                  Rm                  S*S5      _\\Rj                  Rm                  S+S5      _\\Rj                  Rm                  S,S5      _\ S_\!\Rj                  Rm                  S-S5      _\"\Rj                  Rm                  S+S5      _\#S_\$S_\%S_\&S_\'\Rj                  Rm                  S(S5      \(\Rj                  Rm                  S(S5      \)\Rj                  Rm                  S(S5      \*\Rj                  Rm                  S.S5      \+S\,\Rj                  Rm                  S/S5      \-\Rj                  Rm                  S0S5      \.S\/\Rj                  Rm                  S0S5      \0S\1S\2S\3\Rj                  Rm                  S1S5      \4\Rj                  Rm                  S2S5      0Er7 " S3 S4\85      r9 " S5 S6\85      r: " S7 S8\85      r; " S9 S:\85      r< " S; S<\85      r= " S= S>\85      r> " S? S@\85      r? " SA SB\85      r@ " SC SD\85      rA " SE SF\85      rB\CrD\CrE\CrF\CrGSqHSqISSSG jrJSH rKSI rL " SJ SK\R                  5      rN " SL SM\R                  5      rO " SN SO\R                  5      rP " SP SQ\R                  R                  5      rSSSSR jrTg)T    )*N)methodtrace)USBErrorUSBTimeoutErrorzWander Lairson Costa) get_backendOPENUSB_SUCCESSOPENUSB_PLATFORM_FAILUREOPENUSB_NO_RESOURCESOPENUSB_NO_BANDWIDTHOPENUSB_NOT_SUPPORTEDOPENUSB_HC_HARDWARE_ERROROPENUSB_INVALID_PERMOPENUSB_BUSYOPENUSB_BADARGOPENUSB_NOACCESSOPENUSB_PARSE_ERROROPENUSB_UNKNOWN_DEVICEOPENUSB_INVALID_HANDLEOPENUSB_SYS_FUNC_FAILUREOPENUSB_NULL_LISTOPENUSB_CB_CONTINUEOPENUSB_CB_TERMINATEOPENUSB_IO_STALLOPENUSB_IO_CRC_ERROROPENUSB_IO_DEVICE_HUNGOPENUSB_IO_REQ_TOO_BIGOPENUSB_IO_BIT_STUFFINGOPENUSB_IO_UNEXPECTED_PIDOPENUSB_IO_DATA_OVERRUNOPENUSB_IO_DATA_UNDERRUNOPENUSB_IO_BUFFER_OVERRUNOPENUSB_IO_BUFFER_UNDERRUNOPENUSB_IO_PID_CHECK_FAILUREOPENUSB_IO_DATA_TOGGLE_MISMATCHOPENUSB_IO_TIMEOUTOPENUSB_IO_CANCELEDzusb.backend.openusbiiiiiiiiiiiiiiiiiiiiiiiiiENOMEMENOSYSEIOEBADFEBUSYEINVALEACCESENODEVE2BIGESRCH	EOVERFLOW	ETIMEDOUTEINTRc            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)_usb_endpoint_desc   bLengthbDescriptorTypebEndpointAddressbmAttributeswMaxPacketSize	bIntervalbRefreshbSynchAddress N__name__
__module____qualname____firstlineno__c_uint8c_uint16_fields___static_attributes__rD       M/home/james-whalen/.local/lib/python3.13/site-packages/usb/backend/openusb.pyr:   r:      sI    G$"G,#W-)!8,g&W% '*,HrN   r:   c            
       N    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4/	rSrg)_usb_interface_desc   r<   r=   bInterfaceNumberbAlternateSettingbNumEndpointsbInterfaceClassbInterfaceSubClassbInterfaceProtocol
iInterfacerD   N)rF   rG   rH   rI   rJ   rL   rM   rD   rN   rO   rQ   rQ      sQ    G$"G,#W-$g. '*"G,%w/%w/w')HrN   rQ   c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)_usb_config_desc   r<   r=   wTotalLengthbNumInterfacesbConfigurationValueiConfigurationr?   	bMaxPowerrD   NrE   rD   rN   rO   r[   r[      sI    G$"G,*!7+&0!7+)g&(HrN   r[   c                   l    \ 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_desc   r<   r=   bcdUSBbDeviceClassbDeviceSubClassbDeviceProtocolbMaxPacketSize0idVendor	idProduct	bcdDeviceiManufactureriProductiSerialNumberbNumConfigurationsrD   NrE   rD   rN   rO   rc   rc      sy    G$"G,8$)"G,"G,"G,X&h'h' '*W% '*%w/1HrN   rc   c                   $    \ rS rSrS\4S\4/rSrg)_openusb_request_result   statustransferred_bytesrD   N)rF   rG   rH   rI   c_int32c_uint32rL   rM   rD   rN   rO   rr   rr      s    7#$h/1HrN   rr   c                   x   ^  \ rS rSrU 4S jr " S S\5      rS\4S\" \5      4S\	4S\	4S	\	4S
\
4S\4/rSrU =r$ )_openusb_ctrl_request   c                 <  > [         [        U ]  5         SU R                  l        SU R                  l        SU R                  l        SU R                  l        S U l        SU l	        SU l
        SU l        SU R                  l        SU R                  l        S U l        g Nr   )superry   __init__setupbmRequestTypebRequestwValuewIndexpayloadlengthtimeoutflagsresultrt   ru   next)self	__class__s    rO   r~   _openusb_ctrl_request.__init__   s|    #T35#$

 






()%	rN   c                   0    \ rS rSrS\4S\4S\4S\4/rSrg))_openusb_ctrl_request._openusb_ctrl_setup   r   r   r   r   rD   NrE   rD   rN   rO   _openusb_ctrl_setupr      s)    $g.)x(x(*rN   r   r   r   r   r   r   r   r   )r   r   r   r   r   )rF   rG   rH   rI   r~   	Structurer   POINTERrJ   rw   rr   c_void_prL   rM   __classcell__)r   s   @rO   ry   ry      s\    *i *
 -.GG,-8$H%(#23"$HrN   ry   c                   N    \ rS rSrS\4S\" \5      4S\4S\4S\4S\4S\	4/r
S	rg
)_openusb_intr_request   intervalr   r   r   r   r   r   rD   N)rF   rG   rH   rI   rK   r   rJ   rw   rr   r   rL   rM   rD   rN   rO   r   r      sG    X&GG,-8$H%(#23"$HrN   r   c                   H    \ rS rSrS\" \5      4S\4S\4S\4S\4S\4/r	Sr
g	)
_openusb_bulk_request   r   r   r   r   r   r   rD   N)rF   rG   rH   rI   r   rJ   rw   rr   r   rL   rM   rD   rN   rO   r   r      s?    GG,-8$H%(#23"$HrN   r   c                   F    \ rS rSr " S S\5      rS\4S\" \5      4/rSr	g)_openusb_isoc_pkts   c                   0    \ rS rSrS\" \5      4S\4/rSrg)'_openusb_isoc_pkts._openusb_isoc_packet   r   r   rD   N)	rF   rG   rH   rI   r   rJ   rw   rL   rM   rD   rN   rO   _openusb_isoc_packetr      s     01x(*rN   r   num_packetspacketsrD   N)
rF   rG   rH   rI   r   r   rw   r   rL   rM   rD   rN   rO   r   r      s-    *y * )G$89:<HrN   r   c                   H    \ rS rSrS\4S\4S\4S\" \5      4S\4S\	4/r
Srg	)
_openusb_isoc_request   start_framer   pktsisoc_resultsisoc_statusr   rD   N)rF   rG   rH   rI   rw   r   r   rr   rv   r   rL   rM   rD   rN   rO   r   r      s@    )(#+,)@!AB("$HrN   r   c                 B    [         R                  R                  SSSU S9$ )N)openusbr   zOpenUSB libraryfind_library)usb	libloaderload_locate_libraryr   s    rO   _load_libraryr     s*     ==,,i!2 -  rN   c                 
   [         [        [        5      /U R                  l        [
        U R                  l        [        /U R                  l        [        [        [        [        5      5      [        [         5      /U R                  l        [        [        5      /U R                  l        [        [        [        [        [        5      5      [        [         5      /U R                  l        [
        U R                  l        [        [        5      /U R                  l        [        [        [         [        [        5      /U R                  l        [
        U R                  l        [        /U R                   l        [
        U R                   l        [        ["        /U R$                  l        [
        U R$                  l        [        [        ["        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 R0                  l        [
        U R0                  l        [        [        [        ["        5      [2        [        [4        5      /U R6                  l        [
        U R6                  l        [        [        [        ["        5      [2        ["        [        [8        5      /U R:                  l        [
        U R:                  l        [        [        [        ["        5      [2        ["        ["        ["        [        [<        5      /U R>                  l        [
        U R>                  l        [        [        [        ["        5      [2        ["        ["        ["        ["        [        [@        5      /	U RB                  l        [
        U R>                  l        [
        /U RD                  l        [F        U RD                  l        [        ["        ["        [        [H        5      /U RJ                  l        [
        U RJ                  l        [        ["        ["        [        [L        5      /U RN                  l        [
        U RN                  l        [        ["        ["        [        [P        5      /U RR                  l        [
        U RR                  l        [        ["        ["        [        [T        5      /U RV                  l        [
        U RV                  l        g N),rw   r   _openusb_handleopenusb_initargtypesrv   restypeopenusb_fini_openusb_busidopenusb_get_busid_listopenusb_free_busid_list_openusb_devidopenusb_get_devids_by_busopenusb_free_devid_list_openusb_dev_handleopenusb_open_deviceopenusb_close_devicerJ   openusb_set_configurationopenusb_get_configurationc_intopenusb_claim_interfaceopenusb_release_interfaceopenusb_set_altsettingopenusb_resetrK   rc   openusb_parse_device_descr[   openusb_parse_config_descrQ   openusb_parse_interface_descr:   openusb_parse_endpoint_descopenusb_strerrorc_char_pry   openusb_ctrl_xferr   openusb_intr_xferr   openusb_bulk_xferr   openusb_isoc_xfer)libs    rO   _setup_prototypesr     s   !)7?+C DC&C "1 1C GN+,H+
C' -4N,C+DC(  /0!	.C!!* -4C!!) -4N,C+DC(  +,	(C$ '.C# *=(=C%'.C$ /B7-KC!!*,3C!!) /B77CS-TC!!*,3C!!)  ,
C( +2C'
  .
C!!*
 -4C!!)  +
C'
 *1C& #6!6C 'C G$%.
C!!* -4C!!)   ().C!!* -4C!!) $"G$/0	1C$$- 07C$$, $"G$./
0C##, 07C$$, &-IC!#+C   )*	&
C" %,C! $-.	&C" %,C!  )*	&
C" %,C!  )*	&
C" %,C!rN   c                     [        U S5      (       a  U R                  n U S:w  aX  U [        :X  a'  [        [        R                  U 5      U [        U    5      e[        [        R                  U 5      U [        U    5      eU $ )Nvaluer   )hasattrr   r%   r   _libr   _openusb_errnor   )rets    rO   _checkr     sl    sGii
ax$$!$"7"7"<c>RUCVWW4005sN3<OPPJrN   c                        \ rS rSrS rS rSrg)_Contexti  c                     [        5       U l        [        [        R	                  S[        U R                  5      5      5        g r|   )r   handler   r   r   byrefr   s    rO   r~   _Context.__init__  s*    %'t  E$++$678rN   c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r   r   r   r   s    rO   _finalize_object_Context._finalize_object  s&    4""dkk* #rN   )r   N)rF   rG   rH   rI   r~   r   rM   rD   rN   rO   r   r     s    9+rN   r   c                   &    \ rS rSrS rS rS rSrg)_BusIteratori  c           	          [        [        5      " 5       U l        [        5       n[	        [
        R                  [        R                  [        U R                  5      [        U5      5      5        UR                  U l        g r   )r   r   buslistrw   r   r   r   _ctxr   r   r   
num_busids)r   r   s     rO   r~   _BusIterator.__init__  sV    ~.0Z
t**4;;+0+>+0+<> 	? %**rN   c              #   f   #    [        U R                  5       H  nU R                  U   v   M     g 7fr   )ranger   r   r   is     rO   __iter___BusIterator.__iter__  &     t'A,,q/! (   /1c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r   r   r   r   s    rO   r   _BusIterator._finalize_object  &    4##((6 $rN   )r   r   NrF   rG   rH   rI   r~   r   r   rM   rD   rN   rO   r   r     s    +"7rN   r   c                   &    \ rS rSrS rS rS rSrg)_DevIteratori  c           
         [        [        5      " 5       U l        [        5       n[	        [
        R                  [        R                  U[        U R                  5      [        U5      5      5        UR                  U l        g r   )r   r   devlistrw   r   r   r   r   r   r   r   
num_devids)r   busidr   s      rO   r~   _DevIterator.__init__  s[    ~.0Z
t--dkk.3.3DLL.A.3J.?A 	B %**rN   c              #   f   #    [        U R                  5       H  nU R                  U   v   M     g 7fr   )r   r   r   r   s     rO   r   _DevIterator.__iter__$  r   r   c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r   r   r   r   s    rO   r   _DevIterator._finalize_object'  r   rN   )r   r   Nr   rD   rN   rO   r   r     s    +"7rN   r   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Srg)_OpenUSBi+  c              #   Z   #    [        5        H  n[        U5       H  nUv   M	     M     g 7fr   )r   r   )r   busdevids      rO   enumerate_devices_OpenUSB.enumerate_devices,  s%     >C%c* + "s   )+c                     [        5       n[        [        R                  [        R
                  US S[        U5      5      5        S Ul        S Ul        S Ul	        S Ul
        S Ul        U$ r|   )rc   r   r   r   r   r   r   r	  addressport_numberport_numbersspeed)r   devdescs      rO   get_device_descriptor_OpenUSB.get_device_descriptor2  sa    !t--dkk.1.2./.3Dk	; 	<
  
rN   c                     [        5       n[        [        R                  [        R
                  US SU[        U5      5      5        S Ul        U$ r|   )r[   r   r   r   r   r   r   extra_descriptors)r   r  configr  s       rO   get_configuration_descriptor%_OpenUSB.get_configuration_descriptorA  sG    !t--dkk.1.2./.4.3Dk; 	< "&rN   c                     [        5       n[        [        R                  [        R
                  US SUUU[        U5      5      5        S Ul        U$ r|   )rQ   r   r   r   r   r   r   r  )r   r  intfaltr  r  s         rO   get_interface_descriptor!_OpenUSB.get_interface_descriptorM  sM    "$t0014151217151416t> 	? "&rN   c                     [        5       n[        [        R                  [        R
                  US SUUUU[        U5      5	      5        S Ul        U$ r|   )r:   r   r   r   r   r   r   r  )r   r  epr  r  r  r  s          rO   get_endpoint_descriptor _OpenUSB.get_endpoint_descriptor[  sP    !#t//0304010604030205d= 	> "&rN   c           
          [        5       n[        [        R                  [        R
                  US[        U5      5      5        U$ r|   )r   r   r   r   r   r   r   )r   r  r   s      rO   open_device_OpenUSB.open_devicej  s0    $&t''S!U6]KLrN   c                 .    [         R                  U5        g r   )r   r   r   
dev_handles     rO   close_device_OpenUSB.close_devicep  s    !!*-rN   c                 @    [        [        R                  X5      5        g r   )r   r   r   )r   r)  config_values      rO   set_configuration_OpenUSB.set_configurationt  s    t--jGHrN   c                 ~    [        5       n[        [        R                  U[	        U5      5      5        UR
                  $ r   )rJ   r   r   r   r   r   )r   r)  r  s      rO   get_configuration_OpenUSB.get_configurationx  s,    t--j%-HI||rN   c                 B    [        [        R                  XU5      5        g r   )r   r   r   )r   r)  r  
altsettings       rO   set_interface_altsetting!_OpenUSB.set_interface_altsetting~  s    t**:ZHIrN   c                 B    [        [        R                  XS5      5        g r|   )r   r   r   r   r)  r  s      rO   claim_interface_OpenUSB.claim_interface  s    t++Ja@ArN   c                 .    [         R                  X5        g r   )r   r   r8  s      rO   release_interface_OpenUSB.release_interface  s    &&z8rN   c           
      H   [        5       n[        [        U5      S[        U5      5        UR	                  5       u  ovl        [        U[        [        5      5      Ul	        XVl
        [        [        R                  XU[        U5      5      5        UR                  R                  $ r|   r   memsetr   sizeofbuffer_infor   castr   rJ   r   r   r   r   r   r   ru   r   r)  r!  r  datar   requestr   s           rO   
bulk_write_OpenUSB.bulk_write  t    ')uW~q&/2"&"2"2"4w(89!t%%jE'NKL~~///rN   c           
      H   [        5       n[        [        U5      S[        U5      5        UR	                  5       u  ovl        [        U[        [        5      5      Ul	        XVl
        [        [        R                  XU[        U5      5      5        UR                  R                  $ r|   r?  r   r)  r!  r  buffr   rF  r   s           rO   	bulk_read_OpenUSB.bulk_read  rI  rN   c           
      H   [        5       n[        [        U5      S[        U5      5        UR	                  5       u  ovl        [        U[        [        5      5      Ul	        XVl
        [        [        R                  XU[        U5      5      5        UR                  R                  $ r|   r   r@  r   rA  rB  r   rC  r   rJ   r   r   r   r   r   r   ru   rD  s           rO   
intr_write_OpenUSB.intr_write  rI  rN   c           
      H   [        5       n[        [        U5      S[        U5      5        UR	                  5       u  ovl        [        U[        [        5      5      Ul	        XVl
        [        [        R                  XU[        U5      5      5        UR                  R                  $ r|   rP  rK  s           rO   	intr_read_OpenUSB.intr_read  rI  rN   c           
          [        5       nX(R                  l        X8R                  l        UR                  R                    UR                  R
                    Xxl        [        R                  R                  U5      n	UR                  5       u  ol        U=R                  UR                  -  sl        [        U
[        [        5      5      Ul        [#        [$        R'                  USS[)        U5      5      5        UR*                  R,                  $ r|   )ry   r   r   r   r   r   r   r   utilctrl_directionrB  r   itemsizerC  r   rJ   r   r   r   r   r   r   ru   )r   r)  r   r   r   r   rE  r   rF  	directionr   s              rO   ctrl_transfer_OpenUSB.ctrl_transfer  s     ()&3#!)!HH++M:	"&"2"2"4$--'w(89t%%j!QgGH~~///rN   c                 @    [        [        R                  U5      5        g r   )r   r   r   r(  s     rO   reset_device_OpenUSB.reset_device  s    t!!*-.rN   c           	          [         R                  " [         R                  [         R                  [         R                  5      nU R                  UUSSU[        R                  " 5       S5        g )N   r   i  )rW  build_request_typeCTRL_OUTCTRL_TYPE_STANDARDCTRL_RECIPIENT_ENDPOINTr[  _interopas_array)r   r)  r!  r   s       rO   
clear_halt_OpenUSB.clear_halt  sY    // MM 33 88: 		rN   rD   N)rF   rG   rH   rI   r   _loggerr  r  r  r  r"  r%  r*  r.  r1  r5  r9  r<  rG  rM  rQ  rT  r[  r^  rh  rM   rD   rN   rO   r  r  +  s    
   	 	      
 . . I I  
 J J B B 9 9 0 0 0 0 0 0 0 0$ 0 02 / /  rN   r  c                 F    [         c$  [        U 5      q [        [         5        [        5       q[
        R                  S5        [        5       $ ! [        R                  R                   a    [
        R                  SSS9   g [         a    [
        R                  SSS9   g f = f)NzFOpenUSB backend deprecated (https://github.com/pyusb/pyusb/issues/284)zError loading OpenUSB backendF)exc_infoT)r   r   r   r   r   rj  warningr  r   r   LibraryExceptionerror	Exceptionr   s    rO   r   r     s    < .Dd#:D`az==)) 5F 5Es   A	A 2B  B B r   )Uctypesctypes.utilusb.utilr   
usb._debugr   loggingerrnosysusb._interoprf  usb._objfinalizer_objfinalizerrW  usb.libloaderusb.corer   r   
__author____all__	getLoggerrj  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"   r#   r$   r%   r&   __dict__getr   r   r:   rQ   r[   rc   rr   ry   r   r   r   r   c_uint64r   r   r   r   r   r   r   r   r   AutoFinalizedObjectr   r   r   backendIBackendr  r   rD   rN   rO   <module>r     sO  >    "   
  )   .#
!
F 

1
2                         " "%    D T  ++Hd;  	 
 %..,,Xt<  enn00=  ++GT:  ##GT2  5>>%%h5  U^^''$7    5>>--h=  5>>--h=  T  d   ! " # $ U^^''t4++E485>>--eT:5>>--gt<Denn00$?ENN..{DATenn00dCt #Du~~))+t<**7D9? D, ,	)) 	)(y (1y 1 1i 1$I $8$I $$I $< <$I $  b,H
+}00 +7=44 77=44 7 {s{{## {zrN   