Changeset beee81a in mainline for uspace/lib/usbvirt/src/ipc_hc.c
- Timestamp:
- 2011-05-07T09:35:15Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bc02b83, d38d830
- Parents:
- 42e2172
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbvirt/src/ipc_hc.c
r42e2172 rbeee81a 54 54 * @return Error code. 55 55 */ 56 int usbvirt_ipc_send_control_read(int phone, usb_endpoint_t ep,56 int usbvirt_ipc_send_control_read(int phone, 57 57 void *setup_buffer, size_t setup_buffer_size, 58 58 void *data_buffer, size_t data_buffer_size, size_t *data_transfered_size) 59 59 { 60 aid_t opening_request = async_send_1(phone, 61 IPC_M_USBVIRT_CONTROL_READ, ep, NULL); 60 if (phone < 0) { 61 return EINVAL; 62 } 63 if ((setup_buffer == NULL) || (setup_buffer_size == 0)) { 64 return EINVAL; 65 } 66 if ((data_buffer == NULL) || (data_buffer_size == 0)) { 67 return EINVAL; 68 } 69 70 aid_t opening_request = async_send_0(phone, 71 IPC_M_USBVIRT_CONTROL_READ, NULL); 62 72 if (opening_request == 0) { 63 73 return ENOMEM; … … 98 108 } 99 109 100 *data_transfered_size = IPC_GET_ARG2(data_request_call); 110 if (data_transfered_size != NULL) { 111 *data_transfered_size = IPC_GET_ARG2(data_request_call); 112 } 101 113 102 114 return EOK; … … 113 125 * @return Error code. 114 126 */ 115 int usbvirt_ipc_send_control_write(int phone, usb_endpoint_t ep,127 int usbvirt_ipc_send_control_write(int phone, 116 128 void *setup_buffer, size_t setup_buffer_size, 117 129 void *data_buffer, size_t data_buffer_size) 118 130 { 119 aid_t opening_request = async_send_2(phone, 120 IPC_M_USBVIRT_CONTROL_WRITE, ep, data_buffer_size, NULL); 131 if (phone < 0) { 132 return EINVAL; 133 } 134 if ((setup_buffer == NULL) || (setup_buffer_size == 0)) { 135 return EINVAL; 136 } 137 if ((data_buffer_size > 0) && (data_buffer == NULL)) { 138 return EINVAL; 139 } 140 141 aid_t opening_request = async_send_1(phone, 142 IPC_M_USBVIRT_CONTROL_WRITE, data_buffer_size, NULL); 121 143 if (opening_request == 0) { 122 144 return ENOMEM; … … 159 181 usb_transfer_type_t tr_type, void *data, size_t data_size, size_t *act_size) 160 182 { 161 aid_t opening_request = async_send_2(phone, 162 IPC_M_USBVIRT_INTERRUPT_IN, ep, tr_type, NULL); 163 if (opening_request == 0) { 164 return ENOMEM; 165 } 183 if (phone < 0) { 184 return EINVAL; 185 } 186 usbvirt_hc_to_device_method_t method; 187 switch (tr_type) { 188 case USB_TRANSFER_INTERRUPT: 189 method = IPC_M_USBVIRT_INTERRUPT_IN; 190 break; 191 case USB_TRANSFER_BULK: 192 method = IPC_M_USBVIRT_BULK_IN; 193 break; 194 default: 195 return EINVAL; 196 } 197 if ((ep <= 0) || (ep >= USBVIRT_ENDPOINT_MAX)) { 198 return EINVAL; 199 } 200 if ((data == NULL) || (data_size == 0)) { 201 return EINVAL; 202 } 203 204 205 aid_t opening_request = async_send_2(phone, method, ep, tr_type, NULL); 206 if (opening_request == 0) { 207 return ENOMEM; 208 } 209 166 210 167 211 ipc_call_t data_request_call; … … 210 254 usb_transfer_type_t tr_type, void *data, size_t data_size) 211 255 { 212 aid_t opening_request = async_send_2(phone, 213 IPC_M_USBVIRT_INTERRUPT_OUT, ep, tr_type, NULL); 256 if (phone < 0) { 257 return EINVAL; 258 } 259 usbvirt_hc_to_device_method_t method; 260 switch (tr_type) { 261 case USB_TRANSFER_INTERRUPT: 262 method = IPC_M_USBVIRT_INTERRUPT_OUT; 263 break; 264 case USB_TRANSFER_BULK: 265 method = IPC_M_USBVIRT_BULK_OUT; 266 break; 267 default: 268 return EINVAL; 269 } 270 if ((ep <= 0) || (ep >= USBVIRT_ENDPOINT_MAX)) { 271 return EINVAL; 272 } 273 if ((data == NULL) || (data_size == 0)) { 274 return EINVAL; 275 } 276 277 aid_t opening_request = async_send_1(phone, method, ep, NULL); 214 278 if (opening_request == 0) { 215 279 return ENOMEM;
Note:
See TracChangeset
for help on using the changeset viewer.