From 9a816f633567ffe3c390f2865db84602af69f3d4 Mon Sep 17 00:00:00 2001 From: Roel Verdult Date: Wed, 29 Apr 2009 12:57:13 +0000 Subject: [PATCH] adding libusb libs for win32 compilation --- win32/libusb/libusb.lib | Bin 0 -> 11062 bytes win32/libusb/libusb0.dll | Bin 0 -> 43520 bytes win32/libusb/libusb0_x64.dll | Bin 0 -> 43008 bytes win32/libusb/usb.h | 394 +++++++++++++++++++++++++++++++++++ 4 files changed, 394 insertions(+) create mode 100644 win32/libusb/libusb.lib create mode 100644 win32/libusb/libusb0.dll create mode 100644 win32/libusb/libusb0_x64.dll create mode 100644 win32/libusb/usb.h diff --git a/win32/libusb/libusb.lib b/win32/libusb/libusb.lib new file mode 100644 index 0000000000000000000000000000000000000000..a5d5cb4c2309bbbf9ae0153c170c354b3baeb80e GIT binary patch literal 11062 zcmcIq&2Jn<7JqhtuucFI6UR>Mc>EE60p7%!aU5y2GFd>0Faa4Ov6nRCnReXTanGoG zhFv72y`w$lob#SJdT)9@gy1li1c{|C!Y_glxt6Mtx`4|!XnP}o3(b-2tlRptH z-Pd&f2O>om!B;f5s_Ehm@}Sx8G)*rPDVn;eY4IB(MGN0*y6`@cqLura&I3}>r6-zJ z*1-oYKh|_UKsjjnGfk^s5h<#mt%_F1HO1W3TSQL5Zb*4nnQaPEiGu8Lj8&sw>7Q)h<1Q3jT-Xt22Eou70vvtY5oq{ zamR6PefaT5d;8A2?|t&8y;~pef3)Ycyn|kNaG4zE_NTkMSpoXHki>o3k<1FvfuDDzxr#0}hfQ&%UlEQ4mc zLD1`TWpx>5o;+8~;+n_Ojkezn+AZfeG{c@?uw01QLD8Xiw-?mAUfWD?4x4ovt-5#Y zMA(P*Mm+B+Cd&tI%dLlQS|f+eI;sKnRyPHb<+4WLqSWo^5sx!m-asP)=LnT*5t(PH zNKw=w=N_vVGu94tG3Qv@^F33$PH~B9dDA`Unb{ComO1qNrUN?--B3d$7%91?`-Rs? z2*w?O-E(s^|EamxOx87JB2P7CQ=Y{RYQPB3=y%1}n+v_;>@Jqj8=C!Dh^&@APQOt5# zgS}ivt)Pf?!`{KM2Uo&POmbKf9yHMvna`7Q{C1=6H(ax#SzHvbo)(quNOD;6FmPQd zC-W?2*OBkK&Cr3@>ehp9W`Sl(2an&Xas0M{Nb24M(WA3OKTQ(dUn2Se;nkyyh)(8+ zcJTgg7Ln96(akBMZx)HZMMU%d1<0;I8M03{AYN7wMsNrAsWY9MOj~i z9zdswy1t($+C?2V)`=d1I*@w;+FwK6p!>jGKsz1)ZyR_&qK;8u_@H}e$Iqzi4(dSQ zNh35$r)Y)7=q(zjH|Rxrl`haUn)No#(C_GFdWlZbB|1m*v_Km)OBd-CTBXypOfS$n zy-BarS(>0T^cqdkB(2dREzulRexq7XVDEX3NKOQ7xp7CCrA1{Xy5Y4}v{Ey1fKU;e zt>i{wqF~4Zyuf(br-piQ#nhhMOqM+_sH*wYLRdXlz`PlBr3HsZ^r|+E}Aw)gV zGqMr&f9VsQMZ|@~KWxUlcWC^^hS#ij>r0!q=nW+P4f>y9oWOgBEtC zoXYM{1!)|4DZ>_R>>-GmxY5GT@ zDNUtCh~88RmwAZ!R7$|mPNRL?L1TYeoTjHwEuPX)k80g0**@-)Sk>~C+<$Dwyno&C?RQKIm*T)BN1>syIMpNi4=^dah(OJ!)R(-updY=*(AZRXo^1#9CKi6w4QhQZq^ zSc`7~@6~*~#EEPe>@rXCn#4AzyL4vmZg9`CRnRkBQ{#5o_%VAtkI(e>U?+Mgo6%Qq z%aG5ekuw(q!ywnp*MLfDM_NLkC)3E{(qS0Pt%BY5O<^Y&fo-MC?@cjw;80KUANSw9{WFT>{?9# literal 0 HcmV?d00001 diff --git a/win32/libusb/libusb0.dll b/win32/libusb/libusb0.dll new file mode 100644 index 0000000000000000000000000000000000000000..9387bedad1d4ec91bfb903486d1ed37abccab63e GIT binary patch literal 43520 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 J;QvoP{{uEZBLe^c literal 0 HcmV?d00001 diff --git a/win32/libusb/libusb0_x64.dll b/win32/libusb/libusb0_x64.dll new file mode 100644 index 0000000000000000000000000000000000000000..c89a59fe38b5cd1a9470b75deccb26b552ac1c7e GIT binary patch literal 43008 zcmeIb33yaR)<0aG1;P?KAgzfKX(ULL#U=?52uL?{@J2ciNmx{zq)B&3hLE(qAShy> z6Q#YhqT(_$j^o0pGsCzb!!{~mkwrlPQBYiP8Ry1^8C*uAjQ00CRdu^N5OL=Hp6~xW z-}8SPZlAh!t4^Id=hUfls;YBKuUo~E8DlB9qEW^+0n*3HzklY-z*w*TTY9ne-S!XI zWN_>sP*GdwGkd&^^SsUl=4xj{L!;k3*KPI&8q9SKX8W{q^MXc~dw6YicGbnAPFOg1S ztP7HKr83;`510aGF8GRZz6#Fb0k2C1WFmGia~@_aJC(6hXmb%2JI>fcB$xw?m634t z&nde=1>L3Aao5jD$~0xLU%c64pvM zTf&JF7D#xhgx@@*_guh54+=P2!hQ1jS_xN6*d*Z`3GEV^B}|j>ONr+L33o}jM#7a6 z>Qo$-{QX!$J%6e!XP3|{VIK**NZ2mN>^~&@RKj;9JS5>B3160QgM@1(TqEJHC0r%p z?GoNBp;tnegx5(}CZQtXI0^G4%$3kAq2AA*f=$bGq~&O|Xf{w>RCsys2+$YH@LKOG^uEwZ+m@*3`t(SnlA$vRO^6D;sUG zl$EVOU2|^J3Os_rtg5Q5txZeoy2#_X$>T}GtdfR*T><$g;G0|7=&Nk>xEsb|j$G)h zuXCAQ?uB*LZgZ`(!By`z5AvX7r{!wu@VLRbz|GjOVduaXD`y_$6U92>t8oI6%j|D7 z6CEft)_fD@Yq!_i=p8HSQ2Rc&zp}cqp{8zL!0YtaHG*PUL=sHXJz>+0*te+c;8=G^LfXWas~>#~G?bV65kW1!w; zCVKEtHeep)>bzeZWo4|*u{!@d=??GDS>@xc@ka^d4{{BSNwq^aK@9H!@#nw9ccy4! zc)adKU%xPhYs`SF2uwg~=b z_!=4$8sOq{3vtHuy<6_Sj?#8G*jA6CA{^$AGvD{Ddv&QRo{}eXf9wg;$tgl?)oA;Bp?yPb; zoAvHM`$+eGvRtFr9BA+bJf23cA9IUd&A-^=#+0I~?b-FuR$HNoBz%0%YR`x9Kx`)Q zpi|}rZlBMINk!B;OSV)W^KDICgR63Gz~^>~*zgC^HQ10&n-sdNqxK2A7;t=gb*C zr@juQ=UVtoJjgf5QUIHf*q)Hsxf|@XJU1USVM3>3-hs>QtM=A;{Ec4X%OKydVPp^r z7D+&v_;iX-C*0gflYL^jx`sMGbOQ73Lbun)r}#mx;rjnLK2dI-+t0_7%Ug%ydKJlf zj#h79;_XllYS01o*>u2|3;gc6fqCY77^Zq1IrYoyMgcd5XeUFV!}GZLb)dx2#UBv3Kkl~Vht&q=@`h%VPpq^TPn>a;XqHWF>@c0N84dFr8gG(5E6O-Z zCh{r{N6bkbBX(Z*boP z`47j4=IFV8*ERV3a0@C0$+?$}HP<&fxe<+*mg7uHnXwtPp5qq$nB3?ss}IbxHMq*^ zor~=}Sn=5eeke}BgNaXXk@WVb+e<9nvBh%2GpW(Dcv^93NkfgqF6`Oa_=ZE2W*+4X z@^P=9TR0-V^Y#M`&bbJk^nfR^y6my+)lbwy{@=2x62F!V0aEadwJe+5f zc!(txWfBkGM1Fmv&n>eR9%l;qO~Mr8*B_vy9Wh1h9!1LiPOo3qBShB(+}_3V9?$#% zF`Y0pMboi-B5>0;$-{S!e!3S)hoL6WP)#wW&)itkq38MxAaKeCd^Qwbh&VVAKlfP3c16S#FARHzVb<~3g`384_uXDO$KKD=7=JouI z9-V3bZErfOuTR^s0+83aiSMkw5A<-?_9v;1vyke$xDNeKdmwOeI;7qRe8dT!N)+r_ z+%IyvTyQ_Qv~LY=x64Of5slHx1`lya zm$h&L5Vh7c@+A@7eh^=Ed)irjiOo#UD8`*Dreo&CDh)+F(0tv-HF~l4v6wbqW~iA$1zwV{&Bf;?T-0ZgrW9j(SQ4)YPo-g= zzm_N)uKK_t8z#PdGi6$pY|h+%vnzOJUOx-$~VqH~9aTyq&` zyY*;q$Zf#>3%wkI`(b zz0T;3*ZE0;{f&+01vJ6weUn`|H{Kf0uq*Wng5yG(x;8Nu!yBVPAeK5NLbRXbHzr`R z#+?ygq0=qO$OTLvTv?a-N=RMzXQyJx(B04&m{&`aM0}}JlpGf;IV0vlbjCf|D8y}QOQNR87;L)x7{slY({xC_u9EXCH5ovK>^2L!Oe?Ps-hE}DmN$Ji|+EiTu{ zynM^Bxz0l8un{9%BZkeb8R;5k!KbFsGO}i5zU5YwD{$qHa*rA18s^T=8;Nq&Zj`GY zG0akEvE3<{d46;&2_m()KrfeRye{^L+yeBclBr;U!G-5UQHa|=)9l9 zH@aY?bHr$;W!Pv?D)Eh~aibqjOZ6B_&B)O%C*jKm;P~VHNY@z#q-oC6a=5mSVKbhpEEC_U< zhvX@dkuS(yWnHFx7Q}Rf2Urb)5x_PRDd*4W$C>!5QJr+G13oMkNe4uXgE)a5=_AKi zl#q1#{?qPy8yo$V`r<(xeaHUmt`bQ6Z}E4a^JnnX$}wuj)}HQnm0w$4QCzCW^sxFO zTJq14$vJ$G&tX4Vu3R|7SQa2_Fo(K`HAmenbnGXMd(Qt#((M0;g&q3$)Ac*+8k=5j zFYo{Lot3M9|JtZsw}rE5Yxgf%8COJ4n_>1J$O_ zfhw|aOnIiiF?dTqwxk=L_Cb4*{{)(Tay#lmrKZ0;h^8#=Jh{ncf z?ng8~fn3nsEm)1d-_q~DrMH0SeG`Yy1icM0dPzTs-i>$``S@o^olT^c>!fZ6WgvB0 zjMN)}MQcYcNbRn(_rIZ)Mv6kT4%TUHy9?sAtCKQ|TUu}Hg~!*><1`}oLv>QWme$3T zxso!!%0}j^o%KOURF$6SL&%Y^7A~TTPd~9(R8k!Hn zjT_$7Mxzxjo3_88zbG{vrFik_R6GU64{k2Qqo~RHJ|E&rs0$xH*HYKpacFPT*ED<< z=O0o)cz9x&cGYYI`0B;R4X>4ihA3(mjQEfOQ`Sqh=ahwP8OXAQuQ8An*c)0jG-{f9 z44BnkO30=V2rgDwU~trQ9w37r|EQ(s6Q>dtZ z*s0)7b8IZZMg~thh6l9sBre5zxqfm&;qoz4XjsF{LqCZT>Sfaq*(sGxJNr1Sj? zL8l9Opfd%MMj}n`EL`~O11WItAKxK}zc%PzT zo}HbhglaM9Jef*pk=X`g3pEQ?X{`88jNa`^xJ=7GHemKq?Ye&xdlucOF3DL$`suN~ z$d~~d=g6_B|FjkT+h&}0LQ&tgtFLHNf8b?DtE+RGxK^T!;E*;DlW|L{qx$HgzP2H! zZOO+Jv`pg9VI#(UCI@$*y^o%+*2PfDlTZL@~ z@R*C6TVE#2;!xX))sJjQ2^>t&2&gw=@2O)_3V@lBuCDhf}OxD<;?&3y9`>dR9 z`df_~_Lq`{=^CE-Jhw1iLApIum4Pg7U3OcCk{OGdPP|Q0H3|!3RK{GZ7+ZGoX1pZt zP=BoQ^3M*ooBihn+pYdy>YL!_<*3s}r~TC(c9e3^NH5#go*F!! zj9WWZ>W_p1M9&FC6?g8)Y5L~qMbY5jQD7(+1UI95<~X*>v8=8*A!fNMSJ{xZR!C~Dbt1FvEo4$T`&RO}+YmIct!b2kHAUC9nvoVgDYL2Dwza1jH?&ekn{mUo zj@@%eZfwo@&#OePCGHWGePfmEagI46WAx{loj=b4iTyfzq%8ZS2|WnRDS_$EjGB(U z2{mkKRn${~zTnqdQtvf zEzgyzem*(f$KV*LuSZSApiWzb0+`dYklTyrUV&Vjx--%h9HAy0;W;@~CF=EsCF*=@ ziTa7{7u*{CLZ5dqAArpI9CK_aEIZ+WE+dW|cO!s^W2=ypj{)(qL;WIrlL7vW6_`0) zj&SOHA`dL9+7g8dQV*i0yAMU9o9(C;HLXUHv+=00`C1eJBR0_!xTxCGrGUacA_TAu zG*`spQAg;743xC4cwsC+JT%>W04OOmRW<7OYf;l^G}87dIt*m9>8p&sDuj%ba4-|~ z$z4(usE$PjjHGpnx*vFR;rWBwXkNbYZ^IxjrC9kLf^RBh}_>8C(Yrp^c%S zghWBCvWKtki8#Zc89~-xDFh({dmW z?l3Gn&3PCmAE(VuHqf3kTdjayMxx9PuMjP#-;b&x(-8~?dnolVKq&QX`X>J@l)f8D ztq&Nkrp~z)=(#TAE0@$y;rC|n1f)uxvkQVz-J$j3bYf*GoL)%;j?xMIXn#lHJvNyr ze>kU!gt=@d$uRCvB(70>N6~=#E?-xnINCyJKZFx5;;Z|JMR5`-X+CQiWgI93KgBZ2 ze29ZDNxUl}ktqBw^-Wqv2?48?fu6(uTq(z}IxUy?T_C1z>uWQGK&o9VkoD5S0@>$4 z7J0t2V4BAWRSBJ;MWU}zTGZ%!Y(O6F&1JigrH2@B3~Gsr*h1ACM8jREAcCH2&Y~f))7HfH2Z;8wwN>Z=dh>f=BIn9Rt?xlz zto7OiA3vO0+Q?WegJg}EGB!RRnh#v@@fjTd_RSD6mK#%A_WCcu%40b7M(XE5jK_Lv zFr2;sz+o(I)#jk#Q1+9kpby-8;TWReZ^%E4+jBl}x9&q8=Qn?HrlF1x+>2kMf@GT8 z1L?6rw&bzMHEQZuw3WaxptB~75M5Q`BgC$qKyM&48X@E1{%L)C0s{@u{-VOg++t35N;0ut`^N(>sZlS?I2rTyS zluW=};EAmo(F3yv!^(x~^_1MZ%Zb81&V&p%YE9#_;aU~VxHDSK>cn^wo|!i(HnBxn4zKPl8-%4RQx zH&N44YK{Uo*tS4dg!6Zj4WN-}SNFqtp$CO(bI#M0O&!I3E_tAjBEzP>1+Rh|)u`#; zd!kYFGac~}aPk$AK)wU6%yS$gmZilq1ouOtys-Z~qNy9OQJGLzu4oi)&yJdYKnZn+ z?w^=3ALW*)J`2rBXT(cTnx?6VsURfZJM9 zblBLu5js^;^q!*T{TKW%+R6D}QnW9?`Co#JaZ1R7nG^g6-WdPEj4Yzo3L(gRAp}Rr zndS%$(Eb3YA##}#+9=5C4x9;6P+xU~=Azss+A@?2zG5gT`Wh=*#+DL@0Aw4RSMV`G z{Ld#UQi%$D(Q2*QLn0$F*np)P7giMRpr)uWTvW(wc3LDE`Se%`{f?eF#yoL3K)?)^ zXc}}Jg`xj62={0imk<|U)982DIzb;8TNZ&J$C#&R02^DL2T?LyaPJ~Qsk*WG3ZP01 z7Z%$HRq9xZC_srC^RI>#2QGY9{7{`VVl) zF|K!lYz)V2|YAP zlF`Av5Z0m$8s=P)LQ~A4Dg8oIGNBZZVw$!U>-X5h>4E#GsR6YkdlFY}bTbWl`5I}d zdJyhLp$2urT!o4GPKM-`CN%D#K$@0T%$Ox_*ZTZ}lbpC_N;CG1ndCuPpvq2J+hKyF)ejvrMcZlRV7ORkv(XF=r)x7=3lQ{E&t?HwP1LO>KKk`Z7&VdZXmlPxMX-Y=AQ=p zQdluO1)8&H;pqHhC8~Wm7FZm~G+Fw)M@{de;|K~DVfD&BJOv_9f;&t_2dMm#Lll#t z1;X7eYFdY)aCw#BE7=o^;#4eYQU%dht38KDO)F7qB9IMEfi+ZuyLuLBdZ$(ngAUM` z^<1qw1_NUi${IHWi8Z$1Zj|1gZ7*s!u6&PH_EnYG7&R545N^m+L`}o_&1*DLZI$|J z&kffr(LsIj1jC+xp!mQ4WkOuxP~R&FO-U;Wm1mT~VwPfzVu%z1BTD910*E0(rqZEq zE5$Mf#Q|oyma(iA6wrOt^yAA!%*q@pNt*ZBXuxGV36)d|QUNtRuK}L@UVmP&&EU@o zerE`rucr3`Nz1-F{)_hL(zK|lACN|{Kbm?AVvh*gOZ~nMX0$63*Yap2cKSlDsVkU{ z$}$`wYo;Tln5h|%>If^Sn!XiPw?ttlcBigiK$||qt5>%|UgMvj`z4cbyki~i5&ztW zvN%!Emp8JlDr)*8^6~gS0zt}HOsTNxm%Lzl1R;;MMeMcc2SUK*bMo}V8#?ebI6fOx zBrTcQ33GEq>m~q-N#OjO?%_ceQDPJi+llL(v=1l+PX@)(e@TQ5Ai@#^GGo-40s*aJ zZ#HW3yhM1!`b_pMHLz+bmg6?lpKY;irazzpOPEWmd}R2|QBxX~M<5eS*!U#IM@^UF z3Fec$V0)VX(qQ{6|AoQ!#r|I7KY<14tdd z`fD`06>T*s!PlcjyOnVEuMjTy{7QIbP8o`kCz3+Nzbxd8AmfU)oz#mcsE}n4d~Hca zKJkgVLo){zi<)i)Ly9p*45%@H*I3Q5!j4iQu!U(irctJnS;W zzD2to#)%Q_l3a8_EK1XY-%SWMwI8vs+13UGm~(m93Kcn@c1yxju&K>SP6iVp4rm3A z{b((hqAaCK)VH)+L`lGCY`Fs%FfUp0s6NLEhZQq7EzbP#FCoAmfQCy-a&6PvkLf{GN7V#y9DQR{%76qI%9^fW5K)PMWkDB`)%Na))hU#IyWgcNs=thl6=A+Tj5NIC~v{) zw_N$wZ4lHK)*^mZW7&x+hzZ7S@^yrbuXvKo#bCgC?Rskfouw*sc0pNMopWM%X5GiNo`v{!aI=ghSLx4 zCgoAWBR`@24CBNvv@3NTYUgJWUVt#PE#J$%sRSK5L>1yXwAIXYXo}Dw8^p;|2rsl8 z$dKH}D`Ghfl*5&+9-6Gny-8vuxsMxw5?s!KyA-uQkDWclF$!)^L&gKq0_mR^eI(*v zjSwOxSz!?yLGOHQsQ4i2PjoL)#OLu?Pa1#&$<$bC?Q8%c-BzCS9T=1k21QLR8>#75 z9u>++rB0J3Y%sikNd;_76l!u=0A+uZeDx0tWD=ps*w|EMU{K?Dtq-R zr~Dt%ipeVI30Vpnn&>yie=T?mkv)xql7!HDFXsB zk(pD}AEjmdqOeQg^@yML4VF;X6ylu&bVN-xXerp99+0cmoHlL)1!3J4vHwI}ltX+d zrwx-P?6a9Lb=!jwI6p2x(Lv0?;xW9O3zy_%^7B(3?DghHwGpTQMQWxq z)?okVKw{fO^Ac(H65uCEVh=V;`|H1WGe;@*$EHU8*Jy6As8xZu!?r1EFk(!>5|!%J zj{4_0LfEKP2H>OyeOc+NkiIPRmAeJ?(QN8h6kVvVA*4@|JLYDb&jT9L@h4G68_!!e zea^#>^d~?BEx-T$D-eMb+u*`O>!6J}7&U>Vgu05pX46+<>*3T8A%KM_#2Dk=9XfqK z^5FY2W-cXvgN9#jGHz)Y5`j_EeNM@Uqk)UGb?7;2RSHt7Bq?)1%2wW;mSb2&qp>!F zYSG@YgD27laV$JMz4Lj5oV#gh+!LSWZlPH&eu{rhkVLB(9gf1gEy6GpP0FtsTVmh+gefpgZq@baKdKlQ^Hjb6As^ z*lW!(_}?cZWEO%W1Nsnu8tA3{1`L22rhy-kQDlu!8_zwWcBb@%o_|iVX$-LWvm7Z9>`GztZn;39=j9H}bLw^4 z{aCFBw>-$e@XXd!j=*F^d5MSmHIne8id_=E^i5k`LkS7>b0ANo|N9rQ?m3@D_jbs2 zZ$F)BP1x0-_y`VaJU)WYEBqo_{%T4mtf{l60SJf4!*klui%U4SSLU>$wrvxF9j1LX z1m)m;Frivjl(22`(35xg6U6@c{8Yed=yRLKV`ERAbBU@DRydgK;^P zLsRoO2O+y3(G_k@j{08(DSyAv9R)@Gg{Ze2>0UWi$RDssO9&9q{BQ*NI_BGjGA_c zGIm}D_b<>rb@XE-#AMB7h{@W6@Q7j|k}^yPoaFf(oa98^Uv^>@2!<|9DUInu6LRRx z5`uqwcxspYy+XKV^gC*L;?G2@sg+im!s#y&AQtXhi$w5rG?0PZt;p4C{y}s_7UUm_ zIPzO%3_wF4Ce{l3X|+j!(QWMp{H ztwf6Y8dU9fkT(dR!M-wwDpR~rhtQVTKphm8)CX3a5i2Cdf$}`8RjC#$c8dC9P7^wf z#lNF=I{wt=phfjJuoPh2@P*cfKnnffYteS~HJfqEiLSP7AEm)E4O*ZV81h=JdjIB5uwcXG(7F$Lh z49LnIYU{#FIF||o;$+UOz7?^Oe7GaW(E?waU*0=Y~1ikanawF zUKSj`dM3UtN0?8D!JeK%wrm=QziuVufq`HK>rZ2xukk z-j3oSCzRxNoFcRZe@JquQRB+TfRlzn6{_u^Nd$GuQHS@X>2#8D`Q0cXNpy@$@hjt! z{PuAMzcu)Sfs^{mA9>%dOdvICYDK0xY&n`WZrEX?eb!`X+79~=&7ORm8o%|LYZY)^Sn?)MYv~lH2pb|AFi<%FDc5n(S zh_sq%LuT8*cMJ3<$~T~D4^j0!R29{_BO~%KW`z><2&P$WGKPI< zX>Yzhlz8yImgdLUs<`d|lP%2XxJ6+u&Od1*efiQppf1f8Z13h!zca3+g%~y4RgRvi zSEZGxMrf;2eL$IiC_8G({sSi!yLTmYNZyCCCDm7@K|a4BLUD{jZAW=q2zm3P*(J%R zaS%ZJ9b7i_ABQ$R#jgl#Ln6h=5ia9z$g`_jvV?@}0g?}1#tjMs^>aR=47uiY`NibLSHa61?uc#F{Ri&i7d$e5x zQ8zR%OQ-!3N&7nZSEM<8p_ey~!%5}6(9v-QWAirB)vHp*nT>aJ2d-xLVB{YdH|$a7 z?=?kD*Th=uW^AU7AF%AI6n=`LbbhNzbD}|T&|Ww%Wns16>RPOwg6-Nkw2JcJ7=EB( zygP*ICDr@z8xJg85qc$gS~qPg3W?uz%p=sqImiRTfJp2`$Cvz3&91)&tJA6A1=RV6 zZc8$nmKst5-J6ys!x)|T0sfHsO50;V9y|>#ryW74YSmMmzt4jd7#OML*CR9Hv#C2G zf#7%(uo{-QA%qkZicCT6C9`nX1e@pM;$yW`+s_NA846i}6dN z2;rs2xRUk-bzAu$)~&VWsQ&o<-(za@BE77JYNsE)viK-^3f^$|yhxJuPm_{sA<+DtR- zU1e5D^=@c&349G=v3eC|n4T-N?3iXR6`H-_KXR0yVIMlc*ab{6_F%_|7M-h0ll$?FUeZugKc(d}Un{j3*pMGf}Ty zfF&<%j~Q29%!`P%|2wG(TBy^S@z}T#d;hS1f;@+M+}Qj&s*>jB(Qi{FO4^Lm_FxgD zXvdNorFuW z1t|=YsOcjlWdESgMVfIXg+XmQKtgc*^}uIXG8#2+mNjvRgWMP&bQ}AIQIi+>k@MkS z;YA{vE;@kG2n+FmRTN)em?;@2{~BIp&{j3r3Rt zcK$t*GAukf0N-8wee6Zp^SX>wE+(C)KNO0L9Kptj84jocs5%7K3 z6nc*B@nO@EP``?rF8LkF@i5E>Uy1cuX@kk*KgM#u4P+qLapTci3!s&kl_qF=tAf>uvbBIvU zT&_ZgVsNIEH+J;5)L6j68(Mf7U*>oZdBGPsiCqJIB0ZWW3=Jgj>dKVl(@hgt;1uRf z92J5O@&XD{SV<@Ie)1PC@@&AFzY&$c`m*3GgZfdass**)4)sg5&3{p_-QcHlvNIuu zsOdwrfsNozFnp2psOf;XrTw<8;73!@?u)(&e%1w!GS=Dg47-D~unFMdcKEGeJB|0H zmzJvg&~xz0`3UE2%fC<;toojIPSiKGD?bGGl{`4)dj?}=F&gS9M*18%Vrv?ggK+Y& zKf7rxF(e7Q9b$j>d$|j7urMj`2@qgg7R~Cr9waF;Ip_}hvz0m^k7rYK{Vhn)Uj6`s zx?2=V1JXedf{9>z^3qWxE;}%R$(Tt&f62o{zaPq&ex;;+IqIT()HDds+IId3ET+pv zF_@Y3Stu5PQ;q^D$Q7&4m~A?VIW6L}itd){=WO}<9Cq+&RH&&>jRO$tRaIO-R{|^A z`6rJF#xv~Ca9xKPIDzE=blhSlE*d9($JaBknvp__*B??fxpPK)5dS1TY|v#EX?PMIlj0F`$!-JY$i5FH3y1UPzvi}rR+sL9n6Y^K6E$0!Ps>b;0Uk#`a_?##7c{yPflj+$CFmU_i^{i%cbGzYDPNoBV5^cRG5gg=Rzt`hxR%>{JmS0t&pY`owF|G5x#4nG$H&=*pUdLG} zC%nHuzzbg#_87)sU9RK&_9LI)1Rk+}aR9~1IWMEY`po?cy)WW#ALxD2usA_ySQWJ` zpY~fp9k+v`7d=myX*Y73R7o$HjvQ1GB z@-xWhrZLRV_v~qzJaN86e18DHU!--(QvF#Y}JQ9h;J!l6Q@h4C~o_|z{dawjeB#KiCKC#iQL6PL?^%9 zIm4bc7j(2|$Dmio5r}eoHl>3te`htdBYvz#UceZPRqeUAxEDa{r^2AmPc-O9_@7## zS&F*=pJ0Cynn1?TPL+MA9FgX|Kd~Zg+DGGo&%=+ymL;0FBb#CGnf4|OBOM!7-@q>` z$L*a~e-j~F9?AFTX+I1weu<2Ra$kX%Qg&PJr8e8r~qof>FIvTz# zAu#RzBBmMLiHvJO2JI1}bkxK^r)1Q>!I>}}Nuc4>DXXsFO@N4n*v%#)h&`pmug4&( zj{M3;pA!AKLd;JnM8uMV&qvo2_fP_QMm__{p8UBhak_~7InoaJbLRN(@xJWc)M{V-y>F_pBm%)0cyp(o4tQA5JEg5Os%ajLA4+O-h-tR$f- z$R8QGe0IX$L6JDOaE;<}sU_A(!$XI=5(Gop9hLYkUraLZJwqK6lEDs6)YO#_C1`S) z_A9*=P>eqU_zWMvoLKxalbi)XEUg>H=tZbZ^z!aWqBq>d8PPn2OOppuKoT`QiF`VV z4UrPdNu=}PNAulJ+zS_7KP`C+Rypu9%UGzT$6E38u&~IAig^58?3wWcnQs}J!_`o3EpN`6eKPqVtLr86td9R1viAPFN#E&(#kqapu+|?ez-?!+3AMpBlh~h_||#R5o62yxPhHc8Dv31jVP)o z4Zo}?+U37c5`0CB;E^W~Y6m{SpR)R=ntBvz(9l!RtRd3H&+o${KZ4RZ!XrNi2#sHl zG9^Xds5^Z9@iXBT`s;B;uYv4?=mvh9_KmlV2JkP%r1(2h*KqnO04)r3yHjsObtoz; ziUe>da))w9>U`uVW3rn8`~y(<79_OK5cGnQ-mriCR4QK^cjAd*{4{im_Wxt63(yAr z7cf%Q9T;bsFbp^cG-Vm}0H90dg&z6GD8H>4 zateNL@TUg9PYN`^&>b%ViI^`2JJe=wmZJyMqiDk%F^MWTKTyksyPikRIQ?~nUX=DK zU)S!%{PHtZ#DT7k)#hP0`JB~)QA5CoL*_Vw5|NFnJMb$N+?W2pMLD05xW0r=oNC>0YWp%)Z()7)xHJCanxJA zpYqhwGL7QVP_ZS_b$2n14W<_J--svJNOH6j@e5PM@jrwLz<&TBG{d77d*b*hPc8Lm zkHa2>iVF!p9jF3+ep>4s_$_hz_n`vtp8^QYs8Wlo;`k{~Ev?cfa{LP6SC9q#3R%N* z;5WzduS5mlKMoMOzX{)J3w?`LE&!K~Q(l%$Jp4%{Z8=9^OePQ%h%S+fh1HTub=FO1{gg9^ak3J{vHNG)Cz=RD=9rHeE=7#(U^fxAfe-5eqbIZ;l$BQgH$P7Mzh zBP9M1TqGwVA-07rLu|<>`9P{R1T4at1X_l}VTBGsY}=0S<3ApZNrMtKH8rdFwMr>U z?}j$ zaOB8;o=vr;l~$Lfe0$W9d{C+0;~03bqlJ<=)+34?y14YTf zv-YeH1vTEyFYJ0HA2>Fm!a#l`-n_TWgk$ zDZMUmfl__VxMkzI)BD^5-D{RD>7Lmm$+)_8d#q2Q2}iYU99G{Q>LH5LjT^0fi;Wv+ zcPVZ;c6HdnGX4G4YkE404tcxduY@IUcN87)X4r7l30qmY#YL}q5nRK2(+@KNrQi+U zcTa!Lk9l%FD9%5Ixs`raJJLXF!+|=54g?cetEUgNb>LBDQ@(7@QS_n1Xg}%*WiLl-CEvb@R1;Fvl$G=$ z<{1+0nEny3@X-@a-*sa%+_dEfU@yR`X%`5VmPBu zVJ8hjS~gSY5mvD5XbLH;gQeC3DW%O0)Gu=&;F`@3$>i_VUP7(NB?_iEPCzKNklGB( z+h8k(XzD9eT}{21Qu-4tFRY-w8s?ai!N?;Wd>18tQ zp)HT~%ZaDy3tGTB)3dmVnx4n^7Qz6R8|PT5z_Oi0l605$MF;f)<8@8=9t_gcFQc%Y z{v%Ht&hO67ujs+fF96Kzb3EffuhyQP9#w`eNvum=Qdw4JD$6wFvfiGIDx-z5Ln^38 zTPK^rd|dw91!SxBQ3Uq{E z6jv5-t;apVD{;-h)i)&I7PNgm?)|u@kHOf58C_kOu>dfyhsV%0nRT6*T$TiyyNSM7 zh<4(431AbhRT3Jyr?Bn?X{>u*7muN566!PJeJCiXsMJf41_M{74vT2p@#Iy1YoOjjS4S<#zi7G$u@b$t)?X+=B3d$4}~S*)LHChJ!*gY_$@VEqi! zndyLNkHSSm-!#yMtD-CD1D$yp9+B4*d2yNz{dxjVI`9A|`q3{h^VIprWjolXxzKPG z?}M3eUSMDsOa$coG=k1v%($+HC#!!dOE0*Fr5mQQF0#*6R32eu%635F@wz07C|7n? zxvU{QSXRX>mQ^s5WdTQA(?owbt_!-e3o81u3kuF-7pyz)c<%$o)^tzLDj}b)LOxtp zy;%2kT|8MAC9`gZs~O3dWMCzFdZw_R=wnZBn#YjclV$tUS+)xhea}XI_Vldd7aTCP z3cb&O-W%EZ-Z(XezL0Z4I`Q&Uuj4%rbZ<@bbgk-AX2|N!vVbcKxUzsN3%Ihpz{BO& z3-U{c{CcuXujDJ~iEAY5Q&7PA81k5|Crwa5IkqgKUtL7Mh>yf~-cC2PlZJM>qMa@* zD^G6+x>C^%?WD2Hyu@}!pdAa^86In=irV2a?7@r`-I>vgF=0w$CVwAhg07jMYoX8$eB?7EqmD;6_z!6Ifh_*vGe3yzywMLAlD5;C_y z=ELK?5W9L=$VdoX}X6LQLXlU(GwF+{YjWHbt_`RI5 z!uvst{1iUO*n!@RJxU7$@}oV3GL(0pp2OJm-yko8vD$>ZUC3j|GbiBt5_y|Yx3kaV zR34uO2{%YsCE+Rwmr5u~!@kmr6h2)fERfGLB}|d<)UQRkwm{5n z;gu3vBs5FdQ^GH0`=3hKSHkTQJ|p3i60VkTsf4u>&X#bZgar~_D&aTaf8u8mWJI6Y z67G}F*Gjlr!X^plNNAVPEMc02UrIb5NVrSFH4?6rP_zpEOa6W=p`Jfgma|J}mavb6 zT_kLOK-Bn$gr7?Iu7rmq+#})35^j)it%PeN{I!IuB)nb1nu}`)%0po#)hWU z0M$)C#xCb6A4^KTsoKX|9+6T*uk>VvXd}SOoCGa?Z~aYPHj3x@*n=r}Jyd;tV>Np+ z#V09Qo`M(2(L0#fbXGaL+T)+hUj@bLK@;A5jrSWZV2`p&C*F)+>0VUl$NNrMW#yzw z{VjlaxpRZ7-VKTu_!d@s{o?JdO@y`DvlwThDTOyEF_vv8r#INz>+mWryxK>;B^Ph9 zZFJyWT!;z9^T~A$uBmumoujV74O=Gb6gLDGh!=TL1vXL7zsl{`v-xY8%IK|3^yb}X zMF~7F$BV2Q=1s11*SnCvPvlPnuYd`ib=z1-mW#K+QvpCw87sfgoX(7t$IF4 z6KzkIZxbt%Fa5HyDQr?{CEBh;fvI>eTxGd<5p0QGH%9l_bv4HOJc(p3No2KpJ)#>p zQEQ4D++C>WqY9_7M7*6!XG42+ETH#EJH2)E9yA+UMwm()U4eSpQ`C)6o_ytW@gf`hJmH?P z50a+)>t~8rb?zOD*f>AnnJnMoTa33`L4F75$t0(TUa(4>h2FE@CGj^1 zm$|)oVJ2QIS&b(FJo2)SsHKX!>iIkaUOe5)cVJi4(yQM}(AwmLTw($kfb4ygTh3q2 zT~P-v`AAfhVy@&04Dvd><<%{V`HGwH2yHkJZSoCoy$mWr@%sSIaQJnsX_ zBP${C*z7Z*+j^UyFdE$Awc$3FnpD>4OVFhmc=xzoQds#Jo1(>(di%HVApwWTEB9f{ zf4G{EKXeRZnMI6M0UjRB*v>p0+_p2e7U$s~!oq$#;8BIKl~K|p6y=_yc5wOg0nt|NB=}neaJ$fU1#o3f zM|u?eJ|}3z_3%vO1J}o(_Y|(wM-V^a8iZ>ME(Osnue<$R}j}@xYpx(9oNUWe#F)FQO3^4H5`{6*Hm2B;cCRyg6lq9 zkK%eB*KS;&;`#v>aXg77vlN!fy0ES+4bgUY)`RtA=?sw=T+H4K9yROBOzeDi0n21r z>_T=C>&LR$#jHOwvjOZ9Hjw48LF`gCnB}s|*yXXeOVVrK=}m5P1NHOq8b&97FQ>SJ zxeItIoxa5l)$t-XdF%Xcep^jLu|DB>b-lB00cJ@I%^GL5EL87ydNC)$l2I$weB$OQ z@jkms%%l8?i`!G4tbuBR0-q1Bt*4^=UObl>uvH1|&cnQtP@Hb#Z!_f>I%ZYQU0kWZ zYBu&5Q!tG48Ml?bx&@wk(G$V}y$gxl&{V{6Jb2NBSvuD8}Rt!GUS5bS!W6|{v>zmV zNRcFQBUK6Q=%_W6S)KT9-B?i< zO@rc2cMUm~z}y9OKorwee`BD!76jDLJ22fk56{X?WMKgBe;1OBvzWKk*#o^I4bT4@ zK8F7rI@x(2^=0t=H<%CA9L8=4;zU}urVp=?0t=08(UG|6fy;`E{z73BAZ<=$0;b_I z{^nGx`P3tS@eFzT&#(Np&U)a69|ryH!n>wrMS|8FA2@RVq+Y4v%btD2 z`rXz??I)M@xqI32&DO2s-g@$lXi5J?+uyV{?mE7*t!eL7Tkd<>_F~KY8H2}!zx5nn zGV#Ut@A}}o-=2;v{o^&09{X(JC;PsYML>qu9M~_dUIyeCE-tPo9{Z?!KUBVA<_~g?p9K*%Lo~>b@~WBR8!(Szh|o-)*ITFc)zK^vG+F* zn(s`SUbS;j0R3hA_w5%8+WSsVxN&^M_NCzWDh!R!_(o zxa;E=w-k+Vsy9z?&bW5l(&x*U^!aP$gd_jBBHZQWds|GW?Gth){Jw3>?+1T=+tZg% zxOMGgpT6i?GWo#!Gp?+@rOUp76*mQ=_beNK&-Y`qZmu3QX+-PVaRWjJ3zuK@;3oFN zk)roj%uc)LdF_+ipG+>=)m%KW>xN$iMjsnKHvh(chXx+Y`$x&D>&85J$IGp=-u?aZ zCm;Vy-p94;dOtP&clK*HW(*xv^69Wq1=Gr(d42w%yRS`I)B3^oTTg4dE`H?iE3TV$ z&$z8+!AmlyPI1ruA$a$*T~^=P`_o|`{O3`Qcqk2`G8FL5+(lk`~NKm_E;GE z4A-K27&`&j9lrJ2Rl>)93F$|XCSQL6d~iyWFP;S-oYLfrYchQbup4~wwK$PWK6yK? zaY!@x?@!@cjq(&X7z;&P6eC=Z%Y}AbfR|Eyfi%Sdvv6tmidaLHX^IJqh(8`e8Hz*h zLCn#FG{qi|OkivY@UH=U#s-~3dOctj;sqLZm6CC_)@zL7L); z<&%LM=@o#(u7X`hx&Uy3f;a_zQ2?L7LbNPPfSC+f_#dlPT?Y+q?F;=HHamEb1h(>>3D`T#XR&b zIl@^F_$@95IFTIH5w6r&#NOnRtG$h?P9EK`+u2kNxv{@CoU5 zz(;Qo<(~$eRf#^Jtt!A@S7Aj7=|=$vCHJYcJ1^~?>-4XlPWqM(jH}Tf;SsojXoJQn(SvBfWi(XLSMt%dn zVWNQZJhY?JWk;?LWrj4TbO~~OhgN_Vl9|)XJ&X|GXBvg59>p5d^3U1 z3yg6*7PLKrUqsyqUZ;@rlX&9ibSN=~np z(>qPJLz1P|bso~4kkU`lJ(=^o4D}m +#include + +/* + * 'interface' is defined somewhere in the Windows header files. This macro + * is deleted here to avoid conflicts and compile errors. + */ + +#ifdef interface +#undef interface +#endif + +/* + * PATH_MAX from limits.h can't be used on Windows if the dll and + * import libraries are build/used by different compilers + */ + +#define LIBUSB_PATH_MAX 512 + + +/* + * USB spec information + * + * This is all stuff grabbed from various USB specs and is pretty much + * not subject to change + */ + +/* + * Device and/or Interface Class codes + */ +#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ +#define USB_CLASS_AUDIO 1 +#define USB_CLASS_COMM 2 +#define USB_CLASS_HID 3 +#define USB_CLASS_PRINTER 7 +#define USB_CLASS_MASS_STORAGE 8 +#define USB_CLASS_HUB 9 +#define USB_CLASS_DATA 10 +#define USB_CLASS_VENDOR_SPEC 0xff + +/* + * Descriptor types + */ +#define USB_DT_DEVICE 0x01 +#define USB_DT_CONFIG 0x02 +#define USB_DT_STRING 0x03 +#define USB_DT_INTERFACE 0x04 +#define USB_DT_ENDPOINT 0x05 + +#define USB_DT_HID 0x21 +#define USB_DT_REPORT 0x22 +#define USB_DT_PHYSICAL 0x23 +#define USB_DT_HUB 0x29 + +/* + * Descriptor sizes per descriptor type + */ +#define USB_DT_DEVICE_SIZE 18 +#define USB_DT_CONFIG_SIZE 9 +#define USB_DT_INTERFACE_SIZE 9 +#define USB_DT_ENDPOINT_SIZE 7 +#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ +#define USB_DT_HUB_NONVAR_SIZE 7 + + +/* ensure byte-packed structures */ +#include + + +/* All standard descriptors have these 2 fields in common */ +struct usb_descriptor_header { + unsigned char bLength; + unsigned char bDescriptorType; +}; + +/* String descriptor */ +struct usb_string_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short wData[1]; +}; + +/* HID descriptor */ +struct usb_hid_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short bcdHID; + unsigned char bCountryCode; + unsigned char bNumDescriptors; +}; + +/* Endpoint descriptor */ +#define USB_MAXENDPOINTS 32 +struct usb_endpoint_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned char bEndpointAddress; + unsigned char bmAttributes; + unsigned short wMaxPacketSize; + unsigned char bInterval; + unsigned char bRefresh; + unsigned char bSynchAddress; + + unsigned char *extra; /* Extra descriptors */ + int extralen; +}; + +#define USB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */ +#define USB_ENDPOINT_DIR_MASK 0x80 + +#define USB_ENDPOINT_TYPE_MASK 0x03 /* in bmAttributes */ +#define USB_ENDPOINT_TYPE_CONTROL 0 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 1 +#define USB_ENDPOINT_TYPE_BULK 2 +#define USB_ENDPOINT_TYPE_INTERRUPT 3 + +/* Interface descriptor */ +#define USB_MAXINTERFACES 32 +struct usb_interface_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned char bInterfaceNumber; + unsigned char bAlternateSetting; + unsigned char bNumEndpoints; + unsigned char bInterfaceClass; + unsigned char bInterfaceSubClass; + unsigned char bInterfaceProtocol; + unsigned char iInterface; + + struct usb_endpoint_descriptor *endpoint; + + unsigned char *extra; /* Extra descriptors */ + int extralen; +}; + +#define USB_MAXALTSETTING 128 /* Hard limit */ + +struct usb_interface { + struct usb_interface_descriptor *altsetting; + + int num_altsetting; +}; + +/* Configuration descriptor information.. */ +#define USB_MAXCONFIG 8 +struct usb_config_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short wTotalLength; + unsigned char bNumInterfaces; + unsigned char bConfigurationValue; + unsigned char iConfiguration; + unsigned char bmAttributes; + unsigned char MaxPower; + + struct usb_interface *interface; + + unsigned char *extra; /* Extra descriptors */ + int extralen; +}; + +/* Device descriptor */ +struct usb_device_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short bcdUSB; + unsigned char bDeviceClass; + unsigned char bDeviceSubClass; + unsigned char bDeviceProtocol; + unsigned char bMaxPacketSize0; + unsigned short idVendor; + unsigned short idProduct; + unsigned short bcdDevice; + unsigned char iManufacturer; + unsigned char iProduct; + unsigned char iSerialNumber; + unsigned char bNumConfigurations; +}; + +struct usb_ctrl_setup { + unsigned char bRequestType; + unsigned char bRequest; + unsigned short wValue; + unsigned short wIndex; + unsigned short wLength; +}; + +/* + * Standard requests + */ +#define USB_REQ_GET_STATUS 0x00 +#define USB_REQ_CLEAR_FEATURE 0x01 +/* 0x02 is reserved */ +#define USB_REQ_SET_FEATURE 0x03 +/* 0x04 is reserved */ +#define USB_REQ_SET_ADDRESS 0x05 +#define USB_REQ_GET_DESCRIPTOR 0x06 +#define USB_REQ_SET_DESCRIPTOR 0x07 +#define USB_REQ_GET_CONFIGURATION 0x08 +#define USB_REQ_SET_CONFIGURATION 0x09 +#define USB_REQ_GET_INTERFACE 0x0A +#define USB_REQ_SET_INTERFACE 0x0B +#define USB_REQ_SYNCH_FRAME 0x0C + +#define USB_TYPE_STANDARD (0x00 << 5) +#define USB_TYPE_CLASS (0x01 << 5) +#define USB_TYPE_VENDOR (0x02 << 5) +#define USB_TYPE_RESERVED (0x03 << 5) + +#define USB_RECIP_DEVICE 0x00 +#define USB_RECIP_INTERFACE 0x01 +#define USB_RECIP_ENDPOINT 0x02 +#define USB_RECIP_OTHER 0x03 + +/* + * Various libusb API related stuff + */ + +#define USB_ENDPOINT_IN 0x80 +#define USB_ENDPOINT_OUT 0x00 + +/* Error codes */ +#define USB_ERROR_BEGIN 500000 + +/* + * This is supposed to look weird. This file is generated from autoconf + * and I didn't want to make this too complicated. + */ +#define USB_LE16_TO_CPU(x) + +/* Data types */ +/* struct usb_device; */ +/* struct usb_bus; */ + +struct usb_device { + struct usb_device *next, *prev; + + char filename[LIBUSB_PATH_MAX]; + + struct usb_bus *bus; + + struct usb_device_descriptor descriptor; + struct usb_config_descriptor *config; + + void *dev; /* Darwin support */ + + unsigned char devnum; + + unsigned char num_children; + struct usb_device **children; +}; + +struct usb_bus { + struct usb_bus *next, *prev; + + char dirname[LIBUSB_PATH_MAX]; + + struct usb_device *devices; + unsigned long location; + + struct usb_device *root_dev; +}; + +/* Version information, Windows specific */ +struct usb_version { + struct { + int major; + int minor; + int micro; + int nano; + } dll; + struct { + int major; + int minor; + int micro; + int nano; + } driver; +}; + + +struct usb_dev_handle; +typedef struct usb_dev_handle usb_dev_handle; + +/* Variables */ +#ifndef __USB_C__ +#define usb_busses usb_get_busses() +#endif + + + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Function prototypes */ + + /* usb.c */ + usb_dev_handle *usb_open(struct usb_device *dev); + int usb_close(usb_dev_handle *dev); + int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf, + size_t buflen); + int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, + size_t buflen); + + /* descriptors.c */ + int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep, + unsigned char type, unsigned char index, + void *buf, int size); + int usb_get_descriptor(usb_dev_handle *udev, unsigned char type, + unsigned char index, void *buf, int size); + + /* .c */ + int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout); + int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout); + int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout); + int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout); + int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, + int value, int index, char *bytes, int size, + int timeout); + int usb_set_configuration(usb_dev_handle *dev, int configuration); + int usb_claim_interface(usb_dev_handle *dev, int interface); + int usb_release_interface(usb_dev_handle *dev, int interface); + int usb_set_altinterface(usb_dev_handle *dev, int alternate); + int usb_resetep(usb_dev_handle *dev, unsigned int ep); + int usb_clear_halt(usb_dev_handle *dev, unsigned int ep); + int usb_reset(usb_dev_handle *dev); + + char *usb_strerror(void); + + void usb_init(void); + void usb_set_debug(int level); + int usb_find_busses(void); + int usb_find_devices(void); + struct usb_device *usb_device(usb_dev_handle *dev); + struct usb_bus *usb_get_busses(void); + + + /* Windows specific functions */ + + #define LIBUSB_HAS_INSTALL_SERVICE_NP 1 + int usb_install_service_np(void); + void CALLBACK usb_install_service_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1 + int usb_uninstall_service_np(void); + void CALLBACK usb_uninstall_service_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_INSTALL_DRIVER_NP 1 + int usb_install_driver_np(const char *inf_file); + void CALLBACK usb_install_driver_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_TOUCH_INF_FILE_NP 1 + int usb_touch_inf_file_np(const char *inf_file); + void CALLBACK usb_touch_inf_file_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_INSTALL_NEEDS_RESTART_NP 1 + int usb_install_needs_restart_np(void); + + const struct usb_version *usb_get_version(void); + + int usb_isochronous_setup_async(usb_dev_handle *dev, void **context, + unsigned char ep, int pktsize); + int usb_bulk_setup_async(usb_dev_handle *dev, void **context, + unsigned char ep); + int usb_interrupt_setup_async(usb_dev_handle *dev, void **context, + unsigned char ep); + + int usb_submit_async(void *context, char *bytes, int size); + int usb_reap_async(void *context, int timeout); + int usb_reap_async_nocancel(void *context, int timeout); + int usb_cancel_async(void *context); + int usb_free_async(void **context); + + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_H__ */ +