[libhid-discuss] finding multile devices
Charles Lepple
clepple at ghz.cc
Sat Jan 12 15:32:23 UTC 2008
On Jan 12, 2008, at 7:34 AM, Warren Jasper wrote:
> I am writing a API to interface to data acquisition HID devices. I
> have no problem interfacing to a single device with a unique Vendor
> ID and Product ID with multiple interfaces. I am following the
> example in the test program example to get the HIDInterface handle
> for the device.
>
> My question is this. How do I handle multiple devices? This
> question has probably come up before, but searching the net I could
> not find it. I need a way to scan all the buses for ALL the
> devices that match a unique Product ID and Vendor ID and return a
> pointer. Of course each of the devices could have multiple USB
> interfaces, which could contain multiple endpoints.
I think the original plan for multiple device support was to make use
of the serial number. In many cases with multiple identical devices,
you need to know which device is which, and having a serial number
would simplify this greatly. Otherwise, plugging in the devices in a
different order would mean that the first device opened would be a
different physical device.
There is a match_serial_number() function in the test program that
shows how you could do this. However, I realize that most devices
don't have a serial number. You could use the hid_is_opened()
function along with a custom matcher function and a list of already-
opened interfaces.
You're right in that we should not try to open a device if it has
been opened already; however, hid_is_opened only checks to see if a
handle was opened in the current process. There is no easy way to
tell (short of trying to open a device and failing) whether another
process using libhid has opened the device/interface.
--
Charles Lepple
More information about the libhid-discuss
mailing list