Remove unused elements in libusb 0.1 compat

This commit is contained in:
Philippe Teuwen 2013-10-13 21:04:50 +02:00
parent 8adddbab28
commit a9ec5e79fa
4 changed files with 11 additions and 308 deletions

View File

@ -33,13 +33,6 @@
static libusb_context *ctx = NULL;
static int usb_debug = 0;
enum usbi_log_level {
LOG_LEVEL_DEBUG,
LOG_LEVEL_INFO,
LOG_LEVEL_WARNING,
LOG_LEVEL_ERROR,
};
#ifdef ENABLE_LOGGING
#define _usbi_log(level, fmt...) usbi_log(level, __FUNCTION__, fmt)
#else
@ -94,49 +87,6 @@ static int libusb_to_errno(int result)
}
}
static void usbi_log(enum usbi_log_level level, const char *function,
const char *format, ...)
{
va_list args;
FILE *stream = stdout;
const char *prefix;
#ifndef ENABLE_DEBUG_LOGGING
if (!usb_debug)
return;
#endif
switch (level) {
case LOG_LEVEL_INFO:
prefix = "info";
break;
case LOG_LEVEL_WARNING:
stream = stderr;
prefix = "warning";
break;
case LOG_LEVEL_ERROR:
stream = stderr;
prefix = "error";
break;
case LOG_LEVEL_DEBUG:
stream = stderr;
prefix = "debug";
break;
default:
stream = stderr;
prefix = "unknown";
break;
}
fprintf(stream, "libusb-compat %s: %s: ", prefix, function);
va_start(args, format);
vfprintf(stream, format, args);
va_end(args);
fprintf(stream, "\n");
}
static void _usb_finalize(void)
{
if (ctx) {
@ -740,17 +690,6 @@ int usb_set_altinterface(usb_dev_handle *dev, int alternate)
dev->last_claimed_interface, alternate));
}
int usb_resetep(usb_dev_handle *dev, unsigned int ep)
{
return compat_err(usb_clear_halt(dev, ep));
}
int usb_clear_halt(usb_dev_handle *dev, unsigned int ep)
{
usbi_dbg("endpoint %x", ep);
return compat_err(libusb_clear_halt(dev->handle, ep & 0xff));
}
int usb_reset(usb_dev_handle *dev)
{
usbi_dbg("");
@ -775,7 +714,7 @@ static int usb_bulk_io(usb_dev_handle *dev, int ep, char *bytes,
}
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes,
int size, int timeout)
int size, int timeout)
{
if (!(ep & USB_ENDPOINT_IN)) {
/* libusb-0.1 will strangely fix up a read request from endpoint
@ -789,7 +728,7 @@ int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes,
}
int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes,
int size, int timeout)
int size, int timeout)
{
if (ep & USB_ENDPOINT_IN) {
/* libusb-0.1 on BSD strangely fix up a write request to endpoint
@ -802,80 +741,8 @@ int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes,
return usb_bulk_io(dev, ep, (char *)bytes, size, timeout);
}
static int usb_interrupt_io(usb_dev_handle *dev, int ep, char *bytes,
int size, int timeout)
{
int actual_length;
int r;
usbi_dbg("endpoint %x size %d timeout %d", ep, size, timeout);
r = libusb_interrupt_transfer(dev->handle, ep & 0xff, bytes, size,
&actual_length, timeout);
/* if we timed out but did transfer some data, report as successful short
* read. FIXME: is this how libusb-0.1 works? */
if (r == 0 || (r == LIBUSB_ERROR_TIMEOUT && actual_length > 0))
return actual_length;
return compat_err(r);
}
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes,
int size, int timeout)
{
if (!(ep & USB_ENDPOINT_IN)) {
/* libusb-0.1 will strangely fix up a read request from endpoint
* 0x01 to be from endpoint 0x81. do the same thing here, but
* warn about this silly behaviour. */
usbi_warn("endpoint %x is missing IN direction bit, fixing");
ep |= USB_ENDPOINT_IN;
}
return usb_interrupt_io(dev, ep, bytes, size, timeout);
}
int usb_interrupt_write(usb_dev_handle *dev, int ep, const char *bytes,
int size, int timeout)
{
if (ep & USB_ENDPOINT_IN) {
/* libusb-0.1 on BSD strangely fix up a write request to endpoint
* 0x81 to be to endpoint 0x01. do the same thing here, but
* warn about this silly behaviour. */
usbi_warn("endpoint %x has excessive IN direction bit, fixing");
ep &= ~USB_ENDPOINT_IN;
}
return usb_interrupt_io(dev, ep, (char *)bytes, size, timeout);
}
int usb_control_msg(usb_dev_handle *dev, int bmRequestType,
int bRequest, int wValue, int wIndex, char *bytes, int size, int timeout)
{
int r;
usbi_dbg("RQT=%x RQ=%x V=%x I=%x len=%d timeout=%d", bmRequestType,
bRequest, wValue, wIndex, size, timeout);
r = libusb_control_transfer(dev->handle, bmRequestType & 0xff,
bRequest & 0xff, wValue & 0xffff, wIndex & 0xffff, bytes, size & 0xffff,
timeout);
if (r >= 0)
return r;
return compat_err(r);
}
int usb_get_string(usb_dev_handle *dev, int desc_index, int langid,
char *buf, size_t buflen)
{
int r;
r = libusb_get_string_descriptor(dev->handle, desc_index & 0xff,
langid & 0xffff, buf, (int) buflen);
if (r >= 0)
return r;
return compat_err(r);
}
int usb_get_string_simple(usb_dev_handle *dev, int desc_index,
char *buf, size_t buflen)
char *buf, size_t buflen)
{
int r;
r = libusb_get_string_descriptor_ascii(dev->handle, desc_index & 0xff,
@ -884,65 +751,3 @@ int usb_get_string_simple(usb_dev_handle *dev, int desc_index,
return r;
return compat_err(r);
}
int usb_get_descriptor(usb_dev_handle *dev, unsigned char type,
unsigned char desc_index, void *buf, int size)
{
int r;
r = libusb_get_descriptor(dev->handle, type, desc_index, buf, size);
if (r >= 0)
return r;
return compat_err(r);
}
int usb_get_descriptor_by_endpoint(usb_dev_handle *dev, int ep,
unsigned char type, unsigned char desc_index, void *buf, int size)
{
/* this function doesn't make much sense - the specs don't talk about
* getting a descriptor "by endpoint". libusb-1.0 does not provide this
* functionality so we just send a control message directly */
int r;
r = libusb_control_transfer(dev->handle,
LIBUSB_ENDPOINT_IN | (ep & 0xff), LIBUSB_REQUEST_GET_DESCRIPTOR,
(type << 8) | desc_index, 0, buf, size, 1000);
if (r >= 0)
return r;
return compat_err(r);
}
int usb_get_driver_np(usb_dev_handle *dev, int interface,
char *name, unsigned int namelen)
{
int r = libusb_kernel_driver_active(dev->handle, interface);
if (r == 1) {
/* libusb-1.0 doesn't expose driver name, so fill in a dummy value */
snprintf(name, namelen, "dummy");
return 0;
} else if (r == 0) {
return -(errno = ENODATA);
} else {
return compat_err(r);
}
}
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface)
{
int r = compat_err(libusb_detach_kernel_driver(dev->handle, interface));
switch (r) {
case LIBUSB_SUCCESS:
return 0;
case LIBUSB_ERROR_NOT_FOUND:
return -ENODATA;
case LIBUSB_ERROR_INVALID_PARAM:
return -EINVAL;
case LIBUSB_ERROR_NO_DEVICE:
return -ENODEV;
case LIBUSB_ERROR_OTHER:
return -errno;
/* default can be reached only in non-Linux implementations,
* mostly with LIBUSB_ERROR_NOT_SUPPORTED. */
default:
return -ENOSYS;
}
}

View File

@ -39,43 +39,9 @@
* not subject to change
*/
/*
* Device and/or Interface Class codes
*/
#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */
#define USB_CLASS_AUDIO 1
#define USB_CLASS_COMM 2
#define USB_CLASS_HID 3
#define USB_CLASS_PRINTER 7
#define USB_CLASS_PTP 6
#define USB_CLASS_MASS_STORAGE 8
#define USB_CLASS_HUB 9
#define USB_CLASS_DATA 10
#define USB_CLASS_VENDOR_SPEC 0xff
/*
* Descriptor types
*/
#define USB_DT_DEVICE 0x01
#define USB_DT_CONFIG 0x02
#define USB_DT_STRING 0x03
#define USB_DT_INTERFACE 0x04
#define USB_DT_ENDPOINT 0x05
#define USB_DT_HID 0x21
#define USB_DT_REPORT 0x22
#define USB_DT_PHYSICAL 0x23
#define USB_DT_HUB 0x29
/*
* Descriptor sizes per descriptor type
*/
#define USB_DT_DEVICE_SIZE 18
#define USB_DT_CONFIG_SIZE 9
#define USB_DT_INTERFACE_SIZE 9
#define USB_DT_ENDPOINT_SIZE 7
#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */
#define USB_DT_HUB_NONVAR_SIZE 7
#define USB_DT_CONFIG_SIZE 9
#define USB_DT_INTERFACE_SIZE 9
#define USB_DT_ENDPOINT_AUDIO_SIZE 9
/* All standard descriptors have these 2 fields in common */
struct usb_descriptor_header {
@ -90,18 +56,6 @@ struct usb_string_descriptor {
u_int16_t wData[1];
};
/* HID descriptor */
struct usb_hid_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t bcdHID;
u_int8_t bCountryCode;
u_int8_t bNumDescriptors;
/* u_int8_t bReportDescriptorType; */
/* u_int16_t wDescriptorLength; */
/* ... */
};
/* Endpoint descriptor */
#define USB_MAXENDPOINTS 32
struct usb_endpoint_descriptor {
@ -189,41 +143,6 @@ struct usb_device_descriptor {
u_int8_t bNumConfigurations;
};
struct usb_ctrl_setup {
u_int8_t bRequestType;
u_int8_t bRequest;
u_int16_t wValue;
u_int16_t wIndex;
u_int16_t wLength;
};
/*
* Standard requests
*/
#define USB_REQ_GET_STATUS 0x00
#define USB_REQ_CLEAR_FEATURE 0x01
/* 0x02 is reserved */
#define USB_REQ_SET_FEATURE 0x03
/* 0x04 is reserved */
#define USB_REQ_SET_ADDRESS 0x05
#define USB_REQ_GET_DESCRIPTOR 0x06
#define USB_REQ_SET_DESCRIPTOR 0x07
#define USB_REQ_GET_CONFIGURATION 0x08
#define USB_REQ_SET_CONFIGURATION 0x09
#define USB_REQ_GET_INTERFACE 0x0A
#define USB_REQ_SET_INTERFACE 0x0B
#define USB_REQ_SYNCH_FRAME 0x0C
#define USB_TYPE_STANDARD (0x00 << 5)
#define USB_TYPE_CLASS (0x01 << 5)
#define USB_TYPE_VENDOR (0x02 << 5)
#define USB_TYPE_RESERVED (0x03 << 5)
#define USB_RECIP_DEVICE 0x00
#define USB_RECIP_INTERFACE 0x01
#define USB_RECIP_ENDPOINT 0x02
#define USB_RECIP_OTHER 0x03
/*
* Various libusb API related stuff
*/
@ -287,46 +206,23 @@ extern "C" {
/* usb.c */
usb_dev_handle *usb_open(struct usb_device *dev);
int usb_close(usb_dev_handle *dev);
int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf,
size_t buflen);
int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf,
size_t buflen);
/* descriptors.c */
int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep,
unsigned char type, unsigned char index, void *buf, int size);
int usb_get_descriptor(usb_dev_handle *udev, unsigned char type,
unsigned char index, void *buf, int size);
/* <arch>.c */
int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes, int size,
int timeout);
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_interrupt_write(usb_dev_handle *dev, int ep, const char *bytes,
int size, int timeout);
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,
int value, int index, char *bytes, int size, int timeout);
int usb_set_configuration(usb_dev_handle *dev, int configuration);
int usb_claim_interface(usb_dev_handle *dev, int interface);
int usb_release_interface(usb_dev_handle *dev, int interface);
int usb_set_altinterface(usb_dev_handle *dev, int alternate);
int usb_resetep(usb_dev_handle *dev, unsigned int ep);
int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);
int usb_reset(usb_dev_handle *dev);
#define LIBUSB_HAS_GET_DRIVER_NP 1
int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name,
unsigned int namelen);
#define LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP 1
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);
char *usb_strerror(void);
void usb_init(void);
void usb_set_debug(int level);
int usb_find_busses(void);
int usb_find_devices(void);
struct usb_device *usb_device(usb_dev_handle *dev);

View File

@ -38,9 +38,9 @@
#ifndef _WIN32
// #ifdef LIBUSB10_ENABLED
#include "libusb-compat-usb.h"
#include "libusb-compat-usb.h"
// #else
// Under POSIX system, we use libusb (>= 0.1.12)
// Under POSIX system, we use libusb (>= 0.1.12)
// #include <usb.h>
// #endif
#else

View File

@ -46,6 +46,9 @@
#define usbbus_strerror( X ) usb_strerror()
#endif
int usbbus_prepare(void);
// Libusb-0.1 API:
#define USBBUS_ENDPOINT_DIR_MASK 0x80
#define USBBUS_ENDPOINT_TYPE_BULK 2
#define USBBUS_ENDPOINT_IN 0x80
@ -164,7 +167,6 @@ struct usbbus_bus {
};
int usbbus_prepare(void);
usbbus_dev_handle *usbbus_open(struct usbbus_device *dev);
int usbbus_close(usbbus_dev_handle *dev);
int usbbus_set_configuration(usbbus_dev_handle *dev, int configuration);