Changeset ff16da5f in mainline for uspace/drv/bus/usb/usbdiag/tests.c
- Timestamp:
- 2017-12-21T14:37:30Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 119a794
- Parents:
- 74c0de0
- git-author:
- Petr Mánek <petr.manek@…> (2017-12-21 14:37:23)
- git-committer:
- Petr Mánek <petr.manek@…> (2017-12-21 14:37:30)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbdiag/tests.c
r74c0de0 rff16da5f 178 178 } 179 179 180 int usb_diag_stress_isoch_out(usb_diag_dev_t *dev, int cycles, size_t size) 181 { 182 if (!dev) 183 return EBADMEM; 184 185 char *buffer = (char *) malloc(size); 186 if (!buffer) 187 return ENOMEM; 188 189 memset(buffer, 42, size); 190 191 // TODO: Are we sure that no other test is running on this endpoint? 192 193 usb_log_info("Performing isochronous out stress test on device %s.", ddf_fun_get_name(dev->fun)); 194 int rc = EOK; 195 for (int i = 0; i < cycles; ++i) { 196 // Write buffer to device. 197 if ((rc = usb_pipe_write(dev->isoch_out, buffer, size))) { 198 usb_log_error("Isochronous OUT write failed. %s\n", str_error(rc)); 199 break; 200 } 201 } 202 203 free(buffer); 204 return rc; 205 } 206 207 int usb_diag_stress_isoch_in(usb_diag_dev_t *dev, int cycles, size_t size) 208 { 209 if (!dev) 210 return EBADMEM; 211 212 char *buffer = (char *) malloc(size); 213 if (!buffer) 214 return ENOMEM; 215 216 // TODO: Are we sure that no other test is running on this endpoint? 217 218 usb_log_info("Performing isochronous in stress test on device %s.", ddf_fun_get_name(dev->fun)); 219 int rc = EOK; 220 for (int i = 0; i < cycles; ++i) { 221 // Read device's response. 222 size_t remaining = size; 223 size_t transferred; 224 225 while (remaining > 0) { 226 if ((rc = usb_pipe_read(dev->isoch_in, buffer + size - remaining, remaining, &transferred))) { 227 usb_log_error("Isochronous IN read failed. %s\n", str_error(rc)); 228 break; 229 } 230 231 if (transferred > remaining) { 232 usb_log_error("Isochronous IN read more than expected.\n"); 233 rc = EINVAL; 234 break; 235 } 236 237 remaining -= transferred; 238 } 239 240 if (rc) 241 break; 242 } 243 244 free(buffer); 245 return rc; 246 } 247 180 248 /** 181 249 * @}
Note:
See TracChangeset
for help on using the changeset viewer.