Ignore:
Timestamp:
2017-12-20T16:06:56Z (6 years ago)
Author:
Petr Mánek <petr.manek@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cec130b
Parents:
f98f4b7
Message:

usbdiag: more robust testing framework, added bulk in stress test, refactored remote usbdiag interface, new command for tmon

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/remote_usbdiag.c

    rf98f4b7 rfd312d5  
    4343
    4444typedef enum {
    45         IPC_M_USBDIAG_TEST,
     45        IPC_M_USBDIAG_STRESS_BULK_OUT,
     46        IPC_M_USBDIAG_STRESS_BULK_IN
    4647} usb_iface_funcs_t;
    4748
     
    5758}
    5859
    59 int usbdiag_test(async_exch_t *exch, int x, int *y)
     60int usbdiag_stress_bulk_out(async_exch_t *exch, int cycles, size_t size)
    6061{
    6162        if (!exch)
    6263                return EBADMEM;
    6364
    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);
    7166}
    7267
    73 static void remote_usbdiag_test(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     68int 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
     76static void remote_usbdiag_stress_bulk_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     77static void remote_usbdiag_stress_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    7478
    7579/** Remote USB diagnostic interface operations. */
    7680static 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,
    7883};
    7984
     
    8489};
    8590
    86 void remote_usbdiag_test(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
     91void remote_usbdiag_stress_bulk_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
    8792{
    8893        const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
    8994
    90         if (diag_iface->test == NULL) {
     95        if (diag_iface->stress_bulk_out == NULL) {
    9196                async_answer_0(callid, ENOTSUP);
    9297                return;
    9398        }
    9499
    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
     106void 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;
    102113        }
     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);
    103119}
    104120
Note: See TracChangeset for help on using the changeset viewer.