1
0

add xpcu_set_interface

This commit is contained in:
Michael Gernoth 2008-04-11 15:36:07 +02:00
parent 6234190be3
commit 0c2db148a4
3 changed files with 19 additions and 14 deletions

View File

@ -229,20 +229,7 @@ static int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
#ifndef NO_WINDRVR
ret = (*ioctl_func) (fd, request, wdioctl);
#else
if (xpcu->dev) {
if (!xpcu->handle) {
xpcu->handle = usb_open(xpcu->dev);
#ifndef NO_USB_RESET
if (xpcu->handle) {
usb_reset(xpcu->handle);
xpcu->handle = usb_open(xpcu->dev);
}
#endif
}
xpcu->interface = xpcu->dev->config[0].interface[usi->dwInterfaceNum].altsetting[usi->dwAlternateSetting].bInterfaceNumber;
xpcu->alternate = usi->dwAlternateSetting;
}
xpcu_set_interface(xpcu, usi);
#endif
DPRINTF("unique: %lu, interfacenum: %lu, alternatesetting: %lu, options: %lx\n",
usi->dwUniqueID, usi->dwInterfaceNum,

17
xpcu.c
View File

@ -232,6 +232,23 @@ int xpcu_transfer(struct xpcu_s *xpcu, struct usb_transfer *ut) {
return ret;
}
void xpcu_set_interface(struct xpcu_s *xpcu, struct usb_set_interface *usi) {
if (xpcu->dev) {
if (!xpcu->handle) {
xpcu->handle = usb_open(xpcu->dev);
#ifndef NO_USB_RESET
if (xpcu->handle) {
usb_reset(xpcu->handle);
xpcu->handle = usb_open(xpcu->dev);
}
#endif
}
xpcu->interface = xpcu->dev->config[0].interface[usi->dwInterfaceNum].altsetting[usi->dwAlternateSetting].bInterfaceNumber;
xpcu->alternate = usi->dwAlternateSetting;
}
}
struct xpcu_s *xpcu_open(void) {
static struct xpcu_s xpcu;

1
xpcu.h
View File

@ -11,5 +11,6 @@ struct xpcu_s {
int __attribute__ ((visibility ("hidden"))) xpcu_deviceinfo(struct xpcu_s *xpcu, unsigned char *buf);
int __attribute__ ((visibility ("hidden"))) xpcu_transfer(struct xpcu_s *xpcu, struct usb_transfer *ut);
void __attribute__ ((visibility ("hidden"))) xpcu_set_interface(struct xpcu_s *xpcu, struct usb_set_interface *usi);
struct xpcu_s __attribute__ ((visibility ("hidden"))) *xpcu_open(void);
void __attribute__ ((visibility ("hidden"))) xpcu_close(struct xpcu_s *xpcu);