Raphaƫl Doursenaud wrote:
First, I more or less get the picture of what the code is doing but there's one part I fiddled with that I don't understand fully. What are the .out_cables and .in_cables bitmasks doing besides defining the number of ports ?
The also define the port numbers.
Next, the input part seem to work flawlessly on all ports, but I have what seems to be a buffer overflow on the device when outputting midi data. Comparing the windows and linux usb traffic, something obvious shows up : the windows driver seem to be waiting for the device's acknowledgment after each sent byte before sending the next one while the snd-usb-audio module sends a bunch of bytes at once that ends up confusing the device _and_ module.
Do you mean that the Windows driver does not submit more than one URB at once? And that it never puts more than one byte for a port into one packet? Is it possible that the device want a F5 port number at the beginning of every packet?
Anyway, all bulk packets must be explicitly accepted by a device, so if the SAC-2K accepts a packet and then does something wrong, it's the device's fault.
To force the driver to submit no more than one packet at once, replace OUTPUT_URBS with a variable and set it to 1 for this device.
Regards, Clemens