Changeset 7a7bfeb3 in mainline for uspace/lib/usbvirt/device.h


Ignore:
Timestamp:
2010-10-24T16:43:40Z (14 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
355f7c2
Parents:
b8a3cda
Message:

Virtual USB overhaul almost complete

The virtual HC, hub and keyboard are rewritten after changes to HCD API.
Comments will be added later.

File:
1 edited

Legend:

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

    rb8a3cda r7a7bfeb3  
    4141
    4242struct usbvirt_device;
     43struct usbvirt_control_transfer;
    4344
    4445typedef int (*usbvirt_on_device_request_t)(struct usbvirt_device *dev,
     
    7071        /** Callback for class-specific USB request. */
    7172        usbvirt_on_device_request_t on_class_device_request;
     73       
     74        int (*on_control_transfer)(struct usbvirt_device *dev,
     75            usb_endpoint_t endpoint, struct usbvirt_control_transfer *transfer);
     76       
    7277        /** Callback for all other incoming data. */
    7378        int (*on_data)(struct usbvirt_device *dev,
     79            usb_endpoint_t endpoint, void *buffer, size_t size);
     80       
     81        /** Callback for host request for data. */
     82        int (*on_data_request)(struct usbvirt_device *dev,
     83            usb_endpoint_t endpoint, void *buffer, size_t size, size_t *actual_size);
     84       
     85        /** Decides direction of control transfer. */
     86        usb_direction_t (*decide_control_transfer_direction)(
    7487            usb_endpoint_t endpoint, void *buffer, size_t size);
    7588} usbvirt_device_ops_t;
     
    117130} usbvirt_device_state_t;
    118131
     132/** Information about on-going control transfer.
     133 */
     134typedef struct usbvirt_control_transfer {
     135        usb_direction_t direction;
     136        void *request;
     137        size_t request_size;
     138        void *data;
     139        size_t data_size;
     140} usbvirt_control_transfer_t;
     141
    119142/** Virtual USB device. */
    120143typedef struct usbvirt_device {
     
    122145        usbvirt_device_ops_t *ops;
    123146       
    124         /** Send data to HC.
    125          * @warning Do not change after initializing with
    126          * usbvirt_device_init().
    127          * This function is here merely to make the interface more OOP.
     147       
     148        /** Reply onto control transfer.
    128149         */
    129         int (*send_data)(struct usbvirt_device *dev,
     150        int (*control_transfer_reply)(struct usbvirt_device *dev,
    130151            usb_endpoint_t endpoint, void *buffer, size_t size);
    131152       
     
    153174        int device_id_;
    154175       
    155         /** Main routine called when data is received from HC.
    156          * @warning Do not change after initializing with
    157          * usbvirt_device_init().
    158          * This function is here merely to make the interface more OOP.
    159          */
    160         int (*receive_data)(struct usbvirt_device *dev,
     176        int (*transaction_out)(struct usbvirt_device *dev,
    161177            usb_endpoint_t endpoint, void *buffer, size_t size);
     178        int (*transaction_setup)(struct usbvirt_device *dev,
     179            usb_endpoint_t endpoint, void *buffer, size_t size);
     180        int (*transaction_in)(struct usbvirt_device *dev,
     181            usb_endpoint_t endpoint, void *buffer, size_t size, size_t *data_size);
    162182       
     183        usbvirt_control_transfer_t current_control_transfers[USB11_ENDPOINT_MAX];
    163184} usbvirt_device_t;
    164185
Note: See TracChangeset for help on using the changeset viewer.