Ignore:
File:
1 edited

Legend:

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

    r77ad86c rc01987c  
    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.