Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 08 Apr 2005 15:32:56 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        David Gilbert <dgilbert@dclg.ca>
Cc:        ticso@cicely.de
Subject:   Re: Tricky USB device.
Message-ID:  <42570698.4070205@savvis.net>
In-Reply-To: <16983.465.572693.73195@canoe.dclg.ca>
References:  <16982.46075.115518.130213@canoe.dclg.ca> <4256B5EB.9080506@savvis.net>	<16982.47024.135663.645297@canoe.dclg.ca> <20050408190514.GS96690@cicely12.cicely.de> <16983.465.572693.73195@canoe.dclg.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42570698.4070205>