diff options
author | Pete Batard <pbatard@gmail.com> | 2010-01-14 01:14:09 +0000 |
---|---|---|
committer | Pete Batard <pbatard@gmail.com> | 2010-01-14 01:14:09 +0000 |
commit | f47443958ede27696e963623fb8869adb20e19b0 (patch) | |
tree | 72cc332bab10f75dda23295036357904a98c52a6 /examples/xusb.c | |
parent | 0768325f83e261b8a6e5a0bbe2f8673eb7542655 (diff) | |
download | libusb-f47443958ede27696e963623fb8869adb20e19b0.tar.gz |
svn r18: basic open/close & claim/release interface + detection of WinUSB and driverless devices (priv->driver)
Diffstat (limited to 'examples/xusb.c')
-rw-r--r-- | examples/xusb.c | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/examples/xusb.c b/examples/xusb.c index 43e1ca7..686392d 100644 --- a/examples/xusb.c +++ b/examples/xusb.c @@ -25,6 +25,29 @@ #include <libusb/libusb.h> +//#define USE_MOUSE +#define USE_XBOX + +#ifdef USE_MOUSE +// Logitech optical mouse +#define VID 0x046D +#define PID 0xC03E +#endif + +#ifdef USE_XBOX +// Microsoft XBox Controller +#define VID 0x045E +#define PID 0x0289 +#endif + +#ifdef USE_KEY +// 2 GB Usb key +#define VID 0x0204 +#define PID 0x6025 +#endif + + + static void print_devs(libusb_device **devs) { libusb_device *dev; @@ -44,11 +67,31 @@ static void print_devs(libusb_device **devs) libusb_get_bus_number(dev), libusb_get_device_address(dev)); // DEBUG: Access an XBox gamepad through WinUSB - if ((desc.idVendor == 0x045e) && (desc.idProduct == 0x0289)) { - printf("Opening Xbox gamepad:\n"); +// if ((desc.idVendor == 0x045e) && (desc.idProduct == 0x0289)) { + if ((desc.idVendor == VID) && (desc.idProduct == PID)) { + printf("Opening device:\n"); r = libusb_open(dev, &handle); - if (r != LIBUSB_SUCCESS) + if (r != LIBUSB_SUCCESS) { + printf("libusb error: %d\n", r); + continue; + } + + printf("Claiming interface:\n"); + r = libusb_claim_interface(handle, 0); + if (r != LIBUSB_SUCCESS) { printf("libusb error: %d\n", r); + continue; + } + + printf("Releasing interface:\n"); + r = libusb_release_interface(handle, 0); + if (r != LIBUSB_SUCCESS) { + printf("libusb error: %d\n", r); + continue; + } + + printf("Closing device:\n"); + libusb_close(handle); } } } |