On 05/19/2010 07:59 AM, Clemens Ladisch wrote:
This might overflow if the buffer ends with a 2x byte.
True. I rewrote that part now, using better sanity checking (hopefully). Also, the control endpoint uses 0x1x instead of 0x2x and the length is 9, so the mask 0xF8 was wrong too.
Assuming that this device doesn't have any output ports, please add a comment that this isn't the actual output protocol.
In the most recent version, I've added output support (for control port only, as the device does not seem to handle input on its data port endpoint). It's a little bit hairy, but seems to do the job. I've checked it with amidi, both input and output - even when I deliberately added junk before actual sysex data, or when I put several SysEx messages in one hex string. The device seems to require that individual messages are entirely contained within a single USB packet, which complicates things a little bit.
Thanks!
K.