+
     hw  c                   s   ^ RI 5 ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RIt^ RIt^ RIHtHt ^ RItRt. RWOt]P&                  ! R4      t^ t^t^t^t^ tRXtRYtRZtR[tR\tR]tR^t R_t!R`t"Rat#Rbt$Rct%Rdt&]R]R]R	]R
]R]R]R] R]!R]"R]#R]$R]%R]&R/t'^ R]]PP                  PS                  RR4      ]]PP                  PS                  RR4      ]]PP                  PS                  RR4      ]]PP                  PS                  RR4      ]]PP                  PS                  RR4      ]]PP                  PS                  RR4      ] ]PP                  PS                  RR4      ]!]PP                  PS                  RR4      ]"]PP                  PS                  RR4      ]#]PP                  PS                  RR4      ]$]PP                  PS                  RR4      ]%]PP                  PS                  R R4      ]&R/t*^ t+^t,^t-^t.^t/^t0^t1]+R],R!]-R"].R#]/R$]0R%]1R&/t2]+^ ],]PP                  PS                  RR4      ]-]PP                  PS                  RR4      ].]PP                  PS                  R'R4      ]/]PP                  PS                  RR4      ]0]PP                  PS                  RR4      ]1]PP                  PS                  RR4      /t3R( t4 ! R) R*]54      t6 ! R+ R,]54      t7 ! R- R.]54      t8 ! R/ R0]54      t9 ! R1 R2]54      t: ! R3 R4]54      t;]<t= ! R5 R6]54      t>]?! ]>4      t@]A! R]@4      tBR7]=3R8]C3R9]C3R:]C3R;]D3R<]E3R=]E3R>]E3R?]B3R@]F3RA]<3RB]E3RC];3.]>nG        RD tHRsIRsJReRE ltKRF tLRG tM ! RH RI]
P                  4      tO ! RJ RK]P4      tQ ! RL RM]
P                  4      tR ! RN RO]
P                  4      tS ! RP RQ]P4      tT ! RR RS]
P                  4      tU ! RT RU]P                  P                  4      tXReRV ltYR# )f    )Z*N)methodtrace)USBErrorUSBTimeoutErrorzWander Lairson Costazusb.backend.libusb1z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 outZOverflowz
Pipe errorz/System call interrupted (perhaps due to signal)zInsufficient memoryz9Operation not supported or unimplemented on this platformzUnknown errorZEIOZEINVALZEACCESZENODEVZENOENTZEBUSYZ	ETIMEDOUTZ	EOVERFLOWZEPIPEZEINTRZENOMEMZENOSYSz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 requestedZEAGAINc                 s     \         P                  V 4      P                  R 4      #   \         d    \        T ,          u # i ; i)Zutf8)_liblibusb_strerrorZdecodeAttributeError_str_error_map)Zerrcode   &8/usr/lib/python3.14/site-packages/usb/backend/libusb1.py	_strerrorr
      s=    '##G,33F;; 'g&&'s   #& A Ac                   sb    ] tR t^t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# )_libusb_endpoint_descriptorbLengthbDescriptorTypeZbEndpointAddressbmAttributesZwMaxPacketSizeZ	bIntervalZbRefreshZbSynchAddressextraextra_length N)__name__
__module____qualname____firstlineno__c_uint8c_uint16POINTERc_ubytec_int_fields___static_attributes__r       r	   r   r      s^    G$"G,#W-)!8,g&W% '*''*+'	)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# )_libusb_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   r      st    G$"G,#W-$g. '*"G,%w/%w/w'W%@AB''*+')Hr   r   c                   s2    ] tR t^tR]! ]4      3R]3.tRtR# )_libusb_interface
altsettingnum_altsettingr   N)	r   r   r   r   r   r   r   r   r   r   r   r	   r!   r!      s    w'CDE!5)+Hr   r!   c                   st    ] tR t^t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# )_libusb_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$      sl    G$"G,*!7+&0!7+)g&g&789''*+'
)Hr   r$   c                   sn    ] tR 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# )_libusb_device_descriptorr   r   ZbcdUSBZbDeviceClassZbDeviceSubClassZbDeviceProtocolZbMaxPacketSize0ZidVendorZ	idProductZ	bcdDeviceZiManufacturerZiProductZiSerialNumberZbNumConfigurationsr   N)r   r   r   r   r   r   r   r   r   r   r	   r'   r'      sy    G$"G,8$)"G,"G,"G,X&h'h' '*W% '*%w/1Hr   r'   c                   s,    ] tR t^tR]3R]3R]3.tRtR# )_libusb_iso_packet_descriptorlengthactual_lengthstatusr   N)r   r   r   r   c_uintr   r   r   r   r   r	   r(   r(      s!    6" &)5!#Hr   r(   c                   s    ] tR t^tRtR# )_libusb_transferr   N)r   r   r   r   r   r   r   r	   r-   r-      s    r   r-   
dev_handleZflagsr    typetimeoutr+   r)   r*   callback	user_databuffernum_iso_packetsiso_packet_descc                 sx    \         V P                  ,          pVP                  \        V P                  4      4      # N)r(   r4   Zfrom_addressZ	addressofr5   )transferZ	list_type   & r	   _get_iso_packet_listr9     s.    -0H0HHI!!)H,D,D"EFFr   c           	      s    \         P                  R 8X  d   \        pMRp\        P                  P                  RRRVV RR7      # )Zwin32Nzcygusb-1.0.dllzLibusb 1)win_clsfind_libraryZcheck_symbols)zusb-1.0z
libusb-1.0usb)libusb_init)sysZplatformZWinDLLr<   	libloaderZload_locate_library)r;   r:   r8   r	   _load_libraryr@     sI     ||w==,,0 *)9I	 - K Kr   c                 s   \         \        .V P                  n        \	        \         4      .V P
                  n        \         .V P                  n        \         \	        \	        \         4      4      .V P                  n        \         .V P                  n        \         V P                  n	        \	        \         4      \        .V P                  n        \         .V P                  n        \         V P                  n	        \         .V P                  n        \         \	        \        4      .V P                  n        \        .V P                  n        \        \        .V P                   n        \        \	        \        4      .V P"                  n        \        \        .V P$                  n        \        \        .V P&                  n        \        \        \        .V P(                  n        \        .V P*                  n        \        \        .V P,                  n        \        \        .V P.                  n        \        \        .V P0                  n        \         \	        \2        4      .V P4                  n        \         \6        \	        \	        \8        4      4      .V P:                  n        \	        \8        4      .V P<                  n        \        \6        \	        \>        4      \        .V P@                  n        \        \6        \6        \B        \B        \	        \>        4      \B        \D        .V PF                  n        \        \>        \	        \>        4      \        \	        \        4      \D        .V PH                  n        \        \>        \	        \>        4      \        \	        \        4      \D        .V PJ                  n        \        .V PL                  n        \	        \N        4      V PL                  n	        \	        \N        4      .V PP                  n        \	        \N        4      .V PR                  n        \U        V R 4      '       d,   \D        .V PV                  n        \X        V PV                  n	        \        \>        .V PZ                  n        R pWn.        \         \>        .V P^                  n        R pW n0        \         .V Pb                  n        \6        V Pb                  n	        \         .V Pd                  n        \6        V Pd                  n	         \         .V Pf                  n        \6        V Pf                  n	         \         .V Pj                  n        \6        V Pj                  n	         \         \	        \6        4      \        .V Pl                  n        \        V Pl                  n	        \         .V Pn                  n        R#   \h         d     Li ; i  \h         d     Lui ; i  \h         d     LGi ; i)r   c                sN    V P                   p\        V4       F	  pWn        K  	  R# )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)contentsr9   r)   )Z
transfer_pr)   r7   r5   s   &&  r	   libusb_set_iso_packet_lengthsZ8_setup_prototypes.<locals>.libusb_set_iso_packet_lengths  s$     &&3H=O%+"  >r   c	                s    V P                   p	Wn        W)n        \        V	n        Wn        \        V\        4      V	n        WIn	        WYn
        Wyn        Win        R# )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)rA   r.   r    !_LIBUSB_TRANSFER_TYPE_ISOCHRONOUSr/   r0   castc_void_pr3   r)   r4   r2   r1   )
_libusb_transfer_pr.   r    r3   r)   r4   r1   r2   r0   r7   s
   &&&&&&&&& r	   libusb_fill_iso_transferZ3_setup_prototypes.<locals>.libusb_fill_iso_transfer  sM    " &..($9"vx0 #2 &$r   N)8rE   r   Zlibusb_set_debugZargtypesr   r=   libusb_exitlibusb_get_device_listlibusb_get_parentZ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_driverr'   libusb_get_device_descriptorr   r$   libusb_get_config_descriptorlibusb_free_config_descriptorr   Z"libusb_get_string_descriptor_asciir   r,   libusb_control_transferlibusb_bulk_transferlibusb_interrupt_transferlibusb_alloc_transferr-   libusb_free_transferlibusb_submit_transferhasattrr   Zc_char_plibusb_clear_haltrB   libusb_get_max_iso_packet_sizerG   libusb_get_bus_numberlibusb_get_device_addresslibusb_get_device_speedr   libusb_get_port_numberlibusb_get_port_numberslibusb_handle_events)librB   rG   s   &  r	   _setup_prototypesrm   %  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   9+V' %+V8 >W	 'V54V58WW	WWc                 s(   \        V R 4      '       d   V P                  p V ^ 8  dm   V \        8X  d   \        \	        V 4      4      hV \
        8X  d"   \        \	        V 4      V \        V ,          4      h\        \	        V 4      V \        V ,          4      hV # )value)	rc   rn   LIBUSB_ERROR_NOT_SUPPORTEDZNotImplementedErrorr
   LIBUSB_ERROR_TIMEOUTr   _libusb_errnor   )retr   r	   _checkrs   R  su    sGii
Qw,,%in55((!)C.#}S7IJJ9S>3c0BCCJr   c                   sB   a  ] tR tRt o R t]! ]4      R 4       tRtV t	R# )_Deviceia  c                s:    \         P                  V4      V n        R # r6   )r   rL   devid)selfru      &&r	   __init__Z_Device.__init__b  s    ++E2
r   c                l    \        V R 4      '       d"   \        P                  V P                  4       R# R# )ru   N)rc   r   rM   ru   rv   r   r	   _finalize_objectZ_Device._finalize_objecte  s&    4!!$$TZZ0 "r   )ru   N)
r   r   r   r   rx   r   _loggerr{   r   __classdictcell__Z__classdict__   @r	   rt   rt   a  s#     3 1 1r   rt   c                   s0   a  ] tR tRt o RR ltR tRtV tR# )_WrapDescriptoril  Nc                s    W n         Wn        R # r6   )objdesc)rv   r   r      &&&r	   rx   Z_WrapDescriptor.__init__m  s    	r   c                s.    \        V P                  V4      # r6   )getattrr   rv   Znamerw   r	   __getattr__Z_WrapDescriptor.__getattr__p  s    tyy$''r   )r   r   r6   )r   r   r   r   rx   r   r   r}   r~   r   r	   r   r   l  s     ( (r   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )_ConfigDescriptorit  c                s    Wn         R # r6   r   )rv   r   rw   r	   rx   Z_ConfigDescriptor.__init__u  s    	r   c                ry   )r   N)rc   r   r\   r   rz   r   r	   r{   Z"_ConfigDescriptor._finalize_objectw  s&    4  ..tyy9 !r   c                sB    \        V P                  P                  V4      # r6   )r   r   rA   r   rw   r	   r   Z_ConfigDescriptor.__getattr__z  s    tyy))400r   r   N)	r   r   r   r   rx   r{   r   r   r}   r~   r   r	   r   r   t  s     :1 1r   r   c                   r   )_DevIteratori~  c                s    \        \        4      ! 4       V n        \        \        P                  V\        V P                  4      4      4      V n        R # r6   )r   rE   dev_listrs   r   rI   byrefnum_devs)rv   ctxrw   r	   rx   Z_DevIterator.__init__  s9    )+t::$'$)$--$8 : "r   c              #  s   "   \        V P                  4       F!  p\        V P                  V,          4      x  K#  	  R # 5ir6   )Zranger   rt   r   )rv   ir8   r	   __iter__Z_DevIterator.__iter__  s,     t}}%A$--*++ &s   =?c                sn    \        V R 4      '       d#   \        P                  V P                  ^4       R# R# )r   N)rc   r   rK   r   rz   r   r	   r{   Z_DevIterator._finalize_object  s(    4$$((: %r   )r   r   N)	r   r   r   r   rx   r   r{   r   r}   r~   r   r	   r   r   ~  s     ",; ;r   r   c                   s&   a  ] tR tRt o R tRtV tR# )_DeviceHandlei  c                s    \        4       V n        VP                  V n        \        \        P                  V P                  \        V P                  4      4      4       R # r6   )rN   handleru   rs   r   rO   r   rv   devrw   r	   rx   Z_DeviceHandle.__init__  s9    +-YY
t

E$++,>?@r   )ru   r   N)r   r   r   r   rx   r   r}   r~   r   r	   r   r     s     A Ar   r   c                   sH   a  ] tR tRt o R tR tR
R ltR tR tR t	R	t
V tR# )_IsoTransferHandleri  c                s   VP                  4       w  rV\        P                  VP                  V4      p\	        \
        P                  ! \        V4      V,          4      4      p\        P                  V4      V n	        \        P                  V P                  VP                  V\        V\        \        4      4      VV\        V P                   4      R V4	       V P#                  Wg4       R # r6   )buffer_infor   re   ru   intmathZceilZfloatr`   r7   rG   r   rD   r   r   _libusb_transfer_cb_fn_p_IsoTransferHandler__callback'_IsoTransferHandler__set_packets_length)	rv   r.   epbuffr0   addressr)   packet_lengthZpacket_counts	   &&&&&    r	   rx   Z_IsoTransferHandler.__init__  s    **,;;J<L<LbQ499U6]]%BCD22<@%%dmm&0&7&7&(&*7GG4D&E&,&2&>t&O&*&-	/ 	!!&8r   c                ry   )r7   N)rc   r   ra   r7   rz   r   r	   r{   Z$_IsoTransferHandler._finalize_object  s&    4$$%%dmm4 %r   Nc                s   ^ V n         \        \        P                  V P                  4      4       V P                   '       g!   \        \        P                  V4      4       K2  \        V P                  P                  P                  4      pV\        8w  d/   \        P                  ! \        V,          V\        V,          4      hV P                  4       # )r    )"_IsoTransferHandler__callback_doners   r   rb   r7   rk   r   rA   r+   LIBUSB_TRANSFER_COMPLETEDr<   r   _str_transfer_error_transfer_errno-_IsoTransferHandler__compute_size_transf_data)rv   r   r+      && r	   submitZ_IsoTransferHandler.submit  s     t**4==9:&&&4,,S12T]]++223..,,26:%.v68 8 ..00r   c                s    \        \        V P                  P                  4       Uu. uF  qP                  NK  	  up4      # u upi r6   )Zsumr9   r7   rA   r*   )rv   Ztr8   r	   Z__compute_size_transf_dataZ._IsoTransferHandler.__compute_size_transf_data  sE    ()?)?@B@ )*OO@B C 	C Bs   Ac                s    \         P                  V P                  V4       W,          pV'       dB   \        V P                  P                  4      p\        V4      '       d   W4R,          n        R# R# R# )   N)r   rB   r7   r9   rA   lenr)   )rv   Znr   ZrZiso_packets   &&&  r	   Z__set_packets_lengthZ(_IsoTransferHandler.__set_packets_length  sV    **4==-H.t}}/E/EFK ;)*B&  	 r   c                s    ^V n         R# )r   N)r   )rv   r7   rw   r	   Z
