USB bulk

Hi all !
i’m developing the usb device driver with the QNX 4 USB DDK
(010207.usb_sdk.tar.F )

I’m try reading bulk from the devive, but time to time any packet is
lost. (using the devu-uhci)

For example:
device sent:

0000000
1111111
2222222
3333333
4444444

I’m receive

0000000
0000000
2222222
3333333
4444444

Usually - it’s happend after new io_read call in driver.
The URB_SHORT_XFER_OK have good influence, but not solving problem.

one more detail - the result is depend pauses between usbd_io calls.

len = 16;

for (i =0; i < nbytes/len; i++){

usbd_setup_bulk( urb, URB_DIR_IN | URB_SHORT_XFER_OK,
ep_inb_buf, len);

status = usbd_io( urb, ep_in_bulk, NULL, NULL, USBD_TIME_INFINITY );

if( status == EOK ){
out_len = len;
rcopyout(p, count, ep_inb_buf, out_len);

}
else {

return ( 0 );
}

}//for i


Is anybody know - where the rake ? =)

i guess, that the reason is not in the device, because the windriver
reading data ok.

Best regards,
Yuri.

Kors <korsqnx@mail.ru> wrote:

Hi all !
i’m developing the usb device driver with the QNX 4 USB DDK
(010207.usb_sdk.tar.F )

I’m try reading bulk from the devive, but time to time any packet is
lost. (using the devu-uhci)

For example:
device sent:

0000000
1111111
2222222
3333333
4444444

I’m receive

0000000
0000000
2222222
3333333
4444444

Usually - it’s happend after new io_read call in driver.
The URB_SHORT_XFER_OK have good influence, but not solving problem.

one more detail - the result is depend pauses between usbd_io calls.

Bulk transfers are async calls, you either need to sit in loop waiting
for usbd_urb_status( ) to not return EBUSY or hook the callback routine.

len = 16;

for (i =0; i < nbytes/len; i++){

usbd_setup_bulk( urb, URB_DIR_IN | URB_SHORT_XFER_OK,
ep_inb_buf, len);

status = usbd_io( urb, ep_in_bulk, NULL, NULL, USBD_TIME_INFINITY );

if( status == EOK ){
out_len = len;
rcopyout(p, count, ep_inb_buf, out_len);

}
else {

return ( 0 );
}

}//for i



Is anybody know - where the rake ? =)

i guess, that the reason is not in the device, because the windriver
reading data ok.

Best regards,
Yuri.

In article <9f8ada$rl8$1@nntp.qnx.com>, kchiles@qnx.com says…

Subject: Re: USB bulk


Bulk transfers are async calls, you either need to sit in loop waiting
for usbd_urb_status( ) to not return EBUSY or hook the callback routine.

I’m changing the code for waiting the !EBUSY state, but
while loop with the usbd_urb_status() == EBUSY is perpetual.

Posbl my understanding of counse is not correct ?


usbd_setup_bulk( urb, URB_DIR_IN, ep_inb_buf, len);

