1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*- 2*b9df5ad1SAndroid Build Coastguard Worker/* 3*b9df5ad1SAndroid Build Coastguard Worker * Copyright (C) ${copyright_year()} 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 def annotated_type(entry): 19*b9df5ad1SAndroid Build Coastguard Worker if entry.enum: 20*b9df5ad1SAndroid Build Coastguard Worker type = 'enum' 21*b9df5ad1SAndroid Build Coastguard Worker else: 22*b9df5ad1SAndroid Build Coastguard Worker type = entry.type 23*b9df5ad1SAndroid Build Coastguard Worker if entry.container == 'array': 24*b9df5ad1SAndroid Build Coastguard Worker type += '[]' 25*b9df5ad1SAndroid Build Coastguard Worker 26*b9df5ad1SAndroid Build Coastguard Worker return type 27*b9df5ad1SAndroid Build Coastguard Worker 28*b9df5ad1SAndroid Build Coastguard Worker def annotated_enum_type(entry): 29*b9df5ad1SAndroid Build Coastguard Worker if entry.type == 'int64' and entry.container == 'array': 30*b9df5ad1SAndroid Build Coastguard Worker type = ' int64_t' 31*b9df5ad1SAndroid Build Coastguard Worker else: 32*b9df5ad1SAndroid Build Coastguard Worker type = ' uint32_t' 33*b9df5ad1SAndroid Build Coastguard Worker 34*b9df5ad1SAndroid Build Coastguard Worker return type 35*b9df5ad1SAndroid Build Coastguard Worker%>\ 36*b9df5ad1SAndroid Build Coastguard Worker 37*b9df5ad1SAndroid Build Coastguard Worker/* 38*b9df5ad1SAndroid Build Coastguard Worker * Autogenerated from camera metadata definitions in 39*b9df5ad1SAndroid Build Coastguard Worker * /system/media/camera/docs/metadata_definitions.xml 40*b9df5ad1SAndroid Build Coastguard Worker * *** DO NOT EDIT BY HAND *** 41*b9df5ad1SAndroid Build Coastguard Worker */ 42*b9df5ad1SAndroid Build Coastguard Worker 43*b9df5ad1SAndroid Build Coastguard Workerpackage android.hardware.camera.metadata@${hal_major_version()}.${hal_minor_version()}; 44*b9df5ad1SAndroid Build Coastguard Worker 45*b9df5ad1SAndroid Build Coastguard Worker% if first_hal_minor_version(hal_major_version()) != hal_minor_version(): 46*b9df5ad1SAndroid Build Coastguard Worker % for i in range(first_hal_minor_version(hal_major_version()),hal_minor_version()): 47*b9df5ad1SAndroid Build Coastguard Workerimport android.hardware.camera.metadata@${hal_major_version()}.${i}; 48*b9df5ad1SAndroid Build Coastguard Worker % endfor 49*b9df5ad1SAndroid Build Coastguard Worker 50*b9df5ad1SAndroid Build Coastguard Worker% endif 51*b9df5ad1SAndroid Build Coastguard Worker<% gotSections = False %>\ 52*b9df5ad1SAndroid Build Coastguard Worker<% gotFirstNewSection = False %>\ 53*b9df5ad1SAndroid Build Coastguard Worker% for idx, section in enumerate(find_all_sections_added_in_hal(metadata, hal_major_version(), hal_minor_version())): 54*b9df5ad1SAndroid Build Coastguard Worker % if idx == 0: 55*b9df5ad1SAndroid Build Coastguard Worker<% gotSections = True %>\ 56*b9df5ad1SAndroid Build Coastguard Worker/** 57*b9df5ad1SAndroid Build Coastguard Worker * Top level hierarchy definitions for camera metadata. *_INFO sections are for 58*b9df5ad1SAndroid Build Coastguard Worker * the static metadata that can be retrived without opening the camera device. 59*b9df5ad1SAndroid Build Coastguard Worker */ 60*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataSection : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '@%d.%d::CameraMetadataSection' % (hal_major_version(), hal_minor_version()-1)} { 61*b9df5ad1SAndroid Build Coastguard Worker % endif 62*b9df5ad1SAndroid Build Coastguard Worker % if first_hal_minor_version(hal_major_version()) != hal_minor_version() and not gotFirstNewSection: 63*b9df5ad1SAndroid Build Coastguard Worker ${path_name(section) | csym} = 64*b9df5ad1SAndroid Build Coastguard Worker android.hardware.camera.metadata@${hal_major_version()}.${hal_minor_version()-1}::CameraMetadataSection:ANDROID_SECTION_COUNT, 65*b9df5ad1SAndroid Build Coastguard Worker<% gotFirstNewSection = True %>\ 66*b9df5ad1SAndroid Build Coastguard Worker % else: 67*b9df5ad1SAndroid Build Coastguard Worker ${path_name(section) | csym}, 68*b9df5ad1SAndroid Build Coastguard Worker % endif 69*b9df5ad1SAndroid Build Coastguard Worker 70*b9df5ad1SAndroid Build Coastguard Worker% endfor 71*b9df5ad1SAndroid Build Coastguard Worker% if gotSections: 72*b9df5ad1SAndroid Build Coastguard Worker ANDROID_SECTION_COUNT${'' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_%d_%d' % (hal_major_version(),hal_minor_version())}, 73*b9df5ad1SAndroid Build Coastguard Worker 74*b9df5ad1SAndroid Build Coastguard Worker VENDOR_SECTION${'' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_%d_%d' % (hal_major_version(),hal_minor_version())} = 0x8000, 75*b9df5ad1SAndroid Build Coastguard Worker 76*b9df5ad1SAndroid Build Coastguard Worker}; 77*b9df5ad1SAndroid Build Coastguard Worker 78*b9df5ad1SAndroid Build Coastguard Worker/** 79*b9df5ad1SAndroid Build Coastguard Worker * Hierarchy positions in enum space. All vendor extension sections must be 80*b9df5ad1SAndroid Build Coastguard Worker * defined with tag >= VENDOR_SECTION_START 81*b9df5ad1SAndroid Build Coastguard Worker */ 82*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataSectionStart : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else 'android.hardware.camera.metadata@%d.%d::CameraMetadataSectionStart' % (hal_major_version(), hal_minor_version()-1)} { 83*b9df5ad1SAndroid Build Coastguard Worker % for i in find_all_sections_added_in_hal(metadata, hal_major_version(), hal_minor_version()): 84*b9df5ad1SAndroid Build Coastguard Worker ${path_name(i) + '.start' | csym} = CameraMetadataSection:${path_name(i) | csym} << 16, 85*b9df5ad1SAndroid Build Coastguard Worker 86*b9df5ad1SAndroid Build Coastguard Worker % endfor 87*b9df5ad1SAndroid Build Coastguard Worker % if first_hal_minor_version(hal_major_version()) != hal_minor_version() : 88*b9df5ad1SAndroid Build Coastguard Worker VENDOR_SECTION_START${'_%d_%d' % (hal_major_version(),hal_minor_version())} = CameraMetadataSection:VENDOR_SECTION${'_%d_%d' % (hal_major_version(),hal_minor_version())} << 16, 89*b9df5ad1SAndroid Build Coastguard Worker % else: 90*b9df5ad1SAndroid Build Coastguard Worker VENDOR_SECTION_START = CameraMetadataSection:VENDOR_SECTION << 16, 91*b9df5ad1SAndroid Build Coastguard Worker % endif 92*b9df5ad1SAndroid Build Coastguard Worker 93*b9df5ad1SAndroid Build Coastguard Worker}; 94*b9df5ad1SAndroid Build Coastguard Worker 95*b9df5ad1SAndroid Build Coastguard Worker% else: 96*b9df5ad1SAndroid Build Coastguard Worker// No new metadata sections added in this revision 97*b9df5ad1SAndroid Build Coastguard Worker 98*b9df5ad1SAndroid Build Coastguard Worker% endif 99*b9df5ad1SAndroid Build Coastguard Worker/** 100*b9df5ad1SAndroid Build Coastguard Worker * Main enumeration for defining camera metadata tags added in this revision 101*b9df5ad1SAndroid Build Coastguard Worker * 102*b9df5ad1SAndroid Build Coastguard Worker * <p>Partial documentation is included for each tag; for complete documentation, reference 103*b9df5ad1SAndroid Build Coastguard Worker * '/system/media/camera/docs/docs.html' in the corresponding Android source tree.</p> 104*b9df5ad1SAndroid Build Coastguard Worker */ 105*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataTag : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '@%d.%d::CameraMetadataTag' % (hal_major_version(), hal_minor_version()-1)} { 106*b9df5ad1SAndroid Build Coastguard Worker % for sec in find_all_sections(metadata): 107*b9df5ad1SAndroid Build Coastguard Worker<% gotEntries = False %>\ 108*b9df5ad1SAndroid Build Coastguard Worker % for idx,entry in enumerate(filter_added_in_hal_version(remove_hal_non_visible(find_unique_entries(sec)), hal_major_version(), hal_minor_version())): 109*b9df5ad1SAndroid Build Coastguard Worker<% gotEntries = True %>\ 110*b9df5ad1SAndroid Build Coastguard Worker /** ${entry.name} [${entry.kind}, ${annotated_type(entry)}, ${entry.applied_visibility}] 111*b9df5ad1SAndroid Build Coastguard Worker % if entry.description: 112*b9df5ad1SAndroid Build Coastguard Worker * 113*b9df5ad1SAndroid Build Coastguard Worker${entry.description | hidldoc(metadata)}\ 114*b9df5ad1SAndroid Build Coastguard Worker % endif 115*b9df5ad1SAndroid Build Coastguard Worker */ 116*b9df5ad1SAndroid Build Coastguard Worker % if idx == 0: 117*b9df5ad1SAndroid Build Coastguard Worker % if find_first_older_used_hal_version(sec, hal_major_version(), hal_minor_version()) == (0, 0): 118*b9df5ad1SAndroid Build Coastguard Worker ${entry.name + " =" | csym} CameraMetadataSectionStart:${path_name(find_parent_section(entry)) | csym}_START, 119*b9df5ad1SAndroid Build Coastguard Worker % else: 120*b9df5ad1SAndroid Build Coastguard Worker<% prevVersion = find_first_older_used_hal_version(sec, hal_major_version(), hal_minor_version()) %>\ 121*b9df5ad1SAndroid Build Coastguard Worker ${entry.name + " =" | csym} ${'android.hardware.camera.metadata@%d.%d' % prevVersion}::CameraMetadataTag:${path_name(find_parent_section(entry)) | csym}${'_END' if prevVersion[1] == first_hal_minor_version(hal_major_version()) else '_END_%d_%d' % prevVersion}, 122*b9df5ad1SAndroid Build Coastguard Worker % endif 123*b9df5ad1SAndroid Build Coastguard Worker % else: 124*b9df5ad1SAndroid Build Coastguard Worker ${entry.name + "," | csym} 125*b9df5ad1SAndroid Build Coastguard Worker % endif 126*b9df5ad1SAndroid Build Coastguard Worker 127*b9df5ad1SAndroid Build Coastguard Worker % endfor 128*b9df5ad1SAndroid Build Coastguard Worker % if gotEntries: 129*b9df5ad1SAndroid Build Coastguard Worker ${path_name(sec) | csym}${'_END' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_END_%d_%d' % (hal_major_version(),hal_minor_version())}, 130*b9df5ad1SAndroid Build Coastguard Worker 131*b9df5ad1SAndroid Build Coastguard Worker % endif 132*b9df5ad1SAndroid Build Coastguard Worker %endfor 133*b9df5ad1SAndroid Build Coastguard Worker}; 134*b9df5ad1SAndroid Build Coastguard Worker 135*b9df5ad1SAndroid Build Coastguard Worker/* 136*b9df5ad1SAndroid Build Coastguard Worker * Enumeration definitions for the various entries that need them 137*b9df5ad1SAndroid Build Coastguard Worker */ 138*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections(metadata): 139*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_has_enum_values_added_in_hal_version(remove_hal_non_visible(find_unique_entries(sec)), hal_major_version(), hal_minor_version()): 140*b9df5ad1SAndroid Build Coastguard Worker % if entry.enum: 141*b9df5ad1SAndroid Build Coastguard Worker 142*b9df5ad1SAndroid Build Coastguard Worker<% isFirstValue = True %>\ 143*b9df5ad1SAndroid Build Coastguard Worker<% prevValue = None %>\ 144*b9df5ad1SAndroid Build Coastguard Worker % for val in entry.enum.values: 145*b9df5ad1SAndroid Build Coastguard Worker % if val.hal_major_version == hal_major_version() and val.hal_minor_version == hal_minor_version(): 146*b9df5ad1SAndroid Build Coastguard Worker % if isFirstValue: 147*b9df5ad1SAndroid Build Coastguard Worker % if prevValue is None: 148*b9df5ad1SAndroid Build Coastguard Worker/** ${entry.name} enumeration values 149*b9df5ad1SAndroid Build Coastguard Worker % else: 150*b9df5ad1SAndroid Build Coastguard Worker/** ${entry.name} enumeration values added since v${prevValue.hal_major_version}.${prevValue.hal_minor_version} 151*b9df5ad1SAndroid Build Coastguard Worker % endif 152*b9df5ad1SAndroid Build Coastguard Worker * @see ${entry.name | csym} 153*b9df5ad1SAndroid Build Coastguard Worker */ 154*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataEnum${entry.name | pascal_case} :${annotated_enum_type(entry) if prevValue is None else '\n @%d.%d::CameraMetadataEnum%s' % (prevValue.hal_major_version, prevValue.hal_minor_version, pascal_case(entry.name))} { 155*b9df5ad1SAndroid Build Coastguard Worker % endif 156*b9df5ad1SAndroid Build Coastguard Worker % if val.id is None: 157*b9df5ad1SAndroid Build Coastguard Worker ${entry.name | csym}_${val.name}, 158*b9df5ad1SAndroid Build Coastguard Worker % else: 159*b9df5ad1SAndroid Build Coastguard Worker ${'%s_%s'%(csym(entry.name), val.name) | pad(65)} = ${val.id}, 160*b9df5ad1SAndroid Build Coastguard Worker % endif 161*b9df5ad1SAndroid Build Coastguard Worker<% isFirstValue = False %>\ 162*b9df5ad1SAndroid Build Coastguard Worker % else: 163*b9df5ad1SAndroid Build Coastguard Worker<% prevValue = val %>\ 164*b9df5ad1SAndroid Build Coastguard Worker % endif 165*b9df5ad1SAndroid Build Coastguard Worker % endfor 166*b9df5ad1SAndroid Build Coastguard Worker}; 167*b9df5ad1SAndroid Build Coastguard Worker % endif 168*b9df5ad1SAndroid Build Coastguard Worker % endfor 169*b9df5ad1SAndroid Build Coastguard Worker% endfor 170