I am developing a wince USB camera driver referring to the webcam driver code on codeplex. Driver loading is done successfully. Also usb descriptors exchange is perfomed successfully. We are supporting just the uncompressed data transfer.
To start the data transfer with the device firmware, I am performing following steps
- Setting interface to specify alternate settings for the interface to be used for isochronous transfer. I have used Setinterface function of usbddrv.cpp
- Open pipe on the isochronous endpoint by calling OpenPipe function of usbddrv.cpp.
- Initiates isochronous transfer on the pipe that is opened by calling IssueIsochTransfer of usbddrv.cpp with
USB_IN_TRANSFER | USB_SHORT_TRANSFER_OK | USB_START_ISOCH_ASAP | USB_COMPRESS_ISOCH flags. The max packet size is 642 and I ma passing the each frame length as 642.
All above functions execute successfully however bytes transferred is zero in case of IssueIsochTransfer. I believe that on issuing transfer on isoch endpoint interrupt should be generated on the isochronous endpoint on the device side which is not happening.
When we issue transfer on control endpoint i.e endpoint 0, interrupt is getting generated on the device side for that endpoint which is not the case in isochronous endpoint
We are stuck since interrupt is not getting generated on the isochronous endpoint and your feedback will be very helpful .
Kindly suggest if we are doing something wrong.