Changes in uspace/drv/vhc/transfer.c [79ae36dd:e913cc9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/transfer.c
r79ae36dd re913cc9 1 /*2 * Copyright (c) 2011 Vojtech Horky3 * All rights reserved.4 *5 * Redistribution and use in source and binary forms, with or without6 * modification, are permitted provided that the following conditions7 * are met:8 *9 * - Redistributions of source code must retain the above copyright10 * notice, this list of conditions and the following disclaimer.11 * - Redistributions in binary form must reproduce the above copyright12 * notice, this list of conditions and the following disclaimer in the13 * documentation and/or other materials provided with the distribution.14 * - The name of the author may not be used to endorse or promote products15 * derived from this software without specific prior written permission.16 *17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES19 * 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, BUT22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.27 */28 29 1 #include <errno.h> 30 2 #include <str_error.h> … … 32 4 #include <usbvirt/ipc.h> 33 5 #include "vhcd.h" 6 7 #define list_foreach(pos, head) \ 8 for (pos = (head)->next; pos != (head); \ 9 pos = pos->next) 34 10 35 11 vhc_transfer_t *vhc_transfer_create(usb_address_t address, usb_endpoint_t ep, … … 91 67 fibril_mutex_lock(&vhc->guard); 92 68 69 link_t *pos; 93 70 bool target_found = false; 94 list_foreach( vhc->devices, pos) {71 list_foreach(pos, &vhc->devices) { 95 72 vhc_virtdev_t *dev = list_get_instance(pos, vhc_virtdev_t, link); 96 73 fibril_mutex_lock(&dev->guard); … … 151 128 152 129 static int process_transfer_remote(vhc_transfer_t *transfer, 153 async_sess_t *sess, size_t *actual_data_size)130 int phone, size_t *actual_data_size) 154 131 { 155 132 int rc; … … 157 134 if (transfer->transfer_type == USB_TRANSFER_CONTROL) { 158 135 if (transfer->direction == USB_DIRECTION_IN) { 159 rc = usbvirt_ipc_send_control_read( sess,160 transfer->setup_buffer, transfer->setup_buffer_size, 161 transfer->data_buffer, transfer->data_buffer_size, 162 actual_data_size); 163 } else { 164 assert(transfer->direction == USB_DIRECTION_OUT); 165 rc = usbvirt_ipc_send_control_write( sess,166 transfer->setup_buffer, transfer->setup_buffer_size, 167 transfer->data_buffer, transfer->data_buffer_size); 168 } 169 } else { 170 if (transfer->direction == USB_DIRECTION_IN) { 171 rc = usbvirt_ipc_send_data_in( sess, transfer->endpoint,136 rc = usbvirt_ipc_send_control_read(phone, 137 transfer->setup_buffer, transfer->setup_buffer_size, 138 transfer->data_buffer, transfer->data_buffer_size, 139 actual_data_size); 140 } else { 141 assert(transfer->direction == USB_DIRECTION_OUT); 142 rc = usbvirt_ipc_send_control_write(phone, 143 transfer->setup_buffer, transfer->setup_buffer_size, 144 transfer->data_buffer, transfer->data_buffer_size); 145 } 146 } else { 147 if (transfer->direction == USB_DIRECTION_IN) { 148 rc = usbvirt_ipc_send_data_in(phone, transfer->endpoint, 172 149 transfer->transfer_type, 173 150 transfer->data_buffer, transfer->data_buffer_size, … … 175 152 } else { 176 153 assert(transfer->direction == USB_DIRECTION_OUT); 177 rc = usbvirt_ipc_send_data_out( sess, transfer->endpoint,154 rc = usbvirt_ipc_send_data_out(phone, transfer->endpoint, 178 155 transfer->transfer_type, 179 156 transfer->data_buffer, transfer->data_buffer_size); … … 234 211 int rc = EOK; 235 212 size_t data_transfer_size = 0; 236 if (dev->dev_ sess) {237 rc = process_transfer_remote(transfer, dev->dev_ sess,213 if (dev->dev_phone > 0) { 214 rc = process_transfer_remote(transfer, dev->dev_phone, 238 215 &data_transfer_size); 239 216 } else if (dev->dev_local != NULL) {
Note:
See TracChangeset
for help on using the changeset viewer.