Changeset 7a7bfeb3 in mainline for uspace/srv/hw/bus/usb/hcd/virtual/devices.c
- Timestamp:
- 2010-10-24T16:43:40Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 355f7c2
- Parents:
- b8a3cda
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hw/bus/usb/hcd/virtual/devices.c
rb8a3cda r7a7bfeb3 126 126 aid_t req; 127 127 int rc = EOK; 128 129 req = async_send_4(dev->phone, 130 IPC_M_USBVIRT_DATA_TO_DEVICE, 128 int method = IPC_M_USBVIRT_TRANSACTION_SETUP; 129 130 switch (transaction->type) { 131 case USBVIRT_TRANSACTION_SETUP: 132 method = IPC_M_USBVIRT_TRANSACTION_SETUP; 133 break; 134 case USBVIRT_TRANSACTION_IN: 135 method = IPC_M_USBVIRT_TRANSACTION_IN; 136 break; 137 case USBVIRT_TRANSACTION_OUT: 138 method = IPC_M_USBVIRT_TRANSACTION_OUT; 139 break; 140 } 141 142 req = async_send_3(dev->phone, 143 method, 131 144 transaction->target.address, 132 145 transaction->target.endpoint, 133 transaction->type,134 146 transaction->len, 135 147 &answer_data); 136 148 137 149 if (transaction->len > 0) { 138 rc = async_data_write_start(dev->phone, 139 transaction->buffer, transaction->len); 140 } 150 if (transaction->type == USBVIRT_TRANSACTION_IN) { 151 rc = async_data_read_start(dev->phone, 152 transaction->buffer, transaction->len); 153 } else { 154 rc = async_data_write_start(dev->phone, 155 transaction->buffer, transaction->len); 156 } 157 } 158 141 159 if (rc != EOK) { 142 160 async_wait_for(req, NULL); … … 152 170 */ 153 171 if (virthub_dev.address == transaction->target.address) { 154 virthub_dev.receive_data(&virthub_dev, transaction->target.endpoint, 155 transaction->buffer, transaction->len); 172 size_t tmp; 173 switch (transaction->type) { 174 case USBVIRT_TRANSACTION_SETUP: 175 virthub_dev.transaction_setup(&virthub_dev, 176 transaction->target.endpoint, 177 transaction->buffer, transaction->len); 178 break; 179 180 case USBVIRT_TRANSACTION_IN: 181 virthub_dev.transaction_in(&virthub_dev, 182 transaction->target.endpoint, 183 transaction->buffer, transaction->len, 184 &tmp); 185 if (tmp < transaction->len) { 186 transaction->len = tmp; 187 } 188 break; 189 190 case USBVIRT_TRANSACTION_OUT: 191 virthub_dev.transaction_out(&virthub_dev, 192 transaction->target.endpoint, 193 transaction->buffer, transaction->len); 194 break; 195 } 156 196 } 157 197
Note:
See TracChangeset
for help on using the changeset viewer.