Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7bd7fef authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Added get descriptors length function to enable direct access to raw descriptors."

parents 10f71df9 baea1bd8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -137,8 +137,15 @@ uint16_t usb_device_get_vendor_id(struct usb_device *device);
/* Returns the USB product ID from the device descriptor for the USB device */
uint16_t usb_device_get_product_id(struct usb_device *device);

/* Returns a pointer to device descriptor */
const struct usb_device_descriptor* usb_device_get_device_descriptor(struct usb_device *device);

/* Returns the length in bytes read into the raw descriptors array */
size_t usb_device_get_descriptors_length(const struct usb_device* device);

/* Returns a pointer to the raw descriptors array */
const unsigned char* usb_device_get_raw_descriptors(const struct usb_device* device);

/* Returns a USB descriptor string for the given string ID.
 * Used to implement usb_device_get_manufacturer_name,
 * usb_device_get_product_name and usb_device_get_serial.
+14 −3
Original line number Diff line number Diff line
@@ -80,9 +80,11 @@ struct usb_host_context {
    int                         wddbus;
};

#define MAX_DESCRIPTORS_LENGTH 4096

struct usb_device {
    char dev_name[64];
    unsigned char desc[4096];
    unsigned char desc[MAX_DESCRIPTORS_LENGTH];
    int desc_length;
    int fd;
    int writeable;
@@ -381,6 +383,8 @@ struct usb_device *usb_device_new(const char *dev_name, int fd)
    return device;

failed:
    // TODO It would be more appropriate to have callers do this
    // since this function doesn't "own" this file descriptor.
    close(fd);
    free(device);
    return NULL;
@@ -449,11 +453,18 @@ uint16_t usb_device_get_product_id(struct usb_device *device)
    return __le16_to_cpu(desc->idProduct);
}

const struct usb_device_descriptor* usb_device_get_device_descriptor(struct usb_device *device)
{
const struct usb_device_descriptor* usb_device_get_device_descriptor(struct usb_device* device) {
    return (struct usb_device_descriptor*)device->desc;
}

size_t usb_device_get_descriptors_length(const struct usb_device* device) {
    return device->desc_length;
}

const unsigned char* usb_device_get_raw_descriptors(const struct usb_device* device) {
    return device->desc;
}

char* usb_device_get_string(struct usb_device *device, int id, int timeout)
{
    char string[256];