Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/vhc/hub/virthubops.c

    r58563585 rf81498d  
    3333 * @brief Virtual USB hub operations.
    3434 */
    35 
    3635#include <errno.h>
    3736#include <usb/classes/hub.h>
     
    341340
    342341
     342/** IN class request. */
     343#define CLASS_REQ_IN(recipient) \
     344        USBVIRT_MAKE_CONTROL_REQUEST_TYPE(USB_DIRECTION_IN, \
     345        USBVIRT_REQUEST_TYPE_CLASS, recipient)
     346/** OUT class request. */
     347#define CLASS_REQ_OUT(recipient) \
     348        USBVIRT_MAKE_CONTROL_REQUEST_TYPE(USB_DIRECTION_OUT, \
     349        USBVIRT_REQUEST_TYPE_CLASS, recipient)
    343350
    344351/** Recipient: other. */
     
    346353/** Recipient: device. */
    347354#define REC_DEVICE USB_REQUEST_RECIPIENT_DEVICE
    348 
     355/** Direction: in. */
     356#define DIR_IN USB_DIRECTION_IN
     357/** Direction: out. */
     358#define DIR_OUT USB_DIRECTION_OUT
     359
     360
     361/** Create a class request.
     362 *
     363 * @param direction Request direction.
     364 * @param recipient Request recipient.
     365 * @param req Request code.
     366 */
     367#define CLASS_REQ(direction, recipient, req) \
     368        .req_direction = direction, \
     369        .req_recipient = recipient, \
     370        .req_type = USB_REQUEST_TYPE_CLASS, \
     371        .request = req
     372
     373/** Create a standard request.
     374 *
     375 * @param direction Request direction.
     376 * @param recipient Request recipient.
     377 * @param req Request code.
     378 */
     379#define STD_REQ(direction, recipient, req) \
     380        .req_direction = direction, \
     381        .req_recipient = recipient, \
     382        .req_type = USB_REQUEST_TYPE_STANDARD, \
     383        .request = req
    349384
    350385/** Hub operations on control endpoint zero. */
    351386static usbvirt_control_request_handler_t endpoint_zero_handlers[] = {
    352387        {
    353                 STD_REQ_IN(USB_REQUEST_RECIPIENT_DEVICE, USB_DEVREQ_GET_DESCRIPTOR),
    354                 .name = "GetStdDescriptor",
     388                STD_REQ(DIR_IN, REC_DEVICE, USB_DEVREQ_GET_DESCRIPTOR),
     389                .name = "GetDescriptor",
    355390                .callback = req_get_descriptor
    356391        },
    357392        {
    358                 CLASS_REQ_IN(REC_DEVICE, USB_DEVREQ_GET_DESCRIPTOR),
    359                 .name = "GetClassDescriptor",
     393                CLASS_REQ(DIR_IN, REC_DEVICE, USB_DEVREQ_GET_DESCRIPTOR),
     394                .name = "GetDescriptor",
    360395                .callback = req_get_descriptor
    361396        },
    362397        {
    363                 CLASS_REQ_IN(REC_OTHER, USB_HUB_REQUEST_GET_STATUS),
     398                CLASS_REQ(DIR_IN, REC_OTHER, USB_HUB_REQUEST_GET_STATUS),
    364399                .name = "GetPortStatus",
    365400                .callback = req_get_port_status
    366401        },
    367402        {
    368                 CLASS_REQ_OUT(REC_DEVICE, USB_HUB_REQUEST_CLEAR_FEATURE),
     403                CLASS_REQ(DIR_OUT, REC_DEVICE, USB_HUB_REQUEST_CLEAR_FEATURE),
    369404                .name = "ClearHubFeature",
    370405                .callback = req_clear_hub_feature
    371406        },
    372407        {
    373                 CLASS_REQ_OUT(REC_OTHER, USB_HUB_REQUEST_CLEAR_FEATURE),
     408                CLASS_REQ(DIR_OUT, REC_OTHER, USB_HUB_REQUEST_CLEAR_FEATURE),
    374409                .name = "ClearPortFeature",
    375410                .callback = req_clear_port_feature
    376411        },
    377412        {
    378                 CLASS_REQ_IN(REC_OTHER, USB_HUB_REQUEST_GET_STATE),
     413                CLASS_REQ(DIR_IN, REC_OTHER, USB_HUB_REQUEST_GET_STATE),
    379414                .name = "GetBusState",
    380415                .callback = req_get_bus_state
    381416        },
    382417        {
    383                 CLASS_REQ_IN(REC_DEVICE, USB_HUB_REQUEST_GET_DESCRIPTOR),
     418                CLASS_REQ(DIR_IN, REC_DEVICE, USB_HUB_REQUEST_GET_DESCRIPTOR),
    384419                .name = "GetHubDescriptor",
    385420                .callback = req_get_descriptor
    386421        },
    387422        {
    388                 CLASS_REQ_IN(REC_DEVICE, USB_HUB_REQUEST_GET_STATUS),
     423                CLASS_REQ(DIR_IN, REC_DEVICE, USB_HUB_REQUEST_GET_STATUS),
    389424                .name = "GetHubStatus",
    390425                .callback = req_get_hub_status
    391426        },
    392427        {
    393                 CLASS_REQ_IN(REC_OTHER, USB_HUB_REQUEST_GET_STATUS),
     428                CLASS_REQ(DIR_IN, REC_OTHER, USB_HUB_REQUEST_GET_STATUS),
    394429                .name = "GetPortStatus",
    395430                .callback = req_get_port_status
    396431        },
    397432        {
    398                 CLASS_REQ_OUT(REC_DEVICE, USB_HUB_REQUEST_SET_FEATURE),
     433                CLASS_REQ(DIR_OUT, REC_DEVICE, USB_HUB_REQUEST_SET_FEATURE),
    399434                .name = "SetHubFeature",
    400435                .callback = req_set_hub_feature
    401436        },
    402437        {
    403                 CLASS_REQ_OUT(REC_OTHER, USB_HUB_REQUEST_SET_FEATURE),
     438                CLASS_REQ(DIR_OUT, REC_OTHER, USB_HUB_REQUEST_SET_FEATURE),
    404439                .name = "SetPortFeature",
    405440                .callback = req_set_port_feature
Note: See TracChangeset for help on using the changeset viewer.