1  use crate::*;
2  use libc::c_int;
3  
4  // libusb_error
5  pub const LIBUSB_SUCCESS: c_int = 0;
6  pub const LIBUSB_ERROR_IO: c_int = -1;
7  pub const LIBUSB_ERROR_INVALID_PARAM: c_int = -2;
8  pub const LIBUSB_ERROR_ACCESS: c_int = -3;
9  pub const LIBUSB_ERROR_NO_DEVICE: c_int = -4;
10  pub const LIBUSB_ERROR_NOT_FOUND: c_int = -5;
11  pub const LIBUSB_ERROR_BUSY: c_int = -6;
12  pub const LIBUSB_ERROR_TIMEOUT: c_int = -7;
13  pub const LIBUSB_ERROR_OVERFLOW: c_int = -8;
14  pub const LIBUSB_ERROR_PIPE: c_int = -9;
15  pub const LIBUSB_ERROR_INTERRUPTED: c_int = -10;
16  pub const LIBUSB_ERROR_NO_MEM: c_int = -11;
17  pub const LIBUSB_ERROR_NOT_SUPPORTED: c_int = -12;
18  pub const LIBUSB_ERROR_OTHER: c_int = -99;
19  
20  // libusb_transfer_status
21  pub const LIBUSB_TRANSFER_COMPLETED: c_int = 0;
22  pub const LIBUSB_TRANSFER_ERROR: c_int = 1;
23  pub const LIBUSB_TRANSFER_TIMED_OUT: c_int = 2;
24  pub const LIBUSB_TRANSFER_CANCELLED: c_int = 3;
25  pub const LIBUSB_TRANSFER_STALL: c_int = 4;
26  pub const LIBUSB_TRANSFER_NO_DEVICE: c_int = 5;
27  pub const LIBUSB_TRANSFER_OVERFLOW: c_int = 6;
28  
29  pub const LIBUSB_TRANSFER_SHORT_NOT_OK: u8 = 1 << 0;
30  pub const LIBUSB_TRANSFER_FREE_BUFFER: u8 = 1 << 1;
31  pub const LIBUSB_TRANSFER_FREE_TRANSFER: u8 = 1 << 2;
32  pub const LIBUSB_TRANSFER_ADD_ZERO_PACKET: u8 = 1 << 3;
33  
34  // libusb_capability
35  pub const LIBUSB_CAP_HAS_CAPABILITY: u32 = 0x0000;
36  pub const LIBUSB_CAP_HAS_HOTPLUG: u32 = 0x0001;
37  pub const LIBUSB_CAP_HAS_HID_ACCESS: u32 = 0x0100;
38  pub const LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER: u32 = 0x0101;
39  
40  //// libusb_log_level
41  pub const LIBUSB_LOG_LEVEL_NONE: c_int = 0;
42  pub const LIBUSB_LOG_LEVEL_ERROR: c_int = 1;
43  pub const LIBUSB_LOG_LEVEL_WARNING: c_int = 2;
44  pub const LIBUSB_LOG_LEVEL_INFO: c_int = 3;
45  pub const LIBUSB_LOG_LEVEL_DEBUG: c_int = 4;
46  
47  // libusb_class_code
48  pub const LIBUSB_CLASS_PER_INTERFACE: u8 = 0;
49  pub const LIBUSB_CLASS_AUDIO: u8 = 1;
50  pub const LIBUSB_CLASS_COMM: u8 = 2;
51  pub const LIBUSB_CLASS_HID: u8 = 3;
52  pub const LIBUSB_CLASS_PHYSICAL: u8 = 5;
53  pub const LIBUSB_CLASS_PRINTER: u8 = 7;
54  pub const LIBUSB_CLASS_IMAGE: u8 = 6;
55  pub const LIBUSB_CLASS_MASS_STORAGE: u8 = 8;
56  pub const LIBUSB_CLASS_HUB: u8 = 9;
57  pub const LIBUSB_CLASS_DATA: u8 = 10;
58  pub const LIBUSB_CLASS_SMART_CARD: u8 = 0x0B;
59  pub const LIBUSB_CLASS_CONTENT_SECURITY: u8 = 0x0D;
60  pub const LIBUSB_CLASS_VIDEO: u8 = 0x0E;
61  pub const LIBUSB_CLASS_PERSONAL_HEALTHCARE: u8 = 0x0F;
62  pub const LIBUSB_CLASS_DIAGNOSTIC_DEVICE: u8 = 0xDC;
63  pub const LIBUSB_CLASS_WIRELESS: u8 = 0xE0;
64  pub const LIBUSB_CLASS_APPLICATION: u8 = 0xFE;
65  pub const LIBUSB_CLASS_VENDOR_SPEC: u8 = 0xFF;
66  
67  // libusb_speed
68  pub const LIBUSB_SPEED_UNKNOWN: c_int = 0;
69  pub const LIBUSB_SPEED_LOW: c_int = 1;
70  pub const LIBUSB_SPEED_FULL: c_int = 2;
71  pub const LIBUSB_SPEED_HIGH: c_int = 3;
72  pub const LIBUSB_SPEED_SUPER: c_int = 4;
73  pub const LIBUSB_SPEED_SUPER_PLUS: c_int = 5;
74  
75  // libusb_descriptor_type
76  pub const LIBUSB_DT_DEVICE: u8 = 0x01;
77  pub const LIBUSB_DT_CONFIG: u8 = 0x02;
78  pub const LIBUSB_DT_STRING: u8 = 0x03;
79  pub const LIBUSB_DT_INTERFACE: u8 = 0x04;
80  pub const LIBUSB_DT_ENDPOINT: u8 = 0x05;
81  pub const LIBUSB_DT_BOS: u8 = 0x0F;
82  pub const LIBUSB_DT_DEVICE_CAPABILITY: u8 = 0x10;
83  pub const LIBUSB_DT_HID: u8 = 0x21;
84  pub const LIBUSB_DT_REPORT: u8 = 0x22;
85  pub const LIBUSB_DT_PHYSICAL: u8 = 0x23;
86  pub const LIBUSB_DT_HUB: u8 = 0x29;
87  pub const LIBUSB_DT_SUPERSPEED_HUB: u8 = 0x2A;
88  pub const LIBUSB_DT_SS_ENDPOINT_COMPANION: u8 = 0x30;
89  
90  // libusb_endpoint_direction
91  pub const LIBUSB_ENDPOINT_ADDRESS_MASK: u8 = 0x0F;
92  pub const LIBUSB_ENDPOINT_DIR_MASK: u8 = 0x80;
93  pub const LIBUSB_ENDPOINT_IN: u8 = 0x80;
94  pub const LIBUSB_ENDPOINT_OUT: u8 = 0x00;
95  
96  // libusb_transfer_type
97  pub const LIBUSB_TRANSFER_TYPE_MASK: u8 = 0x03;
98  pub const LIBUSB_TRANSFER_TYPE_CONTROL: u8 = 0;
99  pub const LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: u8 = 1;
100  pub const LIBUSB_TRANSFER_TYPE_BULK: u8 = 2;
101  pub const LIBUSB_TRANSFER_TYPE_INTERRUPT: u8 = 3;
102  pub const LIBUSB_TRANSFER_TYPE_BULK_STREAM: u8 = 4;
103  
104  // libusb_iso_sync_type
105  pub const LIBUSB_ISO_SYNC_TYPE_MASK: u8 = 0x0C;
106  pub const LIBUSB_ISO_SYNC_TYPE_NONE: u8 = 0;
107  pub const LIBUSB_ISO_SYNC_TYPE_ASYNC: u8 = 1;
108  pub const LIBUSB_ISO_SYNC_TYPE_ADAPTIVE: u8 = 2;
109  pub const LIBUSB_ISO_SYNC_TYPE_SYNC: u8 = 3;
110  
111  // libusb_iso_usage_type
112  pub const LIBUSB_ISO_USAGE_TYPE_MASK: u8 = 0x30;
113  pub const LIBUSB_ISO_USAGE_TYPE_DATA: u8 = 0;
114  pub const LIBUSB_ISO_USAGE_TYPE_FEEDBACK: u8 = 1;
115  pub const LIBUSB_ISO_USAGE_TYPE_IMPLICIT: u8 = 2;
116  
117  // libusb_request_type
118  pub const LIBUSB_REQUEST_TYPE_STANDARD: u8 = 0x00 << 5;
119  pub const LIBUSB_REQUEST_TYPE_CLASS: u8 = 0x01 << 5;
120  pub const LIBUSB_REQUEST_TYPE_VENDOR: u8 = 0x02 << 5;
121  pub const LIBUSB_REQUEST_TYPE_RESERVED: u8 = 0x03 << 5;
122  
123  // libusb_request_recipient
124  pub const LIBUSB_RECIPIENT_DEVICE: u8 = 0x00;
125  pub const LIBUSB_RECIPIENT_INTERFACE: u8 = 0x01;
126  pub const LIBUSB_RECIPIENT_ENDPOINT: u8 = 0x02;
127  pub const LIBUSB_RECIPIENT_OTHER: u8 = 0x03;
128  
129  // libusb_standard_request
130  pub const LIBUSB_REQUEST_GET_STATUS: u8 = 0x00;
131  pub const LIBUSB_REQUEST_CLEAR_FEATURE: u8 = 0x01;
132  pub const LIBUSB_REQUEST_SET_FEATURE: u8 = 0x03;
133  pub const LIBUSB_REQUEST_SET_ADDRESS: u8 = 0x05;
134  pub const LIBUSB_REQUEST_GET_DESCRIPTOR: u8 = 0x06;
135  pub const LIBUSB_REQUEST_SET_DESCRIPTOR: u8 = 0x07;
136  pub const LIBUSB_REQUEST_GET_CONFIGURATION: u8 = 0x08;
137  pub const LIBUSB_REQUEST_SET_CONFIGURATION: u8 = 0x09;
138  pub const LIBUSB_REQUEST_GET_INTERFACE: u8 = 0x0A;
139  pub const LIBUSB_REQUEST_SET_INTERFACE: u8 = 0x0B;
140  pub const LIBUSB_REQUEST_SYNCH_FRAME: u8 = 0x0C;
141  pub const LIBUSB_REQUEST_SET_SEL: u8 = 0x30;
142  pub const LIBUSB_SET_ISOCH_DELAY: u8 = 0x31;
143  
144  // libusb_hotplug
145  pub const LIBUSB_HOTPLUG_NO_FLAGS: c_int = 0;
146  pub const LIBUSB_HOTPLUG_ENUMERATE: c_int = 1 << 0;
147  pub const LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED: c_int = 0x01;
148  pub const LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT: c_int = 0x02;
149  pub const LIBUSB_HOTPLUG_MATCH_ANY: c_int = -1;
150  
151  pub const LIBUSB_OPTION_LOG_LEVEL: u32 = 0x00;
152  pub const LIBUSB_OPTION_USE_USBDK: u32 = 0x01;
153  pub const LIBUSB_OPTION_WEAK_AUTHORITY: u32 = 0x02;
154  pub const LIBUSB_OPTION_NO_DEVICE_DISCOVERY: u32 = 0x02;
155  
156  // libusb_log_cb_mode
157  pub const LIBUSB_LOG_CB_GLOBAL: libusb_log_cb_mode = 1 << 0;
158  pub const LIBUSB_LOG_CB_CONTEXT: libusb_log_cb_mode = 1 << 1;
159  
160  pub const LIBUSB_CONTROL_SETUP_SIZE: usize = std::mem::size_of::<libusb_control_setup>();
161