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