Changes in / [bc02b83:f90c0d6] in mainline


Ignore:
Files:
12 added
5 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • boot/Makefile.common

    rbc02b83 rf90c0d6  
    140140        $(USPACE_PATH)/app/stats/stats \
    141141        $(USPACE_PATH)/app/sysinfo/sysinfo \
     142        $(USPACE_PATH)/app/tasks/tasks \
    142143        $(USPACE_PATH)/app/top/top \
    143144        $(USPACE_PATH)/app/usbinfo/usbinfo \
     145        $(USPACE_PATH)/app/virtusbkbd/vuk \
    144146        $(USPACE_PATH)/app/vuhid/vuh \
    145147        $(USPACE_PATH)/app/websrv/websrv
  • uspace/Makefile

    rbc02b83 rf90c0d6  
    5151        app/top \
    5252        app/usbinfo \
     53        app/virtusbkbd \
    5354        app/vuhid \
    5455        app/netecho \
  • uspace/app/vuhid/device.c

    rbc02b83 rf90c0d6  
    7777{
    7878        vuhid_interface_t *iface = arg;
    79         vuhid_data_t *hid_data = iface->vuhid_data;
    8079
    8180        if (iface->live != NULL) {
    8281                iface->live(iface);
    8382        }
    84 
    85         fibril_mutex_lock(&hid_data->iface_count_mutex);
    86         hid_data->iface_died_count++;
    87         fibril_condvar_broadcast(&hid_data->iface_count_cv);
    88         fibril_mutex_unlock(&hid_data->iface_count_mutex);
    8983
    9084        return EOK;
     
    116110        if ((iface->in_data_size == 0) && (iface->out_data_size == 0)) {
    117111                return EEMPTY;
    118         }
    119 
    120         // FIXME - we shall set vuhid_data to NULL in the main() rather
    121         // than to depend on individual interfaces
    122         /* Already used interface. */
    123         if (iface->vuhid_data != NULL) {
    124                 return EEXISTS;
    125112        }
    126113
     
    265252
    266253        /* Launch the "life" fibril. */
    267         iface->vuhid_data = hid_data;
    268254        fid_t life_fibril = fibril_create(interface_life_fibril, iface);
    269255        if (life_fibril == 0) {
     
    324310            += total_descr_size;
    325311
    326         hid_data->iface_count++;
    327312        fibril_add_ready(life_fibril);
    328313
     
    346331}
    347332
    348 void wait_for_interfaces_death(usbvirt_device_t *dev)
    349 {
    350         vuhid_data_t *hid_data = dev->device_data;
    351 
    352         fibril_mutex_lock(&hid_data->iface_count_mutex);
    353         while (hid_data->iface_died_count < hid_data->iface_count) {
    354                 fibril_condvar_wait(&hid_data->iface_count_cv,
    355                     &hid_data->iface_count_mutex);
    356         }
    357         fibril_mutex_unlock(&hid_data->iface_count_mutex);
    358 }
    359333
    360334/** @}
  • uspace/app/vuhid/hids/bootkbd.c

    rbc02b83 rf90c0d6  
    3939#include <usb/classes/hidut.h>
    4040
    41 #include "../report.h"
     41#include "../../virtusbkbd/report.h"
    4242
    4343uint8_t report_descriptor[] = {
     
    169169        .on_data_out = on_data_out,
    170170
    171         .live = live,
    172 
    173         .vuhid_data = NULL
     171        .live = live
    174172};
    175173
  • uspace/app/vuhid/main.c

    rbc02b83 rf90c0d6  
    132132        .in_endpoint_first_free = 1,
    133133        .out_endpoints_mapping = { NULL },
    134         .out_endpoint_first_free = 1,
    135 
    136         .iface_count = 0,
    137         .iface_died_count = 0
    138         // mutex and CV must be initialized elsewhere
     134        .out_endpoint_first_free = 1
    139135};
    140 
    141136
    142137/** Keyboard device.
     
    156151
    157152        usb_log_enable(USB_LOG_LEVEL_DEBUG2, "vusbhid");
    158 
    159         fibril_mutex_initialize(&vuhid_data.iface_count_mutex);
    160         fibril_condvar_initialize(&vuhid_data.iface_count_cv);
    161153
    162154        /* Determine which interfaces to initialize. */
     
    190182        printf("Connected to VHCD...\n");
    191183
    192         wait_for_interfaces_death(&hid_dev);
     184        while (true) {
     185                async_usleep(10 * 1000 * 1000);
     186        }
    193187       
    194188        printf("Terminating...\n");
    195189       
    196         usbvirt_device_unplug(&hid_dev);
    197 
    198190        return 0;
    199191}
  • uspace/app/vuhid/virthid.h

    rbc02b83 rf90c0d6  
    3838#include <usb/usb.h>
    3939#include <usbvirt/device.h>
    40 #include <fibril_synch.h>
    4140
    4241#define VUHID_ENDPOINT_MAX USB11_ENDPOINT_MAX
     
    4443
    4544typedef struct vuhid_interface vuhid_interface_t;
    46 
    47 typedef struct {
    48         vuhid_interface_t *in_endpoints_mapping[VUHID_ENDPOINT_MAX];
    49         size_t in_endpoint_first_free;
    50         vuhid_interface_t *out_endpoints_mapping[VUHID_ENDPOINT_MAX];
    51         size_t out_endpoint_first_free;
    52         vuhid_interface_t *interface_mapping[VUHID_INTERFACE_MAX];
    53 
    54         fibril_mutex_t iface_count_mutex;
    55         fibril_condvar_t iface_count_cv;
    56         size_t iface_count;
    57         size_t iface_died_count;
    58 } vuhid_data_t;
    5945
    6046struct vuhid_interface {
     
    7763
    7864        void *interface_data;
     65};
    7966
    80         vuhid_data_t *vuhid_data;
    81 };
     67typedef struct {
     68        vuhid_interface_t *in_endpoints_mapping[VUHID_ENDPOINT_MAX];
     69        size_t in_endpoint_first_free;
     70        vuhid_interface_t *out_endpoints_mapping[VUHID_ENDPOINT_MAX];
     71        size_t out_endpoint_first_free;
     72        vuhid_interface_t *interface_mapping[VUHID_INTERFACE_MAX];
     73} vuhid_data_t;
    8274
    8375typedef struct {
     
    9284
    9385int add_interface_by_id(vuhid_interface_t **, const char *, usbvirt_device_t *);
    94 void wait_for_interfaces_death(usbvirt_device_t *);
    9586
    9687#endif
  • uspace/drv/vhc/transfer.c

    rbc02b83 rf90c0d6  
    135135                if (transfer->direction == USB_DIRECTION_IN) {
    136136                        rc = usbvirt_ipc_send_control_read(phone,
     137                            transfer->endpoint,
    137138                            transfer->setup_buffer, transfer->setup_buffer_size,
    138139                            transfer->data_buffer, transfer->data_buffer_size,
     
    141142                        assert(transfer->direction == USB_DIRECTION_OUT);
    142143                        rc = usbvirt_ipc_send_control_write(phone,
     144                            transfer->endpoint,
    143145                            transfer->setup_buffer, transfer->setup_buffer_size,
    144146                            transfer->data_buffer, transfer->data_buffer_size);
  • uspace/lib/usbvirt/Makefile

    rbc02b83 rf90c0d6  
    3333
    3434SOURCES = \
     35        src/ipc.c \
    3536        src/ctrltransfer.c \
    36         src/device.c \
    37         src/ipc_dev.c \
    38         src/ipc_hc.c \
    3937        src/stdreq.c \
    4038        src/transfer.c
  • uspace/lib/usbvirt/include/usbvirt/device.h

    rbc02b83 rf90c0d6  
    3131 */
    3232/** @file
    33  * Virtual USB device.
     33 * @brief Virtual USB device.
    3434 */
    3535#ifndef LIBUSBVIRT_DEVICE_H_
     
    3939#include <usb/request.h>
    4040
    41 /** Maximum number of endpoints supported by virtual USB. */
    4241#define USBVIRT_ENDPOINT_MAX 16
    4342
    4443typedef struct usbvirt_device usbvirt_device_t;
    4544
    46 /** Callback for data to device (OUT transaction).
    47  *
    48  * @param dev Virtual device to which the transaction belongs.
    49  * @param endpoint Target endpoint number.
    50  * @param transfer_type Transfer type.
    51  * @param buffer Data buffer.
    52  * @param buffer_size Size of the buffer in bytes.
    53  * @return Error code.
    54  */
    55 typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *dev,
    56     usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
    57     void *buffer, size_t buffer_size);
     45typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *, usb_endpoint_t,
     46    usb_transfer_type_t, void *, size_t);
     47typedef int (*usbvirt_on_data_from_device_t)(usbvirt_device_t *, usb_endpoint_t,
     48    usb_transfer_type_t, void *, size_t, size_t *);
     49typedef int (*usbvirt_on_control_t)(usbvirt_device_t *,
     50    const usb_device_request_setup_packet_t *, uint8_t *, size_t *);
    5851
    59 /** Callback for data from device (IN transaction).
    60  *
    61  * @param dev Virtual device to which the transaction belongs.
    62  * @param endpoint Target endpoint number.
    63  * @param transfer_type Transfer type.
    64  * @param buffer Data buffer to write answer to.
    65  * @param buffer_size Size of the buffer in bytes.
    66  * @param act_buffer_size Write here how many bytes were actually written.
    67  * @return Error code.
    68  */
    69 typedef int (*usbvirt_on_data_from_device_t)(usbvirt_device_t *dev,
    70     usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
    71     void *buffer, size_t buffer_size, size_t *act_buffer_size);
    72 
    73 /** Callback for control transfer on endpoint zero.
    74  *
    75  * Notice that size of the data buffer is expected to be read from the
    76  * setup packet.
    77  *
    78  * @param dev Virtual device to which the transaction belongs.
    79  * @param setup_packet Standard setup packet.
    80  * @param data Data (might be NULL).
    81  * @param act_data_size Size of returned data in bytes.
    82  * @return Error code.
    83  */
    84 typedef int (*usbvirt_on_control_t)(usbvirt_device_t *dev,
    85     const usb_device_request_setup_packet_t *setup_packet,
    86     uint8_t *data, size_t *act_data_size);
    87 
    88 /** Callback for control request on a virtual USB device.
    89  *
    90  * See usbvirt_control_reply_helper() for simple way of answering
    91  * control read requests.
    92  */
    9352typedef struct {
    94         /** Request direction (in or out). */
    9553        usb_direction_t req_direction;
    96         /** Request recipient (device, interface or endpoint). */
    9754        usb_request_recipient_t req_recipient;
    98         /** Request type (standard, class or vendor). */
    9955        usb_request_type_t req_type;
    100         /** Actual request code. */
    10156        uint8_t request;
    102         /** Request handler name for debugging purposes. */
    10357        const char *name;
    104         /** Callback to be executed on matching request. */
    10558        usbvirt_on_control_t callback;
    10659} usbvirt_control_request_handler_t;
     
    12477} usbvirt_device_configuration_t;
    12578
    126 /** Standard USB descriptors for virtual device. */
     79/** Standard USB descriptors. */
    12780typedef struct {
    12881        /** Standard device descriptor.
     
    149102} usbvirt_device_state_t;
    150103
    151 /** Ops structure for virtual USB device. */
    152104typedef struct {
    153         /** Callbacks for data to device.
    154          * Index zero is ignored.
    155          */
    156105        usbvirt_on_data_to_device_t data_out[USBVIRT_ENDPOINT_MAX];
    157         /** Callbacks for data from device.
    158          * Index zero is ignored.
    159          */
    160106        usbvirt_on_data_from_device_t data_in[USBVIRT_ENDPOINT_MAX];
    161         /** Array of control handlers.
    162          * Last handler is expected to have the @c callback field set to NULL
    163          */
    164107        usbvirt_control_request_handler_t *control;
    165         /** Callback when device changes state.
    166          *
    167          * The value of @c state attribute of @p dev device is not
    168          * defined during call of this function.
    169          *
    170          * @param dev The virtual USB device.
    171          * @param old_state Old device state.
    172          * @param new_state New device state.
    173          */
    174108        void (*state_changed)(usbvirt_device_t *dev,
    175109            usbvirt_device_state_t old_state, usbvirt_device_state_t new_state);
    176110} usbvirt_device_ops_t;
    177111
    178 /** Virtual USB device. */
    179112struct usbvirt_device {
    180         /** Name for debugging purposes. */
    181113        const char *name;
    182         /** Custom device data. */
    183114        void *device_data;
    184         /** Device ops. */
    185115        usbvirt_device_ops_t *ops;
    186         /** Device descriptors. */
    187116        usbvirt_descriptors_t *descriptors;
    188         /** Current device address.
    189          * You shall treat this field as read only in your code.
    190          */
    191117        usb_address_t address;
    192         /** Current device state.
    193          * You shall treat this field as read only in your code.
    194          */
    195118        usbvirt_device_state_t state;
    196         /** Phone to the host controller.
    197          * You shall treat this field as read only in your code.
    198          */
    199         int vhc_phone;
    200119};
    201120
    202121int usbvirt_device_plug(usbvirt_device_t *, const char *);
    203 void usbvirt_device_unplug(usbvirt_device_t *);
    204122
    205123void usbvirt_control_reply_helper(const usb_device_request_setup_packet_t *,
  • uspace/lib/usbvirt/include/usbvirt/ipc.h

    rbc02b83 rf90c0d6  
    11/*
    2  * Copyright (c) 2011 Vojtech Horky
     2 * Copyright (c) 2010 Vojtech Horky
    33 * All rights reserved.
    44 *
     
    3131 */
    3232/** @file
    33  * IPC wrappers for virtual USB.
     33 * @brief Virtual USB device.
    3434 */
    3535#ifndef LIBUSBVIRT_IPC_H_
     
    4040#include <bool.h>
    4141
    42 /** IPC methods communication between host controller and virtual device. */
    4342typedef enum {
    4443        IPC_M_USBVIRT_GET_NAME = IPC_FIRST_USER_METHOD + 80,
     
    4645        IPC_M_USBVIRT_CONTROL_WRITE,
    4746        IPC_M_USBVIRT_INTERRUPT_IN,
    48         IPC_M_USBVIRT_INTERRUPT_OUT,
    49         IPC_M_USBVIRT_BULK_IN,
    50         IPC_M_USBVIRT_BULK_OUT
    51 } usbvirt_hc_to_device_method_t;
     47        IPC_M_USBVIRT_INTERRUPT_OUT
     48} usbvirt_ipc_t;
    5249
    53 int usbvirt_ipc_send_control_read(int, void *, size_t,
     50int usbvirt_ipc_send_control_read(int, usb_endpoint_t, void *, size_t,
    5451    void *, size_t, size_t *);
    55 int usbvirt_ipc_send_control_write(int, void *, size_t,
     52int usbvirt_ipc_send_control_write(int, usb_endpoint_t, void *, size_t,
    5653    void *, size_t);
    5754int usbvirt_ipc_send_data_in(int, usb_endpoint_t, usb_transfer_type_t,
  • uspace/lib/usbvirt/src/ctrltransfer.c

    rbc02b83 rf90c0d6  
    1 /*
    2  * Copyright (c) 2011 Vojtech Horky
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  *
    9  * - Redistributions of source code must retain the above copyright
    10  *   notice, this list of conditions and the following disclaimer.
    11  * - Redistributions in binary form must reproduce the above copyright
    12  *   notice, this list of conditions and the following disclaimer in the
    13  *   documentation and/or other materials provided with the distribution.
    14  * - The name of the author may not be used to endorse or promote products
    15  *   derived from this software without specific prior written permission.
    16  *
    17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    27  */
    28 
    29 /** @addtogroup libusbvirt
    30  * @{
    31  */
    32 /** @file
    33  * Control transfer handling.
    34  */
    351#include "private.h"
    362#include <usb/request.h>
     
    395#include <errno.h>
    406
    41 /** Find and execute control transfer handler for virtual USB device.
    42  *
    43  * @param dev Target virtual device.
    44  * @param control_handlers Array of control request handlers.
    45  * @param setup Setup packet.
    46  * @param data Extra data.
    47  * @param data_sent_size Size of extra data in bytes.
    48  * @return Error code.
    49  * @retval EFORWARD No suitable handler found.
    50  */
    517int process_control_transfer(usbvirt_device_t *dev,
    528    usbvirt_control_request_handler_t *control_handlers,
     
    9652        return EFORWARD;
    9753}
    98 
    99 
    100 /**
    101  * @}
    102  */
  • uspace/lib/usbvirt/src/private.h

    rbc02b83 rf90c0d6  
    1 /*
    2  * Copyright (c) 2011 Vojtech Horky
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  *
    9  * - Redistributions of source code must retain the above copyright
    10  *   notice, this list of conditions and the following disclaimer.
    11  * - Redistributions in binary form must reproduce the above copyright
    12  *   notice, this list of conditions and the following disclaimer in the
    13  *   documentation and/or other materials provided with the distribution.
    14  * - The name of the author may not be used to endorse or promote products
    15  *   derived from this software without specific prior written permission.
    16  *
    17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    27  */
    28 
    29 /** @addtogroup libusbvirt
    30  * @{
    31  */
    32 /** @file
    33  * Private definitions.
    34  */
    35 #ifndef USBVIRT_PRIVATE_H_
    36 #define USBVIRT_PRIVATE_H_
    37 
    381#include <usbvirt/device.h>
    392
     
    447
    458extern usbvirt_control_request_handler_t library_handlers[];
    46 
    47 #endif
    48 /**
    49  * @}
    50  */
  • uspace/lib/usbvirt/src/stdreq.c

    rbc02b83 rf90c0d6  
    1 /*
    2  * Copyright (c) 2011 Vojtech Horky
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  *
    9  * - Redistributions of source code must retain the above copyright
    10  *   notice, this list of conditions and the following disclaimer.
    11  * - Redistributions in binary form must reproduce the above copyright
    12  *   notice, this list of conditions and the following disclaimer in the
    13  *   documentation and/or other materials provided with the distribution.
    14  * - The name of the author may not be used to endorse or promote products
    15  *   derived from this software without specific prior written permission.
    16  *
    17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    27  */
    28 
    29 /** @addtogroup libusbvirt
    30  * @{
    31  */
    32 /** @file
    33  * Standard control request handlers.
    34  */
    351#include "private.h"
    362#include <usb/request.h>
     
    384#include <errno.h>
    395
    40 /** Helper for replying to control read transfer from virtual USB device.
    41  *
    42  * This function takes care of copying data to answer buffer taking care
    43  * of buffer sizes properly.
    44  *
    45  * @param setup_packet The setup packet.
    46  * @param data Data buffer to write to.
    47  * @param act_size Where to write actual size of returned data.
    48  * @param actual_data Data to be returned.
    49  * @param actual_data_size Size of answer data (@p actual_data) in bytes.
    50  */
    516void usbvirt_control_reply_helper(const usb_device_request_setup_packet_t *setup_packet,
    527    uint8_t *data, size_t *act_size,
     
    189144}
    190145
    191 /** Standard request handlers. */
    192146usbvirt_control_request_handler_t library_handlers[] = {
    193147        {
     
    219173};
    220174
    221 /**
    222  * @}
    223  */
  • uspace/lib/usbvirt/src/transfer.c

    rbc02b83 rf90c0d6  
    3131 */
    3232/** @file
    33  * Transfer handling.
     33 *
    3434 */
    3535#include <usbvirt/device.h>
     
    3939#include "private.h"
    4040
    41 /** Process a control transfer to the virtual USB device.
    42  *
    43  * @param dev Target device.
    44  * @param setup Setup packet data.
    45  * @param setup_size Size of setup packet.
    46  * @param data Extra data (DATA stage).
    47  * @param data_size Size of extra data in bytes.
    48  * @param data_size_sent Number of actually send bytes during the transfer
    49  *      (only used for READ transfers).
    50  * @return Error code.
    51  */
    5241static int usbvirt_control_transfer(usbvirt_device_t *dev,
    5342    void *setup, size_t setup_size,
     
    8978}
    9079
    91 /** Issue a control write transfer to virtual USB device.
    92  *
    93  * @see usbvirt_control_transfer
    94  *
    95  * @param dev Target virtual device.
    96  * @param setup Setup data.
    97  * @param setup_size Size of setup packet.
    98  * @param data Extra data (DATA stage).
    99  * @param data_size Size of extra data buffer in bytes.
    100  * @return Error code.
    101  */
    10280int usbvirt_control_write(usbvirt_device_t *dev, void *setup, size_t setup_size,
    10381    void *data, size_t data_size)
     
    10785}
    10886
    109 /** Issue a control read transfer to virtual USB device.
    110  *
    111  * @see usbvirt_control_transfer
    112  *
    113  * @param dev Target virtual device.
    114  * @param setup Setup data.
    115  * @param setup_size Size of setup packet.
    116  * @param data Extra data (DATA stage).
    117  * @param data_size Size of extra data buffer in bytes.
    118  * @param data_size_sent Number of actually send bytes during the transfer.
    119  * @return Error code.
    120  */
    12187int usbvirt_control_read(usbvirt_device_t *dev, void *setup, size_t setup_size,
    12288    void *data, size_t data_size, size_t *data_size_sent)
     
    12692}
    12793
    128 /** Send data to virtual USB device.
    129  *
    130  * @param dev Target virtual device.
    131  * @param transf_type Transfer type (interrupt, bulk).
    132  * @param endpoint Endpoint number.
    133  * @param data Data sent from the driver to the device.
    134  * @param data_size Size of the @p data buffer in bytes.
    135  * @return Error code.
    136  */
    13794int usbvirt_data_out(usbvirt_device_t *dev, usb_transfer_type_t transf_type,
    13895    usb_endpoint_t endpoint, void *data, size_t data_size)
     
    151108}
    152109
    153 /** Request data from virtual USB device.
    154  *
    155  * @param dev Target virtual device.
    156  * @param transf_type Transfer type (interrupt, bulk).
    157  * @param endpoint Endpoint number.
    158  * @param data Where to stored data the device returns to the driver.
    159  * @param data_size Size of the @p data buffer in bytes.
    160  * @param data_size_sent Number of actually written bytes.
    161  * @return Error code.
    162  */
    163110int usbvirt_data_in(usbvirt_device_t *dev, usb_transfer_type_t transf_type,
    164111    usb_endpoint_t endpoint, void *data, size_t data_size, size_t *data_size_sent)
Note: See TracChangeset for help on using the changeset viewer.