objc2_core_motion/generated/
CMMotionManager.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/coremotion/cmaccelerometerhandler?language=objc)
11#[cfg(all(feature = "CMAccelerometer", feature = "CMLogItem", feature = "block2"))]
12pub type CMAccelerometerHandler =
13    *mut block2::DynBlock<dyn Fn(*mut CMAccelerometerData, *mut NSError)>;
14
15/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmgyrohandler?language=objc)
16#[cfg(all(feature = "CMGyro", feature = "CMLogItem", feature = "block2"))]
17pub type CMGyroHandler = *mut block2::DynBlock<dyn Fn(*mut CMGyroData, *mut NSError)>;
18
19/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmdevicemotionhandler?language=objc)
20#[cfg(all(feature = "CMDeviceMotion", feature = "CMLogItem", feature = "block2"))]
21pub type CMDeviceMotionHandler = *mut block2::DynBlock<dyn Fn(*mut CMDeviceMotion, *mut NSError)>;
22
23/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmmagnetometerhandler?language=objc)
24#[cfg(all(feature = "CMLogItem", feature = "CMMagnetometer", feature = "block2"))]
25pub type CMMagnetometerHandler =
26    *mut block2::DynBlock<dyn Fn(*mut CMMagnetometerData, *mut NSError)>;
27
28extern_class!(
29    /// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmmotionmanager?language=objc)
30    #[unsafe(super(NSObject))]
31    #[derive(Debug, PartialEq, Eq, Hash)]
32    pub struct CMMotionManager;
33);
34
35extern_conformance!(
36    unsafe impl NSObjectProtocol for CMMotionManager {}
37);
38
39impl CMMotionManager {
40    extern_methods!(
41        #[unsafe(method(accelerometerUpdateInterval))]
42        #[unsafe(method_family = none)]
43        pub unsafe fn accelerometerUpdateInterval(&self) -> NSTimeInterval;
44
45        /// Setter for [`accelerometerUpdateInterval`][Self::accelerometerUpdateInterval].
46        #[unsafe(method(setAccelerometerUpdateInterval:))]
47        #[unsafe(method_family = none)]
48        pub unsafe fn setAccelerometerUpdateInterval(
49            &self,
50            accelerometer_update_interval: NSTimeInterval,
51        );
52
53        #[unsafe(method(isAccelerometerAvailable))]
54        #[unsafe(method_family = none)]
55        pub unsafe fn isAccelerometerAvailable(&self) -> bool;
56
57        #[unsafe(method(isAccelerometerActive))]
58        #[unsafe(method_family = none)]
59        pub unsafe fn isAccelerometerActive(&self) -> bool;
60
61        #[cfg(all(feature = "CMAccelerometer", feature = "CMLogItem"))]
62        #[unsafe(method(accelerometerData))]
63        #[unsafe(method_family = none)]
64        pub unsafe fn accelerometerData(&self) -> Option<Retained<CMAccelerometerData>>;
65
66        #[unsafe(method(startAccelerometerUpdates))]
67        #[unsafe(method_family = none)]
68        pub unsafe fn startAccelerometerUpdates(&self);
69
70        #[cfg(all(feature = "CMAccelerometer", feature = "CMLogItem", feature = "block2"))]
71        /// # Safety
72        ///
73        /// - `queue` possibly has additional threading requirements.
74        /// - `handler` must be a valid pointer.
75        #[unsafe(method(startAccelerometerUpdatesToQueue:withHandler:))]
76        #[unsafe(method_family = none)]
77        pub unsafe fn startAccelerometerUpdatesToQueue_withHandler(
78            &self,
79            queue: &NSOperationQueue,
80            handler: CMAccelerometerHandler,
81        );
82
83        #[unsafe(method(stopAccelerometerUpdates))]
84        #[unsafe(method_family = none)]
85        pub unsafe fn stopAccelerometerUpdates(&self);
86
87        #[unsafe(method(gyroUpdateInterval))]
88        #[unsafe(method_family = none)]
89        pub unsafe fn gyroUpdateInterval(&self) -> NSTimeInterval;
90
91        /// Setter for [`gyroUpdateInterval`][Self::gyroUpdateInterval].
92        #[unsafe(method(setGyroUpdateInterval:))]
93        #[unsafe(method_family = none)]
94        pub unsafe fn setGyroUpdateInterval(&self, gyro_update_interval: NSTimeInterval);
95
96        #[unsafe(method(isGyroAvailable))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn isGyroAvailable(&self) -> bool;
99
100        #[unsafe(method(isGyroActive))]
101        #[unsafe(method_family = none)]
102        pub unsafe fn isGyroActive(&self) -> bool;
103
104        #[cfg(all(feature = "CMGyro", feature = "CMLogItem"))]
105        #[unsafe(method(gyroData))]
106        #[unsafe(method_family = none)]
107        pub unsafe fn gyroData(&self) -> Option<Retained<CMGyroData>>;
108
109        #[unsafe(method(startGyroUpdates))]
110        #[unsafe(method_family = none)]
111        pub unsafe fn startGyroUpdates(&self);
112
113        #[cfg(all(feature = "CMGyro", feature = "CMLogItem", feature = "block2"))]
114        /// # Safety
115        ///
116        /// - `queue` possibly has additional threading requirements.
117        /// - `handler` must be a valid pointer.
118        #[unsafe(method(startGyroUpdatesToQueue:withHandler:))]
119        #[unsafe(method_family = none)]
120        pub unsafe fn startGyroUpdatesToQueue_withHandler(
121            &self,
122            queue: &NSOperationQueue,
123            handler: CMGyroHandler,
124        );
125
126        #[unsafe(method(stopGyroUpdates))]
127        #[unsafe(method_family = none)]
128        pub unsafe fn stopGyroUpdates(&self);
129
130        #[unsafe(method(magnetometerUpdateInterval))]
131        #[unsafe(method_family = none)]
132        pub unsafe fn magnetometerUpdateInterval(&self) -> NSTimeInterval;
133
134        /// Setter for [`magnetometerUpdateInterval`][Self::magnetometerUpdateInterval].
135        #[unsafe(method(setMagnetometerUpdateInterval:))]
136        #[unsafe(method_family = none)]
137        pub unsafe fn setMagnetometerUpdateInterval(
138            &self,
139            magnetometer_update_interval: NSTimeInterval,
140        );
141
142        #[unsafe(method(isMagnetometerAvailable))]
143        #[unsafe(method_family = none)]
144        pub unsafe fn isMagnetometerAvailable(&self) -> bool;
145
146        #[unsafe(method(isMagnetometerActive))]
147        #[unsafe(method_family = none)]
148        pub unsafe fn isMagnetometerActive(&self) -> bool;
149
150        #[cfg(all(feature = "CMLogItem", feature = "CMMagnetometer"))]
151        #[unsafe(method(magnetometerData))]
152        #[unsafe(method_family = none)]
153        pub unsafe fn magnetometerData(&self) -> Option<Retained<CMMagnetometerData>>;
154
155        #[unsafe(method(startMagnetometerUpdates))]
156        #[unsafe(method_family = none)]
157        pub unsafe fn startMagnetometerUpdates(&self);
158
159        #[cfg(all(feature = "CMLogItem", feature = "CMMagnetometer", feature = "block2"))]
160        /// # Safety
161        ///
162        /// - `queue` possibly has additional threading requirements.
163        /// - `handler` must be a valid pointer.
164        #[unsafe(method(startMagnetometerUpdatesToQueue:withHandler:))]
165        #[unsafe(method_family = none)]
166        pub unsafe fn startMagnetometerUpdatesToQueue_withHandler(
167            &self,
168            queue: &NSOperationQueue,
169            handler: CMMagnetometerHandler,
170        );
171
172        #[unsafe(method(stopMagnetometerUpdates))]
173        #[unsafe(method_family = none)]
174        pub unsafe fn stopMagnetometerUpdates(&self);
175
176        #[unsafe(method(deviceMotionUpdateInterval))]
177        #[unsafe(method_family = none)]
178        pub unsafe fn deviceMotionUpdateInterval(&self) -> NSTimeInterval;
179
180        /// Setter for [`deviceMotionUpdateInterval`][Self::deviceMotionUpdateInterval].
181        #[unsafe(method(setDeviceMotionUpdateInterval:))]
182        #[unsafe(method_family = none)]
183        pub unsafe fn setDeviceMotionUpdateInterval(
184            &self,
185            device_motion_update_interval: NSTimeInterval,
186        );
187
188        #[cfg(feature = "CMAttitude")]
189        #[unsafe(method(availableAttitudeReferenceFrames))]
190        #[unsafe(method_family = none)]
191        pub unsafe fn availableAttitudeReferenceFrames() -> CMAttitudeReferenceFrame;
192
193        #[cfg(feature = "CMAttitude")]
194        #[unsafe(method(attitudeReferenceFrame))]
195        #[unsafe(method_family = none)]
196        pub unsafe fn attitudeReferenceFrame(&self) -> CMAttitudeReferenceFrame;
197
198        #[unsafe(method(isDeviceMotionAvailable))]
199        #[unsafe(method_family = none)]
200        pub unsafe fn isDeviceMotionAvailable(&self) -> bool;
201
202        #[unsafe(method(isDeviceMotionActive))]
203        #[unsafe(method_family = none)]
204        pub unsafe fn isDeviceMotionActive(&self) -> bool;
205
206        #[cfg(all(feature = "CMDeviceMotion", feature = "CMLogItem"))]
207        #[unsafe(method(deviceMotion))]
208        #[unsafe(method_family = none)]
209        pub unsafe fn deviceMotion(&self) -> Option<Retained<CMDeviceMotion>>;
210
211        #[unsafe(method(startDeviceMotionUpdates))]
212        #[unsafe(method_family = none)]
213        pub unsafe fn startDeviceMotionUpdates(&self);
214
215        #[cfg(all(feature = "CMDeviceMotion", feature = "CMLogItem", feature = "block2"))]
216        /// # Safety
217        ///
218        /// - `queue` possibly has additional threading requirements.
219        /// - `handler` must be a valid pointer.
220        #[unsafe(method(startDeviceMotionUpdatesToQueue:withHandler:))]
221        #[unsafe(method_family = none)]
222        pub unsafe fn startDeviceMotionUpdatesToQueue_withHandler(
223            &self,
224            queue: &NSOperationQueue,
225            handler: CMDeviceMotionHandler,
226        );
227
228        #[cfg(feature = "CMAttitude")]
229        #[unsafe(method(startDeviceMotionUpdatesUsingReferenceFrame:))]
230        #[unsafe(method_family = none)]
231        pub unsafe fn startDeviceMotionUpdatesUsingReferenceFrame(
232            &self,
233            reference_frame: CMAttitudeReferenceFrame,
234        );
235
236        #[cfg(all(
237            feature = "CMAttitude",
238            feature = "CMDeviceMotion",
239            feature = "CMLogItem",
240            feature = "block2"
241        ))]
242        /// # Safety
243        ///
244        /// - `queue` possibly has additional threading requirements.
245        /// - `handler` must be a valid pointer.
246        #[unsafe(method(startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:))]
247        #[unsafe(method_family = none)]
248        pub unsafe fn startDeviceMotionUpdatesUsingReferenceFrame_toQueue_withHandler(
249            &self,
250            reference_frame: CMAttitudeReferenceFrame,
251            queue: &NSOperationQueue,
252            handler: CMDeviceMotionHandler,
253        );
254
255        #[unsafe(method(stopDeviceMotionUpdates))]
256        #[unsafe(method_family = none)]
257        pub unsafe fn stopDeviceMotionUpdates(&self);
258
259        #[unsafe(method(showsDeviceMovementDisplay))]
260        #[unsafe(method_family = none)]
261        pub unsafe fn showsDeviceMovementDisplay(&self) -> bool;
262
263        /// Setter for [`showsDeviceMovementDisplay`][Self::showsDeviceMovementDisplay].
264        #[unsafe(method(setShowsDeviceMovementDisplay:))]
265        #[unsafe(method_family = none)]
266        pub unsafe fn setShowsDeviceMovementDisplay(&self, shows_device_movement_display: bool);
267    );
268}
269
270/// Methods declared on superclass `NSObject`.
271impl CMMotionManager {
272    extern_methods!(
273        #[unsafe(method(init))]
274        #[unsafe(method_family = init)]
275        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
276
277        #[unsafe(method(new))]
278        #[unsafe(method_family = new)]
279        pub unsafe fn new() -> Retained<Self>;
280    );
281}