I’ve come across a problem that I hope someone on this list has already
stumbled across or seen, or can help point me in the right direction.
Under a Multi-Processor System (does not occur in a Single Processor System)
the Callbacks that I register in the ISOCH_DESCRIPTOR stop arriving although
I can see on a FireWire Analyzer that my device is still streaming. It takes
anywhere from 5 mins - 4 hours for the streaming to stop. Which leads me to
believe it maybe a timing issue or something.
Basically, I do all of my setup for the Device (Allocate Channel, Bandwidth,
Resources, Attach Buffers etc…) and everything starts to work.
In the Callback routine, I remove the data from the Buffer, Dettach and
Reattach the buffer (I reattach it in the detach completion routine.) and
leave the callback. Errors are also checked for in the completion routines.
In terms of buffers I attach 3 buffers to the Resource Handle so when I
detach and reattach the buffers, there should still be 2 buffers in the
system for the put the data into (in Listen Mode).
When the driver stops recieving Callbacks I can see that the last Callback
did call the detach buffer routine and that the buffers were reattached to
the system (Successfully).
Originally, I had though that it was possible that maybe the Bus Driver would
stop sending out callbacks if it ran out of buffers instead of maybe
overwritting buffers or dropping data, however I changed the code to not
dettach and reattach the buffers until all of the buffers were processed
(so there was no fresh buffers for the bus driver to fill) however that did
not cause the callbacks to stop.
Additionally, I use the DESCRIPTOR_SYNCH_ON_TAG flag in ISOCH_DESCRIPTOR and
thought that maybe the Tag was getting messed up so I checked what Tag the
Camera was streaming (using the FireWire Analyzer) yet again it was sending
the correct value.
Additionally, checking to make sure that the Tag and flags value in the
Descriptor were not changed also came up empty handed.
Any Assitance or Ideas would be Greatly Appreciated.
Brad.