add xpcu_close
This commit is contained in:
parent
6c235d59ca
commit
6234190be3
@ -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;
|
||||
}
|
||||
|
13
xpcu.c
13
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;
|
||||
}
|
||||
|
2
xpcu.h
2
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);
|
||||
|
Reference in New Issue
Block a user