A
Aleksandr B NS
Guest
Our application (in C#) uses WinUSB driver. Hardware device sends data on isochronous EP.
All working good, but there is one problem:
function WinUsb_ReadIsochPipeAsap call returns false on some PC. This situation is wery rare. But if it is happens on a particular PC - nothing can be done with this function to process normaly for a some amount of time. Changing device, hub, port - nothing helps.
We cant reproduce this bug in our test lab.
The investigation with additional test program in the fields shows strage behavior:
1. Calling for
WinUsb_ReadIsochPipeAsap(hndl,0,pktSize*pktCnt,false,pktCnt,Marshal.UnsafeAddrOfPinnedArrayElement(packets_descr_buffer, offset_descr),pendingRing_Overlapped[pendingRing_Index].GlobalOverlapped)
returns false, Marshal.GetLastWin32Error() equals to ERROR_INVALID_PARAMETER(87)
2. call for WinUsb_ReadIsochPipe with the same parameters (except FrameNumber = currentframe + 10) returns true.
3. any call for WinUsb_ReadIsochPipeAsap (with ContinueStream false) succeed until close/open device.
Current workaround for us is dummy call for WinUsb_ReadIsochPipe with frame number = current + 10 ignoring the result, then working with "Asap" version as before.
Is there were same problem for someone? What were the solution? Perhaps there were some other related issues with isochronous ep`s with WinUSB?
Continue reading...
All working good, but there is one problem:
function WinUsb_ReadIsochPipeAsap call returns false on some PC. This situation is wery rare. But if it is happens on a particular PC - nothing can be done with this function to process normaly for a some amount of time. Changing device, hub, port - nothing helps.
We cant reproduce this bug in our test lab.
The investigation with additional test program in the fields shows strage behavior:
1. Calling for
WinUsb_ReadIsochPipeAsap(hndl,0,pktSize*pktCnt,false,pktCnt,Marshal.UnsafeAddrOfPinnedArrayElement(packets_descr_buffer, offset_descr),pendingRing_Overlapped[pendingRing_Index].GlobalOverlapped)
returns false, Marshal.GetLastWin32Error() equals to ERROR_INVALID_PARAMETER(87)
2. call for WinUsb_ReadIsochPipe with the same parameters (except FrameNumber = currentframe + 10) returns true.
3. any call for WinUsb_ReadIsochPipeAsap (with ContinueStream false) succeed until close/open device.
Current workaround for us is dummy call for WinUsb_ReadIsochPipe with frame number = current + 10 ignoring the result, then working with "Asap" version as before.
Is there were same problem for someone? What were the solution? Perhaps there were some other related issues with isochronous ep`s with WinUSB?
Continue reading...