-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Darwin methods to use attribute cache (#15877)
* Define new object CHIPAttributeCacheContainer to represent cache per node * Add new method to Darwin cluster library template to read attribute from cache object * Add a method in the cache object to read attribute with generic path * Add XPC protocol to support new method * Fix CHIPDevice subscription handling errors and automatic resubscription by replacing callback bridge with implementation which can handle errors and by retaining attribute path object. * Implement deregistering CHIPDevice subscriptions in order to support testing with clean states.
- Loading branch information
1 parent
d4f3c28
commit b8d1743
Showing
19 changed files
with
24,463 additions
and
112 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/** | ||
* | ||
* Copyright (c) 2022 Project CHIP Authors | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
#import <CHIP/CHIPDeviceController.h> | ||
|
||
NS_ASSUME_NONNULL_BEGIN | ||
|
||
@interface CHIPAttributeCacheContainer : NSObject | ||
|
||
/** | ||
* Subscribes to all attributes to update attribute cache. | ||
* | ||
* @param deviceController device controller to retrieve connected device from | ||
* @param deviceId device identifier of the device to cache attributes of | ||
* @param clientQueue client queue to dispatch the completion handler through | ||
* @param completion completion handler | ||
*/ | ||
- (void)subscribeWithDeviceController:(CHIPDeviceController *)deviceController | ||
deviceId:(uint64_t)deviceId | ||
clientQueue:(dispatch_queue_t)clientQueue | ||
completion:(void (^)(NSError * _Nullable error))completion; | ||
|
||
/** | ||
* Reads an attribute with specific attribute path | ||
* | ||
* @param endpointId endpoint ID of the attribute | ||
* @param clusterId cluster ID of the attribute | ||
* @param attributeId attribute ID of the attribute | ||
* @param clientQueue client queue to dispatch the completion handler through | ||
* @param completion block to receive the result. | ||
* "values" received by the block will have the same format of object as the one received by completion block | ||
* of CHIPDevice readAttributeWithEndpointId:clusterId:attributeId:clientQueue:completion method. | ||
*/ | ||
- (void)readAttributeWithEndpointId:(NSUInteger)endpointId | ||
clusterId:(NSUInteger)clusterId | ||
attributeId:(NSUInteger)attributeId | ||
clientQueue:(dispatch_queue_t)clientQueue | ||
completion:(void (^)(NSArray<NSDictionary<NSString *, id> *> * _Nullable values, | ||
NSError * _Nullable error))completion; | ||
|
||
@end | ||
|
||
NS_ASSUME_NONNULL_END |
Oops, something went wrong.