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}