Changeset b4b534ac in mainline for uspace/lib/usbdev/src/altiface.c


Ignore:
Timestamp:
2016-07-22T08:24:47Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f76d2c2
Parents:
5b18137 (diff), 8351f9a4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~jan.vesely/helenos/usb

File:
1 edited

Legend:

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

    r5b18137 rb4b534ac  
    3434 */
    3535
    36 #include <usb/dev/driver.h>
    37 #include <usb/dev/request.h>
    38 #include <usb/debug.h>
     36#include <usb/dev/alternate_ifaces.h>
    3937#include <usb/dev/dp.h>
     38#include <assert.h>
    4039#include <errno.h>
    41 #include <str_error.h>
    42 #include <assert.h>
     40#include <stdlib.h>
    4341
    4442/** Count number of alternate settings of a interface.
     
    105103        }
    106104
    107         alternates->alternative_count
    108             = usb_interface_count_alternates(config_descr, config_descr_size,
    109                 interface_number);
     105        const size_t alt_count = usb_interface_count_alternates(config_descr,
     106            config_descr_size, interface_number);
    110107
    111         if (alternates->alternative_count == 0) {
     108        if (alt_count == 0) {
    112109                return ENOENT;
    113110        }
    114111
    115         alternates->alternatives = calloc(alternates->alternative_count,
     112        usb_alternate_interface_descriptors_t *alts = calloc(alt_count,
    116113            sizeof(usb_alternate_interface_descriptors_t));
    117         if (alternates->alternatives == NULL) {
     114        if (alts == NULL) {
    118115                return ENOMEM;
    119116        }
     
    128125        };
    129126
    130         usb_alternate_interface_descriptors_t *iterator
    131             = &alternates->alternatives[0];
    132 
    133         const usb_alternate_interface_descriptors_t *end
    134             = &alternates->alternatives[alternates->alternative_count];
    135127
    136128        const void *iface_ptr =
    137129            usb_dp_get_nested_descriptor(&dp_parser, &dp_data, dp_data.data);
    138130
    139         while (iface_ptr != NULL && iterator < end) {
     131        usb_alternate_interface_descriptors_t *iterator = alts;
     132        for (; iface_ptr != NULL && iterator < &alts[alt_count]; ++iterator) {
    140133                const usb_standard_interface_descriptor_t *iface = iface_ptr;
    141134
     
    159152                    dp_data.data + dp_data.size : iface_ptr;
    160153
    161                 iterator->nested_descriptors_size
    162                     = next - iterator->nested_descriptors;
     154                iterator->nested_descriptors_size =
     155                    next - iterator->nested_descriptors;
     156        }
    163157
    164                 ++iterator;
    165         }
     158        alternates->alternatives = alts;
     159        alternates->alternative_count = alt_count;
    166160
    167161        return EOK;
Note: See TracChangeset for help on using the changeset viewer.