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
//! 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!(
/// Used to describe a collection of HMService objects
///
///
/// This class is used to group a collection of HMService objects.
/// This allows for association of a set of accessory services into a group.
/// Eg. A collection of lights can be grouped as the "Desk Lamps" service group.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmservicegroup?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct HMServiceGroup;
);
unsafe impl Send for HMServiceGroup {}
unsafe impl Sync for HMServiceGroup {}
extern_conformance!(
unsafe impl NSObjectProtocol for HMServiceGroup {}
);
impl HMServiceGroup {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
/// Name of the service group.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(name))]
#[unsafe(method_family = none)]
pub unsafe fn name(&self) -> Retained<NSString>;
#[cfg(feature = "HMService")]
/// Array of HMService objects that correspond to the services contained in this group.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(services))]
#[unsafe(method_family = none)]
pub unsafe fn services(&self) -> Retained<NSArray<HMService>>;
/// A unique identifier for the service group.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(uniqueIdentifier))]
#[unsafe(method_family = none)]
pub unsafe fn uniqueIdentifier(&self) -> Retained<NSUUID>;
#[cfg(feature = "block2")]
/// This method is used to change the name of the service group.
///
///
/// Parameter `name`: New name for the service group.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(updateName:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn updateName_completionHandler(
&self,
name: &NSString,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
#[cfg(all(feature = "HMService", feature = "block2"))]
/// Adds an service to this service group. The service and the group must be part of the same
/// home. A service can be added to multiple service groups, e.g., a light can be added
/// to "Desk Lamps" as well as "Dimmable Lamps" service groups.
///
///
/// Parameter `service`: Service to add to this group.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(addService:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn addService_completionHandler(
&self,
service: &HMService,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
#[cfg(all(feature = "HMService", feature = "block2"))]
/// Removes an service from this service group.
///
///
/// Parameter `service`: Service to remove from this group.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(removeService:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn removeService_completionHandler(
&self,
service: &HMService,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
);
}
/// Methods declared on superclass `NSObject`.
impl HMServiceGroup {
extern_methods!(
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}