Changeset a943106 in mainline
- Timestamp:
- 2011-05-06T14:34:10Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- dc06caa
- Parents:
- 42d47f8
- Location:
- uspace/lib/usbvirt/include/usbvirt
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbvirt/include/usbvirt/device.h
r42d47f8 ra943106 31 31 */ 32 32 /** @file 33 * @briefVirtual USB device.33 * Virtual USB device. 34 34 */ 35 35 #ifndef LIBUSBVIRT_DEVICE_H_ … … 39 39 #include <usb/request.h> 40 40 41 /** Maximum number of endpoints supported by virtual USB. */ 41 42 #define USBVIRT_ENDPOINT_MAX 16 42 43 43 44 typedef struct usbvirt_device usbvirt_device_t; 44 45 45 typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *, usb_endpoint_t, 46 usb_transfer_type_t, void *, size_t); 47 typedef int (*usbvirt_on_data_from_device_t)(usbvirt_device_t *, usb_endpoint_t, 48 usb_transfer_type_t, void *, size_t, size_t *); 49 typedef int (*usbvirt_on_control_t)(usbvirt_device_t *, 50 const usb_device_request_setup_packet_t *, uint8_t *, size_t *); 51 52 typedef struct { 46 /** Callback for data to device (OUT transaction). 47 * 48 * @param dev Virtual device to which the transaction belongs. 49 * @param endpoint Target endpoint number. 50 * @param transfer_type Transfer type. 51 * @param buffer Data buffer. 52 * @param buffer_size Size of the buffer in bytes. 53 * @return Error code. 54 */ 55 typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *dev, 56 usb_endpoint_t endpoint, usb_transfer_type_t transfer_type, 57 void *buffer, size_t buffer_size); 58 59 /** Callback for data from device (IN transaction). 60 * 61 * @param dev Virtual device to which the transaction belongs. 62 * @param endpoint Target endpoint number. 63 * @param transfer_type Transfer type. 64 * @param buffer Data buffer to write answer to. 65 * @param buffer_size Size of the buffer in bytes. 66 * @param act_buffer_size Write here how many bytes were actually written. 67 * @return Error code. 68 */ 69 typedef int (*usbvirt_on_data_from_device_t)(usbvirt_device_t *dev, 70 usb_endpoint_t endpoint, usb_transfer_type_t transfer_type, 71 void *buffer, size_t buffer_size, size_t *act_buffer_size); 72 73 /** Callback for control transfer on endpoint zero. 74 * 75 * Notice that size of the data buffer is expected to be read from the 76 * setup packet. 77 * 78 * @param dev Virtual device to which the transaction belongs. 79 * @param setup_packet Standard setup packet. 80 * @param data Data (might be NULL). 81 * @param act_data_size Size of returned data in bytes. 82 * @return Error code. 83 */ 84 typedef int (*usbvirt_on_control_t)(usbvirt_device_t *dev, 85 const usb_device_request_setup_packet_t *setup_packet, 86 uint8_t *data, size_t *act_data_size); 87 88 /** Callback for control request on a virtual USB device. */ 89 typedef struct { 90 /** Request direction (in or out). */ 53 91 usb_direction_t req_direction; 92 /** Request recipient (device, interface or endpoint). */ 54 93 usb_request_recipient_t req_recipient; 94 /** Request type (standard, class or vendor). */ 55 95 usb_request_type_t req_type; 96 /** Actual request code. */ 56 97 uint8_t request; 98 /** Request handler name for debugging purposes. */ 57 99 const char *name; 100 /** Callback to be executed on matching request. */ 58 101 usbvirt_on_control_t callback; 59 102 } usbvirt_control_request_handler_t; … … 77 120 } usbvirt_device_configuration_t; 78 121 79 /** Standard USB descriptors . */122 /** Standard USB descriptors for virtual device. */ 80 123 typedef struct { 81 124 /** Standard device descriptor. … … 102 145 } usbvirt_device_state_t; 103 146 104 typedef struct { 147 /** Ops structure for virtual USB device. */ 148 typedef struct { 149 /** Callbacks for data to device. 150 * Index zero is ignored. 151 */ 105 152 usbvirt_on_data_to_device_t data_out[USBVIRT_ENDPOINT_MAX]; 153 /** Callbacks for data from device. 154 * Index zero is ignored. 155 */ 106 156 usbvirt_on_data_from_device_t data_in[USBVIRT_ENDPOINT_MAX]; 157 /** Array of control handlers. 158 * Last handler is expected to have the @c callback field set to NULL 159 */ 107 160 usbvirt_control_request_handler_t *control; 161 /** Callback when device changes state. 162 * 163 * The value of @c state attribute of @p dev device is not 164 * defined during call of this function. 165 * 166 * @param dev The virtual USB device. 167 * @param old_state Old device state. 168 * @param new_state New device state. 169 */ 108 170 void (*state_changed)(usbvirt_device_t *dev, 109 171 usbvirt_device_state_t old_state, usbvirt_device_state_t new_state); 110 172 } usbvirt_device_ops_t; 111 173 174 /** Virtual USB device. */ 112 175 struct usbvirt_device { 176 /** Name for debugging purposes. */ 113 177 const char *name; 178 /** Custom device data. */ 114 179 void *device_data; 180 /** Device ops. */ 115 181 usbvirt_device_ops_t *ops; 182 /** Device descriptors. */ 116 183 usbvirt_descriptors_t *descriptors; 184 /** Current device address. 185 * You shall treat this field as read only in your code. 186 */ 117 187 usb_address_t address; 188 /** Current device state. 189 * You shall treat this field as read only in your code. 190 */ 118 191 usbvirt_device_state_t state; 119 192 }; -
uspace/lib/usbvirt/include/usbvirt/ipc.h
r42d47f8 ra943106 1 1 /* 2 * Copyright (c) 201 0Vojtech Horky2 * Copyright (c) 2011 Vojtech Horky 3 3 * All rights reserved. 4 4 * … … 31 31 */ 32 32 /** @file 33 * @brief Virtual USB device.33 * IPC wrappers for virtual USB. 34 34 */ 35 35 #ifndef LIBUSBVIRT_IPC_H_ … … 40 40 #include <bool.h> 41 41 42 /** IPC methods communication between host controller and virtual device. */ 42 43 typedef enum { 43 44 IPC_M_USBVIRT_GET_NAME = IPC_FIRST_USER_METHOD + 80, … … 46 47 IPC_M_USBVIRT_INTERRUPT_IN, 47 48 IPC_M_USBVIRT_INTERRUPT_OUT 48 } usbvirt_ ipc_t;49 } usbvirt_hc_to_device_method_t; 49 50 50 51 int usbvirt_ipc_send_control_read(int, usb_endpoint_t, void *, size_t,
Note:
See TracChangeset
for help on using the changeset viewer.