Ignore:
File:
1 edited

Legend:

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

    rb208b3b r77ad86c  
    3434 */
    3535
    36 #include <usb/dev/alternate_ifaces.h>
     36#include <usb/dev/driver.h>
     37#include <usb/dev/request.h>
     38#include <usb/debug.h>
    3739#include <usb/dev/dp.h>
    38 #include <malloc.h>
    3940#include <errno.h>
     41#include <str_error.h>
    4042#include <assert.h>
    4143
     
    103105        }
    104106
    105         const size_t alt_count =usb_interface_count_alternates(config_descr,
    106             config_descr_size, interface_number);
     107        alternates->alternative_count
     108            = usb_interface_count_alternates(config_descr, config_descr_size,
     109                interface_number);
    107110
    108         if (alt_count == 0) {
     111        if (alternates->alternative_count == 0) {
    109112                return ENOENT;
    110113        }
    111114
    112         usb_alternate_interface_descriptors_t *alts = calloc(alt_count,
     115        alternates->alternatives = calloc(alternates->alternative_count,
    113116            sizeof(usb_alternate_interface_descriptors_t));
    114         if (alts == NULL) {
     117        if (alternates->alternatives == NULL) {
    115118                return ENOMEM;
    116119        }
     
    125128        };
    126129
     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];
    127135
    128136        const void *iface_ptr =
    129137            usb_dp_get_nested_descriptor(&dp_parser, &dp_data, dp_data.data);
    130138
    131         usb_alternate_interface_descriptors_t *iterator = alts;
    132         for (; iface_ptr != NULL && iterator < &alts[alt_count]; ++iterator) {
     139        while (iface_ptr != NULL && iterator < end) {
    133140                const usb_standard_interface_descriptor_t *iface = iface_ptr;
    134141
     
    152159                    dp_data.data + dp_data.size : iface_ptr;
    153160
    154                 iterator->nested_descriptors_size =
    155                     next - iterator->nested_descriptors;
     161                iterator->nested_descriptors_size
     162                    = next - iterator->nested_descriptors;
     163
     164                ++iterator;
    156165        }
    157 
    158         alternates->alternatives = alts;
    159         alternates->alternative_count = alt_count;
    160166
    161167        return EOK;
Note: See TracChangeset for help on using the changeset viewer.