| {{> header excludeZapComment=true}} |
| |
| #import <Foundation/Foundation.h> |
| |
| #import <Matter/MTRClusterStateCacheContainer.h> |
| |
| #import <Matter/MTRCluster.h> |
| #import <Matter/MTRCommandPayloadsObjc.h> |
| |
| NS_ASSUME_NONNULL_BEGIN |
| |
| {{#chip_client_clusters includeAll=true}} |
| |
| |
| /** |
| * Cluster {{name}} |
| * |
| * {{description}} |
| */ |
| {{availability (asUpperCamelCase name preserveAcronyms=true)}} |
| @interface MTRBaseCluster{{asUpperCamelCase name preserveAcronyms=true}} : MTRCluster |
| |
| - (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device |
| endpointID:(NSNumber *)endpointID |
| queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER {{availability (asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| |
| {{#chip_cluster_commands}} |
| {{! Takes two arguments: cluster name and command name, plus the ambient state where the command is "this" }} |
| {{#*inline "commandDecl"}} |
| {{#unless (wasRemoved cluster command=command)}} |
| /** |
| * Command {{name}} |
| * |
| * {{description}} |
| */ |
| - (void){{asLowerCamelCase name}}WithParams:(MTR{{cluster}}Cluster{{command}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completion:({{>command_completion_type command=.}})completion {{availability cluster command=command minimalRelease="First major API revamp"}}; |
| {{#unless (hasArguments)}} |
| - (void){{asLowerCamelCase name}}WithCompletion:({{>command_completion_type command=.}})completion {{availability cluster command=command minimalRelease="First major API revamp"}}; |
| {{/unless}} |
| {{/unless}} |
| {{/inline}} |
| {{> commandDecl cluster=(asUpperCamelCase parent.name preserveAcronyms=true) |
| command=(asUpperCamelCase name preserveAcronyms=true)}} |
| {{/chip_cluster_commands}} |
| |
| {{#chip_server_cluster_attributes}} |
| {{#*inline "attribute"}}Attribute{{asUpperCamelCase name preserveAcronyms=true}}{{/inline}} |
| - (void)read{{>attribute}}With |
| {{~#if_is_fabric_scoped_struct type~}} |
| Params:(MTRReadParams * _Nullable)params completion: |
| {{~else~}} |
| Completion: |
| {{~/if_is_fabric_scoped_struct~}} |
| (void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion {{availability (asUpperCamelCase parent.name preserveAcronyms=true) attribute=(asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| {{#if isWritableAttribute}} |
| - (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value completion:(MTRStatusCompletion)completion {{availability (asUpperCamelCase parent.name preserveAcronyms=true) attribute=(asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| - (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value params:(MTRWriteParams * _Nullable)params completion:(MTRStatusCompletion)completion {{availability (asUpperCamelCase parent.name preserveAcronyms=true) attribute=(asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| {{/if}} |
| {{#if isReportableAttribute}} |
| - (void) subscribe{{>attribute}}WithParams:(MTRSubscribeParams *)params |
| subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler {{availability (asUpperCamelCase parent.name preserveAcronyms=true) attribute=(asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| + (void) read{{>attribute}}WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion {{availability (asUpperCamelCase parent.name preserveAcronyms=true) attribute=(asUpperCamelCase name preserveAcronyms=true) minimalRelease="First major API revamp"}}; |
| {{/if}} |
| {{/chip_server_cluster_attributes}} |
| |
| - (instancetype)init NS_UNAVAILABLE; |
| + (instancetype)new NS_UNAVAILABLE; |
| |
| @end |
| |
| {{/chip_client_clusters}} |
| |
| {{#chip_client_clusters includeAll=true}} |
| {{#unless (isStrEqual (asUpperCamelCase name preserveAcronyms=true) (compatClusterNameRemapping name))}} |
| {{availability (compatClusterNameRemapping name) deprecationMessage=(concat "Please use MTRBaseCluster" (asUpperCamelCase name preserveAcronyms=true))}} |
| @interface MTRBaseCluster{{compatClusterNameRemapping name}} : MTRBaseCluster{{asUpperCamelCase name preserveAcronyms=true}} |
| @end |
| |
| {{/unless}} |
| {{/chip_client_clusters}} |
| |
| {{#zcl_clusters}} |
| {{#zcl_enums}} |
| {{#*inline "enumDef"}} |
| typedef NS_ENUM({{asUnderlyingZclType name}}, {{objCEnumName clusterName enumName}}) { |
| {{#zcl_enum_items}} |
| {{objCEnumName ../clusterName ../enumName}}{{objCEnumItemLabel label}} {{availability ../clusterName enum=../enumName enumValue=(objCEnumItemLabel label) deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../../name preserveAcronyms=true) ../label) (objCEnumItemLabel label))}} = {{asHex value 2}}, |
| {{#*inline "oldNameItemDecl"}} |
| {{#if oldItemName}} |
| {{objCEnumName ../clusterName ../enumName}}{{objCEnumItemLabel oldItemName}} {{availability ../clusterName enum=../enumName enumValue=oldItemName deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../../name preserveAcronyms=true) ../label) (objCEnumItemLabel label))}} = {{asHex value 2}}, |
| {{/if}} |
| {{/inline}} |
| {{> oldNameItemDecl oldItemName=(oldName ../clusterName enum=../enumName enumValue=(objCEnumItemLabel label))}} |
| {{/zcl_enum_items}} |
| } |
| {{/inline}} |
| {{> enumDef name=name clusterName=(asUpperCamelCase ../name preserveAcronyms=true) enumName=(asUpperCamelCase label preserveAcronyms=true)}} {{availability (asUpperCamelCase ../name preserveAcronyms=true) enum=(asUpperCamelCase label preserveAcronyms=true)}}; |
| {{! Takes the name of the enum to use as enumName. }} |
| {{#*inline "oldNameDecl"}} |
| |
| {{> enumDef name=name clusterName=(compatClusterNameRemapping ../name) enumName=enumName}} {{availability (compatClusterNameRemapping ../name) enum=enumName deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../name preserveAcronyms=true) label))}}; |
| {{/inline}} |
| {{! Takes the old name of the enum, if any, as oldEnumName. }} |
| {{#*inline "oldNameCheck"}} |
| {{#if (or oldEnumName |
| (hasOldName (asUpperCamelCase ../name preserveAcronyms=true)))}} |
| {{#if oldEnumName}} |
| {{> oldNameDecl enumName=oldEnumName}} |
| {{else}} |
| {{> oldNameDecl enumName=(asUpperCamelCase label preserveAcronyms=true)}} |
| {{/if}} |
| {{/if}} |
| {{/inline}} |
| {{> oldNameCheck oldEnumName=(oldName (asUpperCamelCase ../name preserveAcronyms=true) enum=(asUpperCamelCase label preserveAcronyms=true))}} |
| |
| {{/zcl_enums}} |
| {{#zcl_bitmaps}} |
| {{#*inline "bitmapDef"}} |
| typedef NS_OPTIONS({{asUnderlyingZclType name}}, {{objCEnumName clusterName bitmapName}}) { |
| {{#zcl_bitmap_items}} |
| {{objCEnumName ../clusterName ../bitmapName}}{{objCEnumItemLabel label}} {{availability ../clusterName bitmap=../bitmapName bitmapValue=(objCEnumItemLabel label) deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../../name preserveAcronyms=true) ../label) (objCEnumItemLabel label))}} = {{asHex mask}}, |
| {{#*inline "oldNameItemDecl"}} |
| {{#if oldItemName}} |
| {{objCEnumName ../clusterName ../bitmapName}}{{objCEnumItemLabel oldItemName}} {{availability ../clusterName bitmap=../enumName bitmapValue=oldItemName deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../../name preserveAcronyms=true) ../label) (objCEnumItemLabel label))}} = {{asHex value 2}}, |
| {{/if}} |
| {{/inline}} |
| {{> oldNameItemDecl oldItemName=(oldName ../clusterName bitmap=../bitmapName bitmapValue=(objCEnumItemLabel label))}} |
| {{/zcl_bitmap_items}} |
| } |
| {{/inline}} |
| {{> bitmapDef name=name clusterName=(asUpperCamelCase ../name preserveAcronyms=true) bitmapName=(asUpperCamelCase label preserveAcronyms=true)}} {{availability (asUpperCamelCase ../name preserveAcronyms=true) bitmap=(asUpperCamelCase label preserveAcronyms=true)}}; |
| {{! Takes the name of the bitmap to use as bitmapName. }} |
| {{#*inline "oldNameDecl"}} |
| |
| {{> bitmapDef name=name clusterName=(compatClusterNameRemapping ../name) bitmapName=bitmapName}} {{availability (compatClusterNameRemapping ../name) bitmap=bitmapName deprecationMessage=(concat "Please use " (objCEnumName (asUpperCamelCase ../name preserveAcronyms=true) label))}}; |
| {{/inline}} |
| {{! Takes the old name of the bitmap, if any, as oldBitmapName. }} |
| {{#*inline "oldNameCheck"}} |
| {{#if (or oldBitmapName |
| (hasOldName (asUpperCamelCase ../name preserveAcronyms=true)))}} |
| {{#if oldBitmapName}} |
| {{> oldNameDecl bitmapName=oldBitmapName}} |
| {{else}} |
| {{> oldNameDecl bitmapName=(asUpperCamelCase label preserveAcronyms=true)}} |
| {{/if}} |
| {{/if}} |
| {{/inline}} |
| {{> oldNameCheck oldBitmapName=(oldName (asUpperCamelCase ../name preserveAcronyms=true) bitmap=(asUpperCamelCase label preserveAcronyms=true))}} |
| |
| |
| {{/zcl_bitmaps}} |
| {{/zcl_clusters}} |
| |
| {{#chip_client_clusters includeAll=true}} |
| {{#if (wasIntroducedBeforeRelease "First major API revamp" (compatClusterNameRemapping name))}} |
| @interface MTRBaseCluster{{compatClusterNameRemapping name}} (Deprecated) |
| |
| - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device |
| endpoint:(uint16_t)endpoint |
| queue:(dispatch_queue_t)queue {{availability (compatClusterNameRemapping name) deprecatedRelease="First major API revamp" deprecationMessage="Please use initWithDevice:endpointID:queue:"}}; |
| |
| {{#chip_cluster_commands}} |
| {{! Takes two arguments: cluster name and command name, plus the ambient state where the command is "this" }} |
| {{#*inline "commandDecl"}} |
| {{#if (and (wasIntroducedBeforeRelease "First major API revamp" cluster command=command) |
| (not (wasRemoved cluster command=command)))}} |
| - (void){{asLowerCamelCase command}}WithParams:(MTR{{cluster}}Cluster{{command}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completionHandler:({{>command_completion_type command=. compatRemapNames=true}})completionHandler |
| {{availability cluster command=command deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use " (asLowerCamelCase name) "WithParams:completion:")}}; |
| {{#unless (hasArguments)}} |
| - (void){{asLowerCamelCase command}}WithCompletionHandler:({{>command_completion_type command=. compatRemapNames=true}})completionHandler |
| {{availability cluster command=command deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use " (asLowerCamelCase name) "WithCompletion:")}}; |
| {{/unless}} |
| {{/if}} |
| {{/inline}} |
| {{> commandDecl cluster=(compatClusterNameRemapping parent.name) |
| command=(compatCommandNameRemapping parent.name name)}} |
| {{/chip_cluster_commands}} |
| |
| {{#chip_server_cluster_attributes}} |
| {{#if (wasIntroducedBeforeRelease "First major API revamp" (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name))}} |
| {{#*inline "attribute"}}Attribute{{compatAttributeNameRemapping parent.name name}}{{/inline}} |
| - (void)read{{>attribute}}With |
| {{~#if_is_fabric_scoped_struct type~}} |
| Params:(MTRReadParams * _Nullable)params completionHandler: |
| {{~else~}} |
| CompletionHandler: |
| {{~/if_is_fabric_scoped_struct~}} |
| (void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler {{availability (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name) deprecatedRelease="First major API revamp" fabricScopedDeprecationMessage=(concat "Please use readAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithParams:completion:") nonFabricScopedDeprecationMessage=(concat "Please use readAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithCompletion:") type=type}}; |
| {{#if isWritableAttribute}} |
| - (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value completionHandler:(MTRStatusCompletion)completionHandler {{availability (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name) deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use writeAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithValue:completion:")}}; |
| - (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value params:(MTRWriteParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler {{availability (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name) deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use writeAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithValue:params:completion:")}}; |
| {{/if}} |
| {{#if isReportableAttribute}} |
| - (void) subscribe{{>attribute}}WithMinInterval:(NSNumber * _Nonnull)minInterval maxInterval:(NSNumber * _Nonnull)maxInterval |
| params:(MTRSubscribeParams * _Nullable)params |
| subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))reportHandler {{availability (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name) deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use subscribeAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithParams:subscriptionEstablished:")}}; |
| + (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler {{availability (compatClusterNameRemapping parent.name) attribute=(compatAttributeNameRemapping parent.name name) deprecatedRelease="First major API revamp" deprecationMessage=(concat "Please use readAttribute" (asUpperCamelCase name preserveAcronyms=true) "WithAttributeCache:endpoint:queue:completion:")}}; |
| {{/if}} |
| {{/if}} |
| {{/chip_server_cluster_attributes}} |
| |
| @end |
| |
| {{/if}} |
| {{/chip_client_clusters}} |
| |
| NS_ASSUME_NONNULL_END |