1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*- 2*b9df5ad1SAndroid Build Coastguard Worker## 3*b9df5ad1SAndroid Build Coastguard Worker## Copyright (C) 2015 The Android Open Source Project 4*b9df5ad1SAndroid Build Coastguard Worker## 5*b9df5ad1SAndroid Build Coastguard Worker## Licensed under the Apache License, Version 2.0 (the "License"); 6*b9df5ad1SAndroid Build Coastguard Worker## you may not use this file except in compliance with the License. 7*b9df5ad1SAndroid Build Coastguard Worker## You may obtain a copy of the License at 8*b9df5ad1SAndroid Build Coastguard Worker## 9*b9df5ad1SAndroid Build Coastguard Worker## http://www.apache.org/licenses/LICENSE-2.0 10*b9df5ad1SAndroid Build Coastguard Worker## 11*b9df5ad1SAndroid Build Coastguard Worker## Unless required by applicable law or agreed to in writing, software 12*b9df5ad1SAndroid Build Coastguard Worker## distributed under the License is distributed on an "AS IS" BASIS, 13*b9df5ad1SAndroid Build Coastguard Worker## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*b9df5ad1SAndroid Build Coastguard Worker## See the License for the specific language governing permissions and 15*b9df5ad1SAndroid Build Coastguard Worker## limitations under the License. 16*b9df5ad1SAndroid Build Coastguard Worker## 17*b9df5ad1SAndroid Build Coastguard Worker\ 18*b9df5ad1SAndroid Build Coastguard Worker## Generate a list of only Static, Controls, or Dynamic properties. 19*b9df5ad1SAndroid Build Coastguard Worker<%def name="single_kind_keys(kind_name)">\ 20*b9df5ad1SAndroid Build Coastguard Worker% for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace 21*b9df5ad1SAndroid Build Coastguard Worker % for section in outer_namespace.sections: 22*b9df5ad1SAndroid Build Coastguard Worker % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == kind_name) and \ 23*b9df5ad1SAndroid Build Coastguard Worker any_visible(section, kind_name, ('public','ndk_public','fwk_public','fwk_ndk_public') ): 24*b9df5ad1SAndroid Build Coastguard Worker % for inner_namespace in get_children_by_filtering_kind(section, kind_name, 'namespaces'): 25*b9df5ad1SAndroid Build Coastguard Worker## We only support 1 level of inner namespace, i.e. android.a.b and android.a.b.c works, but not android.a.b.c.d 26*b9df5ad1SAndroid Build Coastguard Worker## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier. 27*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility(inner_namespace.merged_entries, ('public','ndk_public',\ 28*b9df5ad1SAndroid Build Coastguard Worker 'fwk_public','fwk_ndk_public')): 29*b9df5ad1SAndroid Build Coastguard Worker % if not entry.synthetic: 30*b9df5ad1SAndroid Build Coastguard Worker case ${ndk(entry.name) | csym}: 31*b9df5ad1SAndroid Build Coastguard Worker % else: 32*b9df5ad1SAndroid Build Coastguard Worker assert(False),"A synthetic key should not present in NDK!" 33*b9df5ad1SAndroid Build Coastguard Worker % endif 34*b9df5ad1SAndroid Build Coastguard Worker % endfor 35*b9df5ad1SAndroid Build Coastguard Worker % endfor 36*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility( \ 37*b9df5ad1SAndroid Build Coastguard Worker get_children_by_filtering_kind(section, kind_name, 'merged_entries'), \ 38*b9df5ad1SAndroid Build Coastguard Worker ('public','ndk_public','fwk_public','fwk_ndk_public')): 39*b9df5ad1SAndroid Build Coastguard Worker % if not entry.synthetic: 40*b9df5ad1SAndroid Build Coastguard Worker case ${ndk(entry.name) | csym}: 41*b9df5ad1SAndroid Build Coastguard Worker % endif 42*b9df5ad1SAndroid Build Coastguard Worker % endfor 43*b9df5ad1SAndroid Build Coastguard Worker % endif 44*b9df5ad1SAndroid Build Coastguard Worker % endfor 45*b9df5ad1SAndroid Build Coastguard Worker% endfor 46*b9df5ad1SAndroid Build Coastguard Worker</%def>\ 47*b9df5ad1SAndroid Build Coastguard Worker/*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 48*b9df5ad1SAndroid Build Coastguard Worker * The key entries below this point are generated from metadata 49*b9df5ad1SAndroid Build Coastguard Worker * definitions in /system/media/camera/docs. Do not modify by hand or 50*b9df5ad1SAndroid Build Coastguard Worker * modify the comment blocks at the start or end. 51*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 52*b9df5ad1SAndroid Build Coastguard Worker 53*b9df5ad1SAndroid Build Coastguard Workerbool 54*b9df5ad1SAndroid Build Coastguard WorkerACameraMetadata::isCaptureRequestTag(const uint32_t tag) { 55*b9df5ad1SAndroid Build Coastguard Worker // Skip check for vendor keys 56*b9df5ad1SAndroid Build Coastguard Worker if (isVendorTag(tag)) { 57*b9df5ad1SAndroid Build Coastguard Worker return true; 58*b9df5ad1SAndroid Build Coastguard Worker } 59*b9df5ad1SAndroid Build Coastguard Worker 60*b9df5ad1SAndroid Build Coastguard Worker switch (tag) { 61*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys("controls")}\ 62*b9df5ad1SAndroid Build Coastguard Worker return true; 63*b9df5ad1SAndroid Build Coastguard Worker default: 64*b9df5ad1SAndroid Build Coastguard Worker return false; 65*b9df5ad1SAndroid Build Coastguard Worker } 66*b9df5ad1SAndroid Build Coastguard Worker} 67*b9df5ad1SAndroid Build Coastguard Worker 68*b9df5ad1SAndroid Build Coastguard Worker// System tags that should be hidden from users 69*b9df5ad1SAndroid Build Coastguard Workerstd::unordered_set<uint32_t> ACameraMetadata::sSystemTags ({ 70*b9df5ad1SAndroid Build Coastguard Worker % for sec in find_all_sections(metadata): 71*b9df5ad1SAndroid Build Coastguard Worker % for entry in remove_hal_non_visible(find_unique_entries(sec)): 72*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility == "system": 73*b9df5ad1SAndroid Build Coastguard Worker ${entry.name | csym}, 74*b9df5ad1SAndroid Build Coastguard Worker % endif 75*b9df5ad1SAndroid Build Coastguard Worker % endfor 76*b9df5ad1SAndroid Build Coastguard Worker %endfor 77*b9df5ad1SAndroid Build Coastguard Worker}); 78*b9df5ad1SAndroid Build Coastguard Worker 79*b9df5ad1SAndroid Build Coastguard Worker/*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 80*b9df5ad1SAndroid Build Coastguard Worker * End generated code 81*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ 82