__callbackZ_IsoTransferHandler.__callback  s
     r   )Z__callback_doner7   r6   )r   r   r   r   rx   r{   r   r   r   r   r   r}   r~   r   r	   r   r     s)     9(51C+! !r   r   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]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t]! ]4      R 4       t R t!R t"Rt#V t$R # )!_LibUSBi  c                s    \         P                  P                  P                  V 4       Wn        \        4       V n        \        V P                  P                  \        V P                  4      4      4       R # r6   )
r<   backendIBackendrx   rl   rE   r   rs   r=   r   )rv   rl   rw   r	   rx   Z_LibUSB.__init__  sG    %%d+:txx##E$((O45r   c                s    \        V R 4      '       d<   V P                  '       d(   V P                  P                  V P                  4       R# R# R# )r   N)rc   r   rl   rH   rz   r   r	   r{   Z_LibUSB._finalize_object  s5    4DHHHHH  * %-r   c                s,    \        V P                  4      # r6   )r   r   rz   r   r	   enumerate_devicesZ_LibUSB.enumerate_devices  s    DHH%%r   c                sn    V P                   P                  VP                  4      pVf   R # \        V4      # r6   )rl   rJ   ru   rt   )rv   r   Z_parentr   r	   
get_parentZ_LibUSB.get_parent  s-    ((,,SYY7?7##r   c                sJ   \        4       p\        V P                  P                  VP                  \        V4      4      4       V P                  P                  VP                  4      Vn        V P                  P                  VP                  4      Vn	         V P                  P                  VP                  4      Vn         V P                  P                  VP                  4      Vn         \        ^,          ! 4       pV P                  P!                  VP                  V\#        V4      4      ;qBn        V^ 8  d   \'        VR V 4      Vn        V# R Vn         V#   \         d    R Tn         Li ; i  \         d    R Tn         Li ; i  \         d    R Tn         T# i ; ir6   )r'   rs   rl   rZ   ru   r   rf   Zbusrg   r   rh   Zspeedr   ri   Zport_numberr   rj   r   Zport_numbersZtuple)rv   r   Zdev_descr   Zwrittens   &&   r	   get_device_descriptorZ_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 *E4 .A"F F E10E14F	F	F"!F"c           	     s    \        \        4      ! 4       p\        V P                  P	                  VP
                  V\        V4      4      4       \        V4      pVP                  R VP                   Vn
        V# r6   )r   r$   rs   rl   r[   ru   r   r   r   r   extra_descriptors)rv   r   configcfgZconfig_descr   r	   get_configuration_descriptorZ$_LibUSB.get_configuration_descriptor  sj    /02txx44		c
$ 	% (,!!";;#;#;< 	%r   c                sn   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	        \        Wu4      # )zInvalid interface index z Invalid alternate setting index N)r   r%   
IndexErrorstrr&   r#   r"   r   r   r   r   )rv   r   intfaltr   r   r   Z	intf_descs   &&&&&   r	   get_interface_descriptorZ _LibUSB.get_interface_descriptor  s    //<%%%7#d)CDDMM$"""?#c(JKKLL%	&/oo6My7M7M&N	#y..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        \        Wv4      # )zInvalid endpoint index N)	r   r   r   r   r    r   r   r   r   )rv   r   r   r   r   r   r   Zep_descs   &&&&&&  r	   get_endpoint_descriptorZ_LibUSB.get_endpoint_descriptor  se    ))#SA6R@AA**R.$+MM2G73G3G$H!w**r   c                s    \        V4      # r6   )r   r   rw   r	   open_deviceZ_LibUSB.open_device&  s    S!!r   c                sP    V P                   P                  VP                  4       R # r6   )rl   rP   r   rv   r.   rw   r	   close_deviceZ_LibUSB.close_device*  s    j//0r   c                d    \        V P                  P                  VP                  V4      4       R # r6   )rs   rl   rQ   r   )rv   r.   Zconfig_valuer   r	   set_configurationZ_LibUSB.set_configuration.  s!    txx001B1BLQRr   c                s    \        4       p\        V P                  P                  VP                  \        V4      4      4       VP                  # r6   )r   rs   rl   rR   r   r   rn   )rv   r.   r   r   r	   get_configurationZ_LibUSB.get_configuration2  s6    txx001B1BE&MRS||r   c                sf    \        V P                  P                  VP                  VV4      4       R # r6   )rs   rl   rU   r   )rv   r.   r   r"   s   &&&&r	   set_interface_altsettingZ _LibUSB.set_interface_altsetting8  s*    txx88 * 1 1 $ *, 	-r   c                r   r6   )rs   rl   rS   r   rv   r.   r   r   r	   claim_interfaceZ_LibUSB.claim_interface?  s!    txx..z/@/@$GHr   c                r   r6   )rs   rl   rT   r   r   r   r	   release_interfaceZ_LibUSB.release_interfaceC  s!    txx001B1BDIJr   c                V    V P                  V P                  P                  VVVVV4      # r6   )_LibUSB__writerl   r^   rv   r.   r   r   datar0      &&&&&&r	   
bulk_writeZ_LibUSB.bulk_writeG  s.    ||DHH99&  #% 	%r   c                r   r6   )_LibUSB__readrl   r^   rv   r.   r   r   r   r0   r   r	   	bulk_readZ_LibUSB.bulk_readP  s.    {{48888%"$ 	$r   c                r   r6   )r   rl   r_   r   r   r	   
intr_writeZ_LibUSB.intr_writeY  s.    ||DHH>>&  #% 	%r   c                r   r6   )r   rl   r_   r   r   r	   	intr_readZ_LibUSB.intr_readb  s.    {{488==%"$ 	$r   c                P    \        WWE4      pVP                  V P                  4      # r6   r   r   r   )rv   r.   r   r   r   r0   handler   &&&&&& r	   	iso_writeZ_LibUSB.iso_writek  !    %jdD~~dhh''r   c                r   r6   r   )rv   r.   r   r   r   r0   r   r   r	   iso_readZ_LibUSB.iso_readp  r   r   c                s    VP                  4       w  rWP                  ,          p	\        V P                  P	                  VP
                  VVVV\        V\        \        4      4      V	V4      4      p
V
# r6   )	r   itemsizers   rl   r]   r   rD   r   r   )rv   r.   ZbmRequestTypeZbRequestZwValueZwIndexr   r0   Zaddrr)   rr   s   &&&&&&&&   r	   ctrl_transferZ_LibUSB.ctrl_transferu  sl     '')--TXX55(2(9(9(5(0(.(.(,T773C(D(.(/1 2 
r   c                r   r6   )rs   rl   rd   r   )rv   r.   r   r   r	   
clear_haltZ_LibUSB.clear_halt  s!    txx))**;*;R@Ar   c                sb    \        V P                  P                  VP                  4      4       R # r6   )rs   rl   rV   r   r   rw   r	   reset_deviceZ_LibUSB.reset_device  s    txx++J,=,=>?r   c                sr    \        \        V P                  P                  VP                  V4      4      4      # r6   )Zboolrs   rl   rW   r   r   r   r	   is_kernel_driver_activeZ_LibUSB.is_kernel_driver_active  s2    F488??
@Q@Q    	 r   c                r   r6   )rs   rl   rX   r   r   r   r	   detach_kernel_driverZ_LibUSB.detach_kernel_driver  !    txx33J4E4EtLMr   c                r   r6   )rs   rl   rY   r   r   r   r	   attach_kernel_driverZ_LibUSB.attach_kernel_driver  r   r   c           
     4   VP                  4       w  rxWP                  ,          p\        4       p	V! VP                  V\	        V\        \        4      4      V\        V	4      V4      p
