openusb_get_devids_by_bus, openusb_get_devids_by_vendor,
openusb_get_devids_by_class, openusb_free_devid_listopenusb_get_devids_by_bus, openusb_get_devids_by_vendor,
openusb_get_devids_by_class, openusb_free_devid_list -- Return all devids matching a pattern, Free returned devidsuint32_t openusb_get_devids_by_bus(openusb_handle_t handle , openusb_busid_t busid , openusb_devid_t **devids , uint32_t *num_devids );
uint32_t openusb_get_devids_by_vendor(openusb_handle_t handle , int32_t vendor , int32_t product , openusb_devid_t **devids , uint32_t *num_devids );
uint32_t openusb_get_devids_by_class(openusb_handle_t handle , int16_t devclass, int16_t subclass, int16_t protocol, openusb_devid_t **devids , uint32_t *num_devids );
void openusb_free_devid_list(openusb_devid_t * devids);
handle - Libusb handle returned in openusb_init().
busid - Which bus (0 for all busses).
devids - Pointer to address of the devid list, allocated by openusb.
num_devids - Number of device ids by this search/match.
vendor - Vendor ID (0 - 0xFFFF, -1 for all).
product - Product ID (0 - 0xFFFF, -1 for all).
class - Class (0 - 0xFF, -1 for all).
subclass - Subclass (0 - 0xFF, -1 for all).
protocol - Protocol (0 - 0xFF, -1 for all).
These functions are used to get/free device IDs of those devices that an application is interested in. Application depends on these devids to do any other operation on a device. For example, when application wants to transfer data to a device, it has to specify the devid got here to call corresponding openusb functions to open.
openusb_get_devids_by_bus() returns all the ids of devices on a bus. If
busid is 0, it will return all devids in the system.
The returned devids are stored in devids. The number of devids is in
num_devids .
openusb_get_devids_by_vendor() returns all devids of devices that match
specific VID and PID. If vendor = -1, it will match any vendor's device.
If product = -1, it will match any devices of a vendor. If both are -1,
it will match any devices of any vendor.
openusb_get_devids_by_class() returns all devids of devices that match
specific class, subclass or protocol. This function first uses application
supplied class, subclass and protocol to match their counterpart in Device
Descriptor of a device. If they don't match, then this function will try
to match class, subclass and protocol to their counterparts in invidual
Interface Descriptors of a device. If an argument is -1, it means to match
any class, subclass or protocol.
openusb_free_devid_list() frees devids returned
in above interfaces.
openusb_get_devids_by_bus(), openusb_get_devids_by_vendor(), openusb_get_devids_by_class() may have the following return values:
LIBUSB_SUCCESS - Success.
LIBUSB_NO_RESOURCES - Memory allocation failure.
LIBUSB_BADARG - Invalid argument. devids or num_devids is NULL; busid is invalid; vendor or product is out of range; class, subclass or product is out of range.
LIBUSB_NULL_LIST - The devids list is empty.
LIBUSB_INVALID_HANDLE - Libusb handle is invalid.