#include "libhusb.h"
#include "uref.h"
#include "common.h"
+#include "log.h"
#define MAX_NMB_OF_CONFIGS 255
struct libhusb_device *dev;
dev = malloc(sizeof(*dev));
- if (!dev)
+ if (!dev) {
+ _E("malloc() failed");
goto out;
+ }
uref_init(&dev->ref, free_device);
assert(ctx);
_ctx = malloc(sizeof(*_ctx));
- if (!_ctx)
+ if (!_ctx) {
+ _E("malloc() failed");
goto out;
+ }
do {
ret = libusb_init(&(_ctx->lusb_ctx));
count--;
} while (ret == LIBUSB_ERROR_OTHER && count > 0);
- if (ret < 0)
+ if (ret < 0) {
+ _E("Failed to init libusb (%d)", ret);
goto free_ctx;
+ }
*ctx = _ctx;
assert(dev);
handle = malloc(sizeof(*handle));
- if (!handle)
+ if (!handle) {
+ _E("malloc() failed");
goto out;
+ }
memset(handle, 0, sizeof(*handle));
ret = libusb_open(dev->lusb_dev, &(handle->lusb_dev_handle));
if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to open device using libusb_open (%d)", ret);
goto unref_dev;
}
libusb_device *ldev;
handle = malloc(sizeof(*handle));
- if (!handle)
+ if (!handle) {
+ _E("malloc() failed");
goto out;
+ }
ldev_handle = libusb_open_device_with_vid_pid(ctx->lusb_ctx,
vendor_id, product_id);
- if (ldev_handle == NULL)
+ if (ldev_handle == NULL) {
+ _E("Failed to open usb device with vid and pid");
goto free_handle;
+ }
handle->lusb_dev_handle = ldev_handle;
ldev = libusb_get_device(ldev_handle);
+ if (!ldev) {
+ _E("Failed to get device");
+ goto close_handle;
+ }
dev = alloc_device(ldev);
- if (!dev)
+ if (!dev) {
+ _E("Faild to allocate memory for a device");
goto close_handle;
+ }
handle->device = dev;
assert(context);
assert(devs);
+
len = libusb_get_device_list(context->lusb_ctx, &lusb_list);
if (len < 0) {
ret = translate_error(len);
+ _E("Failed to get device list(%d)", ret);
goto out;
}
list = calloc(len + 1, sizeof(*list));
- if (!list)
+ if (!list) {
+ _E("calloc() failed");
goto free_lusb_list;
+ }
list[len] = NULL;
for (i = 0; i < len; i++) {
rdevice = alloc_device(lusb_list[i]);
- if (!rdevice)
+ if (!rdevice) {
+ _E("Failed to allocate memory for a device");
goto free_dev_list;
+ }
list[i] = rdevice;
}
assert(dev);
ret = libusb_get_max_iso_packet_size(dev->lusb_dev, endpoint);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to get max iso packet size(%d)", ret);
+ }
return ret;
}
assert(handle);
ret = libusb_get_configuration(handle->lusb_dev_handle, config);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to get configuration(%d)", ret);
+ }
return ret;
}
assert(handle);
ret = libusb_set_configuration(handle->lusb_dev_handle, configuration);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to set configuration(%d)", ret);
+ }
return ret;
}
assert(handle);
- if (interface_number < 0 || interface_number > MAX_NMB_OF_CONFIGS)
+ if (interface_number < 0 || interface_number > MAX_NMB_OF_CONFIGS) {
+ _E("Invalid parameters");
goto out;
+ }
if (!force)
goto claim_interface;
+
/*
* If force param has been set let's check if kernel driver is active
* and detach it if necessary
interface_number);
if (ret < 0) {
ret = translate_error(ret);
+ _E("Faield to activate kernel driver (%d)", ret);
goto out;
} else if (ret == 1) {
ret = libusb_detach_kernel_driver(handle->lusb_dev_handle,
interface_number);
if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to detach kernel driver(%d)", ret);
goto out;
}
ret = libusb_claim_interface(handle->lusb_dev_handle, interface_number);
if (ret < 0) {
ret = translate_error(ret);
+ _E("Faild to claim interface (%d)", ret);
goto claim_failed;
}
assert(handle);
- if (interface_number < 0 || interface_number > MAX_NMB_OF_CONFIGS)
+ if (interface_number < 0 || interface_number > MAX_NMB_OF_CONFIGS) {
+ _E("Invalid parameters");
goto out;
+ }
ret = libusb_release_interface(handle->lusb_dev_handle,
interface_number);
if (ret != 0) {
ret = translate_error(ret);
+ _E("Failed to release interface(%d)", ret);
goto out;
}
assert(handle);
ret = libusb_clear_halt(handle->lusb_dev_handle, endpoint);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to clear halt (%d)", ret);
+ }
return ret;
}
assert(handle);
ret = libusb_reset_device(handle->lusb_dev_handle);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to reset device (%d)", ret);
+ }
return ret;
}
assert(handle);
ret = libusb_kernel_driver_active(handle->lusb_dev_handle, interface_number);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to activate kernel driver");
+ }
return ret;
}
assert(handle);
ret = libusb_detach_kernel_driver(handle->lusb_dev_handle, interface_number);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to detach kernel driver (%d)", ret);
+ }
return ret;
}
assert(handle);
ret = libusb_attach_kernel_driver(handle->lusb_dev_handle, interface_number);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to attach kernel driver(%d)", ret);
+ }
return ret;
}
descriptor = libusb_get_device_descriptor(dev->lusb_dev,
(struct libusb_device_descriptor *)desc);
- if (descriptor < 0)
+ if (descriptor < 0) {
descriptor = translate_error(descriptor);
+ _E("Failed to get device descriptor(%d)", descriptor);
+ }
return descriptor;
}
if (src_len > 0) {
extra_length = src_len;
extra = malloc(extra_length);
- if (!extra)
+ if (!extra) {
+ _E("malloc() failed");
goto out;
+ }
memcpy(extra, src, extra_length);
}
#undef COPY_FIELD
eps = calloc(dest->bNumEndpoints, sizeof(*eps));
- if (!eps)
+ if (!eps) {
+ _E("calloc() failed");
goto out;
+ }
for (i = 0; i < dest->bNumEndpoints; ++i) {
ret = dump_ep_desc(eps + i, src->endpoint + i);
- if (ret != 0)
+ if (ret != 0) {
+ _E("dump_ep_desc() failed (%d)", ret);
goto free_eps;
+ }
}
ret = dump_extra(src->extra, src->extra_length,
&(dest->extra), &(dest->extra_length));
- if (ret)
+ if (ret) {
+ _E("dump_extra() failed (%d)", ret);
goto free_eps;
+ }
dest->endpoint = eps;
dest->num_altsetting = src->num_altsetting;
int_descs = calloc(dest->num_altsetting, sizeof(*int_descs));
- if (!int_descs)
+ if (!int_descs) {
+ _E("calloc() failed");
goto out;
+ }
for (i = 0; i < dest->num_altsetting; ++i) {
ret = dump_interface_desc(int_descs + i, src->altsetting + i);
- if (ret != 0)
+ if (ret != 0) {
+ _E("dump_interface_desc() failed (%d)", ret);
goto free_int_desc;
+ }
}
dest->altsetting = int_descs;
#undef COPY_FIELD
interfaces = calloc(dest->bNumInterfaces, sizeof(*interfaces));
- if (!interfaces)
+ if (!interfaces) {
+ _E("calloc() failed");
goto out;
+ }
for (i = 0; i < dest->bNumInterfaces; ++i) {
ret = dump_interface(interfaces + i, src->interface + i);
- if (ret != 0)
+ if (ret != 0) {
+ _E("dump_interface() failed");
goto free_interfaces;
+ }
}
ret = dump_extra(src->extra, src->extra_length,
&(dest->extra), &(dest->extra_length));
- if (ret)
+ if (ret) {
+ _E("dump_extra() failed");
goto free_interfaces;
+ }
dest->interface = interfaces;
config_index, &lcfg_desc);
if (ret < 0) {
ret = translate_error(ret);
+ _E("Failed to get configuration descriptor (%d)", ret);
goto out;
}
cfg_desc = malloc(sizeof(*cfg_desc));
if (!cfg_desc) {
+ _E("malloc() failed");
ret = LIBHUSB_ERROR_NO_MEM;
goto free_lcfg_desc;
}
ret = dump_config_desc(cfg_desc, lcfg_desc);
- if (ret != 0)
+ if (ret != 0) {
+ _E("dump_config_desc() failed");
free(cfg_desc);
+ }
*config = cfg_desc;
assert(handle);
ret = libusb_get_string_descriptor_ascii(handle->lusb_dev_handle, desc_index, data, length);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Failded to get descriptor(%d)", ret);
+ }
return ret;
}
ret = libusb_control_transfer(handle->lusb_dev_handle, request_type, bRequest,
wValue, wIndex, data, wLength, timeout);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Control transfer failed(%d)", ret);
+ }
return ret;
}
ret = libusb_bulk_transfer(handle->lusb_dev_handle, endpoint, data, length,
actual_length, timeout);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Bulk transfer failed (%d)", ret);
+ }
return ret;
}
ret = libusb_interrupt_transfer(handle->lusb_dev_handle, endpoint, data, length,
actual_length, timeout);
- if (ret < 0)
+ if (ret < 0) {
ret = translate_error(ret);
+ _E("Interrupt transfer failed (%d)", ret);
+ }
return ret;
}