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
149
150
151
152
153
154
//! 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 is used to discover new accessories in the home
/// that have never been paired with and therefore not part of the home.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmaccessorybrowser?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct HMAccessoryBrowser;
);
unsafe impl Send for HMAccessoryBrowser {}
unsafe impl Sync for HMAccessoryBrowser {}
extern_conformance!(
unsafe impl NSObjectProtocol for HMAccessoryBrowser {}
);
impl HMAccessoryBrowser {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
/// Delegate that receives updates on the state of the accessories discovered.
///
/// 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 HMAccessoryBrowserDelegate>>>;
/// 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 HMAccessoryBrowserDelegate>>,
);
#[cfg(feature = "HMAccessory")]
/// This is the array of HMAccessory objects that represents new
/// accessories that were discovered as part of a search session.
/// This array is not updated when a search session is not in progress.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(discoveredAccessories))]
#[unsafe(method_family = none)]
pub unsafe fn discoveredAccessories(&self) -> Retained<NSArray<HMAccessory>>;
/// Starts searching for accessories that are not associated to any home.
///
///
/// If any accessories are discovered, updates are sent to the delegate.
/// This will scan for the following types of accessories:
/// Accessories supporting HomeKit Wireless Accessory Configuration profile
/// Accessories supporting HomeKit Accessory Protocol and are already on
/// the same infrastructure IP network
/// Accessories supporting HomeKit Accessory Protocol on Bluetooth LE transport
/// The array of discovered accessories will be updated when this method
/// is called, so applications should clear and reload any stored copies
/// of that array or previous new accessory objects.
#[unsafe(method(startSearchingForNewAccessories))]
#[unsafe(method_family = none)]
pub unsafe fn startSearchingForNewAccessories(&self);
/// Stops searching for new accessories.
///
///
/// After this method is called, updates will not be sent to the delegate
/// if new accessories are found or removed. Scanning may continue for system
/// reasons or if other delegates are still in active searching sessions.
/// The contents of the array of discovered accessories will not be updated until
/// startSearchingForNewAccessories is called.
#[unsafe(method(stopSearchingForNewAccessories))]
#[unsafe(method_family = none)]
pub unsafe fn stopSearchingForNewAccessories(&self);
);
}
/// Methods declared on superclass `NSObject`.
impl HMAccessoryBrowser {
extern_methods!(
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern_protocol!(
/// This delegate receives updates about new accessories in the home.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmaccessorybrowserdelegate?language=objc)
pub unsafe trait HMAccessoryBrowserDelegate: NSObjectProtocol {
#[cfg(feature = "HMAccessory")]
/// Informs the delegate about new accessories discovered in the home.
///
///
/// Parameter `browser`: Sender of the message.
///
///
/// Parameter `accessory`: New accessory that was discovered.
#[optional]
#[unsafe(method(accessoryBrowser:didFindNewAccessory:))]
#[unsafe(method_family = none)]
unsafe fn accessoryBrowser_didFindNewAccessory(
&self,
browser: &HMAccessoryBrowser,
accessory: &HMAccessory,
);
#[cfg(feature = "HMAccessory")]
/// Informs the delegate about new accessories removed from the home.
///
///
/// Parameter `browser`: Sender of the message.
///
///
/// Parameter `accessory`: Accessory that was previously discovered but are no longer reachable.
/// This method is also invoked when an accessory is added to a home.
#[optional]
#[unsafe(method(accessoryBrowser:didRemoveNewAccessory:))]
#[unsafe(method_family = none)]
unsafe fn accessoryBrowser_didRemoveNewAccessory(
&self,
browser: &HMAccessoryBrowser,
accessory: &HMAccessory,
);
}
);