Changeset fd312d5 in mainline for uspace/lib/drv/generic/remote_usbdiag.c
- Timestamp:
- 2017-12-20T16:06:56Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- cec130b
- Parents:
- f98f4b7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/remote_usbdiag.c
rf98f4b7 rfd312d5 43 43 44 44 typedef enum { 45 IPC_M_USBDIAG_TEST, 45 IPC_M_USBDIAG_STRESS_BULK_OUT, 46 IPC_M_USBDIAG_STRESS_BULK_IN 46 47 } usb_iface_funcs_t; 47 48 … … 57 58 } 58 59 59 int usbdiag_ test(async_exch_t *exch, int x, int *y)60 int usbdiag_stress_bulk_out(async_exch_t *exch, int cycles, size_t size) 60 61 { 61 62 if (!exch) 62 63 return EBADMEM; 63 64 64 sysarg_t y_; 65 const int ret = async_req_2_1(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_TEST, x, &y_); 66 67 if (y) 68 *y = (int) y_; 69 70 return ret; 65 return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_BULK_OUT, cycles, size); 71 66 } 72 67 73 static void remote_usbdiag_test(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *); 68 int usbdiag_stress_bulk_in(async_exch_t *exch, int cycles, size_t size) 69 { 70 if (!exch) 71 return EBADMEM; 72 73 return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_BULK_IN, cycles, size); 74 } 75 76 static void remote_usbdiag_stress_bulk_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *); 77 static void remote_usbdiag_stress_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *); 74 78 75 79 /** Remote USB diagnostic interface operations. */ 76 80 static const remote_iface_func_ptr_t remote_usbdiag_iface_ops [] = { 77 [IPC_M_USBDIAG_TEST] = remote_usbdiag_test, 81 [IPC_M_USBDIAG_STRESS_BULK_OUT] = remote_usbdiag_stress_bulk_out, 82 [IPC_M_USBDIAG_STRESS_BULK_IN] = remote_usbdiag_stress_bulk_in, 78 83 }; 79 84 … … 84 89 }; 85 90 86 void remote_usbdiag_ test(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)91 void remote_usbdiag_stress_bulk_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call) 87 92 { 88 93 const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface; 89 94 90 if (diag_iface-> test == NULL) {95 if (diag_iface->stress_bulk_out == NULL) { 91 96 async_answer_0(callid, ENOTSUP); 92 97 return; 93 98 } 94 99 95 int x = DEV_IPC_GET_ARG1(*call); 96 int y; 97 const int ret = diag_iface->test(fun, x, &y); 98 if (ret != EOK) { 99 async_answer_0(callid, ret); 100 } else { 101 async_answer_1(callid, EOK, y); 100 int cycles = DEV_IPC_GET_ARG1(*call); 101 size_t size = DEV_IPC_GET_ARG2(*call); 102 const int ret = diag_iface->stress_bulk_out(fun, cycles, size); 103 async_answer_0(callid, ret); 104 } 105 106 void remote_usbdiag_stress_bulk_in(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call) 107 { 108 const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface; 109 110 if (diag_iface->stress_bulk_in == NULL) { 111 async_answer_0(callid, ENOTSUP); 112 return; 102 113 } 114 115 int cycles = DEV_IPC_GET_ARG1(*call); 116 size_t size = DEV_IPC_GET_ARG2(*call); 117 const int ret = diag_iface->stress_bulk_in(fun, cycles, size); 118 async_answer_0(callid, ret); 103 119 } 104 120
Note:
See TracChangeset
for help on using the changeset viewer.