Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/vhc/transfer.c

    r58563585 ra5b3de6  
    3131#include <usb/debug.h>
    3232#include <usbvirt/device.h>
     33#include <usb/host/bandwidth.h>
    3334#include <usbvirt/ipc.h>
    3435#include "vhcd.h"
     
    3738static bool is_set_address_transfer(vhc_transfer_t *transfer)
    3839{
    39         if (transfer->batch->ep->endpoint != 0) {
     40        if (transfer->batch->target.endpoint != 0) {
    4041                return false;
    4142        }
     
    4344                return false;
    4445        }
    45         if (usb_transfer_batch_direction(transfer->batch) != USB_DIRECTION_OUT) {
    46                 return false;
    47         }
    48         const usb_device_request_setup_packet_t *setup =
    49             (void*)transfer->batch->setup_buffer;
     46        if (transfer->batch->dir != USB_DIRECTION_OUT) {
     47                return false;
     48        }
     49        const usb_device_request_setup_packet_t *setup
     50                = &transfer->batch->setup.packet;
    5051        if (setup->request_type != 0) {
    5152                return false;
     
    6263{
    6364        int rc;
    64        
    65         const usb_direction_t dir = usb_transfer_batch_direction(batch);
     65
     66        const usb_direction_t dir = batch->dir;
    6667
    6768        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    6869                if (dir == USB_DIRECTION_IN) {
    6970                        rc = usbvirt_control_read(dev,
    70                             batch->setup_buffer, batch->setup_size,
     71                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    7172                            batch->buffer, batch->buffer_size,
    7273                            actual_data_size);
     
    7475                        assert(dir == USB_DIRECTION_OUT);
    7576                        rc = usbvirt_control_write(dev,
    76                             batch->setup_buffer, batch->setup_size,
     77                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    7778                            batch->buffer, batch->buffer_size);
    7879                }
     
    99100        int rc;
    100101
    101         const usb_direction_t dir = usb_transfer_batch_direction(batch);
     102        const usb_direction_t dir = batch->dir;
    102103
    103104        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    104105                if (dir == USB_DIRECTION_IN) {
    105106                        rc = usbvirt_ipc_send_control_read(sess,
    106                             batch->setup_buffer, batch->setup_size,
     107                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    107108                            batch->buffer, batch->buffer_size,
    108109                            actual_data_size);
     
    110111                        assert(dir == USB_DIRECTION_OUT);
    111112                        rc = usbvirt_ipc_send_control_write(sess,
    112                             batch->setup_buffer, batch->setup_size,
     113                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    113114                            batch->buffer, batch->buffer_size);
    114115                }
     
    148149        assert(transfer);
    149150        assert(transfer->batch);
    150         usb_transfer_batch_finish_error(transfer->batch, NULL,
    151             data_transfer_size, outcome);
    152         usb_transfer_batch_destroy(transfer->batch);
     151        transfer->batch->error = outcome;
     152        transfer->batch->transfered_size = data_transfer_size;
     153        usb_transfer_batch_finish(transfer->batch);
    153154        free(transfer);
    154155}
     
    159160        list_initialize(&instance->devices);
    160161        fibril_mutex_initialize(&instance->guard);
     162        usb2_bus_init(&instance->bus, BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11);
    161163        instance->magic = 0xDEADBEEF;
    162164        return virthub_init(&instance->hub, "root hub");
     
    182184        list_foreach(vhc->devices, link, vhc_virtdev_t, dev) {
    183185                fibril_mutex_lock(&dev->guard);
    184                 if (dev->address == transfer->batch->ep->address) {
     186                if (dev->address == transfer->batch->target.address) {
    185187                        if (!targets) {
    186188                                list_append(&transfer->link, &dev->transfer_queue);
     
    234236                        if (is_set_address_transfer(transfer)) {
    235237                                usb_device_request_setup_packet_t *setup =
    236                                     (void*) transfer->batch->setup_buffer;
     238                                    (void*) transfer->batch->setup.buffer;
    237239                                dev->address = setup->value;
    238240                                usb_log_debug2("Address changed to %d\n",
Note: See TracChangeset for help on using the changeset viewer.