Changeset 7feeb84 in mainline for uspace/lib/usbvirt/include


Ignore:
Timestamp:
2010-12-13T14:25:49Z (15 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
76daaf9f
Parents:
8f8ae1fd
Message:

usbvirt: more flexible callbacks for endpoint zero

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbvirt/include/usbvirt/device.h

    r8f8ae1fd r7feeb84  
    4040#include <usb/devreq.h>
    4141
     42typedef enum {
     43        USBVIRT_REQUEST_TYPE_STANDARD = 0,
     44        USBVIRT_REQUEST_TYPE_CLASS = 1
     45} usbvirt_request_type_t;
     46
     47typedef enum {
     48        USBVIRT_REQUEST_RECIPIENT_DEVICE = 0,
     49        USBVIRT_REQUEST_RECIPIENT_INTERFACE = 1,
     50        USBVIRT_REQUEST_RECIPIENT_ENDPOINT = 2,
     51        USBVIRT_REQUEST_RECIPIENT_OTHER = 3
     52} usbvirt_request_recipient_t;
     53
    4254typedef struct usbvirt_device usbvirt_device_t;
    4355struct usbvirt_control_transfer;
     
    4759        uint8_t *data);
    4860
     61typedef int (*usbvirt_control_request_callback_t)(usbvirt_device_t *dev,
     62        usb_device_request_setup_packet_t *request,
     63        uint8_t *data);
     64
     65typedef struct {
     66        uint8_t request_type;
     67        uint8_t request;
     68        usbvirt_control_request_callback_t callback;
     69} usbvirt_control_transfer_handler_t;
     70
     71#define USBVIRT_MAKE_CONTROL_REQUEST_TYPE(direction, type, recipient) \
     72        ((((direction) == USB_DIRECTION_IN) ? 1 : 0) << 7) \
     73        | (((type) & 3) << 5) \
     74        | (((recipient) & 31))
     75
     76#define USBVIRT_CONTROL_TRANSFER_HANDLER_LAST { 0, 0, NULL }
     77
    4978/** Device operations. */
    5079typedef struct {
    51         /** Callbacks for standard device requests.
    52          * The callbacks are indexed by usb_stddevreq_t enum.
    53          */
    54         usbvirt_on_device_request_t on_standard_request[USB_DEVREQ_LAST_STD];
    55         /** Callback for class-specific USB request. */
    56         usbvirt_on_device_request_t on_class_device_request;
    57        
     80        /** Callbacks for transfers over control pipe zero. */
     81        usbvirt_control_transfer_handler_t *control_transfer_handlers;
     82
    5883        int (*on_control_transfer)(usbvirt_device_t *dev,
    5984            usb_endpoint_t endpoint, struct usbvirt_control_transfer *transfer);
Note: See TracChangeset for help on using the changeset viewer.