Changeset 945d66c in mainline for uspace/lib/usbdev/src/devdrv.c


Ignore:
Timestamp:
2013-01-25T22:55:22Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9e79a2f
Parents:
c39e9fb
Message:

libusbdev: Don't use the descriptor field directly.

Make descriptor handling functions static.

File:
1 edited

Legend:

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

    rc39e9fb r945d66c  
    233233 * @return Error code.
    234234 */
    235 int usb_device_retrieve_descriptors(usb_pipe_t *ctrl_pipe,
    236     usb_device_descriptors_t *descriptors)
    237 {
    238         assert(descriptors != NULL);
    239 
    240         descriptors->configuration = NULL;
    241 
    242         int rc;
     235static int usb_device_retrieve_descriptors(usb_device_t *usb_dev)
     236{
     237        assert(usb_dev);
     238        assert(usb_dev->descriptors.configuration == NULL);
    243239
    244240        /* It is worth to start a long transfer. */
    245         usb_pipe_start_long_transfer(ctrl_pipe);
     241        usb_pipe_start_long_transfer(&usb_dev->ctrl_pipe);
    246242
    247243        /* Get the device descriptor. */
    248         rc = usb_request_get_device_descriptor(ctrl_pipe, &descriptors->device);
     244        int rc = usb_request_get_device_descriptor(&usb_dev->ctrl_pipe,
     245            &usb_dev->descriptors.device);
    249246        if (rc != EOK) {
    250247                goto leave;
     
    253250        /* Get the full configuration descriptor. */
    254251        rc = usb_request_get_full_configuration_descriptor_alloc(
    255             ctrl_pipe, 0, (void **) &descriptors->configuration,
    256             &descriptors->configuration_size);
     252            &usb_dev->ctrl_pipe, 0,
     253            (void **) &usb_dev->descriptors.configuration,
     254            &usb_dev->descriptors.configuration_size);
    257255
    258256leave:
    259         usb_pipe_end_long_transfer(ctrl_pipe);
     257        usb_pipe_end_long_transfer(&usb_dev->ctrl_pipe);
    260258
    261259        return rc;
     
    266264 * @param[in] descriptors Where to store the descriptors.
    267265 */
    268 void usb_device_release_descriptors(usb_device_descriptors_t *descriptors)
    269 {
    270         assert(descriptors);
    271         free(descriptors->configuration);
    272         descriptors->configuration = NULL;
     266static void usb_device_release_descriptors(usb_device_t *usb_dev)
     267{
     268        assert(usb_dev);
     269        free(usb_dev->descriptors.configuration);
     270        usb_dev->descriptors.configuration = NULL;
     271        usb_dev->descriptors.configuration_size = 0;
    273272}
    274273
     
    394393}
    395394
     395const usb_standard_device_descriptor_t *
     396usb_device_get_device_descriptor(usb_device_t *usb_dev)
     397{
     398        assert(usb_dev);
     399        return &usb_dev->descriptors.device;
     400}
     401
     402const void * usb_device_get_configuration_descriptor(
     403    usb_device_t *usb_dev, size_t *size)
     404{
     405        assert(usb_dev);
     406        if (size)
     407                *size = usb_dev->descriptors.configuration_size;
     408        return usb_dev->descriptors.configuration;
     409}
     410
    396411/** Initialize new instance of USB device.
    397412 *
     
    462477
    463478        /* Retrieve standard descriptors. */
    464         rc = usb_device_retrieve_descriptors(
    465             &usb_dev->ctrl_pipe, &usb_dev->descriptors);
     479        rc = usb_device_retrieve_descriptors(usb_dev);
    466480        if (rc != EOK) {
    467481                *errstr_ptr = "descriptor retrieval";
     
    489503                usb_hc_connection_close(&usb_dev->hc_conn);
    490504                /* Full configuration descriptor is allocated. */
    491                 usb_device_release_descriptors(&usb_dev->descriptors);
     505                usb_device_release_descriptors(usb_dev);
    492506                /* Alternate interfaces may be allocated */
    493507                usb_alternate_interfaces_deinit(&usb_dev->alternate_interfaces);
     
    515529                usb_hc_connection_deinitialize(&dev->hc_conn);
    516530                usb_alternate_interfaces_deinit(&dev->alternate_interfaces);
    517                 usb_device_release_descriptors(&dev->descriptors);
     531                usb_device_release_descriptors(dev);
    518532                free(dev->driver_data);
    519533                dev->driver_data = NULL;
Note: See TracChangeset for help on using the changeset viewer.