Re: Iyonix USB: Bulk IN endpoints



Ian Hamilton wrote:
In article <68a0345f4e.davehigton@xxxxxxxxxxxxx>, Dave Higton
<davehigton@xxxxxxxxxxxxx> wrote:
In message <5db5265f4e.james@xxxxxxxxxxxx> James Pea***
<news@xxxxxxxxxxxxxxxx> wrote:

davehigton@xxxxxxxxxxxxx wrote:

For the Iyonix, how should I request a transfer from a bulk in
(i.e. device to host) endpoint?

[Snip]

On the Iyonix stack, the only way I have found to do it is with OS_GBPB
4, having opened the pipe with short timeouts. However, I'm not sure
this is working without confusing the device.

You can check the buffer flags (Buffer_GetInfo) to determine if any data
is present. I test bit 0 (Dormant) and bit 8 which apparently equals 0 if
free>threshold, 1 if free<threshold (needs bit 2 of the buffer flags word
set - generate event on full).

If both bits are set, do the OS_GBPB transfer, flush the buffer and reset
the flags word with Buffer_ModifyFlags
(e.g. SYS "Buffer_ModifyFlags",buffer_handle%,4,&FFFFFFFE).

The trouble is that there never are any bytes waiting until the OS_GBPB
is performed. Bulk and interrupt endpoints work differently. With
interrupt mode, you can sit there waiting for them to arrive; the stack
keeps requesting them. This doesn't happen with bulk mode endpoints.
The host app has to request them.

Dave

.


Quantcast