Ignore:
Timestamp:
2017-12-21T14:37:30Z (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:
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)
Message:

usbdiag: added isochronous test

File:
1 edited

Legend:

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

    r74c0de0 rff16da5f  
    4646        IPC_M_USBDIAG_STRESS_INTR_OUT,
    4747        IPC_M_USBDIAG_STRESS_BULK_IN,
    48         IPC_M_USBDIAG_STRESS_BULK_OUT
     48        IPC_M_USBDIAG_STRESS_BULK_OUT,
     49        IPC_M_USBDIAG_STRESS_ISOCH_IN,
     50        IPC_M_USBDIAG_STRESS_ISOCH_OUT
    4951} usb_iface_funcs_t;
    5052
     
    9092
    9193        return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_BULK_OUT, cycles, size);
     94}
     95
     96int usbdiag_stress_isoch_in(async_exch_t *exch, int cycles, size_t size)
     97{
     98        if (!exch)
     99                return EBADMEM;
     100
     101        return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_ISOCH_IN, cycles, size);
     102}
     103
     104int usbdiag_stress_isoch_out(async_exch_t *exch, int cycles, size_t size)
     105{
     106        if (!exch)
     107                return EBADMEM;
     108
     109        return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_ISOCH_OUT, cycles, size);
    92110}
    93111
     
    96114static void remote_usbdiag_stress_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    97115static void remote_usbdiag_stress_bulk_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     116static void remote_usbdiag_stress_isoch_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     117static void remote_usbdiag_stress_isoch_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    98118
    99119/** Remote USB diagnostic interface operations. */
    100120static const remote_iface_func_ptr_t remote_usbdiag_iface_ops [] = {
    101 [       IPC_M_USBDIAG_STRESS_INTR_IN] = remote_usbdiag_stress_intr_in,
     121        [IPC_M_USBDIAG_STRESS_INTR_IN] = remote_usbdiag_stress_intr_in,
    102122        [IPC_M_USBDIAG_STRESS_INTR_OUT] = remote_usbdiag_stress_intr_out,
    103 [       IPC_M_USBDIAG_STRESS_BULK_IN] = remote_usbdiag_stress_bulk_in,
    104         [IPC_M_USBDIAG_STRESS_BULK_OUT] = remote_usbdiag_stress_bulk_out
     123        [IPC_M_USBDIAG_STRESS_BULK_IN] = remote_usbdiag_stress_bulk_in,
     124        [IPC_M_USBDIAG_STRESS_BULK_OUT] = remote_usbdiag_stress_bulk_out,
     125        [IPC_M_USBDIAG_STRESS_ISOCH_IN] = remote_usbdiag_stress_isoch_in,
     126        [IPC_M_USBDIAG_STRESS_ISOCH_OUT] = remote_usbdiag_stress_isoch_out
    105127};
    106128
     
    171193}
    172194
     195void remote_usbdiag_stress_isoch_in(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
     196{
     197        const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
     198
     199        if (diag_iface->stress_isoch_in == NULL) {
     200                async_answer_0(callid, ENOTSUP);
     201                return;
     202        }
     203
     204        int cycles = DEV_IPC_GET_ARG1(*call);
     205        size_t size = DEV_IPC_GET_ARG2(*call);
     206        const int ret = diag_iface->stress_isoch_in(fun, cycles, size);
     207        async_answer_0(callid, ret);
     208}
     209
     210void remote_usbdiag_stress_isoch_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
     211{
     212        const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
     213
     214        if (diag_iface->stress_isoch_out == NULL) {
     215                async_answer_0(callid, ENOTSUP);
     216                return;
     217        }
     218
     219        int cycles = DEV_IPC_GET_ARG1(*call);
     220        size_t size = DEV_IPC_GET_ARG2(*call);
     221        const int ret = diag_iface->stress_isoch_out(fun, cycles, size);
     222        async_answer_0(callid, ret);
     223}
     224
    173225/**
    174226 * @}
Note: See TracChangeset for help on using the changeset viewer.