/** * Copyright (c) 2024 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 #import #import #include NS_ASSUME_NONNULL_BEGIN @interface MTRServerAttribute () /** * Mark this attribute as associated with a particular controller. The * controller can be nil to indicate that the endpoint is not associated with a * specific controller but rather with the controller factory. */ - (BOOL)associateWithController:(nullable MTRDeviceController *)controller; /** * Mark this attribute as part of an endpoint that is no longer being used. */ - (void)invalidate; /** * Add the attribute to a cluster with the given cluster path. Will return NO * if the attribute is already added to a cluster. */ - (BOOL)addToCluster:(const chip::app::ConcreteClusterPath &)cluster; /** * Update the parent cluster path of the attribute. Should only be done for * attributes that are already added to a cluster, when the endpoint id needs to * be updated. */ - (void)updateParentCluster:(const chip::app::ConcreteClusterPath &)cluster; /** * serializedValue is either an NSData or an NSArray, depending on * whether the attribute is list-typed. */ @property (nonatomic, strong, readonly) id serializedValue; /** * parentCluster will have kInvalidClusterId for the cluster ID until the * attribute is added to a cluster. */ @property (nonatomic, assign, readonly) const chip::app::ConcreteClusterPath & parentCluster; @end NS_ASSUME_NONNULL_END