
    wiw                        S SK 7  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rS SKJrJr  S SK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\S\S\S\S\S\S\ S\!S \"S!\#S"\$S#\%S$\&S%0r'S S\\RP                  RS                  S&S5      \\RP                  RS                  S'S5      \\RP                  RS                  S(S5      \\RP                  RS                  S)S5      \\RP                  RS                  S*S5      \\RP                  RS                  S+S5      \ \RP                  RS                  S,S5      \!\RP                  RS                  S-S5      \"\RP                  RS                  S.S5      \#\RP                  RS                  S/S5      \$\RP                  RS                  S0S5      \%\RP                  RS                  S1S5      \&S0r*S r+Sr,S	r-S
r.S2r/S3r0S4r1\+S\,S5\-S6\.S7\/S8\0S9\1S:0r2\+S \,\RP                  RS                  S&S5      \-\RP                  RS                  S,S5      \.\RP                  RS                  S;S5      \/\RP                  RS                  S&S5      \0\RP                  RS                  S)S5      \1\RP                  RS                  S-S5      0r3S< r4 " S= S>\55      r6 " S? S@\55      r7 " SA SB\55      r8 " SC SD\55      r9 " SE SF\55      r: " SG SH\55      r;\<r= " SI SJ\55      r>\?" \>5      r@\A" S\@5      rBSK\=4SL\C4SM\C4SN\C4SO\D4SP\E4SQ\E4SR\E4SS\B4ST\F4SU\<4SV\E4SW\;4/\>lG        SX rHSqISqJSkSY jrKSZ rLS[ rM " S\ S]\
R                  5      rO " S^ S_\P5      rQ " S` Sa\
R                  5      rR " Sb Sc\
R                  5      rS " Sd Se\P5      rT " Sf Sg\
R                  5      rU " Sh Si\R                  R                  5      rXSkSj jrYg)l    )*N)methodtrace)USBErrorUSBTimeoutErrorzWander Lairson Costa)get_backendLIBUSB_SUCCESSLIBUSB_ERROR_IOLIBUSB_ERROR_INVALID_PARAMLIBUSB_ERROR_ACCESSLIBUSB_ERROR_NO_DEVICELIBUSB_ERROR_NOT_FOUNDLIBUSB_ERROR_BUSYLIBUSB_ERROR_TIMEOUTLIBUSB_ERROR_OVERFLOWLIBUSB_ERROR_PIPELIBUSB_ERROR_INTERRUPTEDLIBUSB_ERROR_NO_MEMLIBUSB_ERROR_NOT_SUPPORTEDLIBUSB_ERROR_OTHERLIBUSB_TRANSFER_COMPLETEDLIBUSB_TRANSFER_ERRORLIBUSB_TRANSFER_TIMED_OUTLIBUSB_TRANSFER_CANCELLEDLIBUSB_TRANSFER_STALLLIBUSB_TRANSFER_NO_DEVICELIBUSB_TRANSFER_OVERFLOWzusb.backend.libusb1         iiiiiiiizSuccess (no error)zInput/output errorzInvalid parameterz(Access denied (insufficient permissions)z.No such device (it may have been disconnected)zEntity not foundzResource busyzOperation timed outOverflowz
Pipe errorz/System call interrupted (perhaps due to signal)zInsufficient memoryz9Operation not supported or unimplemented on this platformzUnknown errorEIOEINVALEACCESENODEVENOENTEBUSY	ETIMEDOUT	EOVERFLOWEPIPEEINTRENOMEMENOSYS         zTransfer failedzTransfer timed outzTransfer was cancelledzFor bulk/interrupt endpoints: halt condition detected (endpoint stalled). For control endpoints: control request not supported.zDevice was disconnectedz$Device sent more data than requestedEAGAINc                 ~     [         R                  U 5      R                  S5      $ ! [         a    [        U    s $ f = f)Nutf8)_liblibusb_strerrordecodeAttributeError_str_error_map)errcodes    M/home/james-whalen/.local/lib/python3.13/site-packages/usb/backend/libusb1.py	_strerrorr?      s=    '##G,33F;; 'g&&'s   #& <<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)_libusb_endpoint_descriptor   bLengthbDescriptorTypebEndpointAddressbmAttributeswMaxPacketSize	bIntervalbRefreshbSynchAddressextraextra_length N)__name__
__module____qualname____firstlineno__c_uint8c_uint16POINTERc_ubytec_int_fields___static_attributes__rM       r>   rA   rA      s^    G$"G,#W-)!8,g&W% '*''*+'	)HrY   rA   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)_libusb_interface_descriptor   rC   rD   bInterfaceNumberbAlternateSettingbNumEndpointsbInterfaceClassbInterfaceSubClassbInterfaceProtocol
iInterfaceendpointrK   rL   rM   N)rN   rO   rP   rQ   rR   rT   rA   rU   rV   rW   rX   rM   rY   r>   r[   r[      st    G$"G,#W-$g. '*"G,%w/%w/w'W%@AB''*+')HrY   r[   c                   0    \ rS rSrS\" \5      4S\4/rSrg)_libusb_interface   
altsettingnum_altsettingrM   N)	rN   rO   rP   rQ   rT   r[   rV   rW   rX   rM   rY   r>   rf   rf      s    w'CDE!5)+HrY   rf   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)_libusb_config_descriptor   rC   rD   wTotalLengthbNumInterfacesbConfigurationValueiConfigurationrF   	bMaxPower	interfacerK   rL   rM   N)rN   rO   rP   rQ   rR   rS   rT   rf   rU   rV   rW   rX   rM   rY   r>   rk   rk      sl    G$"G,*!7+&0!7+)g&g&789''*+'
)HrY   rk   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)_libusb_device_descriptor   rC   rD   bcdUSBbDeviceClassbDeviceSubClassbDeviceProtocolbMaxPacketSize0idVendor	idProduct	bcdDeviceiManufactureriProductiSerialNumberbNumConfigurationsrM   N)rN   rO   rP   rQ   rR   rS   rW   rX   rM   rY   r>   rt   rt      sy    G$"G,8$)"G,"G,"G,X&h'h' '*W% '*%w/1HrY   rt   c                   *    \ rS rSrS\4S\4S\4/rSrg)_libusb_iso_packet_descriptor   lengthactual_lengthstatusrM   N)rN   rO   rP   rQ   c_uintrV   rW   rX   rM   rY   r>   r   r      s!    6" &)5!#HrY   r   c                       \ rS rSrSrg)_libusb_transfer   rM   N)rN   rO   rP   rQ   rX   rM   rY   r>   r   r      s    rY   r   
dev_handleflagsrd   typetimeoutr   r   r   callback	user_databuffernum_iso_packetsiso_packet_descc                 p    [         U R                  -  nUR                  [        U R                  5      5      $ N)r   r   from_address	addressofr   )transfer	list_types     r>   _get_iso_packet_listr     s.    -0H0HHI!!)H,D,D"EFFrY   c           	          [         R                  S:X  a  [        nOS n[        R                  R                  SSSUU SS9$ )Nwin32)zusb-1.0z
libusb-1.0usbzcygusb-1.0.dllzLibusb 1)libusb_init)win_clsfind_librarycheck_symbols)sysplatformWinDLLr   	libloaderload_locate_library)r   r   s     r>   _load_libraryr     sI     ||w==,,0 *)9I	 - K KrY   c                    [         [        /U R                  l        [	        [         5      /U R
                  l        [         /U R                  l        [         [	        [	        [         5      5      /U R                  l        [         /U R                  l        [         U R                  l	        [	        [         5      [        /U R                  l        [         /U R                  l        [         U R                  l	        [         /U R                  l        [         [	        [        5      /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 R0                  l        [         [	        [2        5      /U R4                  l        [         [6        [	        [	        [8        5      5      /U R:                  l        [	        [8        5      /U R<                  l        [        [6        [	        [>        5      [        /U R@                  l        [        [6        [6        [B        [B        [	        [>        5      [B        [D        /U RF                  l        [        [>        [	        [>        5      [        [	        [        5      [D        /U RH                  l        [        [>        [	        [>        5      [        [	        [        5      [D        /U RJ                  l        [        /U RL                  l        [	        [N        5      U RL                  l	        [	        [N        5      /U RP                  l        [	        [N        5      /U RR                  l        [U        U S5      (       a+  [D        /U RV                  l        [X        U RV                  l	        [        [>        /U RZ                  l        S nXl.        [         [>        /U R^                  l        S nX l0        [         /U Rb                  l        [6        U Rb                  l	        [         /U Rd                  l        [6        U Rd                  l	         [         /U Rf                  l        [6        U Rf                  l	         [         /U Rj                  l        [6        U Rj                  l	         [         [	        [6        5      [        /U Rl                  l        [        U Rl                  l	        [         /U Rn                  l        g ! [h         a     Nf = f! [h         a     Nrf = f! [h         a     NCf = f)Nr9   c                 L    U R                   n[        U5       H	  nXl        M     g)zThis function is inline in the libusb.h file, so we must implement
    it.

lib.libusb_set_iso_packet_lengths.argtypes = [
                POINTER(_libusb_transfer),
                c_int
            ]
N)contentsr   r   )
transfer_pr   r   r   s       r>   libusb_set_iso_packet_lengths8_setup_prototypes.<locals>.libusb_set_iso_packet_lengths  s$     &&3H=O%+"  >rY   c	                     U R                   n	Xl        X)l        [        U	l        Xl        [        U[        5      U	l        XIl	        XYl
        Xyl        Xil        g)a  This function is inline in the libusb.h file, so we must implement
    it.

lib.libusb_fill_iso_transfer.argtypes = [
               _libusb_transfer,
               _libusb_device_handle,
               c_ubyte,
               POINTER(c_ubyte),
               c_int,
               c_int,
               _libusb_transfer_cb_fn_p,
               c_void_p,
               c_uint
           ]
N)r   r   rd   !_LIBUSB_TRANSFER_TYPE_ISOCHRONOUSr   r   castc_void_pr   r   r   r   r   )
_libusb_transfer_pr   rd   r   r   r   r   r   r   r   s
             r>   libusb_fill_iso_transfer3_setup_prototypes.<locals>.libusb_fill_iso_transfer  sM    " &..($9"vx0 #2 &$rY   )8r   rV   libusb_set_debugargtypesrT   r   libusb_exitlibusb_get_device_listlibusb_get_parentrestypelibusb_free_device_listlibusb_ref_devicelibusb_unref_device_libusb_device_handlelibusb_openlibusb_closelibusb_set_configurationlibusb_get_configurationlibusb_claim_interfacelibusb_release_interface libusb_set_interface_alt_settinglibusb_reset_devicelibusb_kernel_driver_activelibusb_detach_kernel_driverlibusb_attach_kernel_driverrt   libusb_get_device_descriptorrR   rk   libusb_get_config_descriptorlibusb_free_config_descriptorrU   "libusb_get_string_descriptor_asciirS   r   libusb_control_transferlibusb_bulk_transferlibusb_interrupt_transferlibusb_alloc_transferr   libusb_free_transferlibusb_submit_transferhasattrr9   c_char_plibusb_clear_haltr   libusb_get_max_iso_packet_sizer   libusb_get_bus_numberlibusb_get_device_addresslibusb_get_device_speedr;   libusb_get_port_numberlibusb_get_port_numberslibusb_handle_events)libr   r   s      r>   _setup_prototypesr   %  s   %-u$5C! !( 12COO !)zCOO
 GH%&+
C' '/ZC"$,C!
 H,
C( '/ZC"$,C! )1zC$ !)'2G*HICOO "7 7C .CE,JC  ) .CGEN,SC  ) ,A%*HC' .CE,JC  ) "5
C((1 )>'>C$
 "0
C##, "0
C##, "0
C##, -.1
C$$- G5671
C$$- -.2
C%%. "G	7
C**3  "G	,
C(( & )C%$ *G$EN.C!!* +0C&(/0@(AC% *11A)B(CC% ,33C+D*EC's%&&(.x$&.# '<W%EC", )F% 4<3:3<C&&/%6 $<  +3C&(/C% /7ZC!!*,3C!!)08z##,.5##+/7j""+-4""*
  0##,
 /4##+
 *2
C%1      s6   8+V% $+V5 >W %
V21V25
WW
WWc                    [        U S5      (       a  U R                  n U S:  ab  U [        :X  a  [        [	        U 5      5      eU [
        :X  a  [        [	        U 5      U [        U    5      e[        [	        U 5      U [        U    5      eU $ )Nvaluer   )	r   r   r   NotImplementedErrorr?   r   r   _libusb_errnor   )rets    r>   _checkr   R  su    sGii
Qw,,%in55((!)C.#}S7IJJ9S>3c0BCCJrY   c                   6    \ rS rSrS r\" \5      S 5       rSrg)_Deviceia  c                 8    [         R                  U5      U l        g r   )r8   r   devid)selfr   s     r>   __init___Device.__init__b  s    ++E2
rY   c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r8   r   r   r   s    r>   _finalize_object_Device._finalize_objecte  s&    4!!$$TZZ0 "rY   )r   N)	rN   rO   rP   rQ   r   r   _loggerr   rX   rM   rY   r>   r   r   a  s     3 1 1rY   r   c                   $    \ rS rSrSS jrS rSrg)_WrapDescriptoril  Nc                     X l         Xl        g r   )objdesc)r   r   r   s      r>   r   _WrapDescriptor.__init__m  s    	rY   c                 .    [        U R                  U5      $ r   )getattrr   r   names     r>   __getattr___WrapDescriptor.__getattr__p  s    tyy$''rY   )r   r   r   )rN   rO   rP   rQ   r   r   rX   rM   rY   r>   r   r   l  s    (rY   r   c                   &    \ rS rSrS rS rS rSrg)_ConfigDescriptorit  c                     Xl         g r   r   )r   r   s     r>   r   _ConfigDescriptor.__init__u  s    	rY   c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r8   r   r   r   s    r>   r   "_ConfigDescriptor._finalize_objectw  s&    4  ..tyy9 !rY   c                 B    [        U R                  R                  U5      $ r   )r   r   r   r   s     r>   r   _ConfigDescriptor.__getattr__z  s    tyy))400rY   r  N)rN   rO   rP   rQ   r   r   r   rX   rM   rY   r>   r   r   t  s    :1rY   r   c                   &    \ rS rSrS rS rS rSrg)_DevIteratori~  c                     [        [        5      " 5       U l        [        [        R                  U[        U R                  5      5      5      U l        g r   )rT   r   dev_listr   r8   r   byrefnum_devs)r   ctxs     r>   r   _DevIterator.__init__  s9    )+t::$'$)$--$8 : "rY   c              #   x   #    [        U R                  5       H  n[        U R                  U   5      v   M     g 7fr   )ranger  r   r  )r   is     r>   __iter___DevIterator.__iter__  s,     t}}%A$--*++ &s   8:c                 h    [        U S5      (       a!  [        R                  U R                  S5        g g )Nr  r   )r   r8   r   r  r   s    r>   r   _DevIterator._finalize_object  s(    4$$((: %rY   )r  r  N)rN   rO   rP   rQ   r   r  r   rX   rM   rY   r>   r	  r	  ~  s    ",;rY   r	  c                       \ rS rSrS rSrg)_DeviceHandlei  c                     [        5       U l        UR                  U l        [        [        R                  U R                  [        U R                  5      5      5        g r   )r   handler   r   r8   r   r  r   devs     r>   r   _DeviceHandle.__init__  s9    +-YY
t

E$++,>?@rY   )r   r  N)rN   rO   rP   rQ   r   rX   rM   rY   r>   r  r    s    ArY   r  c                   <    \ rS rSrS rS rS
S jrS rS rS r	S	r
g)_IsoTransferHandleri  c                    UR                  5       u  pV[        R                  UR                  U5      n[	        [
        R                  " [        U5      U-  5      5      n[        R                  U5      U l	        [        R                  U R                  UR                  U[        U[        [        5      5      UU[        U R                   5      S U5	        U R#                  Xg5        g r   )buffer_infor8   r   r   intmathceilfloatr   r   r   r  r   rT   rU   _libusb_transfer_cb_fn_p_IsoTransferHandler__callback'_IsoTransferHandler__set_packets_length)	r   r   epbuffr   addressr   packet_lengthpacket_counts	            r>   r   _IsoTransferHandler.__init__  s    **,;;J<L<LbQ499U6]]%BCD22<@%%dmm&0&7&7&(&*7GG4D&E&,&2&>t&O&*&-	/ 	!!&8rY   c                 f    [        U S5      (       a   [        R                  U R                  5        g g )Nr   )r   r8   r   r   r   s    r>   r   $_IsoTransferHandler._finalize_object  s&    4$$%%dmm4 %rY   Nc                    SU l         [        [        R                  U R                  5      5        U R                   (       d1  [        [        R                  U5      5        U R                   (       d  M1  [        U R                  R                  R                  5      nU[        :w  a&  [        R                  " [        U   U[        U   5      eU R                  5       $ )Nr   )"_IsoTransferHandler__callback_doner   r8   r   r   r   r"  r   r   r   r   r   _str_transfer_error_transfer_errno-_IsoTransferHandler__compute_size_transf_data)r   r  r   s      r>   submit_IsoTransferHandler.submit  s     t**4==9:&&4,,S12 &&& T]]++223..,,26:%.v68 8 ..00rY   c                     [        [        U R                  R                  5       Vs/ s H  oR                  PM     sn5      $ s  snf r   )sumr   r   r   r   )r   ts     r>   __compute_size_transf_data._IsoTransferHandler.__compute_size_transf_data  sE    ()?)?@B@ )*OO@B C 	C Bs   Ac                     [         R                  U R                  U5        X-  nU(       a:  [        U R                  R                  5      n[        U5      (       a
  X4S   l        g g g )Nr    )r8   r   r   r   r   lenr   )r   nr,  riso_packetss        r>   __set_packets_length(_IsoTransferHandler.__set_packets_length  sV    **4==-H.t}}/E/EFK ;)*B&  	 rY   c                     SU l         g )Nr   )r2  )r   r   s     r>   
__callback_IsoTransferHandler.__callback  s
     rY   )__callback_doner   r   )rN   rO   rP   rQ   r   r   r6  r5  r(  r'  rX   rM   rY   r>   r  r    s!    9(51C+!rY   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\" \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#g )!_LibUSBi  c                     [         R                  R                  R                  U 5        Xl        [        5       U l        [        U R                  R                  [        U R                  5      5      5        g r   )
r   backendIBackendr   r   r   r  r   r   r  )r   r   s     r>   r   _LibUSB.__init__  sG    %%d+:txx##E$((O45rY   c                     [        U S5      (       a8  U R                  (       a&  U R                  R                  U R                  5        g g g )Nr  )r   r  r   r   r   s    r>   r   _LibUSB._finalize_object  s3    4DHHHH  * %-rY   c                 ,    [        U R                  5      $ r   )r	  r  r   s    r>   enumerate_devices_LibUSB.enumerate_devices  s    DHH%%rY   c                 j    U R                   R                  UR                  5      nUc  g [        U5      $ r   )r   r   r   r   )r   r  _parents      r>   
get_parent_LibUSB.get_parent  s-    ((,,SYY7?7##rY   c                 :   [        5       n[        U R                  R                  UR                  [        U5      5      5        U R                  R                  UR                  5      Ul        U R                  R                  UR                  5      Ul	         U R                  R                  UR                  5      Ul         U R                  R                  UR                  5      Ul         [        S-  " 5       nU R                  R!                  UR                  U[#        U5      5      =oBl        US:  a  ['        US U 5      Ul        U$ S Ul         U$ ! [         a
    S Ul         Nf = f! [         a
    S Ul         Nf = f! [         a    S Ul         U$ f = f)N   r   )rt   r   r   r   r   r  r   busr   r+  r   speedr;   r   port_numberrR   r   r>  port_numberstuple)r   r  dev_descr*  writtens        r>   get_device_descriptor_LibUSB.get_device_descriptor  sY   ,.txx44SYYhPQxx55cii@88==ciiH	"!XX==ciiHHN
	(#'88#B#B399#MH 
		)aK?D.2hh.N.NIItSY/0 0G+{(-d8Gn(=% 	 )-% +  	"!HN	"  	(#'H 	(  	)$(H!	)s=   *E *E. .AF F E+*E+.FFFFc           	          [        [        5      " 5       n[        U R                  R	                  UR
                  U[        U5      5      5        [        U5      nUR                  S UR                   Ul
        U$ r   )rT   rk   r   r   r   r   r  r   rK   rL   extra_descriptors)r   r  configcfgconfig_descs        r>   get_configuration_descriptor$_LibUSB.get_configuration_descriptor  sj    /02txx44		c
$ 	% (,!!";;#;#;< 	%rY   c                 J   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	        [        Xu5      $ )NzInvalid interface index z Invalid alternate setting index )rg  rn   
IndexErrorstrrr   ri   rh   rK   rL   rc  r   )r   r  intfaltrd  re  r  	intf_descs           r>   get_interface_descriptor _LibUSB.get_interface_descriptor  s    //<%%%7#d)CDDMM$"""?#c(JKKLL%	&/oo6My7M7M&N	#y..rY   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        [        Xv5      $ )NzInvalid endpoint index )	ro  r_   rj  rk  rd   rK   rL   rc  r   )r   r  r)  rl  rm  rd  r  ep_descs           r>   get_endpoint_descriptor_LibUSB.get_endpoint_descriptor  se    ))#SA6R@AA**R.$+MM2G73G3G$H!w**rY   c                     [        U5      $ r   )r  r  s     r>   open_device_LibUSB.open_device&  s    S!!rY   c                 N    U R                   R                  UR                  5        g r   )r   r   r  r   r   s     r>   close_device_LibUSB.close_device*  s    j//0rY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  )r   r   config_values      r>   set_configuration_LibUSB.set_configuration.  s!    txx001B1BLQRrY   c                     [        5       n[        U R                  R                  UR                  [        U5      5      5        UR                  $ r   )rV   r   r   r   r  r  r   )r   r   rd  s      r>   get_configuration_LibUSB.get_configuration2  s6    txx001B1BE&MRS||rY   c                 d    [        U R                  R                  UR                  UU5      5        g r   )r   r   r   r  )r   r   rl  rh   s       r>   set_interface_altsetting _LibUSB.set_interface_altsetting8  s*    txx88 * 1 1 $ *, 	-rY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  r   r   rl  s      r>   claim_interface_LibUSB.claim_interface?  s!    txx..z/@/@$GHrY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  r  s      r>   release_interface_LibUSB.release_interfaceC  s!    txx001B1BDIJrY   c                 V    U R                  U R                  R                  UUUUU5      $ r   )_LibUSB__writer   r   r   r   r)  rl  datar   s         r>   
bulk_write_LibUSB.bulk_writeG  s.    ||DHH99&  #% 	%rY   c                 V    U R                  U R                  R                  UUUUU5      $ r   )_LibUSB__readr   r   r   r   r)  rl  r*  r   s         r>   	bulk_read_LibUSB.bulk_readP  s.    {{48888%"$ 	$rY   c                 V    U R                  U R                  R                  UUUUU5      $ r   )r  r   r   r  s         r>   
intr_write_LibUSB.intr_writeY  s.    ||DHH>>&  #% 	%rY   c                 V    U R                  U R                  R                  UUUUU5      $ r   )r  r   r   r  s         r>   	intr_read_LibUSB.intr_readb  s.    {{488==%"$ 	$rY   c                 P    [        XXE5      nUR                  U R                  5      $ r   r  r6  r  )r   r   r)  rl  r  r   handlers          r>   	iso_write_LibUSB.iso_writek  !    %jdD~~dhh''rY   c                 P    [        XXE5      nUR                  U R                  5      $ r   r  )r   r   r)  rl  r*  r   r  s          r>   iso_read_LibUSB.iso_readp  r  rY   c                     UR                  5       u  pXR                  -  n	[        U R                  R	                  UR
                  UUUU[        U[        [        5      5      U	U5      5      n
U
$ r   )	r!  itemsizer   r   r   r  r   rT   rU   )r   r   bmRequestTypebRequestwValuewIndexr  r   addrr   r   s              r>   ctrl_transfer_LibUSB.ctrl_transferu  sl     '')--TXX55(2(9(9(5(0(.(.(,T773C(D(.(/1 2 
rY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  )r   r   r)  s      r>   
clear_halt_LibUSB.clear_halt  s!    txx))**;*;R@ArY   c                 `    [        U R                  R                  UR                  5      5        g r   )r   r   r   r  ry  s     r>   reset_device_LibUSB.reset_device  s    txx++J,=,=>?rY   c                 r    [        [        U R                  R                  UR                  U5      5      5      $ r   )boolr   r   r   r  r  s      r>   is_kernel_driver_active_LibUSB.is_kernel_driver_active  s2    F488??
@Q@Q    	 rY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  r  s      r>   detach_kernel_driver_LibUSB.detach_kernel_driver  !    txx33J4E4EtLMrY   c                 b    [        U R                  R                  UR                  U5      5        g r   )r   r   r   r  r  s      r>   attach_kernel_driver_LibUSB.attach_kernel_driver  r  rY   c           
      (   UR                  5       u  pxXR                  -  n[        5       n	U" UR                  U[	        U[        [        5      5      U[        U	5      U5      n
U	R                  (       a
  U
[        :X  d  [        U
5        U	R                  $ r   r!  r  rV   r  r   rT   rU   r  r   r   r   )r   fnr   r)  rl  r  r   r+  r   transferredretvals              r>   __write_LibUSB.__write  s}    **,--gJ%%w 01$ !!f0D&D6N   rY   c           
      (   UR                  5       u  pxXR                  -  n[        5       n	U" UR                  U[	        U[        [        5      5      U[        U	5      U5      n
U	R                  (       a
  U
[        :X  d  [        U
5        U	R                  $ r   r  )r   r  r   r)  rl  r*  r   r+  r   r  r  s              r>   __read_LibUSB.__read  s}    **,--gJ%%w 01$ !!f0D&D6N   rY   )r  r   N)$rN   rO   rP   rQ   r   r   r   r   rQ  rU  r`  rg  ro  rs  rv  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX   rM   rY   r>   rI  rI    s   6 6 + + & & $ $  @   	/ 	/ + + " " 1 1 S S  
 - - I I K K % % $ $ % % $ $ ( ( ( (  . B B @ @     N N N N! !rY   rI  c                     [         c'  [        U S9q[        [        5        [	        [        5      q [         $ ! [
        R                  R                   a    [        R                  SSS9   g [         a    [        R                  SSS9   g f = f)Nr   z Error loading libusb 1.0 backendF)exc_infoT)_lib_objectr   r8   r   rI  r   r   LibraryExceptionr   error	Exceptionr  s    r>   r   r     sw     l;Dd#!$-K==)) 85I 84Hs   36 2B
*B
	B
r   )Zctypesusb.utilr   r   logging
usb._debugr   usb._interop_interopusb._objfinalizer_objfinalizererrnor#  usb.corer   r   usb.libloader
__author____all__	getLoggerr   _LIBUSB_TRANSFER_TYPE_CONTROLr   _LIBUSB_TRANSFER_TYPE_BULK_LIBUSB_TRANSFER_TYPE_INTERRUPTr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r<   __dict__getr   r   r   r   r   r   r   r   r3  r4  r?   	StructurerA   r[   rf   rk   rt   r   r   r   r   rT   r   	CFUNCTYPEr&  rR   r   rV   	py_objectrW   r   r8   r  r   r   r   AutoFinalizedObjectr   objectr   r   r	  r  r  rK  rL  rI  r   rM   rY   r>   <module>r     s  >   
  "  )   . #

2 

1
2 !" $% ! "#                '(2BK-o.*lN-Z& dENN&&ud3u~~11(DA**8T:5>>--h=5>>--h=enn(($7++K>%..,,[$?enn(($7U^^//>**8T:u~~11(DAt(         2+26 F 7C
  a%..,,UD9enn00dCenn004@%..,,UD9enn004@U^^//TB'
)) 
))9 )+	 +)	 )1	 1$#I #
 ! 	y 	-. $T+=> *,AB%w/('2$g.'0&.&.-u5(*BC)95&1/7/1NO  G K"j3Z	1m// 1(f (199 1;=44 ;AF A7!-;; 7!ts!ckk"" s!jrY   