1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
/// This class can be used to control the stream from a camera.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmcamerastreamcontrol?language=objc)
#[unsafe(super(HMCameraControl, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "HMCameraControl")]
pub struct HMCameraStreamControl;
);
#[cfg(feature = "HMCameraControl")]
unsafe impl Send for HMCameraStreamControl {}
#[cfg(feature = "HMCameraControl")]
unsafe impl Sync for HMCameraStreamControl {}
#[cfg(feature = "HMCameraControl")]
extern_conformance!(
unsafe impl NSObjectProtocol for HMCameraStreamControl {}
);
#[cfg(feature = "HMCameraControl")]
impl HMCameraStreamControl {
extern_methods!(
/// Delegate that receives updates on the camera stream changes.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(delegate))]
#[unsafe(method_family = none)]
pub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn HMCameraStreamControlDelegate>>>;
/// Setter for [`delegate`][Self::delegate].
///
/// This is a [weak property][objc2::topics::weak_property].
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(setDelegate:))]
#[unsafe(method_family = none)]
pub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn HMCameraStreamControlDelegate>>,
);
#[cfg(feature = "HMCameraDefines")]
/// Represents the current streaming state.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(streamState))]
#[unsafe(method_family = none)]
pub unsafe fn streamState(&self) -> HMCameraStreamState;
#[cfg(all(feature = "HMCameraSource", feature = "HMCameraStream"))]
/// Represents the current camera stream.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(cameraStream))]
#[unsafe(method_family = none)]
pub unsafe fn cameraStream(&self) -> Option<Retained<HMCameraStream>>;
/// Starts the camera stream. 'currentCameraStream' will be updated upon
/// successfully starting the stream.
#[unsafe(method(startStream))]
#[unsafe(method_family = none)]
pub unsafe fn startStream(&self);
/// Stops the camera stream.
#[unsafe(method(stopStream))]
#[unsafe(method_family = none)]
pub unsafe fn stopStream(&self);
#[deprecated = "HMCameraStreamControl objects are created by their parent container objects. Directly creating them is not supported."]
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
);
}
/// Methods declared on superclass `NSObject`.
#[cfg(feature = "HMCameraControl")]
impl HMCameraStreamControl {
extern_methods!(
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern_protocol!(
/// This delegate receives updates on the camera stream.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmcamerastreamcontroldelegate?language=objc)
pub unsafe trait HMCameraStreamControlDelegate: NSObjectProtocol {
#[cfg(feature = "HMCameraControl")]
/// Informs the delegate that the stream has started.
///
///
/// Parameter `cameraStreamControl`: Sender of this message.
#[optional]
#[unsafe(method(cameraStreamControlDidStartStream:))]
#[unsafe(method_family = none)]
unsafe fn cameraStreamControlDidStartStream(
&self,
camera_stream_control: &HMCameraStreamControl,
);
#[cfg(feature = "HMCameraControl")]
/// Informs the delegate that the stream has stopped.
///
///
/// Parameter `cameraStreamControl`: Sender of this message.
///
///
/// Parameter `error`: When stream stops because of an error, 'error' will be populated.
#[optional]
#[unsafe(method(cameraStreamControl:didStopStreamWithError:))]
#[unsafe(method_family = none)]
unsafe fn cameraStreamControl_didStopStreamWithError(
&self,
camera_stream_control: &HMCameraStreamControl,
error: Option<&NSError>,
);
}
);