V	P                  '       d   V
\        8X  g   \        V
4       V	P                  # r6   r   r   r   r   rD   r   r   r   rn   rp   rs   )rv   fnr.   r   r   r   r0   r   r)   transferredretval   &&&&&&&    r	   Z__writeZ_LibUSB.__write  s    **,--gJ%%w 01$ !!!f0D&D6N   r   c           
     r   r6   r   )rv   r   r.   r   r   r   r0   r   r)   r   r   r   r	   Z__readZ_LibUSB.__read  s    **,--gJ%%w 01$ !!!f0D&D6N   r   )r   rl   N)%r   r   r   r   r   r|   rx   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~   r   r	   r   r     s    6 6 + + & & $ $  @   	/ 	/ + + " " 1 1 S S  
 - - I I K K % % $ $ % % $ $ ( ( ( (  . B B @ @     N N N N! ! !r   r   c                 s6    \         f+   \        V R7      s\        \        4       \	        \        4      s \         #   \
        P                  P                   d    \        P                  RRR7        R # \         d    \        P                  RRR7        R # i ; i)Nr;   z Error loading libusb 1.0 backendF)Zexc_infoT)_lib_objectr@   r   rm   r   r<   r?   ZLibraryExceptionr|   ZerrorZ	Exceptionr   r   r	   get_backendr     sw     l;Dd#!$-K==)) 85I 84Hs   7: 6B3B<BB)r   LIBUSB_SUCCESSLIBUSB_ERROR_IOLIBUSB_ERROR_INVALID_PARAMLIBUSB_ERROR_ACCESSLIBUSB_ERROR_NO_DEVICELIBUSB_ERROR_NOT_FOUNDLIBUSB_ERROR_BUSYrp   LIBUSB_ERROR_OVERFLOWLIBUSB_ERROR_PIPELIBUSB_ERROR_INTERRUPTEDLIBUSB_ERROR_NO_MEMro   LIBUSB_ERROR_OTHERr   LIBUSB_TRANSFER_ERRORLIBUSB_TRANSFER_TIMED_OUTLIBUSB_TRANSFER_CANCELLEDLIBUSB_TRANSFER_STALLLIBUSB_TRANSFER_NO_DEVICELIBUSB_TRANSFER_OVERFLOWr   iiiiiiiiiiiir6   )ZZctypesZusb.utilr<   r>   ZloggingZ
usb._debugr   Zusb._interopZ_interopZusb._objfinalizerZ_objfinalizerZerrnor   Zusb.corer   r   Zusb.libloaderZ
__author__Z__all__Z	getLoggerr|   Z_LIBUSB_TRANSFER_TYPE_CONTROLrC   Z_LIBUSB_TRANSFER_TYPE_BULKZ_LIBUSB_TRANSFER_TYPE_INTERRUPTr   r   r   r   r   r   r   rp   r   r   r   r   ro   r   r   Z__dict__Zgetrq   r   r   r   r   r   r   r   r   r   r
   Z	Structurer   r   r!   r$   r'   r(   rE   rN   r-   r   rF   Z	CFUNCTYPEr   r   r,   r   Z	py_objectr   r9   r   r   r@   rm   rs   ZAutoFinalizedObjectrt   Zobjectr   r   r   r   r   r   r   r   r   r   r   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r   