I posted this message earlier but I think the subject line may not have been
clear enough; I didn’t see anyone responding
I am working on a driver for a custom device that sends data using
isochronous packets that vary in packet size. Typically the device starts by
sending out a stream of about 7600 packets that have only the CIP header (8
bytes total) then it starts sending out ‘data’ packets whose payload is 1072
bytes. These data packets may come mixed in with packets that have just the
CIP headers.
I am having problems receiving isochronous packets from this device. I have
a callback setup that should be called after receiving certain number of
bytes. This callback function is called twice (instead on once) anytime I
have different packet sizes mixed in the isoch. stream. The second ‘bogus’
call hangs my driver. On the other hand if I receive constant sized packets
(of any size) then the callback is called only once as expected and
everything works fine.
In the 1394.h file located inside “\WinDDK\2195\inc\ddk\wdm” directory,
there is a constant defined at line 1526 to be used as a flag while
allocating isochronous resource. The line reads:
#define RESOURCE_VARIABLE_ISOCH_PAYLOAD 0x00000080 // not implemented
This leads me to think that the Microsoft’s implementation of the 1394 bus
driver does not support (at least not yet) receiving isoch. packets that
vary in packet size.
Could someone in comment on my problem and point me to a solution?
Thank you very much.
–
Baskaran Subramaniam
Senior Software Engineer
Eastman Kodak Scientific Imaging Systems