This removes the need for pointer casts when calling backend functions.
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
{
int r, host_endian = 0;
- r = usbi_backend.get_device_descriptor(dev, (unsigned char *) &dev->device_descriptor,
- &host_endian);
+ r = usbi_backend.get_device_descriptor(dev, &dev->device_descriptor, &host_endian);
if (r < 0)
return r;
uint8_t bConfigurationValue, struct libusb_config_descriptor **config)
{
int r, idx;
- unsigned char *buf = NULL;
if (usbi_backend.get_config_descriptor_by_value) {
+ void *buf;
+
r = usbi_backend.get_config_descriptor_by_value(dev,
bConfigurationValue, &buf);
if (r < 0)
*
* Return 0 on success or a LIBUSB_ERROR code on failure.
*/
- int (*get_device_descriptor)(struct libusb_device *device,
- unsigned char *buffer, int *host_endian);
+ int (*get_device_descriptor)(struct libusb_device *device, void *buffer,
+ int *host_endian);
/* Get the ACTIVE configuration descriptor for a device.
*
* - another LIBUSB_ERROR code on other failure
*/
int (*get_active_config_descriptor)(struct libusb_device *device,
- unsigned char *buffer, size_t len);
+ void *buffer, size_t len);
/* Get a specific configuration descriptor for a device.
*
* Return the length read on success or a LIBUSB_ERROR code on failure.
*/
int (*get_config_descriptor)(struct libusb_device *device,
- uint8_t config_index, unsigned char *buffer, size_t len);
+ uint8_t config_index, void *buffer, size_t len);
/* Like get_config_descriptor but then by bConfigurationValue instead
* of by index.
* or a LIBUSB_ERROR code on failure.
*/
int (*get_config_descriptor_by_value)(struct libusb_device *device,
- uint8_t bConfigurationValue, unsigned char **buffer);
+ uint8_t bConfigurationValue, void **buffer);
/* Get the bConfigurationValue for the active configuration for a device.
* Optional. This should only be implemented if you can retrieve it from
/* Allocate persistent DMA memory for the given device, suitable for
* zerocopy. May return NULL on failure. Optional to implement.
*/
- unsigned char *(*dev_mem_alloc)(struct libusb_device_handle *handle,
- size_t len);
+ void *(*dev_mem_alloc)(struct libusb_device_handle *handle, size_t len);
/* Free memory allocated by dev_mem_alloc. */
- int (*dev_mem_free)(struct libusb_device_handle *handle,
- unsigned char *buffer, size_t len);
+ int (*dev_mem_free)(struct libusb_device_handle *handle, void *buffer,
+ size_t len);
/* Determine if a kernel driver is active on an interface. Optional.
*
/* async event thread */
static pthread_t libusb_darwin_at;
-static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len);
+static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len);
static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface);
static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface);
static int darwin_reset_device(struct libusb_device_handle *dev_handle);
pthread_mutex_unlock (&libusb_darwin_init_mutex);
}
-static int darwin_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer, int *host_endian) {
+static int darwin_get_device_descriptor(struct libusb_device *dev, void *buffer, int *host_endian) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
/* return cached copy */
return LIBUSB_ERROR_NOT_FOUND;
}
-static int darwin_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len) {
+static int darwin_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
int config_index;
return darwin_get_config_descriptor (dev, (UInt8)config_index, buffer, len);
}
-static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len) {
+static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
IOUSBConfigurationDescriptorPtr desc;
IOReturn kresult;
int32 gInitCount = 0;
static int haiku_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int
haiku_init(struct libusb_context *ctx)
}
static int
-haiku_get_device_descriptor(struct libusb_device *device, unsigned char *buffer, int *host_endian)
+haiku_get_device_descriptor(struct libusb_device *device, void *buffer, int *host_endian)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
memcpy(buffer, dev->Descriptor(), LIBUSB_DT_DEVICE_SIZE);
}
static int
-haiku_get_active_config_descriptor(struct libusb_device *device, unsigned char *buffer, size_t len)
+haiku_get_active_config_descriptor(struct libusb_device *device, void *buffer, size_t len)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
return haiku_get_config_descriptor(device, dev->ActiveConfigurationIndex(), buffer, len);
}
static int
-haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, unsigned char *buffer, size_t len)
+haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, void *buffer, size_t len)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
const usb_configuration_descriptor *config = dev->ConfigurationDescriptor(config_index);
}
static int op_get_device_descriptor(struct libusb_device *dev,
- unsigned char *buffer, int *host_endian)
+ void *buffer, int *host_endian)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
}
static int op_get_config_descriptor_by_value(struct libusb_device *dev,
- uint8_t value, unsigned char **buffer)
+ uint8_t value, void **buffer)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
unsigned char *descriptors = priv->descriptors;
}
static int op_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buffer, size_t len)
+ void *buffer, size_t len)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
int r, config;
- unsigned char *config_desc;
+ void *config_desc;
if (priv->sysfs_dir) {
r = sysfs_get_active_config(dev, &config);
}
static int op_get_config_descriptor(struct libusb_device *dev,
- uint8_t config_index, unsigned char *buffer, size_t len)
+ uint8_t config_index, void *buffer, size_t len)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
unsigned char *descriptors = priv->descriptors;
endpoints, num_endpoints);
}
-static unsigned char *op_dev_mem_alloc(struct libusb_device_handle *handle,
- size_t len)
+static void *op_dev_mem_alloc(struct libusb_device_handle *handle, size_t len)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
- unsigned char *buffer;
+ void *buffer;
buffer = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, hpriv->fd, 0);
if (buffer == MAP_FAILED) {
return buffer;
}
-static int op_dev_mem_free(struct libusb_device_handle *handle,
- unsigned char *buffer, size_t len)
+static int op_dev_mem_free(struct libusb_device_handle *handle, void *buffer,
+ size_t len)
{
if (munmap(buffer, len) != 0) {
usbi_err(HANDLE_CTX(handle), "free dev mem failed, errno=%d", errno);
char devnode[16];
int fd;
- unsigned char *cdesc; /* active config descriptor */
+ usb_config_descriptor_t *cdesc; /* active config descriptor */
usb_device_descriptor_t ddesc; /* usb device descriptor */
};
static int netbsd_open(struct libusb_device_handle *);
static void netbsd_close(struct libusb_device_handle *);
-static int netbsd_get_device_descriptor(struct libusb_device *, unsigned char *,
+static int netbsd_get_device_descriptor(struct libusb_device *, void *,
int *);
static int netbsd_get_active_config_descriptor(struct libusb_device *,
- unsigned char *, size_t);
+ void *, size_t);
static int netbsd_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int netbsd_get_configuration(struct libusb_device_handle *, int *);
static int netbsd_set_configuration(struct libusb_device_handle *, int);
goto error;
}
- dpriv->cdesc = NULL;
if (_cache_active_config_descriptor(dev, fd)) {
err = errno;
goto error;
}
int
-netbsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+netbsd_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
int
netbsd_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
- usb_config_descriptor_t *ucd;
- ucd = (usb_config_descriptor_t *) dpriv->cdesc;
- len = MIN(len, UGETW(ucd->wTotalLength));
+ len = MIN(len, UGETW(dpriv->cdesc->wTotalLength));
usbi_dbg("len %d", len);
int
netbsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_full_desc ufd;
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_config_desc ucd;
struct usb_full_desc ufd;
- unsigned char* buf;
+ void *buf;
int len;
usbi_dbg("fd %d", fd);
usbi_dbg("active bLength %d", ucd.ucd_desc.bLength);
len = UGETW(ucd.ucd_desc.wTotalLength);
- buf = malloc(len);
+ buf = malloc((size_t)len);
if (buf == NULL)
return (LIBUSB_ERROR_NO_MEM);
}
static int
-null_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+null_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
static int
null_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
static int
null_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
char *devname; /* name of the ugen(4) node */
int fd; /* device file descriptor */
- unsigned char *cdesc; /* active config descriptor */
+ usb_config_descriptor_t *cdesc; /* active config descriptor */
usb_device_descriptor_t ddesc; /* usb device descriptor */
};
static int obsd_open(struct libusb_device_handle *);
static void obsd_close(struct libusb_device_handle *);
-static int obsd_get_device_descriptor(struct libusb_device *, unsigned char *,
+static int obsd_get_device_descriptor(struct libusb_device *, void *,
int *);
static int obsd_get_active_config_descriptor(struct libusb_device *,
- unsigned char *, size_t);
+ void *, size_t);
static int obsd_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int obsd_get_configuration(struct libusb_device_handle *, int *);
static int obsd_set_configuration(struct libusb_device_handle *, int);
dpriv = usbi_get_device_priv(dev);
dpriv->fd = -1;
- dpriv->cdesc = NULL;
dpriv->devname = udevname;
dd.udd_bus = di.udi_bus;
}
int
-obsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+obsd_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
int
obsd_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
- usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc;
- len = MIN(len, UGETW(ucd->wTotalLength));
+ len = MIN(len, UGETW(dpriv->cdesc->wTotalLength));
usbi_dbg("len %zu", len);
int
obsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct usb_device_fdesc udf;
int fd, err;
obsd_get_configuration(struct libusb_device_handle *handle, int *config)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
- usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc;
- *config = ucd->bConfigurationValue;
+ *config = dpriv->cdesc->bConfigurationValue;
usbi_dbg("bConfigurationValue %d", *config);
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_device_cdesc udc;
struct usb_device_fdesc udf;
- unsigned char* buf;
+ void *buf;
int fd, len, err;
if ((fd = _bus_open(dev->bus_number)) < 0)
usbi_dbg("active bLength %d", udc.udc_desc.bLength);
len = UGETW(udc.udc_desc.wTotalLength);
- buf = malloc(len);
+ buf = malloc((size_t)len);
if (buf == NULL)
return (LIBUSB_ERROR_NO_MEM);
static int sunos_open(struct libusb_device_handle *);
static void sunos_close(struct libusb_device_handle *);
static int sunos_get_device_descriptor(struct libusb_device *,
- uint8_t *, int *);
+ void *, int *);
static int sunos_get_active_config_descriptor(struct libusb_device *,
- uint8_t *, size_t);
+ void *, size_t);
static int sunos_get_config_descriptor(struct libusb_device *, uint8_t,
- uint8_t *, size_t);
+ void *, size_t);
static int sunos_get_configuration(struct libusb_device_handle *, int *);
static int sunos_set_configuration(struct libusb_device_handle *, int);
static int sunos_claim_interface(struct libusb_device_handle *, int);
}
int
-sunos_get_device_descriptor(struct libusb_device *dev, uint8_t *buf,
+sunos_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(dev);
int
sunos_get_active_config_descriptor(struct libusb_device *dev,
- uint8_t *buf, size_t len)
+ void *buf, size_t len)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(dev);
struct libusb_config_descriptor *cfg;
int
sunos_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- uint8_t *buf, size_t len)
+ void *buf, size_t len)
{
/* XXX */
return(sunos_get_active_config_descriptor(dev, buf, len));
}
static int windows_get_device_descriptor(struct libusb_device *dev,
- unsigned char *buffer, int *host_endian)
+ void *buffer, int *host_endian)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_device_descriptor(dev, buffer);
}
static int windows_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buffer, size_t len)
+ void *buffer, size_t len)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_active_config_descriptor(dev, buffer, len);
}
static int windows_get_config_descriptor(struct libusb_device *dev,
- uint8_t config_index, unsigned char *buffer, size_t len)
+ uint8_t config_index, void *buffer, size_t len)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_config_descriptor(dev, config_index, buffer, len);
}
static int windows_get_config_descriptor_by_value(struct libusb_device *dev,
- uint8_t bConfigurationValue, unsigned char **buffer)
+ uint8_t bConfigurationValue, void **buffer)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_config_descriptor_by_value(dev, bConfigurationValue, buffer);
struct discovered_devs **discdevs);
int (*open)(struct libusb_device_handle *dev_handle);
void (*close)(struct libusb_device_handle *dev_handle);
- int (*get_device_descriptor)(struct libusb_device *device, unsigned char *buffer);
+ int (*get_device_descriptor)(struct libusb_device *device, void *buffer);
int (*get_active_config_descriptor)(struct libusb_device *device,
- unsigned char *buffer, size_t len);
+ void *buffer, size_t len);
int (*get_config_descriptor)(struct libusb_device *device,
- uint8_t config_index, unsigned char *buffer, size_t len);
+ uint8_t config_index, void *buffer, size_t len);
int (*get_config_descriptor_by_value)(struct libusb_device *device,
- uint8_t bConfigurationValue, unsigned char **buffer);
+ uint8_t bConfigurationValue, void **buffer);
int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config);
int (*set_configuration)(struct libusb_device_handle *dev_handle, int config);
int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number);
return r;
}
-static int usbdk_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer)
+static int usbdk_get_device_descriptor(struct libusb_device *dev, void *buffer)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
return LIBUSB_SUCCESS;
}
-static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len)
+static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
}
static int usbdk_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue,
- unsigned char **buffer)
+ void **buffer)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
for (index = 0; index < dev->device_descriptor.bNumConfigurations; index++) {
config_header = priv->config_descriptors[index];
if (config_header->bConfigurationValue == bConfigurationValue) {
- *buffer = (unsigned char *)priv->config_descriptors[index];
+ *buffer = priv->config_descriptors[index];
return (int)config_header->wTotalLength;
}
}
return LIBUSB_ERROR_NOT_FOUND;
}
-static int usbdk_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len)
+static int usbdk_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
return r;
}
-static int winusb_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer)
+static int winusb_get_device_descriptor(struct libusb_device *dev, void *buffer)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
return LIBUSB_SUCCESS;
}
-static int winusb_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len)
+static int winusb_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
- size_t size;
if ((priv->config_descriptor == NULL) || (priv->config_descriptor[config_index] == NULL))
return LIBUSB_ERROR_NOT_FOUND;
config_header = priv->config_descriptor[config_index];
- size = MIN(config_header->wTotalLength, len);
- memcpy(buffer, priv->config_descriptor[config_index], size);
- return (int)size;
+ len = MIN(len, config_header->wTotalLength);
+ memcpy(buffer, config_header, len);
+ return (int)len;
}
static int winusb_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue,
- unsigned char **buffer)
+ void **buffer)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
if (config_header == NULL)
continue;
if (config_header->bConfigurationValue == bConfigurationValue) {
- *buffer = (unsigned char *)priv->config_descriptor[index];
+ *buffer = config_header;
return (int)config_header->wTotalLength;
}
}
/*
* return the cached copy of the active config descriptor
*/
-static int winusb_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len)
+static int winusb_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
- unsigned char *config_desc;
+ void *config_desc;
int r;
if (priv->active_config == 0)
if (r < 0)
return r;
- len = MIN((size_t)r, len);
+ len = MIN(len, (size_t)r);
memcpy(buffer, config_desc, len);
return (int)len;
}
-#define LIBUSB_NANO 11507
+#define LIBUSB_NANO 11508