Ignore:
File:
1 edited

Legend:

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

    r9d58539 rd93f5afb  
    4040#include <usb/dev/request.h>
    4141#include <async.h>
     42#include <errno.h>
     43
    4244
    4345/** Maximum number of endpoints supported by virtual USB. */
     
    5759typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *dev,
    5860    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
    59     void *buffer, size_t buffer_size);
     61    const void *buffer, size_t buffer_size);
    6062
    6163/** Callback for data from device (IN transaction).
     
    8890    uint8_t *data, size_t *act_data_size);
    8991
     92/** Create a class request to get data from device
     93 *
     94 * @param rec Request recipient.
     95 * @param req Request code.
     96 */
     97#define CLASS_REQ_IN(rec, req) \
     98        .request_type = SETUP_REQUEST_TO_HOST(USB_REQUEST_TYPE_CLASS, rec), \
     99        .request = req
     100
     101/** Create a class request to send data to device
     102 *
     103 * @param rec Request recipient.
     104 * @param req Request code.
     105 */
     106#define CLASS_REQ_OUT(rec, req) \
     107        .request_type = SETUP_REQUEST_TO_DEVICE(USB_REQUEST_TYPE_CLASS, rec), \
     108        .request = req
     109
     110/** Create a standard request to get data from device
     111 *
     112 * @param rec Request recipient.
     113 * @param req Request code.
     114 */
     115#define STD_REQ_IN(rec, req) \
     116        .request_type = SETUP_REQUEST_TO_HOST(USB_REQUEST_TYPE_STANDARD, rec), \
     117        .request = req
     118
     119/** Create a standard request to send data to device
     120 *
     121 * @param rec Request recipient.
     122 * @param req Request code.
     123 */
     124#define STD_REQ_OUT(rec, req) \
     125        .request_type = SETUP_REQUEST_TO_DEVICE(USB_REQUEST_TYPE_STANDARD, rec), \
     126        .request = req
     127
    90128/** Callback for control request on a virtual USB device.
    91129 *
     
    94132 */
    95133typedef struct {
    96         /** Request direction (in or out). */
    97         usb_direction_t req_direction;
    98         /** Request recipient (device, interface or endpoint). */
    99         usb_request_recipient_t req_recipient;
    100         /** Request type (standard, class or vendor). */
    101         usb_request_type_t req_type;
     134        /* Request type. See usb/request.h */
     135        uint8_t request_type;
    102136        /** Actual request code. */
    103137        uint8_t request;
     
    111145typedef struct {
    112146        /** Actual data. */
    113         uint8_t *data;
     147        const uint8_t *data;
    114148        /** Data length. */
    115149        size_t length;
     
    121155        usb_standard_configuration_descriptor_t *descriptor;
    122156        /** Array of extra data. */
    123         usbvirt_device_configuration_extras_t *extra;
     157        const usbvirt_device_configuration_extras_t *extra;
    124158        /** Length of @c extra array. */
    125159        size_t extra_count;
     
    131165         * There is always only one such descriptor for the device.
    132166         */
    133         usb_standard_device_descriptor_t *device;
     167        const usb_standard_device_descriptor_t *device;
    134168
    135169        /** Configurations. */
     
    164198         * Last handler is expected to have the @c callback field set to NULL
    165199         */
    166         usbvirt_control_request_handler_t *control;
     200        const usbvirt_control_request_handler_t *control;
    167201        /** Callback when device changes state.
    168202         *
     
    180214/** Virtual USB device. */
    181215struct usbvirt_device {
     216        /** Device does not require USB bus power */
     217        bool self_powered;
     218        /** Device is allowed to signal remote wakeup */
     219        bool remote_wakeup;
    182220        /** Name for debugging purposes. */
    183221        const char *name;
     
    187225        usbvirt_device_ops_t *ops;
    188226        /** Device descriptors. */
    189         usbvirt_descriptors_t *descriptors;
     227        const usbvirt_descriptors_t *descriptors;
    190228        /** Current device address.
    191229         * You shall treat this field as read only in your code.
     
    202240};
    203241
     242
     243int req_nop(usbvirt_device_t *device,
     244    const usb_device_request_setup_packet_t *setup_packet,
     245    uint8_t *data, size_t *act_size);
     246
    204247int usbvirt_device_plug(usbvirt_device_t *, const char *);
    205248void usbvirt_device_unplug(usbvirt_device_t *);
    206249
    207250void usbvirt_control_reply_helper(const usb_device_request_setup_packet_t *,
    208     uint8_t *, size_t *, void *, size_t);
    209 
    210 int usbvirt_control_write(usbvirt_device_t *, void *, size_t, void *, size_t);
    211 int usbvirt_control_read(usbvirt_device_t *, void *, size_t, void *, size_t, size_t *);
     251    uint8_t *, size_t *, const void *, size_t);
     252
     253int usbvirt_control_write(usbvirt_device_t *, const void *, size_t, void *, size_t);
     254int usbvirt_control_read(usbvirt_device_t *, const void *, size_t, void *, size_t, size_t *);
    212255int usbvirt_data_out(usbvirt_device_t *, usb_transfer_type_t, usb_endpoint_t,
    213     void *, size_t);
     256    const void *, size_t);
    214257int usbvirt_data_in(usbvirt_device_t *, usb_transfer_type_t, usb_endpoint_t,
    215258    void *, size_t, size_t *);
Note: See TracChangeset for help on using the changeset viewer.