blob: 05bab57d3c88fcd416195031f0e0cb622ae2a1f1 [file] [log] [blame]
/*
*
* Copyright (c) 2023 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.
*/
package chip.devicecontroller;
import chip.clusterinfo.CommandParameterInfo;
import chip.clusterinfo.InteractionInfo;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class ClusterReadMapping {
{% for cluster in clientClusters | sort(attribute='code') %}
{%- set typeLookup = idl | createLookupContext(cluster) %}
private static Map<String, InteractionInfo> read{{cluster.name}}InteractionInfo() {
Map<String, InteractionInfo> result = new LinkedHashMap<>();
{%- for attribute in cluster.attributes | sort(attribute='name') | attributesWithCallback(typeLookup) %}
{#- TODO: add support for struct-typed attributes -#}
Map<String, CommandParameterInfo> read{{cluster.name}}{{attribute.definition.name | upfirst}}CommandParams = new LinkedHashMap<String, CommandParameterInfo>();
InteractionInfo read{{cluster.name}}{{attribute.definition.name | upfirst}}AttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.{{cluster.name}}Cluster) cluster).read{{attribute.definition.name | upfirst}}Attribute(
({{ attribute | chipClustersCallbackName(typeLookup) }}) callback
);
},
() -> new ClusterInfoMapping.{{ attribute | delegatedCallbackName(typeLookup)}}(),
read{{cluster.name}}{{attribute.definition.name | upfirst}}CommandParams
);
result.put("read{{attribute.definition.name | upfirst}}Attribute", read{{cluster.name}}{{attribute.definition.name | upfirst}}AttributeInteractionInfo);
{% endfor %}
return result;
}
{%- endfor %}
@SuppressWarnings("serial")
public Map<String, Map<String, InteractionInfo>> getReadAttributeMap() {
return new HashMap<String, Map<String, InteractionInfo>>(){% raw %}{{{% endraw %}
{%- for cluster in clientClusters | sort(attribute='code') %}
put("{{cluster.name | lowfirst_except_acronym}}", read{{cluster.name}}InteractionInfo());
{%- endfor -%}
}};
}
}