Will it stop the current xfer when FinishDataXfer() returns false?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
chca_2098406
Level 1
Level 1
First question asked First reply posted

I start a thread to recive the data.

In the thread, there are 2 buffers. BufA and BufB. When one of them is full, the other one will collect the data.

I'll do this loop with  WaitForXfer, FinishDataXfer,BeginDataXfer。

BeginDataXfer()

while(1) {

     if(flag) {

          buf=bufA

          buf_next=bufB

     }else{

          buf_nex=bufA

          buf=bufB

     }

     flag=!flag

     WaitForXfer(buf)

     FinishDataXfer(buf)

     BeginDataXfer(buf_next)

     //..........

}

I found that, Once the FinishDataXfer fails, the data you received next time is not in buf, but in buf_next.

Is that possible?

0 Likes
1 Solution
Anonymous
Not applicable

Yes, according to your code this is the expected behavior.

View solution in original post

2 Replies
Anonymous
Not applicable

Yes, according to your code this is the expected behavior.

Hi,

if it fails, of course there can't be data in the actual buffer.

Try to detect a fail and if it fails then discard the data(buffer content) of the failed transfer.

Also it is better to begin the second transfer before you wait for the first transfer to finish.

That way the driver can fill the next buffer with data as soon as the actual buffer is full and while you empty it.