summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-01-14 01:14:09 +0000
committerPete Batard <pbatard@gmail.com>2010-01-14 01:14:09 +0000
commitf47443958ede27696e963623fb8869adb20e19b0 (patch)
tree72cc332bab10f75dda23295036357904a98c52a6 /examples
parent0768325f83e261b8a6e5a0bbe2f8673eb7542655 (diff)
downloadlibusb-f47443958ede27696e963623fb8869adb20e19b0.tar.gz
svn r18: basic open/close & claim/release interface + detection of WinUSB and driverless devices (priv->driver)
Diffstat (limited to 'examples')
-rw-r--r--examples/xusb.c49
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);
}
}
}