Add libusb and libuvc
[rtmpclient.git] / app / src / main / jni / libusb-1.0.22 / libusb / os / haiku_usb_raw.h
1 /*
2  * Copyright 2006-2008, Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5
6 #ifndef _USB_RAW_H_
7 #define _USB_RAW_H_
8
9 #include <USB3.h>
10
11 #define B_USB_RAW_PROTOCOL_VERSION      0x0015
12 #define B_USB_RAW_ACTIVE_ALTERNATE      0xffffffff
13
14 typedef enum {
15         B_USB_RAW_COMMAND_GET_VERSION = 0x1000,
16
17         B_USB_RAW_COMMAND_GET_DEVICE_DESCRIPTOR = 0x2000,
18         B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR,
19         B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR,
20         B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR,
21         B_USB_RAW_COMMAND_GET_STRING_DESCRIPTOR,
22         B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR,
23         B_USB_RAW_COMMAND_GET_ALT_INTERFACE_COUNT,
24         B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX,
25         B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR_ETC,
26         B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR_ETC,
27         B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR_ETC,
28
29         B_USB_RAW_COMMAND_SET_CONFIGURATION = 0x3000,
30         B_USB_RAW_COMMAND_SET_FEATURE,
31         B_USB_RAW_COMMAND_CLEAR_FEATURE,
32         B_USB_RAW_COMMAND_GET_STATUS,
33         B_USB_RAW_COMMAND_GET_DESCRIPTOR,
34         B_USB_RAW_COMMAND_SET_ALT_INTERFACE,
35
36         B_USB_RAW_COMMAND_CONTROL_TRANSFER = 0x4000,
37         B_USB_RAW_COMMAND_INTERRUPT_TRANSFER,
38         B_USB_RAW_COMMAND_BULK_TRANSFER,
39         B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER
40 } usb_raw_command_id;
41
42
43 typedef enum {
44         B_USB_RAW_STATUS_SUCCESS = 0,
45
46         B_USB_RAW_STATUS_FAILED,
47         B_USB_RAW_STATUS_ABORTED,
48         B_USB_RAW_STATUS_STALLED,
49         B_USB_RAW_STATUS_CRC_ERROR,
50         B_USB_RAW_STATUS_TIMEOUT,
51
52         B_USB_RAW_STATUS_INVALID_CONFIGURATION,
53         B_USB_RAW_STATUS_INVALID_INTERFACE,
54         B_USB_RAW_STATUS_INVALID_ENDPOINT,
55         B_USB_RAW_STATUS_INVALID_STRING,
56
57         B_USB_RAW_STATUS_NO_MEMORY
58 } usb_raw_command_status;
59
60
61 typedef union {
62         struct {
63                 status_t status;
64         } version;
65
66         struct {
67                 status_t status;
68                 usb_device_descriptor *descriptor;
69         } device;
70
71         struct {
72                 status_t status;
73                 usb_configuration_descriptor *descriptor;
74                 uint32 config_index;
75         } config;
76
77         struct {
78                 status_t status;
79                 uint32 alternate_info;
80                 uint32 config_index;
81                 uint32 interface_index;
82         } alternate;
83
84         struct {
85                 status_t status;
86                 usb_interface_descriptor *descriptor;
87                 uint32 config_index;
88                 uint32 interface_index;
89         } interface;
90
91         struct {
92                 status_t status;
93                 usb_interface_descriptor *descriptor;
94                 uint32 config_index;
95                 uint32 interface_index;
96                 uint32 alternate_index;
97         } interface_etc;
98
99         struct {
100                 status_t status;
101                 usb_endpoint_descriptor *descriptor;
102                 uint32 config_index;
103                 uint32 interface_index;
104                 uint32 endpoint_index;
105         } endpoint;
106
107         struct {
108                 status_t status;
109                 usb_endpoint_descriptor *descriptor;
110                 uint32 config_index;
111                 uint32 interface_index;
112                 uint32 alternate_index;
113                 uint32 endpoint_index;
114         } endpoint_etc;
115
116         struct {
117                 status_t status;
118                 usb_descriptor *descriptor;
119                 uint32 config_index;
120                 uint32 interface_index;
121                 uint32 generic_index;
122                 size_t length;
123         } generic;
124
125         struct {
126                 status_t status;
127                 usb_descriptor *descriptor;
128                 uint32 config_index;
129                 uint32 interface_index;
130                 uint32 alternate_index;
131                 uint32 generic_index;
132                 size_t length;
133         } generic_etc;
134
135         struct {
136                 status_t status;
137                 usb_string_descriptor *descriptor;
138                 uint32 string_index;
139                 size_t length;
140         } string;
141
142         struct {
143                 status_t status;
144                 uint8 type;
145                 uint8 index;
146                 uint16 language_id;
147                 void *data;
148                 size_t length;
149         } descriptor;
150
151         struct {
152                 status_t status;
153                 uint8 request_type;
154                 uint8 request;
155                 uint16 value;
156                 uint16 index;
157                 uint16 length;
158                 void *data;
159         } control;
160
161         struct {
162                 status_t status;
163                 uint32 interface;
164                 uint32 endpoint;
165                 void *data;
166                 size_t length;
167         } transfer;
168
169         struct {
170                 status_t status;
171                 uint32 interface;
172                 uint32 endpoint;
173                 void *data;
174                 size_t length;
175                 usb_iso_packet_descriptor *packet_descriptors;
176                 uint32 packet_count;
177         } isochronous;
178 } usb_raw_command;
179
180 #endif // _USB_RAW_H_