Only the last packet is received in BTpipe transfer


I am using BTpipe transfers and having the following issue:
If I request multiple packets, only the last packet is present in C++ software buffer.
On the other hand, Cypress MCU seems to read the 16-bit data correctly (according to logic analyzer).

Example: suppose I request 64kbyte xfer with 16kbyte packet size:

This is what should be received

Here is what the actual received buffer looks like:

I have confirmed this with different transfer sizes and different packet sizes.
Received buffer is “buf” in this function call:
ReadFromBlockPipeOut(0xa0, m_nBlockSize, pkt_len, buf);

Did anyone have similar problems with BTpipes?

This is with one call to ReadFromBlockPipeOut?

What do you mean by “packet size” and “transfer size” ?

Thanks for pointing out xfer size!
I didn’t realize there was a ‘for’ loop in the pipetest program to loop xfersize/pkt_length times.

I was wondering, besides the C++ code,
what else determines the delay between ReadFromBlockPipeOut requests?

In other words, how can I minimize delay between two consecutive ReadFromBlockPipeOut calls?

I am trying to acquire very large samples of real-time data.


There is nothing you can do to minimize the time between consecutive calls. The best effort you can make is to maximize the amount of data transferred with each call. This will reduce the time required for the overall transfer.