Changeset e9d600c2 in mainline for uspace/drv/bus/usb/usbdiag/tests.c
- Timestamp:
- 2017-12-21T09:03:55Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ad2a8b1
- Parents:
- cec130b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbdiag/tests.c
rcec130b re9d600c2 41 41 #define NAME "usbdiag" 42 42 43 44 int usb_diag_stress_intr_out(usb_diag_dev_t *dev, int cycles, size_t size) 45 { 46 if (!dev) 47 return EBADMEM; 48 49 char *buffer = (char *) malloc(size); 50 if (!buffer) 51 return ENOMEM; 52 53 memset(buffer, 42, size); 54 55 // TODO: Are we sure that no other test is running on this endpoint? 56 57 usb_log_info("Performing interrupt out stress test on device %s.", ddf_fun_get_name(dev->fun)); 58 int rc = EOK; 59 for (int i = 0; i < cycles; ++i) { 60 // Write buffer to device. 61 if ((rc = usb_pipe_write(dev->intr_out, buffer, size))) { 62 usb_log_error("Interrupt OUT write failed. %s\n", str_error(rc)); 63 break; 64 } 65 } 66 67 free(buffer); 68 return rc; 69 } 70 71 int usb_diag_stress_intr_in(usb_diag_dev_t *dev, int cycles, size_t size) 72 { 73 if (!dev) 74 return EBADMEM; 75 76 char *buffer = (char *) malloc(size); 77 if (!buffer) 78 return ENOMEM; 79 80 // TODO: Are we sure that no other test is running on this endpoint? 81 82 usb_log_info("Performing interrupt in stress test on device %s.", ddf_fun_get_name(dev->fun)); 83 int rc = EOK; 84 for (int i = 0; i < cycles; ++i) { 85 // Read device's response. 86 size_t remaining = size; 87 size_t transferred; 88 89 while (remaining > 0) { 90 if ((rc = usb_pipe_read(dev->intr_in, buffer + size - remaining, remaining, &transferred))) { 91 usb_log_error("Interrupt IN read failed. %s\n", str_error(rc)); 92 break; 93 } 94 95 if (transferred > remaining) { 96 usb_log_error("Interrupt IN read more than expected.\n"); 97 rc = EINVAL; 98 break; 99 } 100 101 remaining -= transferred; 102 } 103 104 if (rc) 105 break; 106 } 107 108 free(buffer); 109 return rc; 110 } 43 111 44 112 int usb_diag_stress_bulk_out(usb_diag_dev_t *dev, int cycles, size_t size)
Note:
See TracChangeset
for help on using the changeset viewer.