abstraction for cross-platform-ness
error codes
fixme review
+review functionality missing over 0.1
add some libusb_transfer flags:
- treat short transfers as errors
- unlink behaviour control
- - setup packet prepends data (no copying needed)
- update timeout with time remaining
1.0 API style/naming points to reconsider
=========================================
-config struct/function naming
typedef _cb or _cb_fn or _cb_t?
typedef as-is or pointers? libusb_dev_t rather than libusb_dev *?
optional timerfd support (runtime detection)
notifications of hotplugged/unplugged devices
use poll() rather than select()?
+offer API to create/destroy handle_events thread
int i = 0;
while ((dev = devs[i++]) != NULL) {
- struct libusb_dev_descriptor *desc = libusb_device_get_descriptor(dev);
+ struct libusb_device_descriptor *desc =
+ libusb_get_device_descriptor(dev);
printf("%04x:%04x\n", desc->idVendor, desc->idProduct);
}
}
}
}
-API_EXPORTED struct libusb_dev_descriptor *libusb_device_get_descriptor(
+API_EXPORTED struct libusb_device_descriptor *libusb_get_device_descriptor(
struct libusb_device *dev)
{
return &dev->desc;
}
-API_EXPORTED struct libusb_config_descriptor *libusb_device_get_config(
+API_EXPORTED struct libusb_config_descriptor *libusb_get_config_descriptor(
struct libusb_device *dev)
{
return dev->config;
return NULL;
while ((dev = devs[i++]) != NULL) {
- struct libusb_dev_descriptor *desc = libusb_device_get_descriptor(dev);
+ struct libusb_device_descriptor *desc =
+ libusb_get_device_descriptor(dev);
if (desc->idVendor == vendor_id && desc->idProduct == product_id) {
found = dev;
break;
#define LIBUSB_RECIP_ENDPOINT 0x02
#define LIBUSB_RECIP_OTHER 0x03
-struct libusb_dev_descriptor {
+struct libusb_device_descriptor {
uint8_t bLength;
uint8_t bDescriptorType;
uint16_t bcdUSB;
int libusb_get_device_list(libusb_device ***list);
void libusb_free_device_list(libusb_device **list, int unref_devices);
-struct libusb_dev_descriptor *libusb_device_get_descriptor(libusb_device *dev);
-struct libusb_config_descriptor *libusb_device_get_config(libusb_device *dev);
+struct libusb_device_descriptor *libusb_get_device_descriptor(
+ libusb_device *dev);
+struct libusb_config_descriptor *libusb_get_config_descriptor(
+ libusb_device *dev);
libusb_device *libusb_device_ref(libusb_device *dev);
void libusb_device_unref(libusb_device *dev);
int refcnt;
unsigned long session_data;
char *nodepath;
- struct libusb_dev_descriptor desc;
+ struct libusb_device_descriptor desc;
struct libusb_config_descriptor *config;
};