Ignore:
File:
1 edited

Legend:

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

    r5fd9c30 r58563585  
    3131#include <usb/debug.h>
    3232#include <usbvirt/device.h>
    33 #include <usb/host/bandwidth.h>
    3433#include <usbvirt/ipc.h>
    3534#include "vhcd.h"
     
    3837static bool is_set_address_transfer(vhc_transfer_t *transfer)
    3938{
    40         if (transfer->batch->ep->target.endpoint != 0) {
     39        if (transfer->batch->ep->endpoint != 0) {
    4140                return false;
    4241        }
     
    4443                return false;
    4544        }
    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;
     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;
    5150        if (setup->request_type != 0) {
    5251                return false;
     
    6362{
    6463        int rc;
    65 
    66         const usb_direction_t dir = batch->dir;
     64       
     65        const usb_direction_t dir = usb_transfer_batch_direction(batch);
    6766
    6867        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    6968                if (dir == USB_DIRECTION_IN) {
    7069                        rc = usbvirt_control_read(dev,
    71                             batch->setup.buffer, USB_SETUP_PACKET_SIZE,
     70                            batch->setup_buffer, batch->setup_size,
    7271                            batch->buffer, batch->buffer_size,
    7372                            actual_data_size);
     
    7574                        assert(dir == USB_DIRECTION_OUT);
    7675                        rc = usbvirt_control_write(dev,
    77                             batch->setup.buffer, USB_SETUP_PACKET_SIZE,
     76                            batch->setup_buffer, batch->setup_size,
    7877                            batch->buffer, batch->buffer_size);
    7978                }
     
    8180                if (dir == USB_DIRECTION_IN) {
    8281                        rc = usbvirt_data_in(dev, batch->ep->transfer_type,
    83                             batch->ep->target.endpoint,
     82                            batch->ep->endpoint,
    8483                            batch->buffer, batch->buffer_size,
    8584                            actual_data_size);
     
    8786                        assert(dir == USB_DIRECTION_OUT);
    8887                        rc = usbvirt_data_out(dev, batch->ep->transfer_type,
    89                             batch->ep->target.endpoint,
     88                            batch->ep->endpoint,
    9089                            batch->buffer, batch->buffer_size);
    9190                }
     
    10099        int rc;
    101100
    102         const usb_direction_t dir = batch->dir;
     101        const usb_direction_t dir = usb_transfer_batch_direction(batch);
    103102
    104103        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    105104                if (dir == USB_DIRECTION_IN) {
    106105                        rc = usbvirt_ipc_send_control_read(sess,
    107                             batch->setup.buffer, USB_SETUP_PACKET_SIZE,
     106                            batch->setup_buffer, batch->setup_size,
    108107                            batch->buffer, batch->buffer_size,
    109108                            actual_data_size);
     
    111110                        assert(dir == USB_DIRECTION_OUT);
    112111                        rc = usbvirt_ipc_send_control_write(sess,
    113                             batch->setup.buffer, USB_SETUP_PACKET_SIZE,
     112                            batch->setup_buffer, batch->setup_size,
    114113                            batch->buffer, batch->buffer_size);
    115114                }
    116115        } else {
    117116                if (dir == USB_DIRECTION_IN) {
    118                         rc = usbvirt_ipc_send_data_in(sess, batch->ep->target.endpoint,
     117                        rc = usbvirt_ipc_send_data_in(sess, batch->ep->endpoint,
    119118                            batch->ep->transfer_type,
    120119                            batch->buffer, batch->buffer_size,
     
    122121                } else {
    123122                        assert(dir == USB_DIRECTION_OUT);
    124                         rc = usbvirt_ipc_send_data_out(sess, batch->ep->target.endpoint,
     123                        rc = usbvirt_ipc_send_data_out(sess, batch->ep->endpoint,
    125124                            batch->ep->transfer_type,
    126125                            batch->buffer, batch->buffer_size);
     
    149148        assert(transfer);
    150149        assert(transfer->batch);
    151         transfer->batch->error = outcome;
    152         transfer->batch->transfered_size = data_transfer_size;
    153         usb_transfer_batch_finish(transfer->batch);
     150        usb_transfer_batch_finish_error(transfer->batch, NULL,
     151            data_transfer_size, outcome);
     152        usb_transfer_batch_destroy(transfer->batch);
    154153        free(transfer);
    155154}
     
    160159        list_initialize(&instance->devices);
    161160        fibril_mutex_initialize(&instance->guard);
    162         usb2_bus_init(&instance->bus, BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11);
    163161        instance->magic = 0xDEADBEEF;
    164162        return virthub_init(&instance->hub, "root hub");
     
    184182        list_foreach(vhc->devices, link, vhc_virtdev_t, dev) {
    185183                fibril_mutex_lock(&dev->guard);
    186                 if (dev->address == transfer->batch->ep->target.address) {
     184                if (dev->address == transfer->batch->ep->address) {
    187185                        if (!targets) {
    188186                                list_append(&transfer->link, &dev->transfer_queue);
     
    236234                        if (is_set_address_transfer(transfer)) {
    237235                                usb_device_request_setup_packet_t *setup =
    238                                     (void*) transfer->batch->setup.buffer;
     236                                    (void*) transfer->batch->setup_buffer;
    239237                                dev->address = setup->value;
    240238                                usb_log_debug2("Address changed to %d\n",
Note: See TracChangeset for help on using the changeset viewer.