static struct usb_device *usb_cable;
static unsigned long card_type;
-//#define USE_LIBUSB 1
+#define USE_LIBUSB 1
void hexdump(unsigned char *buf, int len);
void diff(unsigned char *buf1, unsigned char *buf2, int len);
ugdd->dwBytes = 276;
}
} else {
- struct usb_device_info *udi = (struct usb_device_info*)ugdd->pBuf;
+ struct usb_device_info_get *udi = (struct usb_device_info_get*)ugdd->pBuf;
+ struct usb_endpoint_descriptor *ep;
unsigned char dings[] = {0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0xfd, 0x03, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x45, 0x21, 0x08, 0x38, 0x45, 0x21, 0x08,
udi->Descriptor.iProduct = usb_cable->descriptor.iProduct;
udi->Descriptor.iSerialNumber = usb_cable->descriptor.iSerialNumber;
udi->Descriptor.bNumConfigurations = usb_cable->descriptor.bNumConfigurations;
+
+ ep = usb_cable->config->interface->altsetting[0].endpoint;
+
+ udi->Pipe0.dwNumber = 0x00;
+ udi->Pipe0.dwMaximumPacketSize = usb_cable->descriptor.bMaxPacketSize0;
+ udi->Pipe0.type = 0;
+ udi->Pipe0.direction = 3;
+ udi->Pipe0.dwInterval = 0;
+
+ udi->cfg.Descriptor.bLength = usb_cable->config->bLength;
+ udi->cfg.Descriptor.bDescriptorType = usb_cable->config->bDescriptorType;
+ udi->cfg.Descriptor.wTotalLength = usb_cable->config->wTotalLength;
+ udi->cfg.Descriptor.bNumInterfaces = usb_cable->config->bNumInterfaces;
+ udi->cfg.Descriptor.bConfigurationValue = usb_cable->config->bConfigurationValue;
+ udi->cfg.Descriptor.iConfiguration = usb_cable->config->iConfiguration;
+ udi->cfg.Descriptor.bmAttributes = usb_cable->config->bmAttributes;
+ udi->cfg.Descriptor.MaxPower = usb_cable->config->MaxPower;
+
+ // ab offset 168 config desc
}
#endif
if (pSize) {
va_end(args);
}
- fd = (*func) (pathname, flags, mode);
-
if (!strcmp (pathname, "/dev/windrvr6")) {
fprintf(stderr,"opening windrvr6\n");
- windrvrfd = fd;
+#ifdef USE_LIBUSB
+ windrvrfd = fd = (*func) ("/dev/null", flags, mode);
+#else
+ windrvrfd = fd = (*func) (pathname, flags, mode);
+#endif
if (!busses) {
usb_init();
usb_find_busses();
busses = usb_get_busses();
}
+ } else {
+ fd = (*func) (pathname, flags, mode);
}
return fd;