From: Michael Gernoth Date: Fri, 11 Apr 2008 13:22:59 +0000 (+0200) Subject: add xpcu_close X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/commitdiff_plain/6234190be3437eb8e6ce225f934e2ad97ce46c6a add xpcu_close --- diff --git a/usb-driver.c b/usb-driver.c index 53a0309..566b10b 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -633,13 +633,9 @@ int close(int fd) { if (fd == windrvrfd && windrvrfd >= 0) { DPRINTF("close windrvrfd\n"); - if (xpcu->handle) { - xpcu_claim(xpcu, XPCU_RELEASE); - usb_close(xpcu->handle); - } + if (xpcu) + xpcu_close(xpcu); - xpcu->handle = NULL; - xpcu->interface = -1; xpcu = NULL; windrvrfd = -1; } diff --git a/xpcu.c b/xpcu.c index 28770fe..17ab7cb 100644 --- a/xpcu.c +++ b/xpcu.c @@ -166,7 +166,7 @@ int xpcu_deviceinfo(struct xpcu_s *xpcu, unsigned char *buf) { return len; } -int xpcu_claim(struct xpcu_s *xpcu, int claim) { +static int xpcu_claim(struct xpcu_s *xpcu, int claim) { int ret = 0; static int claimed = 0; @@ -247,3 +247,14 @@ struct xpcu_s *xpcu_open(void) { return &xpcu; } + +void xpcu_close(struct xpcu_s *xpcu) { + if (xpcu->handle) { + xpcu_claim(xpcu, XPCU_RELEASE); + usb_close(xpcu->handle); + } + + xpcu->handle = NULL; + xpcu->interface = -1; + xpcu->alternate = -1; +} diff --git a/xpcu.h b/xpcu.h index 9583ed2..fb8fd55 100644 --- a/xpcu.h +++ b/xpcu.h @@ -10,6 +10,6 @@ struct xpcu_s { }; int __attribute__ ((visibility ("hidden"))) xpcu_deviceinfo(struct xpcu_s *xpcu, unsigned char *buf); -int __attribute__ ((visibility ("hidden"))) xpcu_claim(struct xpcu_s *xpcu, int claim); int __attribute__ ((visibility ("hidden"))) xpcu_transfer(struct xpcu_s *xpcu, struct usb_transfer *ut); struct xpcu_s __attribute__ ((visibility ("hidden"))) *xpcu_open(void); +void __attribute__ ((visibility ("hidden"))) xpcu_close(struct xpcu_s *xpcu);