objc2_io_usb_host/generated/IOUSBHostDefinitions.rs
1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostcompletionhandler?language=objc)
11#[cfg(feature = "block2")]
12pub type IOUSBHostCompletionHandler = *mut block2::DynBlock<dyn Fn(IOReturn, NSUInteger)>;
13
14/// AbsoluteTime represented as a uint64_t.
15///
16/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhosttime?language=objc)
17pub type IOUSBHostTime = u64;
18
19/// Structure representing a single frame in an isochronous transfer. Use of this
20/// structure is discouraged, use
21///
22/// ```text
23/// IOUSBHostIsochronousTransaction
24/// ```
25///
26/// instead.
27/// Field: status Completion status for this individual frame. IOUSBHostFamily will initialize
28/// this to kIOReturnInvalid and will update the field with a valid status code upon
29/// completion of the frame.
30/// Field: requestCount The number of bytes requested to transfer for this frame.
31/// This field must be initialized by the caller before the structure is submitted.
32/// Field: completeCount The number of bytes actually transferred for this frame.
33/// IOUSBHostFamily will update this field upon completion of the frame.
34/// Field: reserved Reserved for future use.
35/// Field: timeStamp The observed IOUSBHostTime for this frame's completion. Note that
36/// interrupt latency and system load may result in more than one frame completing with
37/// the same timestamp.
38///
39/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronousframe?language=objc)
40#[repr(C, packed)]
41#[derive(Clone, Copy, Debug, PartialEq)]
42pub struct IOUSBHostIsochronousFrame {
43 pub status: IOReturn,
44 pub requestCount: u32,
45 pub completeCount: u32,
46 pub reserved: u32,
47 pub timeStamp: IOUSBHostTime,
48}
49
50unsafe impl Encode for IOUSBHostIsochronousFrame {
51 const ENCODING: Encoding = Encoding::Struct(
52 "IOUSBHostIsochronousFrame",
53 &[
54 <IOReturn>::ENCODING,
55 <u32>::ENCODING,
56 <u32>::ENCODING,
57 <u32>::ENCODING,
58 <IOUSBHostTime>::ENCODING,
59 ],
60 );
61}
62
63unsafe impl RefEncode for IOUSBHostIsochronousFrame {
64 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
65}
66
67/// Options for
68/// <code>
69/// sendIORequestWithData:transactionList:transactionListCount:firstFrameNumber:options:error
70/// </code>
71/// and
72/// <code>
73/// sendIORequestWithData:transactionList:transactionListCount:firstFrameNumber:options:error:completionHandler
74/// </code>
75///
76/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronoustransferoptions?language=objc)
77// NS_OPTIONS
78#[repr(transparent)]
79#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
80pub struct IOUSBHostIsochronousTransferOptions(pub u32);
81bitflags::bitflags! {
82 impl IOUSBHostIsochronousTransferOptions: u32 {
83 #[doc(alias = "IOUSBHostIsochronousTransferOptionsNone")]
84 const None = 0;
85 }
86}
87
88unsafe impl Encode for IOUSBHostIsochronousTransferOptions {
89 const ENCODING: Encoding = u32::ENCODING;
90}
91
92unsafe impl RefEncode for IOUSBHostIsochronousTransferOptions {
93 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
94}
95
96/// Options for
97/// <code>
98/// sendIORequestWithData:transactionList:transactionListCount:firstFrameNumber:error
99/// </code>
100/// and
101/// <code>
102/// sendIORequestWithData:transactionList:transactionListCount:firstFrameNumber:error:completionHandler
103/// </code>
104///
105/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronoustransactionoptions?language=objc)
106// NS_OPTIONS
107#[repr(transparent)]
108#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
109pub struct IOUSBHostIsochronousTransactionOptions(pub u32);
110bitflags::bitflags! {
111 impl IOUSBHostIsochronousTransactionOptions: u32 {
112 #[doc(alias = "IOUSBHostIsochronousTransactionOptionsNone")]
113 const None = 0;
114 #[doc(alias = "IOUSBHostIsochronousTransactionOptionsWrap")]
115 const Wrap = 1<<0;
116 }
117}
118
119unsafe impl Encode for IOUSBHostIsochronousTransactionOptions {
120 const ENCODING: Encoding = u32::ENCODING;
121}
122
123unsafe impl RefEncode for IOUSBHostIsochronousTransactionOptions {
124 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
125}
126
127/// Structure representing a single frame or microframe in an isochronous transfer.
128/// Field: status Completion status for this individual transaction. IOUSBHostFamily will
129/// initialize this to kIOReturnInvalid and will update the field with a valid status
130/// code upon completion of the transaction.
131/// Field: requestCount The number of bytes requested to transfer for this transaction.
132/// This field must be initialized by the caller before the structure is submitted.
133/// Field: offset The number of bytes between the start of the memory descriptor in which this
134/// transaction resides and the start of the transaction. The offset cannot exceed 4GB.
135/// Field: completeCount The number of bytes actually transferred for this transaction.
136/// IOUSBHostFamily will update this field upon completion of the transaction.
137/// Field: timeStamp The observed IOUSBHostTime for this transaction's completion. Note that
138/// interrupt latency and system load may result in more than one transaction completing
139/// with the same timestamp.
140/// Field: options Flags that specify additional transaction behavior. See
141///
142/// ```text
143/// IOUSBHostIsochronousTransactionOptions
144/// ```
145///
146/// for more details.
147///
148/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronoustransaction?language=objc)
149#[repr(C, packed)]
150#[derive(Clone, Copy, Debug, PartialEq)]
151pub struct IOUSBHostIsochronousTransaction {
152 pub status: IOReturn,
153 pub requestCount: u32,
154 pub offset: u32,
155 pub completeCount: u32,
156 pub timeStamp: IOUSBHostTime,
157 pub options: IOUSBHostIsochronousTransactionOptions,
158}
159
160unsafe impl Encode for IOUSBHostIsochronousTransaction {
161 const ENCODING: Encoding = Encoding::Struct(
162 "IOUSBHostIsochronousTransaction",
163 &[
164 <IOReturn>::ENCODING,
165 <u32>::ENCODING,
166 <u32>::ENCODING,
167 <u32>::ENCODING,
168 <IOUSBHostTime>::ENCODING,
169 <IOUSBHostIsochronousTransactionOptions>::ENCODING,
170 ],
171 );
172}
173
174unsafe impl RefEncode for IOUSBHostIsochronousTransaction {
175 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
176}
177
178/// Isochronous IO completion handler.
179///
180/// Parameter `status`: IOReturn result code for isochronous transfer.
181///
182/// Parameter `frameList`: Frame list for isochronous transfer.
183///
184/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronouscompletionhandler?language=objc)
185#[cfg(feature = "block2")]
186pub type IOUSBHostIsochronousCompletionHandler =
187 *mut block2::DynBlock<dyn Fn(IOReturn, NonNull<IOUSBHostIsochronousFrame>)>;
188
189/// Isochronous IO completion handler.
190///
191/// Parameter `status`: IOReturn result code for isochronous transfer.
192///
193/// Parameter `transactionList`: Transaction list for isochronous transfer.
194///
195/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostisochronoustransactioncompletionhandler?language=objc)
196#[cfg(feature = "block2")]
197pub type IOUSBHostIsochronousTransactionCompletionHandler =
198 *mut block2::DynBlock<dyn Fn(IOReturn, NonNull<IOUSBHostIsochronousTransaction>)>;
199
200extern "C" {
201 /// NSErrorDomain for IOUSBHostFamily. Error codes are IOKit IOReturn codes.
202 ///
203 /// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhosterrordomain?language=objc)
204 pub static IOUSBHostErrorDomain: &'static NSErrorDomain;
205}
206
207/// Options for
208/// <code>
209/// abort
210/// </code>
211///
212/// waiting for the aborted IO to complete
213///
214/// IO has completed
215///
216/// To be used with
217///
218/// ```text
219/// abortDeviceRequestsWithOption:error:
220/// ```
221///
222///
223/// ```text
224/// abortWithOption:error:
225/// ```
226///
227/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostabortoption?language=objc)
228// NS_ENUM
229#[repr(transparent)]
230#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
231pub struct IOUSBHostAbortOption(pub NSUInteger);
232impl IOUSBHostAbortOption {
233 #[doc(alias = "IOUSBHostAbortOptionAsynchronous")]
234 pub const Asynchronous: Self = Self(0);
235 #[doc(alias = "IOUSBHostAbortOptionSynchronous")]
236 pub const Synchronous: Self = Self(1);
237}
238
239unsafe impl Encode for IOUSBHostAbortOption {
240 const ENCODING: Encoding = NSUInteger::ENCODING;
241}
242
243unsafe impl RefEncode for IOUSBHostAbortOption {
244 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
245}
246
247/// Options for
248/// <code>
249/// initWithIOService:options:queue:error:interestHandler
250/// </code>
251///
252/// and the IOUSBHostDevice IOService object needs to have successfully been authorized by IOServiceAuthorize().
253/// If the caller has root privelages the entitlement and authorization is not needed. Using this option
254/// will terminate all clients and drivers of the IOUSBHostDevice and associated IOUSBHostInterface clients
255/// besides the caller.
256/// Upon
257/// <code>
258/// destroy
259/// </code>
260/// of the IOUSBHostDevice, the device will be reset and drivers will be re-registered
261/// for matching. This option is only valid for macOS
262///
263/// service to close via
264/// <code>
265/// kUSBHostMessageDeviceIsRequestingClose
266/// </code>
267/// message. The message will include
268/// the registry entry ID of the requesting service.
269///
270/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostobjectinitoptions?language=objc)
271// NS_OPTIONS
272#[repr(transparent)]
273#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
274pub struct IOUSBHostObjectInitOptions(pub NSUInteger);
275bitflags::bitflags! {
276 impl IOUSBHostObjectInitOptions: NSUInteger {
277 #[doc(alias = "IOUSBHostObjectInitOptionsNone")]
278 const None = 0;
279 #[doc(alias = "IOUSBHostObjectInitOptionsDeviceCapture")]
280 const DeviceCapture = 1<<0;
281 #[doc(alias = "IOUSBHostObjectInitOptionsDeviceSeize")]
282 const DeviceSeize = 1<<1;
283 }
284}
285
286unsafe impl Encode for IOUSBHostObjectInitOptions {
287 const ENCODING: Encoding = NSUInteger::ENCODING;
288}
289
290unsafe impl RefEncode for IOUSBHostObjectInitOptions {
291 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
292}
293
294/// Options for
295/// <code>
296/// destroyWithOptions
297/// </code>
298///
299/// the device will not be reset and drivers will not be re-registered for matching. This allows for IOUSBHostDevice
300/// objects that were initialized with
301/// <code>
302/// IOUSBHostObjectInitOptionsDeviceCapture
303/// </code>
304/// to honor the
305/// <code>
306/// kUSBHostMessageDeviceIsRequestingClose
307/// </code>
308/// message.
309///
310/// This option is only valid for macOS
311///
312/// See also [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostobjectdestroyoptions?language=objc)
313// NS_OPTIONS
314#[repr(transparent)]
315#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
316pub struct IOUSBHostObjectDestroyOptions(pub NSUInteger);
317bitflags::bitflags! {
318 impl IOUSBHostObjectDestroyOptions: NSUInteger {
319 #[doc(alias = "IOUSBHostObjectDestroyOptionsNone")]
320 const None = 0;
321 #[doc(alias = "IOUSBHostObjectDestroyOptionsDeviceSurrender")]
322 const DeviceSurrender = 1<<0;
323 }
324}
325
326unsafe impl Encode for IOUSBHostObjectDestroyOptions {
327 const ENCODING: Encoding = NSUInteger::ENCODING;
328}
329
330unsafe impl RefEncode for IOUSBHostObjectDestroyOptions {
331 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
332}
333
334// TODO: pub fn IOUSBHostDeviceRequestType(direction: tIOUSBDeviceRequestDirectionValue,r#type: tIOUSBDeviceRequestTypeValue,recipient: tIOUSBDeviceRequestRecipientValue,) -> u8;
335
336/// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykey?language=objc)
337// NS_TYPED_ENUM
338pub type IOUSBHostMatchingPropertyKey = NSString;
339
340extern "C" {
341 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyvendorid?language=objc)
342 pub static IOUSBHostMatchingPropertyKeyVendorID: &'static IOUSBHostMatchingPropertyKey;
343}
344
345extern "C" {
346 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyproductid?language=objc)
347 pub static IOUSBHostMatchingPropertyKeyProductID: &'static IOUSBHostMatchingPropertyKey;
348}
349
350extern "C" {
351 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyproductidarray?language=objc)
352 pub static IOUSBHostMatchingPropertyKeyProductIDArray: &'static IOUSBHostMatchingPropertyKey;
353}
354
355extern "C" {
356 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyinterfacenumber?language=objc)
357 pub static IOUSBHostMatchingPropertyKeyInterfaceNumber: &'static IOUSBHostMatchingPropertyKey;
358}
359
360extern "C" {
361 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyconfigurationvalue?language=objc)
362 pub static IOUSBHostMatchingPropertyKeyConfigurationValue:
363 &'static IOUSBHostMatchingPropertyKey;
364}
365
366extern "C" {
367 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeydevicereleasenumber?language=objc)
368 pub static IOUSBHostMatchingPropertyKeyDeviceReleaseNumber:
369 &'static IOUSBHostMatchingPropertyKey;
370}
371
372extern "C" {
373 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyinterfaceclass?language=objc)
374 pub static IOUSBHostMatchingPropertyKeyInterfaceClass: &'static IOUSBHostMatchingPropertyKey;
375}
376
377extern "C" {
378 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyinterfacesubclass?language=objc)
379 pub static IOUSBHostMatchingPropertyKeyInterfaceSubClass: &'static IOUSBHostMatchingPropertyKey;
380}
381
382extern "C" {
383 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyinterfaceprotocol?language=objc)
384 pub static IOUSBHostMatchingPropertyKeyInterfaceProtocol: &'static IOUSBHostMatchingPropertyKey;
385}
386
387extern "C" {
388 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeydeviceclass?language=objc)
389 pub static IOUSBHostMatchingPropertyKeyDeviceClass: &'static IOUSBHostMatchingPropertyKey;
390}
391
392extern "C" {
393 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeydevicesubclass?language=objc)
394 pub static IOUSBHostMatchingPropertyKeyDeviceSubClass: &'static IOUSBHostMatchingPropertyKey;
395}
396
397extern "C" {
398 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeydeviceprotocol?language=objc)
399 pub static IOUSBHostMatchingPropertyKeyDeviceProtocol: &'static IOUSBHostMatchingPropertyKey;
400}
401
402extern "C" {
403 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostmatchingpropertykeyspeed?language=objc)
404 pub static IOUSBHostMatchingPropertyKeySpeed: &'static IOUSBHostMatchingPropertyKey;
405}
406
407/// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostpropertykey?language=objc)
408pub type IOUSBHostPropertyKey = NSString;
409
410extern "C" {
411 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostpropertykeylocationid?language=objc)
412 pub static IOUSBHostPropertyKeyLocationID: &'static IOUSBHostPropertyKey;
413}
414
415/// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdevicepropertykey?language=objc)
416// NS_TYPED_ENUM
417pub type IOUSBHostDevicePropertyKey = NSString;
418
419extern "C" {
420 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdevicepropertykeyvendorstring?language=objc)
421 pub static IOUSBHostDevicePropertyKeyVendorString: &'static IOUSBHostDevicePropertyKey;
422}
423
424extern "C" {
425 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdevicepropertykeyserialnumberstring?language=objc)
426 pub static IOUSBHostDevicePropertyKeySerialNumberString: &'static IOUSBHostDevicePropertyKey;
427}
428
429extern "C" {
430 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdevicepropertykeycontainerid?language=objc)
431 pub static IOUSBHostDevicePropertyKeyContainerID: &'static IOUSBHostDevicePropertyKey;
432}
433
434extern "C" {
435 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdevicepropertykeycurrentconfiguration?language=objc)
436 pub static IOUSBHostDevicePropertyKeyCurrentConfiguration: &'static IOUSBHostDevicePropertyKey;
437}
438
439/// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostinterfacepropertykey?language=objc)
440// NS_TYPED_ENUM
441pub type IOUSBHostInterfacePropertyKey = NSString;
442
443extern "C" {
444 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostinterfacepropertykeyalternatesetting?language=objc)
445 pub static IOUSBHostInterfacePropertyKeyAlternateSetting:
446 &'static IOUSBHostInterfacePropertyKey;
447}
448
449extern "C" {
450 /// [Apple's documentation](https://developer.apple.com/documentation/iousbhost/iousbhostdefaultcontrolcompletiontimeout?language=objc)
451 pub static IOUSBHostDefaultControlCompletionTimeout: NSTimeInterval;
452}