5 typedef unsigned char u8;
6 typedef unsigned short u16;
7 typedef unsigned int u32;
8 #define array_size(x) (sizeof(x) / sizeof(x[0]))
11 unsigned short vendor;
12 unsigned short product;
15 { 0x03eb, 0x202a, "16MX+U Game Device" },
16 { 0x03eb, 0x202b, "32MX+U Game Device" },
17 { 0x03eb, 0x202c, "16MX+US Game Device" },
18 { 0x03eb, 0x202d, "32MX+UF Game Device" },
21 /*****************************************************************************/
34 u8 addrb2; /* most significant */
55 static usb_dev_handle *get_device(void)
57 struct usb_dev_handle *handle;
58 struct usb_device *dev;
62 ret = usb_find_busses();
64 fprintf(stderr, "Can't find USB busses\n");
68 ret = usb_find_devices();
70 fprintf(stderr, "Can't find USB devices\n");
74 bus = usb_get_busses();
75 for (; bus; bus = bus->next)
77 for (dev = bus->devices; dev; dev = dev->next)
79 for (i = 0; i < array_size(g_devices); i++)
81 if (dev->descriptor.idVendor == g_devices[i].vendor &&
82 dev->descriptor.idProduct == g_devices[i].product)
88 fprintf(stderr, "device not found.\n");
92 printf("found %s.\n", g_devices[i].name);
94 handle = usb_open(dev);
96 fprintf(stderr, "failed to open device:\n");
97 fprintf(stderr, "%s\n", usb_strerror());
101 ret = usb_set_configuration(handle, 1);
103 fprintf(stderr, "couldn't set configuration for /*/bus/usb/%s/%s:\n",
104 bus->dirname, dev->filename);
105 fprintf(stderr, "%s\n", usb_strerror());
109 ret = usb_claim_interface(handle, 0);
111 fprintf(stderr, "couldn't claim /*/bus/usb/%s/%s:\n",
112 bus->dirname, dev->filename);
113 fprintf(stderr, "%s (%d)\n", usb_strerror(), ret);
120 static void release_device(struct usb_dev_handle *device)
122 usb_release_interface(device, 0);
126 int main(int argc, char *argv[])
128 struct usb_dev_handle *device;
132 device = get_device();
138 release_device(device);