blob: d56d2ffd511ebb94ce5d3b6b196488c0eb7bfa6e [file] [log] [blame]
{{> header excludeZapComment=true}}
#import <Foundation/Foundation.h>
#import <Matter/MTRStructsObjc.h>
NS_ASSUME_NONNULL_BEGIN
{{#zcl_clusters}}
{{#zcl_commands}}
{{availability (asUpperCamelCase parent.name preserveAcronyms=true) command=(asUpperCamelCase name preserveAcronyms=true) isForCommandPayload=true}}
@interface MTR{{asUpperCamelCase parent.name preserveAcronyms=true}}Cluster{{asUpperCamelCase name preserveAcronyms=true}}Params : NSObject <NSCopying>
{{#zcl_command_arguments}}
{{! Override the getter name because some of our properties start with things
like "new" or "init" }}
@property (nonatomic, copy{{#unless (isStrEqual (asGetterName label) (asStructPropertyName label))}}, getter={{asGetterName label}}{{/unless}}) {{asObjectiveCType type parent.parent.name}} {{asStructPropertyName label}} {{availability (asUpperCamelCase ../../name preserveAcronyms=true) command=(asUpperCamelCase ../name preserveAcronyms=true) commandField=(asStructPropertyName label)}};
{{/zcl_command_arguments}}
{{#if (isStrEqual source "client")}}
/**
* Controls whether the command is a timed command (using Timed Invoke).
*
* If nil (the default value), a regular invoke is done for commands that do
* not require a timed invoke and a timed invoke with some default timed request
* timeout is done for commands that require a timed invoke.
*
* If not nil, a timed invoke is done, with the provided value used as the timed
* request timeout. The value should be chosen small enough to provide the
* desired security properties but large enough that it will allow a round-trip
* from the sever to the client (for the status response and actual invoke
* request) within the timeout window.
*
*/
@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
{{! This is using the pre-renaming names for the isAvailableBefore test, because the pre-rename things inherit
from the post-rename ones and need to have this selector.}}
{{else if (wasIntroducedBeforeRelease "First major API revamp" (compatClusterNameRemapping parent.name) command=(asUpperCamelCase name))}}
/**
* Controls whether the command is a timed command (using Timed Invoke).
*
* If nil (the default value), a regular invoke is done for commands that do
* not require a timed invoke and a timed invoke with some default timed request
* timeout is done for commands that require a timed invoke.
*
* If not nil, a timed invoke is done, with the provided value used as the timed
* request timeout. The value should be chosen small enough to provide the
* desired security properties but large enough that it will allow a round-trip
* from the sever to the client (for the status response and actual invoke
* request) within the timeout window.
*
*/
@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs {{availability "" api="Timed Invoke for server to client commands" deprecationMessage="Timed invoke does not make sense for server to client commands"}};
{{/if}}
@end
{{#*inline "deprecatedDecl"}}
{{availability (compatClusterNameRemapping parent.name) command=(asUpperCamelCase name) deprecationMessage=(concat "Please use MTR" (asUpperCamelCase parent.name preserveAcronyms=true) "Cluster" (asUpperCamelCase name preserveAcronyms=true) "Params")}}
@interface MTR{{compatClusterNameRemapping parent.name}}Cluster{{asUpperCamelCase name}}Params : MTR{{asUpperCamelCase parent.name preserveAcronyms=true}}Cluster{{asUpperCamelCase name}}Params
@end
{{/inline}}
{{#unless (isStrEqual (asUpperCamelCase parent.name preserveAcronyms=true) (compatClusterNameRemapping parent.name))}}
{{> deprecatedDecl}}
{{else}}
{{#unless (isStrEqual (asUpperCamelCase name preserveAcronyms=true) (asUpperCamelCase name))}}
{{> deprecatedDecl}}
{{/unless}}
{{/unless}}
{{/zcl_commands}}
{{/zcl_clusters}}
NS_ASSUME_NONNULL_END