Hi guys,
I am experiencing a specific problem in my 1394 driver and I was
wondering if this was a known problem or just something weird going on.
I am using simultaneously and independently two isochronous transfers.
The first is a LISTEN transfer, and the second is a TALK transfer. When
both transfers are running and I stop the TALK transfer, I suddenly stop
receiving callback on the LISTEN transfer, which should still be
running. I have confirmed with an analyzer that the packets are still
traveling on the bus, but the lower driver does not notify me by calling
the callback.
When this condition happens, a workaround I have found is to perform, on
the LISTEN transfer: “STOP, DETACH_BUFFER, FREE_RESOURCES ;
ALLOCATE_RESOURCES, ATTACH_BUFFER, LISTEN”. When I do this, with the
exact same parameters as before, I begin receiving callbacks again. A
simple “STOP; LISTEN” sequence is not sufficient to wake the system up.
Notice that if I am using both transfers and I stop the LISTEN transfer
instead, then the TALK transfer keeps rolling… The problem shows up
only when it is the TALK transfer that is stopped.
This is quite frightening and I wonder if this could be a bug in the
1394 lower driver even though I’d be happier to find out that this is a
problem in my own code. Is it something any of you have experienced
before? Any suggestion as to how I could better diagnose the problem?
Mathieu Routhier