1 ## -*- coding: utf-8 -*- 2 ## 3 ## Copyright (C) 2013 The Android Open Source Project 4 ## 5 ## Licensed under the Apache License, Version 2.0 (the "License"); 6 ## you may not use this file except in compliance with the License. 7 ## You may obtain a copy of the License at 8 ## 9 ## http://www.apache.org/licenses/LICENSE-2.0 10 ## 11 ## Unless required by applicable law or agreed to in writing, software 12 ## distributed under the License is distributed on an "AS IS" BASIS, 13 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ## See the License for the specific language governing permissions and 15 ## limitations under the License. 16 ## 17 \ 18 ## These sections of metadata Key definitions are inserted into the middle of 19 ## android.hardware.camera2.CameraCharacteristics, CaptureRequest, and CaptureResult. 20 <%page args="java_class, xml_kind" />\ 21 /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 22 * The key entries below this point are generated from metadata 23 * definitions in /system/media/camera/docs. Do not modify by hand or 24 * modify the comment blocks at the start or end. 25 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 26 27 ## 28 ## Generate a single key and docs 29 <%def name="generate_key(entry)">\ 30 /** 31 % if entry.description: 32 ${entry.description | javadoc}\ 33 % endif 34 % if entry.notes: 35 ${entry.notes | javadoc}\ 36 % endif 37 % if entry.enum and not (entry.typedef and entry.typedef.languages.get('java')): 38 % for value in entry.enum.values: 39 * @see #${jenum_value(entry, value)} 40 % endfor 41 % endif 42 % if entry.optional: 43 * 44 * <b>Optional</b> - This value may be null on some devices. 45 % endif 46 % if any(tag.name == 'FULL' for tag in entry.tags): 47 * 48 * <b>{@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL}</b> - 49 * Present on all devices that report being FULL level hardware devices in the 50 * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL HARDWARE_LEVEL} key. 51 % endif 52 % if entry.applied_visibility == 'hidden': 53 * 54 * @hide 55 % endif 56 */ 57 public static final Key<${jtype_boxed(entry)}> ${entry.name | jkey_identifier} = 58 new Key<${jtype_boxed(entry)}>("${entry.name}", ${jclass(entry)}); 59 </%def>\ 60 ## 61 ## Generate a list of only Static, Controls, or Dynamic properties. 62 <%def name="single_kind_keys(java_name, xml_name)">\ 63 % for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace 64 % for section in outer_namespace.sections: 65 % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \ 66 any_visible(section, xml_name, ('public','hidden') ): 67 % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'): 68 ## 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 69 ## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier. 70 % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public')): 71 ${generate_key(entry)} 72 % endfor 73 % endfor 74 % for entry in filter_visibility( \ 75 get_children_by_filtering_kind(section, xml_name, 'merged_entries'), \ 76 ('hidden', 'public')): 77 ${generate_key(entry)} 78 % endfor 79 % endif 80 % endfor 81 % endfor 82 </%def>\ 83 ## 84 ## Static properties only 85 ##${single_kind_keys('CameraCharacteristicsKeys', 'static')} 86 ## 87 ## Controls properties only 88 ##${single_kind_keys('CaptureRequestKeys', 'controls')} 89 ## 90 ## Dynamic properties only 91 ##${single_kind_keys('CaptureResultKeys', 'dynamic')} 92 ${single_kind_keys(java_class, xml_kind)}\ 93 /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 94 * End generated code 95 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/