Tricky USB device.
Maksim Yevmenkin
maksim.yevmenkin at savvis.net
Fri Apr 8 15:33:34 PDT 2005
David,
> Bernd> Then it really shouldn't have claimed to be one in the
> Bernd> interface descriptor :( But the HID specification is more today
> Bernd> than just _human_ interface. e.g. there are extensions for
> Bernd> USV, ...
>
> [...]
>
> Bernd> Has this device multiple interfaces? e.g. one HID and another
> Bernd> as described. I often thought about getting ugen working at
> Bernd> interface level too.
>
> Here's the output of udesc_dump on it. Right now, using the current
> version of libusb (not the version from ports), I can use
> usb_interrupt_write(dev, 1, "MK255", 5, 0) to send data to it --- and
> the data is sent --- at least lights on the USB hub flash. If I
> replace '1' with anything else, it doesn't accept it. However, it
> doesn't seem to have opened the relays.
hmm... why even use libusb? cant you just "fd = open("/dev/ugen0.1",
O_RDWR);" and then "write(fd, "MK255", 5)" and "read(fd, ...);". note:
here i assume ugen0 is the device.
> I'm also not entirely clear how/when to use usb_interrupt_read()
> ... as many of the commands listed in the manual return data, but
> usb_inerrupt_write() doesn't seem to allow for data to be returned,
> but following usb_interrupt_write(), the read will hang.
i'd guess you have to keep read pipe open at all times. that is what "fd
= open("/dev/ugen0.1", O_RDWR);" will do - it will open both read and
write pipes (because of O_RDWR).
then you just
write(fd, ...);
read(fd, ...);
max
More information about the freebsd-hackers
mailing list