From a9dd904d3fb1eace1230e71ff73c1d43e39b9f7f Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 22 Sep 2009 14:56:11 +0200 Subject: [PATCH] again a "funny" problem @ u/c/core.c: #{un,}define WTF and see yourself also look at "LOAD" messages and their values on gecko output --- usb/core/core.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++--- usb/core/usb.c | 8 +++++++ usb/core/usb.h | 1 + 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/usb/core/core.c b/usb/core/core.c index c357428..5a7c45e 100644 --- a/usb/core/core.c +++ b/usb/core/core.c @@ -108,20 +108,69 @@ struct usb_device *usb_add_device() return (void*) -1; } - /* set MaxPacketSize */ - + u8 buf[8]; +//#define WTF +#ifdef WTF + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololol PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lollllool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lololololool PADDING WTF :O lolololololo \n"); +#endif u8 address = usb_next_address(); ret = usb_set_address(dev, address); dev->address = address; printf("set address to %d\n", dev->address); + /* get device descriptor&co */ ret = usb_get_desc_dev(dev); + if(ret < 0) + return (void*) -1; + + /* print device info */ + lsusb(dev); /* select configuration */ ret = usb_set_configuration(dev, dev->conf->bConfigurationValue); printf("=============\nusb_set_configuration(ret: %d) %d\n", ret, dev->conf->bConfigurationValue); + printf("=============\nusb_get_configuration: %d\n", usb_get_configuration(dev)); - lsusb(dev); + memset(buf, 0, 8); + usb_control_msg(dev, 0x00, SET_INTERFACE, 0, dev->conf->intf->bInterfaceNumber, 8, buf, 0); + printf("=============\nusb_set_interface: %d\n", dev->conf->intf->bInterfaceNumber); + hexdump((void*)buf, 8); + + memset(buf, 0, 8); + usb_control_msg(dev, 0x80, GET_INTERFACE, 0, 0, 8, buf, 0); + printf("=============\nusb_get_interface: %d\n", buf[0]); + hexdump((void*)buf, 8); #if 0 /* add device to device list */ diff --git a/usb/core/usb.c b/usb/core/usb.c index 6a7562e..35460a5 100644 --- a/usb/core/usb.c +++ b/usb/core/usb.c @@ -299,6 +299,14 @@ s8 usb_set_address(struct usb_device *dev, u8 address) return 0; } + +u8 usb_get_configuration(struct usb_device *dev) +{ + cleargbuf(); + usb_control_msg(dev, 0x80, GET_CONFIGURATION, 0, 0, 8, gbuf, 0); + return gbuf[0]; +} + s8 usb_set_configuration(struct usb_device *dev, u8 configuration) { cleargbuf(); diff --git a/usb/core/usb.h b/usb/core/usb.h index cf7dc31..2e9c0a4 100644 --- a/usb/core/usb.h +++ b/usb/core/usb.h @@ -70,6 +70,7 @@ char *usb_get_string_simple(struct usb_device *dev, u8 index); s8 usb_get_string(struct usb_device *dev, u8 index, u8 langid); s8 usb_set_address(struct usb_device *dev, u8 address); +u8 usb_get_configuration(struct usb_device *dev); s8 usb_set_configuration(struct usb_device *dev, u8 configuration); s8 usb_set_altinterface(struct usb_device *dev, u8 alternate); -- 2.25.1