Changeset b4b534ac in mainline for uspace/lib/usbvirt/include/usbvirt/device.h
- Timestamp:
- 2016-07-22T08:24:47Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f76d2c2
- Parents:
- 5b18137 (diff), 8351f9a4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbvirt/include/usbvirt/device.h
r5b18137 rb4b534ac 40 40 #include <usb/dev/request.h> 41 41 #include <async.h> 42 #include <errno.h> 43 42 44 43 45 /** Maximum number of endpoints supported by virtual USB. */ … … 57 59 typedef int (*usbvirt_on_data_to_device_t)(usbvirt_device_t *dev, 58 60 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); 60 62 61 63 /** Callback for data from device (IN transaction). … … 88 90 uint8_t *data, size_t *act_data_size); 89 91 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 90 128 /** Callback for control request on a virtual USB device. 91 129 * … … 94 132 */ 95 133 typedef 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; 102 136 /** Actual request code. */ 103 137 uint8_t request; … … 111 145 typedef struct { 112 146 /** Actual data. */ 113 uint8_t *data;147 const uint8_t *data; 114 148 /** Data length. */ 115 149 size_t length; … … 121 155 usb_standard_configuration_descriptor_t *descriptor; 122 156 /** Array of extra data. */ 123 usbvirt_device_configuration_extras_t *extra;157 const usbvirt_device_configuration_extras_t *extra; 124 158 /** Length of @c extra array. */ 125 159 size_t extra_count; … … 131 165 * There is always only one such descriptor for the device. 132 166 */ 133 usb_standard_device_descriptor_t *device;167 const usb_standard_device_descriptor_t *device; 134 168 135 169 /** Configurations. */ … … 164 198 * Last handler is expected to have the @c callback field set to NULL 165 199 */ 166 usbvirt_control_request_handler_t *control;200 const usbvirt_control_request_handler_t *control; 167 201 /** Callback when device changes state. 168 202 * … … 180 214 /** Virtual USB device. */ 181 215 struct 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; 182 220 /** Name for debugging purposes. */ 183 221 const char *name; … … 187 225 usbvirt_device_ops_t *ops; 188 226 /** Device descriptors. */ 189 usbvirt_descriptors_t *descriptors;227 const usbvirt_descriptors_t *descriptors; 190 228 /** Current device address. 191 229 * You shall treat this field as read only in your code. … … 202 240 }; 203 241 242 243 int 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 204 247 int usbvirt_device_plug(usbvirt_device_t *, const char *); 205 248 void usbvirt_device_unplug(usbvirt_device_t *); 206 249 207 250 void 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 253 int usbvirt_control_write(usbvirt_device_t *, const void *, size_t, void *, size_t); 254 int usbvirt_control_read(usbvirt_device_t *, const void *, size_t, void *, size_t, size_t *); 212 255 int usbvirt_data_out(usbvirt_device_t *, usb_transfer_type_t, usb_endpoint_t, 213 void *, size_t);256 const void *, size_t); 214 257 int usbvirt_data_in(usbvirt_device_t *, usb_transfer_type_t, usb_endpoint_t, 215 258 void *, size_t, size_t *);
Note:
See TracChangeset
for help on using the changeset viewer.