Changeset e2dfa86 in mainline for uspace/lib/usbdev/src


Ignore:
Timestamp:
2013-01-27T13:54:40Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0eb2a0f
Parents:
06f9a9c9
Message:

usb_device: Change API to allow direct(RO) access to descriptors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/src/devdrv.c

    r06f9a9c9 re2dfa86  
    6868        /** Alternative interfaces. */
    6969        usb_alternate_interfaces_t alternate_interfaces;
    70 
    7170        /** Some useful descriptors for USB device. */
    72         struct {
    73                 /** Standard device descriptor. */
    74                 usb_standard_device_descriptor_t device;
    75                 /** Full configuration descriptor of current configuration. */
    76                 const uint8_t *configuration;
    77                 size_t configuration_size;
    78         } descriptors;
    79 
     71        usb_device_descriptors_t descriptors;
    8072        /** Generic DDF device backing this one. DO NOT TOUCH! */
    8173        ddf_dev_t *ddf_dev;
     
    160152{
    161153        assert(usb_dev);
    162         assert(usb_dev->descriptors.configuration == NULL);
     154        assert(usb_dev->descriptors.full_config == NULL);
    163155
    164156        /* It is worth to start a long transfer. */
     
    175167        rc = usb_request_get_full_configuration_descriptor_alloc(
    176168            &usb_dev->ctrl_pipe, 0,
    177             (void **) &usb_dev->descriptors.configuration,
    178             &usb_dev->descriptors.configuration_size);
     169            (void**)&usb_dev->descriptors.full_config,
     170            &usb_dev->descriptors.full_config_size);
    179171
    180172leave:
     
    191183{
    192184        assert(usb_dev);
    193         free(usb_dev->descriptors.configuration);
    194         usb_dev->descriptors.configuration = NULL;
    195         usb_dev->descriptors.configuration_size = 0;
     185        free(usb_dev->descriptors.full_config);
     186        usb_dev->descriptors.full_config = NULL;
     187        usb_dev->descriptors.full_config_size = 0;
    196188}
    197189
     
    219211{
    220212        assert(usb_dev);
    221         assert(usb_dev->descriptors.configuration);
     213        assert(usb_dev->descriptors.full_config);
    222214        assert(usb_dev->pipes == NULL);
    223215        assert(usb_dev->pipes_count == 0);
     
    244236        /* Find the mapping from configuration descriptor. */
    245237        int rc = usb_pipe_initialize_from_configuration(pipes, pipe_count,
    246             usb_dev->descriptors.configuration,
    247             usb_dev->descriptors.configuration_size, &usb_dev->wire);
     238            usb_dev->descriptors.full_config,
     239            usb_dev->descriptors.full_config_size, &usb_dev->wire);
    248240        if (rc != EOK) {
    249241                free(pipes);
     
    338330}
    339331
    340 const usb_standard_device_descriptor_t *
    341 usb_device_get_device_descriptor(usb_device_t *usb_dev)
    342 {
    343         assert(usb_dev);
    344         return &usb_dev->descriptors.device;
    345 }
    346 
    347 const void * usb_device_get_configuration_descriptor(
    348     usb_device_t *usb_dev, size_t *size)
    349 {
    350         assert(usb_dev);
    351         if (size)
    352                 *size = usb_dev->descriptors.configuration_size;
    353         return usb_dev->descriptors.configuration;
     332const usb_device_descriptors_t *usb_device_descriptors(usb_device_t *usb_dev)
     333{
     334        assert(usb_dev);
     335        return &usb_dev->descriptors;
    354336}
    355337
     
    430412        usb_dev->ddf_dev = ddf_dev;
    431413        usb_dev->driver_data = NULL;
    432         usb_dev->descriptors.configuration = NULL;
     414        usb_dev->descriptors.full_config = NULL;
     415        usb_dev->descriptors.full_config_size = 0;
    433416        usb_dev->pipes_count = 0;
    434417        usb_dev->pipes = NULL;
     
    500483         * controlling a device. */
    501484        rc = usb_alternate_interfaces_init(&usb_dev->alternate_interfaces,
    502             usb_dev->descriptors.configuration,
    503             usb_dev->descriptors.configuration_size, usb_dev->interface_no);
     485            usb_dev->descriptors.full_config,
     486            usb_dev->descriptors.full_config_size, usb_dev->interface_no);
    504487
    505488        if (endpoints) {
Note: See TracChangeset for help on using the changeset viewer.