status = usbd_io( urb, ep_in_bulk, NULL, ep_inb_buf,
USBD_TIME_INFINITY );
if( status == EOK ){

pthread_sleepon_lock( );
while( usbd_urb_status( urb, &ustatus, NULL ) == EBUSY ) {
pthread_sleepon_wait( urb );
}
pthread_sleepon_unlock( );

if ( (ustatus & USBD_USB_STATUS_MASK) != USBD_STATUS_CMP ){

}

}
else{ …


Best regards,
Yuri

Yuri Korolev <korsqnx@mail.ru> wrote:

In article <9f8ada$rl8$> 1@nntp.qnx.com> >, > kchiles@qnx.com > says…
Subject: Re: USB bulk


Bulk transfers are async calls, you either need to sit in loop waiting
for usbd_urb_status( ) to not return EBUSY or hook the callback routine.

I’m changing the code for waiting the !EBUSY state, but
while loop with the usbd_urb_status() == EBUSY is perpetual.

Posbl my understanding of counse is not correct ?



usbd_setup_bulk( urb, URB_DIR_IN, ep_inb_buf, len);

status = usbd_io( urb, ep_in_bulk, NULL, ep_inb_buf,
USBD_TIME_INFINITY );
if( status == EOK ){

pthread_sleepon_lock( );
while( usbd_urb_status( urb, &ustatus, NULL ) == EBUSY ) {
pthread_sleepon_wait( urb );
}
pthread_sleepon_unlock( );

The above code doesn’t work because you are sleeping on an address
that will never get signaled. Have you looked at the source for
the printer class driver? Take a look at the prn_bulk_wait and
prn_bulk_cbf functions.

In article <9ffo80$gnr$1@nntp.qnx.com>, kchiles@qnx.com says…

Yuri Korolev <> korsqnx@mail.ru> > wrote:


The above code doesn’t work because you are sleeping on an address
that will never get signaled. Have you looked at the source for
the printer class driver? Take a look at the prn_bulk_wait and
prn_bulk_cbf functions.

Thank for this link. I’m using it, but situation is not changing
principally.

So, the unlock function was inserted… and unlock is not happend.

===8<==============================================
// like in prn.c :wink:
void ac_ctl_read_unlock( struct usbd_urb *urb,
struct usbd_pipe *pipe, void *hdl ){

pipe = pipe, hdl = hdl;

pthread_sleepon_lock( );
pthread_sleepon_signal( urb );
pthread_sleepon_unlock( );

}

int ac_ctl_read( pid_t p, ac_t *ac, int nbytes){

for (i =0; i < nbytes/len; i++){

usbd_setup_bulk( ac->urb, URB_DIR_IN, ac->ep_inb_buf, len);
status = usbd_io( ac->urb, ac->ep_in_bulk, ac_ctl_read_unlock,
ac, USBD_TIME_INFINITY );

if( status == EOK ){
pthread_sleepon_lock( );
printf (“starting while…\n”);
while( usbd_urb_status( ac->urb, &ustatus, NULL ) == EBUSY ) {
pthread_sleepon_wait( ac->urb );
}//while

pthread_sleepon_unlock( );

printf ("\nStop while\n");
printf (“Status = %04X\n”, ustatus);
if ( (ustatus & USBD_USB_STATUS_MASK) != USBD_STATUS_CMP ){

}

}//if
else {

}//else

==8<===============================================================

PS. If I’m removing the phread_* form the while - i have nonstop loop
with EBUSY state

like:

while( usbd_urb_status( ac->urb, &ustatus, NULL ) == EBUSY ) {
ctrl_delay();
}//while

Yuri Korolev <korsqnx@mail.ru> wrote:

In article <9ffo80$gnr$> 1@nntp.qnx.com> >, > kchiles@qnx.com > says…
Yuri Korolev <> korsqnx@mail.ru> > wrote:


The above code doesn’t work because you are sleeping on an address
that will never get signaled. Have you looked at the source for
the printer class driver? Take a look at the prn_bulk_wait and
prn_bulk_cbf functions.


Thank for this link. I’m using it, but situation is not changing
principally.

Are you trying to wait for the completion within a callback handler?
If so, the usbdi interface doesn’t support it. Can you send/post
the source?

In article <9fg1lr$lvi$1@nntp.qnx.com>, kchiles@qnx.com says…

Are you trying to wait for the completion within a callback handler?
Yes, i trying
If so, the usbdi interface doesn’t support it. Can you send/post
the source?

Of course, i sent you source
dev_lib.c
ac_ctl_read_unlock()
ac_ctl_read_program()

begin 755 mctrl.rel1.0.cat.tar.gz
M’XL(""+<&SL"VUC=')L+G)E;#$N,"YC870N=&%R.P]:7/;1K+Y"OZB;?L
MD#(M4H>E+3-R2I9HFQ6)U)4G5220H$*.&)!!@ES8WM_^NGL.S#@85MQ M-KMB%!.8HZ?1T]?T](!3-XTGF[$_V=IL;KI.^LV?\&DVF_O[3QE^PR?_S6^: M^SO-O?VG.\VM+=;<VME["O5/O_D*GWF2.C&@$D?1TH=?59]_N+_)9YJ;_\:I M<^6/@XE_M_._M[>[9/YW=F'^M_9V=O:W=O=Q_I_N[.]_?W_^F?D\Y@>’!T
M=EX)0G<R]WP6^^X\3OS-Z57EF_O/?_VG(/]!9(_GH9MLNE])_K=\O>D_M_> MVWV*\K^_O7\O_U_C\P\I]]][_O7<GD9I%&]>/J]4_N&!&0A]9O</3^VCWG'; M;G</7YRT*UF/F9?,L6T.QB08F:7NU+-GP<R7-5I5<ILTYLG("\P>B3]U9I=1 M[)O%032]X-CY[U(_#IGCVLB_=FHY[A%<M"J@QU(L1C8&*V9[?NJ[:95%[LA. MV09\U=Y7*@R;I-:&X[;@&KM85@"75,$.6!6KV48-FC]Y'H21Y].7[3FI@SW& M4<RJ31LMECOD=H+SLG[0'</7X,S#X!&-6+?3WK]G!31_\ASYZ9?@-U5> M8Z/8=ZX0^L=&P:H6’9^^D<GK,*H]2PJ@)UYJ-5*HW&P1U^)Q&PVCFAU4V
M"SP@!_Q;U^A89U-X+KB9LB4D78^B%4XN]FV5:,BF<X3]@A!GO7;@W9WR&KP M'R<LITF5M;OE6\X73XBB%D,PP
8!S#B,X:H,P:4#5R?/?1^#1_4RZ:#NJN>
M^$B[</F[D_8@4UK+9P&Q(\=+.K,3/B$0(^P9P?F.%$[-VO]_KP[?"C851 M"CPU#ST@'-(K2>.Y"T_I$Q(E:-.0&GL8M``6&1/W)#=!ZEYR[GE/)8RY3N(C M?D>][K#?.WG&&HW-U1_JJCW'KVD/R9M>^DP8D@60%=@QF@B(Q<>GW\6)8)
M%K?PVL#FK-][A8KFM’WZ3+1EE26#BO8,VA<&IFG@_Q69Z14.8;\X’_QL]VOL
M6Y!@]N$#DT-FGV+?XV&Q:XT]>@1-I]#B9;]]>,R8JOCPH6
6XG.6PT=:TT\ MWI;@\;;?&;85'@()P8<9.7.LJ-/3F<L>;?(BG.8’?@BJ6B^>]C<5EAP"EI
M1(28JOC(F#D=&8TD:AE
VB-^.“C.4PL(0II^8J.Q3FW$SY[%T47L3)%3,.G MC.VX1BNF)E4FQ=M-X6T+J)@]3_0KP62LCQX?"0Q&,M>5TNL@R!E<I.9’N
M)>D3)$F1-B=&X#$(?3^:)[<ZS=>0H2\0)8/8R+
-1E&6TI_34$R*%^"%)>D MS\%JH?S0_*QI[58+$)_M!98G1PN#%)G%[G3?')[HS$UVRL-)SZ3?#)X:&’>
MP;!GKB([OV8^8J9%U?Y4D?1=S=293XRC/4_4+^M"7.(’<8A:^TEILMO#&J
MEGVM@J-'J
SGZ6’G1H.YES[0#6=OI6-G_5W]NB+W’A&=EKEL]9^P'W9C=/ MGGR.$R<EB=2"@77#P4]FL,Q[^$!%"Y2IT15C,5J!AF+:N@#6QHID?C^S?
MA5Z:A
Y#(HLQI<FBV770-=;"S6K)!WJ^^(3K$LZLA:?2[G^9U&N_V646^;C
M+2+<:N=I!6E74=9TG#Z’)4M]GU5T-3H16:UUA75-+ELAH6L\S-O/>9BW=_4P
M
\S^,F6XS):OJ0OS%GFE02:35;F3T(UIEE%J%L9KL%DXNDW]1O82"/-31.3 M0."?V>36HG^%#;<L:Q8E``;OW4LG!J-NC>;C7YXV?\.BL^/!N0W6JG/4MOOM M?YVW!T,&’X7%G_J3Q,?#.LC@EF’]62S66=)(<?C:N,“C’(TUK7.0!<#W M><$C&L_VXSB,JIQ2TM3JQO8_/?+S2<_QF5[#E]!$Q.AMMUH.G5"S[[P4YP#
MG[1V’>?[=](-(<UQH.F4I[]2>*_UXQ$(I94L$8:U]F#A\VG$P_();]Y"+H
MBW;XZB
/:V])MM?C,:blush:N@]T;C4TG/GI3)7Q4CY?WQ\(>0!JQ6XTNXWF M:96(")Q)*34G/#,H?X1’$DL7G/Y7N(;-1H:F9<&M#@#(HU-JTBH$I&%6+<^
MU1!J&P,"AC/_\D=Y&:+0)5(^9TA4(OB7U"IR_:2=NNE2L6L’G!=Q<O^
M.,(U4KPO%G[H?ELJY4!XLYV’YL)HDHE)=53J7:LL2=LB]74NL)4^&@$E,+’
M3I6[#M47M#]YFZ6+LCJ;ATEP$?J@<>KL.@H\MD$,KHI10I:;!>[+<KMPDZWK
M+#X%LD#&W5&IQWM-3<_8T4[==6LXK-<[IVYL2T#$<U%JU3YGD;:F&LKC
MD%O;?(.GZ6%,DDGRM^U(EH*?JE*NLF44"8*-YD.JBK8!UPUL!\8D.D9UWLW M4C$U6YK/*'41:**;3O=D".3\R5I&NY$MYC
9!)%5
,9L’’(M_DVO""N<[]O
M(W2F?CVKV8C]9#X!'YELN;P[8-"C572$/U;N,TO^<_,_M#0]ZOD?VSO;^_M MJ_R/;<K_V]NF?,'[_(^_+/^CK)P,MU'Y0&4+73[02J'+@F*1'?+@+G)BLD?
MT7441F-ERU
ED,^HNUHZ8:0;L!!NB=…YEE7$?!^-3[^4RF:O[.AM/GO4 M?_8<BO]IH=+\Q3X]_,D^.QR^_LW,/&'*W"_-+>&C-!J,C(:,;"=PB61A7N0G MX7?@Z,2^SZ)YS*;._V4;3^%\.O+CB@S,Y#-0,D]<V3.NX1%:5>^"6KQBK->X M07BVJ/Q,'GHV0^3!^@/X+QLSF)’+S#117Y==@V2C"]))+IT;$$>QY.,4P MBP1KC"Q6DFI!#P232"2I!_X9H.&XS]/"-'G\WSP]*);'K![F)“WAVS-P6G MR;#=F3LG,G&T94*5-R>?GYM@@Q^^E-,T/I-4S]A+\)=$M)*/K_V[JL<\/N!- MKZM<9[@#V>.A)YMSA(RKPJ@X#U7VK1'PDGE,U5*VUX(J'^E?E&'"VI['(\XO M<"'I/#SLG/S+[K=/>V_:5?9(L(8W"9*4.XYP&5ZQ4J8@R-G(3YX+AJZMX+”
MYAG3^[.'X@%!.R:/MYDSL2
#P)WY<
M)36!95%)IA6_#DG+,=‘J@’]3”?!OE0?4^R\[/0'P]P$8!06/!F(4TM)VNH
M=>RV?QI6BS.E<:JY%.)$#Q(W"D-:QXD1Q7T0A8HU;?]=W:/W6&]N#\Z*@] M&!@$-^E1N4/:%_6ZDQ;U>L42*ISK\.VG3T%[6YSR,Z2\I>E];0M`:G<+2,)] M95A7!S/>'JI<6%RD)(S5S)<.9E*[\B0HZ,P28,892_UX&D1)MG3%G5\4!R!F ML@G6T/WES6FG^QM,V0Z,L<*02$$"JX"*]0!LQ96/J+`+/PT#K\IJ2H-CLP@4 M.""TD:V\'_/P&,<AB-#B;^)6LV4=:.F#+:.>U(^JISNS`5]VJ!;\UFR"P91L M#+PSZVE%I.KI3J$)3T)M4A>>$N8ZYNM9]%A442O?-"DV3513LW$0CB-+M<.[ M'+2Q9S;A]R7XC2?SY%(?D@HT5\$BUAA>!@F#/_"4XF`$-N[2<:_(B>B$LSGH MUJES.P)G(/29Y]RR(&4WP62"<PPF\9WOL6=58,=Q)IYHWV3XO-T?=`9#4@<6 MN1T)^!6@FV]PF&M89K.9'R>@0?PPE5X&""F["@`'&&J$N`"O1VP2C'V$0>IH MMH8^0KDR&G+],],4D,2+VZ@9<4`(0ABZ/N=8F6N;*U7="C9KIAFM?`M1Z\]@ M5E-;A9*Y\5F>#VQ9*@^IZ'B!3XU!`AZ3JY$V$1%F>;'4=,X,C6Q)WI#1^456 M=%8PHRI3JFA)P1M+?%-!KK*J^6>0W[E8@)597RM+?!9&6-M(7)5P;?%G-;U4 MZ;\ZDTGD$N&DBJCS&R%L]9PJK$F*</0*4S9.;V>8ES*P.R^/7O?!TX*K_OE` M7+U55_U7_3-1IJ[ZO>%K4097K05#+.**+W6XK6PND%[D;2_QM0\R7]O*!=(8 MYP-PJ1DN+$3>30&('DX5(,`!2(-P[LO9UY'ZLI6-M7QIPQ][\9+&6KV:X!:; MZ(;1+?'4@>@M'H5VBQ3%E@,DWN1(Y8")I':UUXTB$&C:7]MOZ/2HC[C'?3:* MLOUI!P,HZ@QT3=PXF*51G$AWB<($FL>TLVU9EA^\:^GW"3RZ44!A>2@1"D5! M1?<*;Z%*;$.H%C82#'RI,0COAC]+6XU&?2.=@J-0(?C<;HJ@NMT^XZNA3M=^ M<7[RH[KOG0]E`1G@"D?%XMR"_]$#D=)WPW1"6O^`=<]/3B@5+:L-PI%1J55% M\S17EP>[""3TFEPM`&G651H;4J2KZ"P0$3.5CS*B$;8J(/$*T(5`N!HMK!$: MUZ8RMU4(6-;Y<<F'Q]&U7J,3/[Q(T7OA/*UP>O)<5.7:'ROX0ZY;B_W,)KG^ MKG<^>%':C6H*H^%#'4V<)%DPE*HO[3F8CU9UEDU*^Y_%,`%N-%G27S;)]3]U MWIV!FYX.@C_\9FEW:N'*)F;WP'OCAUZ$G(%;Z?R,B]99UM/:R^@'Z'@H@`L[ MB@;YGD!^_CP+YH97%L8[=<+YV*$U3ES6TVA0Z)TA6^RHXVET&OAQX$RZ9$A* M>^H-"MU'4'X4A>/@8AX[N+8MYXU"*SX__'_R>J1ZWVB@GJ`P"`DQ#./'\,2& M'+.<((M;Y>ZZ-%:Q/$!`Q6)G@H?JP+Z!2@#-*KT@2_GMH,FY"U8EA2`53(DY MR"%&>AKDT#YN#X[L=O?XK-?I#NL($,8"_4UC"0748H\?XTC"ZQ".#VVY\7%! M!X;>+`*2;(ZFA[`*"T9S2N)XK[L28B<01ST<#ON=%]GNJU5(\I/;KWA,46@S MC?BXC*43C(4'0W3@"7+ZW'2<+,9R9@3W\W![S'R6&T-T6]21<"@U0APSX=J6 MP:\1/;A/0_O>'W(VL25J)0]3=CNP9QJ#9L*G9=$5^Q8<K7>4'"#YN6RP&H<E M''E+?L.?W)ZU%DU*9]`#'[K7[9T/8&*LS+_4*C@VU>0JF-7D[*P$C(;=@(@% MQ@3#WR*V:HNK0\^#90\NAQ&R9%QP)-34JF%5)7@5SP1IC10?*&<2KD1!Q3H_ ME<^4"U#@-?SDO(_U^4WA4^J_+."Y;(P:;0%;5OZ$#+$6T1^)L!9O*:"UE@90 MYV3=>\L&E;R7OQ;\LF#..MW2*6,PT7<V9=*A6S%CZ$I^T81EONB"^5(CK)XN M>/ZU9DN"7#A9F>N]_ER1(N$2:@J\55`BW6&[WS\_$X*G9E"5EVD0,W=$&TK: M$!F.L&1$PE(VF3\:&"Q:;58>'EW@+F!YZOJ)2&@O[KF(15)+@RI7<A+P
M@03,?B!.>:8=!”$D1&"\8’DKGQD<UW<?P!P8_1.5-H;L9$6M](KNO&&D.Z
M$K@6E-=&5EDNK4SK:^%:#R^R;&,MHX?^NE(_&3Z#F[[WCA!6GTDMGYKK>/
M88*:U=C@DVIIUB#P_#!=FSZ29R2ZH/KHB<MGQC]80"^>2V=:;V?)]WAQ?T\ MZ13K_5RQX%C<S97K#:U7,A^M[B@;Y?K.LE7*XKXS;9VBD_?75+74/D4RSAR^ M3.0'BS/H6%ZD'.UM%=I21:[QA1_ZW,=6/;(.666>R.0PE_3@%;G6Y$:7-*;R M7%OE6Y>T5W6B#_K^]!'*)A_#E5M4NA1*:"I9#.6M!O9'B_&:T3S'Y5K8C!+X M[]+8J<JX6DT<RU&A8FHOY514*4&'*B7U:ETCSE&4QXQ*0HSJW6&X0\T"\8C
M]+A,/6<H#"ET&’,TBJ3%J3^-XEL;E@MI"0)6R9%OVDW’B>%A^$YWT.X/
M;;Q9OHT-Z@OTTBQ*#+UD"5W?RAV4U@^S%%8G1DIK_E%5&7Y’GPN#K\D&T"Z
MU"HLO^“DLSDU!AH5N1A@-.UZ#”+
+‘F^4’",[0J-‘S’(2N<&:#!%(S"7WZ4R
M*,V;FP>R&#<4A0E1FQ)X_1$W7$N;R81+:7SN8A-:M[HQ,.:U,[E3FUMB934C
MJ^5Y5^3VB;).^@@R$[1,W^@+=Y4VX+BKM$IYY@&K;^(JKF]_"$IP!7P<;V
M/-NK!I[VX#O[^$[B:[4(4)I/MD2VF&=4#Z!`\YCFK!7"03Q+A\<>.C:%_BM M-\9YZ.#F;HI;(T$:.!/TWSF858-5\_E<?-BM/3EWF?I;:W"Q6Y%26?5A4A-; M?S’TP"B1W`1<B)0L:HIL8.ZSLCO8F.!O#_#BX%JFS3CQA2NSEN’Z^I??A&SH M^A)3%<D[I2N@TWMFP^KBN&-W7YYWCP9UPRVN:^):YXS_,=N]X#)OA%“I+= MV!J"B2Q_M)M’PWMMYV3XZ/#_G%]4?’=E&>H”>E%A3M%U/";T,(GX-&Y-[C?
MW^L
E-1=L
!G#G78&=(P.:=S(@TF9V2’?X8;")$X2[-?“E%5WSHFM9)”?F
M$5W(4B(SEDHR4ZZ%GL9PH
4Q9)5?Q0J@;T?M.2RK@K&)’(IR<V!V0W-A*0Z
M’JL^.GW5MX/VZ>]KMWM’9WT!FWVH5@!S6A#]>0;’/0)<(LTS0,[::"MN@ M]ZDMZZ#<OG2""3_P8@Y!AUK4*"RO-'3N@6E$RM?5;.K97.MH$T:[(@W2(T]D M/N8JW:&E%8C4@)*J.]_P5(IEZ@3A2FTBMB@M.[E-ILF%?8V),5'(STLQ<8?R MAAX'\ET=+VP\"].V[;J(%DB9$[?]]DG[<-"FVR8\/&UO4C)<E0TZKUZ?G]7Q MV^Z\HCQ/O>[L;7]AW;#=/ZT7$PV9GGB&3A!QF'2"ZEOUK5J+>W>6XD53XW+Z MD/PJ'UW+[7L)ZN"\WY9N''I:,?5[).G#XQMJ8SN7$$A.&,[&_0&2KW'^X_+K MO/]W]^G6MCC_L;NWMRW.?^S=G__XNN<_$M!JN;,69!ARIS)2+\@5.6DT#=Q" ML\)K0$%!!N&%638/P1GP"GT]?YPK(T5EEHET6+/P8CZ9H"[*=;]-&F.O6%9V M[2?P\B-YT4RZ
./2I’/U5L&[7&-"Y]!TP;TG9&96LZ/>Y/]1=Y9>8NXJ
M@</S,.,0’IOA&Q3.[=/>L->W7U>8>@VK4:S>SIJ9#,O:TDN%Y;“L[PZ_(=:
MJVN?GD,1)K’A@&*1.)J/QV"^)>=XID9K0LEVUG6KBRSLIU$RVKJI=KYT@PC M2SOT:6WK@"D28%D[182XHX,+RNR,<A1>-DO,(IC3_RPQ1J-MU’L)85&F#^7
MM5K8S)W’,7KJ^K%ZV
$.K:XI"F!+V’[DWN38”$P[)V!(T:?11/3?3’XPBE
M’2B3@[!)![W.S#[;##LGQ-P;#F26A#R?+[=$AB,EKZM=(PW4@X<+Z;T
MR(2
^344BC3)1,0I6(,(858AVGHV3+XN=(6G(5T9N^;E*.-40$,;)T)\I MCV7@^%DHL6R[(ME6’HRF;’^T/OA#A#V$OO6K2RI7RO%C3.LR:#IV]S+8(K=
MO2)8L1U7@“JWS’C;0%4N<U;!"NW90MPU<9I=MY/+>%V&9BK-1I2"7#F MP%+<1&DPU-]"0Y@DI\46/Q)!W(ME:B-,L#6IE"*#TAD^Y%+.):_;A\?5.I0+ M'H$U'0V-W(*B@VO':,RF&$>J<@9(:B8RKL1&+P23,.)G#?12"M;DRD+7R=
M4)Y6
L<S2<;7D#G>S%9#V"2[$R3@QQ7Y<<0%@CT8’@[/0;+;+W’5#'I=5Y:]
MER!+KXXAW^,NJY>9=B”^Z+D][1CWJ]H8-%C%NOWZV8.EU_KU?6;NYL-7;
MK-6VT<IXEU76:’=A(PW2/YN59;23N2N<8PGY!$H1;IFG+$F)R)C3;LK9,
MFZ4E’J!)K/S##[U@_%_B_T=_Z>^_;._O[H+_O[NUO7W_^R]S?S?2K/[] MEV;^]U_VMN_/_W^5CUR-;&XVX]?*Q.%][]\K>
&U^]?Z_9?MG>U=]?Z/
MYM[N#OW^2W/W7O[_5^,_7QCK
7]O2!I,3['3G4:&[^'4>EH<BWAW&1\B%
M3>)KF][=
-ZLB=>!R\3NN;/>/[$N:WF8AF)[]9S12&4\3=+?,%V;EF&BO$Z
MC$;CR<)/1<LEDHGY
E’A??;&“F<4Q:E(X=7;BBP%OJXC)!:VT8IDZFY3>V-W
M]N8ZO2&FZ);ADQU-U%M^PDA+B)+#0V8DKTD6E<”\G#*Y9JITM!9M9/;R2M+(
MANL/LSYA5’;]FI3)LO&7DR;?+BM>CS@J%W\E=53+52-5C’=@\K.CZL4;>0’
M]/0<39I+TN_R[[9AEOYV&Y7;16\DI)X,>]6.9[H,U’M"F;FS+72[P41P6?
M-K5PL7QFLX$>I8MY.M+Z+T;-L_C5=ET=7;>?V$?=_IV!Y,C&,^=&/Y\UK;?
MM+O’/3S\C27]]E’GK-/N#L5+D0O%E)W^\O"H+=,J<D)?___VKKVIC2.)_RU5
MY3M,546NCWK0(;0JXPRX57@'9YY1-Z01:QW+TBB0P+E>^^TUWSVMG9U<K MM@KEER%I9W’SJ.[IV>F^]>LO#8RC@K>"/?[ALM,DIZPJ"#_A8+:*M1/SRN M\??AH=+OA2(KHY9R%#+M7T#T_Q\8]R9)6%HG!OCC%1%.TS[.^<0V@2H30
M)?A461?+7(BT^Z-]KB\*UU2!:$RY>@RY4N)+6VN8YL>6B&Q;VW.,S--^I03 M.^NDTIS&36F"&;4F-,%\!C!A'23"NU\AR]\0)6#2VE<-A18A+M8KA7*ILK'C MR&B)C7+EF<JJ!M0>SSH(+Q!F-*8_3AI+AHZMAB1DD:*0$R'6QU3.LUR!+4A
M1+HEA6<RN+2$>T04K)“0#XGX?(Y=”%&.D/Q8!1-5R"X
LZ7$C’KZNHX@\QOI
M,.O=,^#ZDF(Q$AH/))BG8V";–U7D!K>+R">8_$.TM']Y;S+*&@=Y"ETC4B M*"A=G6%9$E"GQ>\9#1IBNX’EY8R$LF4Q%I-B5A+WRRQ/BAY99R2SR(QFP;2
MI#;$ULBL4LJ\VAWS)>AA@!<IR6,U\D;FC;8WV>R/]^^""9%DOQ_TP–:OA
M0ID!C23J+MH:OX$?JISCA’M1G\3#9PB!*:.WRW9^\E/,<V0AA]NA
^AI"U
M#T^E.X:<HI&,U!#T@<$T/U[89J-GS[#,Z"75447X7[8=<I(Q4EY1"YC[.Y
MA(79A&D^B65G-;(CAJ.02;'3.9KD/DZ0@E946&NVWM7N,F[$T:VF:B5D] M%$"ZDV%ETEB7W’V4"#ZB]A!X$?+923D_WIC^]'HVU)E.T4B/#>)-;64*:/ M2%,*6MC0K&D)R6!X5E$P
>[TUM[(+K3+PQ&RDI.>1,4%T5]V.Y$A$?H4XO
M$!ZI<4(M_]S<\1&X%[>S3NX]HO^T+J_O>^S%/&3<[8N@$G7N)7KT6"C_B
M7
T>4!5R!=)5JA#P8;<Y;(X9’6^S6-W(4-VA1H?F?A
%?3–Q3V/MCOES;5
M]‘YOS="7OI%#%YN.(PT6@R>’#Z)>$1=F;3YD!B-2_F1:OMF%U)7\2,F6P.#
MDJ4>I5JG>U65G0)NJ’9’[GVUI5JFUJVI/4A5?B;7J=__6?0DQ2@M(M;:E M(2O7QD4Z&.K0_A]F+3+V>[L)?,-@4-U2-4<?W!_U>@UZ&#EU6BG0YD2[( M=KILJ.%?:W5B5L(@%!/A76)222B05E!/9\%H>12,/GC#Q23,/\&E"_ZSC'QI MV\U5%;ZX&WMP$2A)A98K[;6=DG(2C))TMJ_W3$M!E8J<YY#T#JJA7KP[#? M#:U1.1T;C#J1E3';DHD5]O-NLJ5T33,&#H@Z5)70K6)[0JTIHETV8;<FUK0. M3T#0\Q\7OYR>UQMO7];X8O&KQZP;(8_A^LJ"H0PBQ;>XKO(<+$0>_0[]RP08 M,3%VT)=
#B?SAG,AQ1%M9I:\X&"?/[8[OG’-1]\EE?LW:!&&!U<552E MO1%%B'&MSIF*81/0H:%6D8WK-<.<]TGK:ERS1Q1JKC*W.$F;"9]TL.I0]Q"< MQ0X(P%PRMVRN([3T8(/BA\^0(\%\"HVDAP<X6)4YA"K#A203B7,B.7)-*]"T M$;E1\261+D#O()O=QO'>Q:^X[\$\7#_^(R/M@:"C1.BP3A'X+L(I".2*
M%R)N44XU+“DG<UU7%)4E27”%GZ>C_YLM<"O\I3A=/ZNC2\Y%4C%;1AM[6<+=
M-==^43"HUUA+?ZI!"L(Q-EO#6Q5F4RU:P>6GP%<14GG@&R"W2/N.G6S$I6^*
MBMA4IB(&7D6F#;8ZP]‘OV;X#>='I/&"_BULR_O:6^8B0]!AKZT6W(-O45T
M(RC1D($Q<&IE/OZ;OAL<WX?S.3Y-F+O",2]MXH5!Z95,F?=AC)[)6>\V
M($3\3X%'8Y+FB.A8[U(UQ0)/V^/&;;-SXS\=\][PH2$L’OYMQYFE)+LXO@&
M\J"W/,^H:N+#<A29RO"''JL^3(-7XP!P=/F5?PEEQMQ'$0Y.#'X8[.OG6-
MW2L@$2T#QCV&Z(]7P]M^5S:KV_ZV"?6TO]W;O:?8;=3]-2,#V5:=&F
MB109O&!$'M18RX5()8R@%(2<63?$+Z$Y^%8M<#L$/,@OM:K,P_"]B]Z5F M#Z!
]<W-R3_5\M<!(#
?VEK:?
]J/$?4XC/Z-!K"$+AVG,IH6=)I1-&6G)
M&?D:4;"ENZG,
:)8#T44+T8H:,J_$ZR$H$:LVY(/EF=P*Q#V+/8H-<LFQF* M:,$9)H.6\T=0R=->NX4/5?@MG43X*HT!JJP\?6"E(PJQ/(?2,?P@:(3?O1YP M+3Q8$;CA>BPW0DC[GXP+)()YB4<6;P:UGKEA<::F0,[Q<.%*8##W3Y7T> MYHW.J+JJ;UZ4&R7U=Z5JX_>/QEP;%F,'R,$?U^N^-D[WCFAD"Q8R?/-3= M&\KXR7^G&1!41_&*"+W>%4]!Z?T*)ZLM/%B%D"=A>J*:!$7)[@2)W*.0Z!(] M+6U6$I'&5&=N3>[UG1<8%OSK^M8CX$NQ487!9HKL)=&'>RX*65V7,PFM MB)K+F8<@-(B$EPRB:R"[G)59(JL0(#U4RL031'+%*0^J+6%8OF",#J4)
MIAOJ".5"XB1FD_2’=A0SM.IV0H8Z+$!63SB@4%R-.B/S-’/!$<?OLMX’.);
M!/&-[C\3>ORIN7(@L?4IS,$]3=T7EN_K_5ZKK<_VV5RB7T_RM7EOK?/#Y"
M21,<"I,/^[:6/T:P/\V9G!)#64’KB%PENA3/M,M<)=&G)$X.K+#P6KL<B2O
MN,)%?@W0M:H8\B>O/U$I4
?3OH]9W,D’JZ
V=IJ#R4J("DG.IKKT!_==!#N
M,KMH^[^/^+_K8H^X&#’]S;2WY_U’W?T&JG[#%VG%D3ZP2NPK?1P=UUQ.O
MR;G+S
RBN
I-,0,^</W4.WN3==XH?GUL\^Q/@5M0[[=U_@Y:GX_\]M_2]7 M*QN*_S<V:/TOK2_Y_W'/?Y)[F*=W5I3[]MFK1BO4E?6"3Y[B)Q7B.N$M-Z M`4QJ*.PWDKV3<L:;,\6]+\IN+G)<IBG@M+D"2:C’98I6)AD4(Z/S=1/?=X_[
M]IV%NJQTRO]_VT^?WHS\A]/_RNME)?Y7U:JE-9+Y:7\G=G99\0V=D!G@RC
MM1Z$TJ4@9=>$J?8X(R30C9[\:4W;MYM9WFQ=_T!:CN%2[::S69K=\WNH../ MMK.0N+J\L5]0_J=%/=5W3+K_*Z^7U/D/[?^JI:W2DO_G\?E!T\WS@XN7C=^
M^2’+],V
>@;Y%-=E[[K0ZF4@=XM%VZVUAW9?CO^6&]1AFNU]VU-"[J!^ M',Y@YE^3PX/WQ9/SQYA<_;'Z"MH<=FG0+0<__XH'%\>+UEF-R[+V%’!MV
M+9B&D4NH:657\O[>T>$+3
ZXDL].+T3’UG]#P,&"@8?[!83>L4(Y6V@A#G\ M(J'VEB?MO;B0#7%G.*\=O11-B<SP0C0FW%:!.ZN&NTLH,D1(^X<K]IQHUZ[
MP!&KNI,E/6RZDR4];24;+U4A3PK5$S$,//7L
%7,0/(,!4]&LABL5@03:G[
MW4%V!Q^D6VAQH%?@;NB@]?'9VKV>3W%<)?YH)+^F+/(LD[7.KT3%XI/4\Z
M58K)?SMYVVC(PN*>=S\@YB=7*J,U
#7’Z%O(9?QYSLJONN?_7#=]OU7DM M.ZX,(CV8-N)[P#'[O-]M13VOW3E3COS>'^./.U9;9+%^?]@J[T0F59Q)&$/7 MU7*R!8_H%$8L:6%#_F:.\=K1W*-&/C#P]QSVA>BJ\7VI62WP_D]#!,[E_!\Q M?^7^;Q//_ZN;R_N_N7RLN"/[I\?'>R<'8>M/G:"1X3/':A&383\R.?R9"^4Y M/3.SG)Z%<M3JH/UD>&HM5/SX]$V-I\!_=A)H:#P)_K.34#L[YXGTQ4Y^H]+? MRQVUT"9D3W/Y.7YODGV:"&^/^Z2VZA*6(3#K937-S3^>WD#^;^\M/]<
MF//6(39V>&8C%'9C""K5872M$@-P&6X?&.%6VD'9)\MXHIUG<>+2;7 M!?.<K:;$FYA*S6XA44%G[H-0$73#73@&E2]$5/35:B2_B6W(QI7,$\ MPR59;FSO!;07.,WQ6-89N&IV\LIF*,)X8"],@)PA($T;*QEQ-3/2N?0QZ)&9 M!,DF4R2+0N!DTY!E-%4F<<S"2H[,U7Z8XBLGC>NX,AL:J)M.T9-H/!GW
MZMHE#V@I2<$WJD0<O*?U-Z?Y*’>YX-WK4O"7<*4$+%KR?LB?S%?[P?/^&3
MV2;7=N$#"DF[NR7I1<Q’[?#DS=Z18IG1Z+K9^Y!?A7Q>#LWD5WD7,)FW]ZG8
MPX,)>%RH;D#9'P*B^@;$+Y][49^?*!V-)=;>!8T[,/,Q>"8>>*7CB)6Z=A M5N*SF?FUV[_UIV-6&(YI^!7V=O!K,VK45ZFS)%CY[:2TG6%QZ"3[&<8LO^$
MKQ>V0Q<*2S8.L
$D+D[,QL!^,
,PA8E/JGB08J#'[]]ZL6&+XPF^$TM+&P: MF@1RFIDFKYN=]M70295NLJ03NH4D3+HD7E+F@U,F$=7,M'D;0YQ.VGRS),XE M<4XBSMN4J#,R<DZ-%VZ][@[0/7;H%R,1V&3+837)>TV’%8#('ZP&H]8XG!
M[2%DBD7A#[WE%)8H7MBPPT’GS[X3>'QF[%QX’CV7X1$1Z$SJQ0#[PO@(,HH=
M)6*R4/FG:%
@B(#@.@!-</Y)84E2@R$S3+C#]MLN1BE0MR9(5>^3+Y"/:= M55,NAFF2W?>V(7*&7]$9@K;@;E#$WVGC!(:!\DW70"BI[V^G/(UQ[IH<Y2
MX0])R-D’8))!<V@XY@:=)>S(%;RU>!YT]8[WXM)CA<%.@&$0;!_HW&,BI(7J
M)1SOY&55/$HP’&#>+#-?[(=!;GG@/X7<’-70;#_6=#^K]X]?WYI;6"A=:
ML^“5.BU2Y+5/P[7-5D8H”
]D#KBZ8RJJ8!!"/2[P('7"!P.>9?"1A7402%(
M6$“2N”\303$("1?W:[1=1NM\2^AJR7'.ZP@B])_)S!;SI^[BP_#@#.T&
MBN/\M<2-TS<,'AM$#(/[77@4N99X&.39:,QK[#?@&472^N6Y3=+Q2XD:?5Z
MEY/T!6^F?,-M["OB0K=.#-/IG#_36F>
>90:=00Y%VS60=PB-&&:F6,*1>M,
M7\BMJ$T$2N?LMPG1RB?TW&]V&H@+>HW8[4O0UB5HZ
*SR/9
<[+K6Q)^]]J
JJ4SVO^4E_L?WZ
?O2.9SH?^WEO_G:5@6’Z6G^7G’__Y/^^,X(X]```
end

Yuri Korolev <korsqnx@mail.ru> wrote:

In article <9fg1lr$lvi$> 1@nntp.qnx.com> >, > kchiles@qnx.com > says…

Are you trying to wait for the completion within a callback handler?
Yes, i trying
If so, the usbdi interface doesn’t support it. Can you send/post
the source?


Of course, i sent you source
dev_lib.c
ac_ctl_read_unlock()
ac_ctl_read_program()

It looks like you are hitting the urb reuse bug. This has been
fixed internally and is currently going through QA. You should
be able to work around the problem by allocating separate urbs
for the pipes.

In article <9flhpb$att$1@nntp.qnx.com>, kchiles@qnx.com says…

It looks like you are hitting the urb reuse bug. This has been
fixed internally and is currently going through QA. You should
be able to work around the problem by allocating separate urbs
for the pipes.

Many thanks you, Kevin! The source was changed for separate urbs -
all fine - all work ! =)

One more question, Kevin. What are you thinking about the QSSL plans
for USB 2 support.

Best regards,
Yuri.