blob: b28010fda47c5aacd45fe975216d95e1c3df8500 [file] [log] [blame]
{{~#*inline "clusterName"}}{{asUpperCamelCase cluster}}{{/inline~}}
{{~#*inline "maybePICS"}}
{{#if PICS}}
VerifyOrDo(!ShouldSkip("{{PICS}}"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
{{/if}}
{{/inline~}}
{{~#*inline "maybeSetupSubStepCount"}}
{{#if expectMultipleResponses}}
mTestSubStepCount = {{response.length}};
{{/if}}
{{/inline~}}
{{~#*inline "maybePrepareArguments"}}
{{#unless isWait}}
{{#if hasSpecificArguments}}
ListFreer listFreer;
{{asEncodableType}} value;
{{#chip_tests_item_parameters}}
{{>commandValue ns=parent.cluster container=(asPropertyValue dontUnwrapValue=true) definedValue=definedValue depth=0}}
{{/chip_tests_item_parameters}}
{{/if}}
{{/unless}}
{{/inline~}}
{{~#*inline "maybeFabricFiltered"}}
{{#if fabricFiltered}}
, true
{{else}}
, false
{{/if}}
{{/inline~}}
{{~#*inline "maybeSuppressResponse"}}
{{#if suppressResponse}}
, chip::Optional<bool>({{suppressResponse}})
{{else}}
, chip::NullOptional
{{/if}}
{{/inline~}}
{{~#*inline "maybeDataVersion"}}
{{#if dataVersion}}
, chip::Optional<chip::DataVersion>({{dataVersion}})
{{else}}
, chip::NullOptional
{{/if}}
{{/inline~}}
{{~#*inline "maybeTimedInteractionTimeoutMs"}}
{{#if timedInteractionTimeoutMs}}
, chip::Optional<uint16_t>({{timedInteractionTimeoutMs}})
{{else if commandObject.mustUseTimedInvoke}}
, chip::NullOptional
{{else if attributeObject.mustUseTimedWrite}}
, chip::NullOptional
{{/if}}
{{/inline~}}
{{~#*inline "maybeEventNumber"}}
{{#if eventNumber}}
, chip::Optional<chip::EventNumber>({{eventNumber}})
{{else}}
, chip::NullOptional
{{/if}}
{{/inline~}}
{{~#*inline "maybeKeepSubscriptions"}}
{{#if keepSubscriptions}}
, chip::Optional<bool>({{keepSubscriptions}})
{{else}}
, chip::NullOptional
{{/if}}
{{/inline~}}
{{~#*inline "kIdentity"}}kIdentity{{asUpperCamelCase identity}}{{/inline~}}
{{~#*inline "groupId"}}{{groupId}}{{/inline~}}
{{~#*inline "endpointId"}}GetEndpoint({{endpoint}}){{/inline~}}
{{~#*inline "clusterId"}}{{>clusterName}}::Id{{/inline~}}
{{~#*inline "attributeId"}}{{>clusterName}}::Attributes::{{asUpperCamelCase attribute}}::Id{{/inline~}}
{{~#*inline "eventId"}}{{>clusterName}}::Events::{{asUpperCamelCase event}}::Id{{/inline~}}
{{~#*inline "commandId"}}{{>clusterName}}::Commands::{{asUpperCamelCase command}}::Id{{/inline~}}
{{~#*inline "testOnlyClusterArguments"}}{{>kIdentity}}{{/inline~}}
{{~#*inline "attributeArguments"}}{{>kIdentity}}, {{>endpointId}}, {{>clusterId}}, {{>attributeId}}{{/inline~}}
{{~#*inline "eventArguments"}}{{>kIdentity}}, {{>endpointId}}, {{>clusterId}}, {{>eventId}}{{/inline~}}
{{~#*inline "commandArguments"}}{{>kIdentity}}, {{>endpointId}}, {{>clusterId}}, {{>commandId}}{{/inline~}}
{{~#*inline "waitAttributeArguments"}}{{>endpointId}}, {{>clusterId}}, {{>attributeId}}{{/inline~}}
{{~#*inline "waitEventArguments"}}{{>endpointId}}, {{>clusterId}}, {{>eventId}}{{/inline~}}
{{~#*inline "waitCommandArguments"}}{{>endpointId}}, {{>clusterId}}, {{>commandId}}{{/inline~}}
{{~#*inline "groupAttributeArguments"}}{{>kIdentity}}, {{>groupId}}, {{>clusterId}}, {{>attributeId}}{{/inline~}}
{{~#*inline "groupCommandArguments"}}{{>kIdentity}}, {{>groupId}}, {{>clusterId}}, {{>commandId}}{{/inline~}}
{{~#*inline "waitArguments"}}
{{#if isAttribute}}
{{>waitAttributeArguments}}
{{else if isEvent}}
{{>endpointId}}, {{>clusterId}}, {{>eventId}}
{{else}}
{{>waitCommandArguments}}
{{/if}}
{{/inline~}}
{{~#*inline "arguments"}}
{{#if (isTestOnlyCluster cluster)}}{{>testOnlyClusterArguments}}, value
{{else if isWait}} {{>waitArguments}}
{{else if isReadAttribute}} {{>attributeArguments}}{{>maybeFabricFiltered}}{{>maybeDataVersion~}}
{{else if isSubscribeAttribute}} {{>attributeArguments}}, {{minInterval}}, {{maxInterval}}{{>maybeFabricFiltered}}{{>maybeDataVersion}}{{>maybeKeepSubscriptions~}}, /* autoResubscribe = */ chip::NullOptional
{{else if isWriteGroupAttribute}} {{>groupAttributeArguments}}, value{{>maybeDataVersion~}}
{{else if isWriteAttribute}} {{>attributeArguments}}, value{{>maybeTimedInteractionTimeoutMs}}{{>maybeSuppressResponse}}{{>maybeDataVersion~}}
{{else if isReadEvent}} {{>eventArguments}}{{>maybeFabricFiltered}}{{>maybeEventNumber~}}
{{else if isSubscribeEvent}} {{>eventArguments}}, {{minInterval}}, {{maxInterval}}{{>maybeFabricFiltered}}{{>maybeEventNumber}}{{>maybeKeepSubscriptions~}}, /* autoResubscribe = */ chip::NullOptional
{{else if isGroupCommand}} {{>groupCommandArguments}}, value
{{else if isCommand}} {{>commandArguments}}, value{{>maybeTimedInteractionTimeoutMs}}{{>maybeSuppressResponse}}
{{/if}}
{{/inline~}}
{{~#*inline "maybeBusyWait"}}
{{#if busyWaitMs}}
ReturnErrorOnFailure({{commandName}}({{>arguments}}));
using namespace chip::System::Clock::Literals;
return BusyWaitFor({{busyWaitMs}}_ms);
{{else}}
return {{commandName}}({{>arguments}});
{{/if}}
{{/inline~}}
{{! --- Test Step Content --}}
LogStep({{index}}, "{{label}}");
{{>maybePICS}}
{{>maybeSetupSubStepCount}}
{{>maybePrepareArguments}}
{{>maybeBusyWait}}