add xpcu_set_interface
This commit is contained in:
parent
6234190be3
commit
0c2db148a4
15
usb-driver.c
15
usb-driver.c
@ -229,20 +229,7 @@ static int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
|
|||||||
#ifndef NO_WINDRVR
|
#ifndef NO_WINDRVR
|
||||||
ret = (*ioctl_func) (fd, request, wdioctl);
|
ret = (*ioctl_func) (fd, request, wdioctl);
|
||||||
#else
|
#else
|
||||||
if (xpcu->dev) {
|
xpcu_set_interface(xpcu, usi);
|
||||||
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;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
DPRINTF("unique: %lu, interfacenum: %lu, alternatesetting: %lu, options: %lx\n",
|
DPRINTF("unique: %lu, interfacenum: %lu, alternatesetting: %lu, options: %lx\n",
|
||||||
usi->dwUniqueID, usi->dwInterfaceNum,
|
usi->dwUniqueID, usi->dwInterfaceNum,
|
||||||
|
17
xpcu.c
17
xpcu.c
@ -232,6 +232,23 @@ int xpcu_transfer(struct xpcu_s *xpcu, struct usb_transfer *ut) {
|
|||||||
return ret;
|
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) {
|
struct xpcu_s *xpcu_open(void) {
|
||||||
static struct xpcu_s xpcu;
|
static struct xpcu_s xpcu;
|
||||||
|
|
||||||
|
1
xpcu.h
1
xpcu.h
@ -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_deviceinfo(struct xpcu_s *xpcu, unsigned char *buf);
|
||||||
int __attribute__ ((visibility ("hidden"))) xpcu_transfer(struct xpcu_s *xpcu, struct usb_transfer *ut);
|
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);
|
struct xpcu_s __attribute__ ((visibility ("hidden"))) *xpcu_open(void);
|
||||||
void __attribute__ ((visibility ("hidden"))) xpcu_close(struct xpcu_s *xpcu);
|
void __attribute__ ((visibility ("hidden"))) xpcu_close(struct xpcu_s *xpcu);
|
||||||
|
Reference in New Issue
Block a user