1394 camera driver

Hello,
i’m developing a 1394 camera driver. I use DMA transfer (attach the buffers
and provide a callback). I’m interested in getting a time stamp when the
driver finishes acquiring the image.

In order to do this, I set the
IsocDescriptor->fulFlags to Sinch_on_sy |
Descritor_time_stamp_on_ completion.

When Descritor_time_stamp_on_ completion flag is set, the 1394bus driver
fills the cycle_time member when the DMA tranfer ends (when the attached
buffer is filled).

I try to access the cycle_time member in the callback (I provided a pointer
to IsochDescriptor in the context of the callback). Inexplicably, the
1394bus driver doesn’t fill it.

I’m sure that the 1394 harware supports all flags that can be set in
fulFlags of the IsochDescriptor and also it rerturns the cycle_time member
filled when I request it specifically (IOCTL_ISOCH_QUERY_CURRENT_CYCLE_TIME
Request).

I guess it doesn’t work beacause of the way I call the 1394bus driver. I
call it as follows:

Allocate NonPagedMemory to IsochDescriptor and IRB.
Allocate a new irp.

Set up the IsochDescriptor.
Set up the callback.
Set up the IRB.
Set up the nextIrpStack.

To 1394bus:

IoSetCompletionRoutine( newIrp,
AttachCompletionRoutine,
pIsochDetachData,
TRUE,
TRUE,
TRUE
);

ntStatus = IoCallDriver(deviceExtension->StackDeviceObject, newIrp);

Have I to change something so that the 1394bus driver fills the CYCLE_TIME
member of the IsochDescriptor (at the same time that I attach the buffers)?

thanks.

Miguel,

I haven’t looked at cycle times in a long time but just did a quick
test in my driver. I too get 0s. Depending on how you interpret the
DDK documentation it could be saying that you only get cycle times if
you have set DESCRIPTOR_SYNCH_ON_TIME. However, I have a vague
recollection that I used to get cycle times when sending isochronous
data as opposed to receiving. It was so long ago, though, that I am
far from sure of this fact.

Rob
xxxxx@telusplanet.net